@flusys/ng-ui 1.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1300 -0
- package/fesm2022/flusys-ng-ui.mjs +25078 -0
- package/fesm2022/flusys-ng-ui.mjs.map +1 -0
- package/package.json +29 -0
- package/themes/tailwind.scss +83 -0
- package/types/flusys-ng-ui.d.ts +4384 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flusys-ng-ui.mjs","sources":["../../../projects/ng-ui/components/icon/ui-icon.component.ts","../../../projects/ng-ui/components/badge/badge.component.ts","../../../projects/ng-ui/components/button/button.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/f-button.directive.ts","../../../projects/ng-ui/components/chip/chip.component.ts","../../../projects/ng-ui/components/divider/divider.component.ts","../../../projects/ng-ui/components/shared/ftemplate.directive.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/popover/popover.component.ts","../../../projects/ng-ui/components/datepicker/datepicker.component.ts","../../../projects/ng-ui/components/fileupload/fileupload.component.ts","../../../projects/ng-ui/components/inputicon/inputicon.component.ts","../../../projects/ng-ui/components/iconfield/iconfield.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/scroller/scroller.component.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/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/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/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/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\nexport type UiIconSeverity = 'success' | 'info' | 'warn' | 'danger' | 'secondary' | 'contrast' | null;\n\nconst SEVERITY_CLASSES: Record<string, string> = {\n success: 'text-green-600',\n info: 'text-sky-600',\n warn: 'text-amber-600',\n danger: 'text-red-600',\n secondary: 'text-(--f-text-muted-color)',\n contrast: 'text-(--f-text-color)',\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 readonly severity = input<UiIconSeverity>(null);\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 const sev = this.severity();\n if (sev) parts.push(SEVERITY_CLASSES[sev] ?? '');\n return parts.join(' ');\n });\n}\n","import { booleanAttribute, 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 '[style.display]': \"disabled() ? 'none' : null\",\n },\n template: `\n <p [class]=\"classes()\" [style]=\"style()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n {{ value() }}\n <ng-content></ng-content>\n </p>\n `,\n})\nexport class BadgeComponent {\n readonly value = input<string | number | null>('');\n readonly severity = input<BadgeSeverity>(null);\n readonly size = input<BadgeSize>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly isDot = computed(() => {\n const v = this.value();\n return v === null || v === '';\n });\n\n readonly ariaLabel = computed(() => {\n const v = this.value();\n return v === null || v === '' ? null : String(v);\n });\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 dimensions = this.isDot()\n ? 'w-2 h-2'\n : `px-1.5 ${sz ? sizeMap[sz] : 'min-w-5 h-5 text-xs'}`;\n const base = `inline-flex items-center justify-center rounded-full font-bold leading-none ${dimensions} ${this.styleClass()}`;\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 {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n input,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { BadgeComponent, BadgeSeverity } from '../badge/badge.component';\n\nexport type ButtonSeverity =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'contrast'\n | 'help';\n\nexport type ButtonIconPosition = 'left' | 'right' | 'top' | 'bottom';\nexport type ButtonVariant = 'outlined' | 'text' | null;\nexport type ButtonSize = 'small' | 'large' | null;\n\n@Component({\n selector: 'f-button',\n imports: [UiIconComponent, NgTemplateOutlet, BadgeComponent],\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : null\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [autofocus]=\"autofocus()\"\n [attr.tabindex]=\"tabindex()\"\n [class]=\"hostClass()\"\n [style]=\"style()\"\n style=\"font-weight: var(--f-button-font-weight, 500)\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"onFocus.emit($event)\"\n (blur)=\"onBlur.emit($event)\"\n >\n @if (loading()) {\n @if (iconPos() === 'left' || iconPos() === 'top') {\n @if (loadingIconTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingIconTemplate()\"></ng-container>\n } @else {\n <ui-icon [name]=\"loadingIcon() || 'loader-circle'\" [spin]=\"true\" class=\"shrink-0\"></ui-icon>\n }\n }\n } @else if (icon() && (iconPos() === 'left' || iconPos() === 'top')) {\n @if (iconTemplate()) {\n <ng-container [ngTemplateOutlet]=\"iconTemplate()\"></ng-container>\n } @else {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n }\n @if (label()) {\n <span class=\"leading-none\">{{ label() }}</span>\n }\n <ng-content />\n @if (loading()) {\n @if (iconPos() === 'right' || iconPos() === 'bottom') {\n @if (loadingIconTemplate()) {\n <ng-container [ngTemplateOutlet]=\"loadingIconTemplate()\"></ng-container>\n } @else {\n <ui-icon [name]=\"loadingIcon() || 'loader-circle'\" [spin]=\"true\" class=\"shrink-0\"></ui-icon>\n }\n }\n } @else if (icon() && (iconPos() === 'right' || iconPos() === 'bottom')) {\n @if (iconTemplate()) {\n <ng-container [ngTemplateOutlet]=\"iconTemplate()\"></ng-container>\n } @else {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n }\n </button>\n @if (badge() !== null && badge() !== '') {\n <f-badge\n [value]=\"badge()\"\n [severity]=\"badgeSeverity()\"\n [styleClass]=\"badgeClass()\"\n size=\"small\"\n class=\"absolute -top-2 -right-2\"\n ></f-badge>\n }\n `,\n host: {\n class: 'relative block',\n },\n})\nexport class ButtonComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<ButtonIconPosition>('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 loadingIcon = input<string>('');\n readonly text = input(false, { transform: booleanAttribute });\n readonly link = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly plain = input(false, { transform: booleanAttribute });\n readonly variant = input<ButtonVariant>(null);\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<ButtonSize>(null);\n readonly ariaLabel = input<string>('');\n readonly autofocus = input(false, { transform: booleanAttribute });\n readonly tabindex = input<number | null>(null);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly badge = input<string | number | null>(null);\n readonly badgeSeverity = input<BadgeSeverity>(null);\n readonly badgeClass = input<string>('');\n\n readonly onClick = output<MouseEvent>();\n readonly onFocus = output<FocusEvent>();\n readonly onBlur = output<FocusEvent>();\n\n readonly iconTemplate = contentChild<TemplateRef<unknown>>('icon');\n readonly loadingIconTemplate = contentChild<TemplateRef<unknown>>('loadingicon');\n\n readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n readonly hostClass = computed(() =>\n computeButtonClasses({\n severity: this.severity(),\n text: this.text() || this.variant() === 'text',\n link: this.link(),\n outlined: this.outlined() || this.variant() === 'outlined',\n plain: this.plain(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconPos: this.iconPos(),\n iconOnly: !!this.icon() && !this.label(),\n styleClass: this.styleClass(),\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: ButtonSize;\n iconOnly: boolean;\n plain?: boolean;\n iconPos?: ButtonIconPosition;\n styleClass?: string;\n}\n\nexport function computeButtonClasses(opts: ButtonClassOptions): string {\n const {\n severity: sev,\n text: isText,\n link: isLink,\n outlined: isOutlined,\n plain: isPlain = false,\n rounded: isRounded,\n raised,\n fluid: isFluid,\n size: sz,\n iconPos = 'left',\n iconOnly,\n styleClass = '',\n } = opts;\n\n const isVertical = iconPos === 'top' || iconPos === 'bottom';\n\n const parts = [\n 'inline-flex items-center justify-center cursor-pointer select-none transition-all duration-[var(--f-transition-duration)]',\n isVertical ? 'flex-col gap-1' : 'gap-2',\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 = isPlain ? plainVariant('text') : textVariant(sev);\n } else if (isOutlined) {\n variant = isPlain ? plainVariant('outlined') : outlinedVariant(sev);\n } else {\n variant = isPlain ? plainVariant('solid') : solidVariant(sev);\n }\n\n return [...parts, sizing, variant, styleClass].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\nfunction plainVariant(kind: 'solid' | 'outlined' | 'text'): string {\n if (kind === 'solid') {\n return 'bg-(--f-text-color) text-(--f-content-background) hover:opacity-90 active:opacity-80 border border-transparent';\n }\n if (kind === 'outlined') {\n return '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 }\n return 'bg-transparent text-(--f-text-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) border border-transparent';\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 { booleanAttribute, Component, computed, effect, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\nconst FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n@Component({\n selector: 'f-confirmdialog',\n imports: [UiIconComponent, ButtonComponent],\n host: { class: 'block', '(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.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)=\"c.closable !== false && reject(c.reject)\"></div>\n <div\n #panel\n class=\"confirm-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl w-full max-w-sm mx-auto overflow-hidden\"\n [class]=\"styleClass()\"\n [style]=\"style()\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"c.header ? headerId : null\"\n [attr.aria-describedby]=\"c.message ? descId : null\"\n (keydown.tab)=\"onTab($event)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n >\n <div class=\"p-6\">\n <div class=\"flex items-start gap-4\">\n @if (resolvedIcon(c)) {\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) 12%, transparent)'\"\n >\n <ui-icon [name]=\"resolvedIcon(c)\" class=\"text-lg\" [style.color]=\"'var(--f-yellow-500)'\"></ui-icon>\n </div>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) {\n <h3 [id]=\"headerId\" class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ c.header }}</h3>\n }\n @if (c.message) {\n <p [id]=\"descId\" 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 <f-button\n severity=\"secondary\"\n [outlined]=\"true\"\n [label]=\"resolvedRejectLabel(c)\"\n [icon]=\"resolvedRejectIcon(c)\"\n [styleClass]=\"c.rejectButtonStyleClass ?? rejectButtonStyleClass()\"\n [autofocus]=\"defaultFocus() === 'reject'\"\n (onClick)=\"reject(c.reject)\"\n ></f-button>\n }\n @if (c.acceptVisible !== false) {\n <f-button\n [label]=\"resolvedAcceptLabel(c)\"\n [icon]=\"resolvedAcceptIcon(c)\"\n [styleClass]=\"c.acceptButtonStyleClass ?? acceptButtonStyleClass()\"\n [autofocus]=\"defaultFocus() === 'accept'\"\n (onClick)=\"accept(c.accept)\"\n ></f-button>\n }\n </div>\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmDialog {\n private static idCounter = 0;\n private readonly _doc = inject(DOCUMENT);\n protected readonly headerId = `f-confirmdialog-header-${++ConfirmDialog.idCounter}`;\n protected readonly descId = `f-confirmdialog-desc-${ConfirmDialog.idCounter}`;\n\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n readonly icon = input<string>('');\n readonly acceptLabel = input<string>('');\n readonly rejectLabel = input<string>('');\n readonly acceptIcon = input<string>('');\n readonly rejectIcon = input<string>('');\n readonly acceptButtonStyleClass = input<string>('');\n readonly rejectButtonStyleClass = input<string>('');\n readonly closeOnEscape = input(true, { transform: booleanAttribute });\n readonly blockScroll = input(true, { transform: booleanAttribute });\n readonly defaultFocus = input<'accept' | 'reject' | 'none'>('accept');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly activeConfirmation = computed(() => {\n const c = this.confirmationService.confirmation();\n if (!c || c.target) return null;\n return (c.key ?? undefined) === this.key() ? c : null;\n });\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n private _previouslyFocused: HTMLElement | null = null;\n\n constructor() {\n effect(() => {\n const visible = !!this.activeConfirmation();\n if (visible) {\n this._previouslyFocused = typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;\n if (this.blockScroll()) this._doc.body.style.overflow = 'hidden';\n } else {\n if (this.blockScroll()) this._doc.body.style.overflow = '';\n this._previouslyFocused?.focus();\n this._previouslyFocused = null;\n }\n });\n }\n\n resolvedIcon(c: { icon?: string }): string {\n return c.icon || this.icon();\n }\n\n resolvedAcceptLabel(c: { acceptLabel?: string }): string {\n return c.acceptLabel || this.acceptLabel() || 'Yes';\n }\n\n resolvedRejectLabel(c: { rejectLabel?: string }): string {\n return c.rejectLabel || this.rejectLabel() || 'No';\n }\n\n resolvedAcceptIcon(c: { acceptIcon?: string }): string {\n return c.acceptIcon || this.acceptIcon();\n }\n\n resolvedRejectIcon(c: { rejectIcon?: string }): string {\n return c.rejectIcon || this.rejectIcon();\n }\n\n onEscape(): void {\n const c = this.activeConfirmation();\n const closeOnEscape = c?.closeOnEscape ?? this.closeOnEscape();\n if (c && closeOnEscape) 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 private getFocusable(): HTMLElement[] {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return [];\n return Array.from(panelEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n }\n\n onTab(event: Event): void {\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[focusables.length - 1]) {\n event.preventDefault();\n focusables[0].focus();\n }\n }\n\n onShiftTab(event: Event): void {\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[0]) {\n event.preventDefault();\n focusables[focusables.length - 1].focus();\n }\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, contentChild, effect, inject, input, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MessageService, UiMessage, 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, NgTemplateOutlet],\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 [attr.aria-live]=\"msg.severity === 'error' ? 'assertive' : 'polite'\"\n (click)=\"dismiss(msg.id)\"\n (mouseenter)=\"onMouseEnter(msg.id)\"\n (mouseleave)=\"onMouseLeave(msg.id)\"\n >\n @if (messageTemplate()) {\n <ng-container [ngTemplateOutlet]=\"messageTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: msg }\"></ng-container>\n } @else {\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(); dismiss(msg.id)\"\n aria-label=\"Dismiss\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\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 onClose = output<UiMessage>();\n\n readonly messageTemplate = contentChild<TemplateRef<{ $implicit: UiMessage }>>('message');\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 private readonly serviceMessages = computed(() =>\n this.messageService.messages().filter((m) => (m.key ?? undefined) === this.key()),\n );\n\n private readonly _hovered = signal<Set<string>>(new Set());\n private previousDisplay: UiMessage[] = [];\n private readonly _displayMessages = signal<UiMessage[]>([]);\n readonly visibleMessages = this._displayMessages.asReadonly();\n\n constructor() {\n // Freezes hovered toasts in place even after the service auto-removes\n // them, so pause-on-hover works without the service needing to know\n // about hover state.\n effect(() => {\n const incoming = this.serviceMessages();\n const hovered = this._hovered();\n const incomingMap = new Map(incoming.map((m) => [m.id, m]));\n const merged: UiMessage[] = [];\n for (const m of this.previousDisplay) {\n const fresh = incomingMap.get(m.id);\n if (fresh) {\n merged.push(fresh);\n incomingMap.delete(m.id);\n } else if (hovered.has(m.id)) {\n merged.push(m);\n }\n }\n for (const m of incoming) {\n if (incomingMap.has(m.id)) merged.push(m);\n }\n const removed = this.previousDisplay.filter((p) => !merged.some((m) => m.id === p.id));\n this.previousDisplay = merged;\n this._displayMessages.set(merged);\n removed.forEach((r) => this.onClose.emit(r));\n });\n }\n\n onMouseEnter(id: string): void {\n this._hovered.update((s) => new Set(s).add(id));\n }\n\n onMouseLeave(id: string): void {\n this._hovered.update((s) => {\n const next = new Set(s);\n next.delete(id);\n return next;\n });\n }\n\n dismiss(id: string): void {\n this._hovered.update((s) => {\n if (!s.has(id)) return s;\n const next = new Set(s);\n next.delete(id);\n return next;\n });\n this.messageService.remove(id);\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, effect, input, output, signal } 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 [attr.aria-label]=\"ariaLabel() || label() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n >\n <ng-content />\n @if (image() && !imageLoadFailed()) {\n <img\n [src]=\"image()\"\n [alt]=\"ariaLabel() || label()\"\n class=\"w-full h-full object-cover\"\n (error)=\"onImgError($event)\"\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 readonly ariaLabel = input<string>('');\n readonly ariaLabelledBy = input<string>('');\n\n readonly onImageError = output<Event>();\n\n private readonly _imageLoadFailed = signal(false);\n readonly imageLoadFailed = this._imageLoadFailed.asReadonly();\n\n constructor() {\n effect(() => {\n this.image();\n this._imageLoadFailed.set(false);\n });\n }\n\n onImgError(event: Event): void {\n this._imageLoadFailed.set(true);\n this.onImageError.emit(event);\n }\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() && !this.imageLoadFailed();\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, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-avatar-group',\n host: {\n class: 'block',\n role: 'group',\n },\n template: `<div [class]=\"classes()\" [style]=\"style()\"><ng-content /></div>`,\n})\nexport class AvatarGroupComponent {\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly classes = computed(() => `flex -space-x-2 ${this.styleClass()}`);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { booleanAttribute, Directive, ElementRef, input, computed, effect, inject } from '@angular/core';\nimport { computeButtonClasses, type ButtonIconPosition, type ButtonSeverity, type ButtonSize, type ButtonVariant } 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-disabled]': \"disabled() ? 'true' : 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 variant = input<ButtonVariant>(null);\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 loadingIcon = input<string>('');\n readonly size = input<ButtonSize>(null);\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<ButtonIconPosition>('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() || this.variant() === 'text',\n link: this.link(),\n outlined: this.outlined() || this.variant() === 'outlined',\n plain: this.plain(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconPos: this.iconPos(),\n iconOnly: !!this.icon() && !this.label(),\n }));\n\n constructor() {\n effect(() => {\n const el = this._el.nativeElement;\n const loading = this.loading();\n const iconClass = loading ? this.loadingIcon() || 'loader-circle' : this.icon();\n const label = this.label();\n const pos = this.iconPos();\n\n for (const n of this._appliedContentNodes) n.remove();\n this._appliedContentNodes = [];\n\n const nodes: HTMLElement[] = [];\n\n if (iconClass && (pos === 'left' || pos === 'top')) {\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' || pos === 'bottom')) {\n const i = this._doc.createElement('i');\n i.className = `${iconClass} shrink-0${loading ? ' animate-spin' : ''}`;\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, computed, effect, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-chip',\n imports: [UiIconComponent],\n host: {\n class: 'block',\n '[style.display]': \"visible() ? null : 'none'\",\n '[attr.aria-label]': 'label() || null',\n },\n template: `\n <div [class]=\"classes()\" [style]=\"style()\">\n @if (image() && !imageLoadFailed()) {\n <img\n [src]=\"image()\"\n [alt]=\"alt() || label()\"\n class=\"w-6 h-6 -ml-1 rounded-full object-cover\"\n (error)=\"onImgError($event)\"\n />\n } @else if (icon()) {\n <ui-icon [name]=\"icon()\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon>\n }\n @if (label()) { <span class=\"font-medium text-xs\">{{ label() }}</span> }\n <ng-content></ng-content>\n @if (removable()) {\n <button\n type=\"button\"\n [disabled]=\"disabled()\"\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 disabled:cursor-not-allowed disabled:opacity-50\"\n (click)=\"onRemoveClick($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <ui-icon [name]=\"removeIcon() || '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 image = input<string>('');\n readonly alt = input<string>('');\n readonly removable = input(false, { transform: booleanAttribute });\n readonly removeIcon = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onRemove = output<MouseEvent>();\n readonly onImageError = output<Event>();\n\n private readonly _visible = signal(true);\n readonly visible = this._visible.asReadonly();\n\n private readonly _imageLoadFailed = signal(false);\n readonly imageLoadFailed = this._imageLoadFailed.asReadonly();\n\n constructor() {\n effect(() => {\n this.image();\n this._imageLoadFailed.set(false);\n });\n }\n\n readonly classes = computed(\n () =>\n `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)] ${this.styleClass()}`,\n );\n\n onImgError(event: Event): void {\n this._imageLoadFailed.set(true);\n this.onImageError.emit(event);\n }\n\n onRemoveClick(event: MouseEvent): void {\n if (this.disabled()) return;\n this._visible.set(false);\n this.onRemove.emit(event);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'Enter' || event.key === 'Backspace') {\n this._visible.set(false);\n this.onRemove.emit(event as unknown as MouseEvent);\n }\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type DividerLayout = 'horizontal' | 'vertical';\nexport type DividerType = 'solid' | 'dashed' | 'dotted';\nexport type DividerAlign = 'left' | 'center' | 'right' | 'top' | 'bottom';\n\n@Component({\n selector: 'f-divider',\n host: {\n role: 'separator',\n '[class]': 'hostClass()',\n '[attr.aria-orientation]': 'layout()',\n },\n template: `\n @if (layout() === 'vertical') {\n <div class=\"inline-flex flex-col items-center self-stretch mx-3\">\n <div [class]=\"segmentClass() + ' ' + beforeClass()\"></div>\n <span class=\"empty:hidden py-1 text-xs text-(--f-text-muted-color) whitespace-nowrap\"><ng-content /></span>\n <div [class]=\"segmentClass() + ' ' + afterClass()\"></div>\n </div>\n } @else {\n <div class=\"flex items-center w-full my-4\">\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<DividerLayout>('horizontal');\n readonly type = input<DividerType>('solid');\n readonly align = input<DividerAlign>('center');\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\n\n readonly segmentClass = computed(() => {\n const typeMap: Record<DividerType, string> = { 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(() => {\n const align = this.align();\n if (this.layout() === 'vertical') return align === 'top' ? 'flex-none h-8' : 'flex-1';\n return align === 'left' ? 'flex-none w-8' : 'flex-1';\n });\n\n readonly afterClass = computed(() => {\n const align = this.align();\n if (this.layout() === 'vertical') return align === 'bottom' ? 'flex-none h-8' : 'flex-1';\n return align === 'right' ? 'flex-none w-8' : 'flex-1';\n });\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 { booleanAttribute, Component, computed, contentChildren, input, output, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nconst ZOOM_STEP = 0.1;\nconst ZOOM_MIN = 0.5;\nconst ZOOM_MAX = 1.5;\n\n@Component({\n selector: 'f-image',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { '[class]': 'hostClass()', '(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 <div class=\"relative inline-block\" [style]=\"style()\">\n @if (!hasError()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [attr.loading]=\"loading()\"\n class=\"object-cover\"\n [class.cursor-pointer]=\"preview()\"\n (click)=\"preview() && open()\"\n (load)=\"onLoad()\"\n (error)=\"onImgError($event)\"\n />\n @if (preview() && loaded()) {\n <button\n type=\"button\"\n aria-label=\"Zoom image\"\n class=\"absolute inset-0 flex items-center justify-center bg-black/0 hover:bg-black/40 text-white opacity-0 hover:opacity-100 transition-all duration-200 cursor-pointer\"\n (click)=\"open()\"\n >\n @if (indicatorTpl()) {\n <ng-container [ngTemplateOutlet]=\"indicatorTpl()!\" />\n } @else {\n <ui-icon name=\"eye\" class=\"text-lg\"></ui-icon>\n }\n </button>\n }\n @if (!loaded()) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-(--f-content-hover-background) rounded\" [style.width]=\"width()\" [style.height]=\"height()\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-lg text-(--f-text-muted-color)\"></ui-icon>\n </div>\n }\n } @else {\n <div\n class=\"flex flex-col items-center justify-center gap-1 bg-(--f-content-hover-background) text-(--f-text-muted-color) rounded\"\n [style.width]=\"width() || '8rem'\"\n [style.height]=\"height() || '8rem'\"\n >\n <ui-icon name=\"image-off\" class=\"text-lg\"></ui-icon>\n <span class=\"text-xs\">Failed to load</span>\n </div>\n }\n </div>\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 <div class=\"absolute top-4 left-4 flex items-center gap-1\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" aria-label=\"Rotate left\" class=\"w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors\" (click)=\"rotateLeft()\">\n <ui-icon name=\"rotate-ccw\" class=\"text-base\"></ui-icon>\n </button>\n <button type=\"button\" aria-label=\"Rotate right\" class=\"w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors\" (click)=\"rotateRight()\">\n <ui-icon name=\"rotate-cw\" class=\"text-base\"></ui-icon>\n </button>\n <button type=\"button\" aria-label=\"Zoom out\" class=\"w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"zoomOutDisabled()\" (click)=\"zoomOut()\">\n <ui-icon name=\"zoom-out\" class=\"text-base\"></ui-icon>\n </button>\n <button type=\"button\" aria-label=\"Zoom in\" class=\"w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"zoomInDisabled()\" (click)=\"zoomIn()\">\n <ui-icon name=\"zoom-in\" class=\"text-base\"></ui-icon>\n </button>\n </div>\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\n [src]=\"src()\"\n [alt]=\"alt()\"\n class=\"max-w-full max-h-full object-contain transition-transform duration-200\"\n [style.transform]=\"previewTransform()\"\n (click)=\"$event.stopPropagation()\"\n />\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 readonly loading = input<'lazy' | 'eager' | undefined>(undefined);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onImageError = output<Event>();\n\n readonly hostClass = computed(() => `inline-block ${this.styleClass()}`.trim());\n\n private readonly fTemplates = contentChildren(FTemplateDirective);\n readonly indicatorTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'indicator')?.templateRef ?? null);\n\n private readonly _previewVisible = signal(false);\n readonly previewVisible = this._previewVisible.asReadonly();\n\n private readonly _loaded = signal(false);\n readonly loaded = this._loaded.asReadonly();\n private readonly _hasError = signal(false);\n readonly hasError = this._hasError.asReadonly();\n\n private readonly _rotate = signal(0);\n readonly rotate = this._rotate.asReadonly();\n private readonly _scale = signal(1);\n readonly scale = this._scale.asReadonly();\n\n readonly zoomInDisabled = computed(() => this._scale() + ZOOM_STEP > ZOOM_MAX);\n readonly zoomOutDisabled = computed(() => this._scale() - ZOOM_STEP < ZOOM_MIN);\n readonly previewTransform = computed(() => `rotate(${this._rotate()}deg) scale(${this._scale()})`);\n\n open(): void {\n if (this.hasError()) return;\n this._previewVisible.set(true);\n this.onShow.emit();\n }\n\n close(): void {\n this._previewVisible.set(false);\n this._rotate.set(0);\n this._scale.set(1);\n this.onHide.emit();\n }\n\n onEscape(): void {\n if (this.previewVisible()) this.close();\n }\n\n onLoad(): void {\n this._loaded.set(true);\n this._hasError.set(false);\n }\n\n onImgError(event: Event): void {\n this._hasError.set(true);\n this._loaded.set(true);\n this.onImageError.emit(event);\n }\n\n rotateLeft(): void { this._rotate.update(r => r - 90); }\n rotateRight(): void { this._rotate.update(r => r + 90); }\n zoomIn(): void { if (!this.zoomInDisabled()) this._scale.update(s => Math.min(ZOOM_MAX, s + ZOOM_STEP)); }\n zoomOut(): void { if (!this.zoomOutDisabled()) this._scale.update(s => Math.max(ZOOM_MIN, s - ZOOM_STEP)); }\n}\n","import { afterNextRender, booleanAttribute, Component, computed, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type MessageSeverity = 'success' | 'info' | 'warn' | 'error' | 'secondary' | 'contrast';\n\n@Component({\n selector: 'f-message',\n imports: [UiIconComponent],\n host: {\n class: 'block',\n '[style.display]': \"visible() ? null : 'none'\",\n },\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 @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"shrink-0 inline-flex items-center justify-center w-5 h-5 rounded-md opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\n (click)=\"close($event)\"\n >\n <ui-icon name=\"times\" [size]=\"12\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class MessageComponent {\n readonly severity = input<MessageSeverity>('info');\n readonly text = input<string>('');\n readonly icon = input<string>('');\n readonly closable = input(false, { transform: booleanAttribute });\n readonly life = input<number | undefined>(undefined);\n readonly styleClass = input<string>('');\n\n readonly onClose = output<void>();\n\n private readonly _visible = signal(true);\n readonly visible = this._visible.asReadonly();\n\n constructor() {\n afterNextRender(() => {\n const ms = this.life();\n if (ms) setTimeout(() => this.close(), ms);\n });\n }\n\n close(event?: Event): void {\n event?.stopPropagation();\n this._visible.set(false);\n this.onClose.emit();\n }\n\n readonly classes = computed(() => {\n const map: Record<MessageSeverity, 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 secondary: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-(--f-content-hover-background) text-(--f-text-muted-color) border border-(--f-content-border-color)',\n contrast: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-(--f-text-color) text-(--f-content-background) border border-(--f-text-color)',\n };\n const base = map[this.severity()] ?? map['info'];\n return this.styleClass() ? `${base} ${this.styleClass()}` : base;\n });\n\n readonly iconName = computed(() => {\n if (this.icon()) return this.icon();\n const map: Record<MessageSeverity, 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[this.severity()] ?? map['info'];\n });\n\n readonly iconColor = computed(() => {\n const map: Record<MessageSeverity, string> = {\n success: 'text-green-600',\n info: 'text-sky-600',\n warn: 'text-amber-600',\n error: 'text-red-600',\n secondary: 'text-(--f-text-muted-color)',\n contrast: 'text-(--f-content-background)',\n };\n return map[this.severity()] ?? map['info'];\n });\n}\n","import { booleanAttribute, Component, computed, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type ProgressbarSeverity =\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'secondary'\n | 'contrast'\n | null;\nexport type ProgressbarMode = 'determinate' | 'indeterminate';\n\n@Component({\n selector: 'f-progressbar',\n imports: [NgTemplateOutlet],\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]': 'hostClass()' },\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-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"mode() === 'determinate' ? value() : null\"\n >\n @if (mode() === 'indeterminate') {\n <div [class]=\"barClass()\" [style]=\"barStyle()\"></div>\n } @else {\n <div [class]=\"barClass()\" [style.width]=\"value() + '%'\" [style]=\"barStyle()\">\n @if (valueTemplate()) {\n <ng-container [ngTemplateOutlet]=\"valueTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: value() }\" />\n } @else if (showValue()) {\n <span class=\"text-xs font-semibold text-primary-contrast whitespace-nowrap px-1\">{{ value() }}{{ unit() }}</span>\n }\n </div>\n }\n </div>\n `,\n})\nexport class ProgressbarComponent {\n readonly value = input<number>(0);\n readonly mode = input<ProgressbarMode>('determinate');\n readonly showValue = input(true, { transform: booleanAttribute });\n readonly unit = input<string>('%');\n readonly severity = input<ProgressbarSeverity>(null);\n readonly color = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly valueTemplate = contentChild<TemplateRef<{ $implicit: number }>>('value');\n\n readonly hostClass = computed(() => `block w-full relative z-999999 ${this.styleClass()}`);\n\n readonly barClass = computed(() => {\n const base = 'h-full rounded-lg transition-all duration-500 ease-out flex items-center justify-center overflow-hidden';\n const anim = this.mode() === 'indeterminate' ? 'absolute inset-y-0 w-1/3 indeterminate-bar' : '';\n if (this.color()) return `${base} ${anim}`;\n const colorMap: Record<string, string> = {\n success: 'bg-green-500',\n info: 'bg-sky-500',\n warn: 'bg-amber-500',\n danger: 'bg-red-500',\n secondary: 'bg-surface-400',\n contrast: 'bg-surface-950',\n };\n const sev = this.severity();\n return `${base} ${anim} ${sev ? (colorMap[sev] ?? colorMap['secondary']) : 'bg-primary'}`;\n });\n\n readonly barStyle = computed(() => {\n const c = this.color();\n return c ? { background: c } : null;\n });\n}\n","import { Component, computed, 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-name: spinner-rotate; animation-timing-function: linear; animation-iteration-count: infinite; }\n .spinner-arc { animation-name: spinner-dash; animation-timing-function: ease-in-out; animation-iteration-count: infinite; }\n `],\n host: {\n class: 'inline-block',\n role: 'progressbar',\n '[attr.aria-busy]': 'true',\n '[attr.aria-label]': 'ariaLabel() || null',\n },\n template: `\n <div [class]=\"hostClass()\" [style.width]=\"size() + 'px'\" [style.height]=\"size() + 'px'\">\n <svg class=\"spinner-svg\" [style.animation-duration]=\"animationDuration()\" [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\" [style.animation-duration]=\"animationDuration()\" [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 readonly animationDuration = input<string>('2s');\n readonly styleClass = input<string>('');\n readonly ariaLabel = input<string>('');\n\n readonly hostClass = computed(() => `inline-flex items-center justify-center ${this.styleClass()}`);\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type SkeletonShape = 'rectangle' | 'circle';\nexport type SkeletonAnimation = 'wave' | 'none';\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 }\n .skeleton-shimmer.skeleton-animate-wave { animation: shimmer 1.6s ease-in-out infinite; }\n `],\n host: { class: 'block', '[attr.aria-hidden]': 'true' },\n template: `<div [style]=\"hostStyle()\" [class]=\"hostClass()\"></div>`,\n})\nexport class SkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly size = input<string>('');\n readonly borderRadius = input<string>('');\n readonly shape = input<SkeletonShape>('rectangle');\n readonly animation = input<SkeletonAnimation>('wave');\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(() => `skeleton-shimmer ${this.animation() === 'wave' ? 'skeleton-animate-wave' : ''} ${this.styleClass()}`);\n\n readonly hostStyle = computed(() => {\n const s = this.shape();\n const size = this.size();\n const w = size || this.width();\n const h = size || 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, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\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, NgTemplateOutlet],\n template: `\n <span\n [class]=\"classes()\"\n [style]=\"style()\"\n [style.background-color]=\"colorBackground()\"\n [style.color]=\"color() || null\"\n role=\"status\"\n >\n @if (iconTemplate()) {\n <ng-container [ngTemplateOutlet]=\"iconTemplate()\"></ng-container>\n } @else 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 readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly iconTemplate = contentChild<TemplateRef<unknown>>('icon');\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'} ${this.styleClass()}`;\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 colorBackground = computed(() => {\n const c = this.color();\n return c ? `${c}22` : null;\n });\n}\n","import {\n booleanAttribute,\n Component,\n computed,\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\nexport type CheckboxVariant = 'filled' | 'outlined' | null;\nexport type CheckboxSize = 'small' | 'large' | null;\n\n@Component({\n selector: 'f-checkbox',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\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 [indeterminate]=\"indeterminate()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : checked()\"\n [attr.aria-readonly]=\"readonly() || null\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div [class]=\"boxClass()\">\n @if (indeterminate()) {\n <ui-icon name=\"minus\" [size]=\"iconSize()\" class=\"text-primary-contrast\"></ui-icon>\n } @else if (checked()) {\n <ui-icon name=\"check\" [size]=\"iconSize()\" class=\"text-primary-contrast\"></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 readonly = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly variant = input<CheckboxVariant>(null);\n readonly size = input<CheckboxSize>(null);\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 style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\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 readonly iconSize = computed(() => (this.size() === 'small' ? 12 : this.size() === 'large' ? 18 : 14));\n\n readonly boxClass = computed(() => {\n const sizing = this.size() === 'small' ? 'w-4 h-4' : this.size() === 'large' ? 'w-6 h-6' : 'w-5 h-5';\n const base = `rounded-sm border-2 flex items-center justify-center transition-all duration-[var(--f-transition-duration)] shadow-sm\n peer-checked:bg-primary peer-checked:border-primary\n peer-focus-visible:ring-focus`;\n const unchecked = this.variant() === 'filled'\n ? 'bg-(--f-content-hover-background) border-transparent'\n : 'bg-(--f-form-field-background) border-(--f-form-field-border-color)';\n const active = this.indeterminate() ? 'bg-primary border-primary' : '';\n const invalidClass = this.invalid() && this.touched() ? 'border-red-400' : '';\n return `${sizing} ${base} ${unchecked} ${active} ${invalidClass}`;\n });\n\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInputClick(event: Event): void {\n if (this.readonly()) event.preventDefault();\n }\n\n onChange(event: Event): void {\n if (this.readonly()) return;\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 { booleanAttribute, Component, computed, ElementRef, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type PopoverAppendTo = 'self' | 'body';\n\n@Component({\n selector: 'f-popover',\n imports: [UiIconComponent],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscape()',\n },\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 tabindex=\"-1\"\n role=\"dialog\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [class]=\"panelClass()\"\n [style]=\"panelStyle()\"\n [style.top.px]=\"appendTo() === 'body' ? top() : null\"\n [style.left.px]=\"appendTo() === 'body' ? left() : null\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (showCloseIcon()) {\n <button\n type=\"button\"\n class=\"absolute top-2 right-2 inline-flex items-center justify-center w-6 h-6 rounded-md text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-focus\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onCloseIconClick($event)\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n <ng-content />\n </div>\n }\n `,\n})\nexport class PopoverComponent {\n readonly dismissable = input(true, { transform: booleanAttribute });\n readonly appendTo = input<PopoverAppendTo>('body');\n readonly showCloseIcon = input(false, { transform: booleanAttribute });\n readonly closeAriaLabel = input<string>('Close');\n readonly focusOnShow = input(true, { transform: booleanAttribute });\n readonly returnFocusOnHide = input(true, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly ariaLabelledBy = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly styleClass = input<string>('');\n readonly breakpoints = input<Record<string, string> | null>(null);\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\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 private _previouslyFocused: HTMLElement | null = null;\n\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 ...this.style(),\n ...(this.breakpointWidth() ? { width: this.breakpointWidth()! } : {}),\n }));\n\n // appendTo=\"self\" relies on the consumer wrapping the anchor + <f-popover> in a\n // `position: relative` container (see f-colorpicker) and anchors via CSS instead\n // of viewport math. appendTo=\"body\" (default) tracks the anchor with fixed\n // positioning, which already escapes ancestor overflow clipping without a real\n // DOM reparent.\n readonly panelClass = computed(() => {\n const position = this.appendTo() === 'self' ? 'absolute top-full left-0 mt-1.5' : 'fixed';\n return `popover-panel ${position} z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-48 max-w-sm ${this.styleClass()}`;\n });\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\n toggle(event: Event): void {\n this._anchor = event.target as HTMLElement;\n if (this.visible()) { this.hide(); return; }\n this.showInternal();\n }\n\n show(event: Event): void {\n this._anchor = event.target as HTMLElement;\n this.showInternal();\n }\n\n private showInternal(): void {\n this._previouslyFocused = typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;\n this.position();\n this._visible.set(true);\n this.onShow.emit();\n setTimeout(() => {\n this.adjustForViewport();\n if (this.focusOnShow()) this.focusPanel();\n }, 0);\n }\n\n hide(): void {\n if (!this._visible()) return;\n this._visible.set(false);\n this.onHide.emit();\n if (this.returnFocusOnHide()) this._previouslyFocused?.focus();\n this._previouslyFocused = null;\n }\n\n private focusPanel(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return;\n const focusable = panelEl.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n (focusable ?? panelEl).focus();\n }\n\n private position(): void {\n if (!this._anchor || this.appendTo() === 'self') 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 if (this.appendTo() === 'self') return;\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 onCloseIconClick(event: Event): void {\n event.stopPropagation();\n this.hide();\n }\n\n onEscape(): void {\n if (this.visible()) this.hide();\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 {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { PopoverComponent } from '../popover/popover.component';\n\nexport type FDatePickerSelectionMode = 'single' | 'multiple' | 'range';\nexport type FDatePickerView = 'date' | 'month' | 'year';\nexport type FDatePickerIconDisplay = 'button' | 'input';\nexport type FDatePickerHourFormat = '12' | '24';\nexport type FDatePickerAppendTo = 'self' | 'body';\nexport type FDatePickerValue = Date | Array<Date | null> | null;\n\ninterface FDatePickerDay {\n day: number;\n date: Date;\n otherMonth: boolean;\n selected: boolean;\n rangeStart: boolean;\n rangeEnd: boolean;\n inRange: boolean;\n today: boolean;\n disabled: boolean;\n}\n\nconst MONTH_NAMES = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst MONTH_SHORT_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst DAY_NAMES = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nfunction stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nfunction isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction addDays(date: Date, n: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + n);\n return d;\n}\n\nfunction addMonths(date: Date, n: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n}\n\nfunction addYears(date: Date, n: number): Date {\n const d = new Date(date);\n d.setFullYear(d.getFullYear() + n);\n return d;\n}\n\nfunction startOfWeek(date: Date, firstDay: number): Date {\n const diff = (date.getDay() - firstDay + 7) % 7;\n return addDays(date, -diff);\n}\n\nfunction endOfWeek(date: Date, firstDay: number): Date {\n return addDays(startOfWeek(date, firstDay), 6);\n}\n\nfunction combineDateTime(date: Date, hour: number, minute: number, second: number): Date {\n const d = new Date(date);\n d.setHours(hour, minute, second, 0);\n return d;\n}\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, '0');\n}\n\nfunction formatTime(date: Date, hourFormat: FDatePickerHourFormat, showSeconds: boolean): string {\n let h = date.getHours();\n const m = pad2(date.getMinutes());\n const s = pad2(date.getSeconds());\n let suffix = '';\n if (hourFormat === '12') {\n suffix = h >= 12 ? ' PM' : ' AM';\n h = h % 12;\n if (h === 0) h = 12;\n }\n const hh = hourFormat === '12' ? String(h) : pad2(h);\n return showSeconds ? `${hh}:${m}:${s}${suffix}` : `${hh}:${m}${suffix}`;\n}\n\nfunction parseDate(text: string, format: string): Date | null {\n if (!text.trim()) return null;\n const patternMap: Record<string, string> = { yyyy: '(\\\\d{4})', yy: '(\\\\d{2})', mm: '(\\\\d{2})', m: '(\\\\d{1,2})', dd: '(\\\\d{2})', d: '(\\\\d{1,2})' };\n const tokens = format.match(/yyyy|yy|mm|m|dd|d|[^a-zA-Z]+/g) ?? [];\n let regexStr = '';\n const order: string[] = [];\n for (const t of tokens) {\n if (patternMap[t]) {\n regexStr += patternMap[t];\n order.push(t);\n } else {\n regexStr += t.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n }\n const match = new RegExp(`^${regexStr}$`).exec(text.trim());\n if (!match) return null;\n let year = new Date().getFullYear();\n let month = 0;\n let day = 1;\n order.forEach((t, i) => {\n const v = parseInt(match[i + 1], 10);\n if (t === 'yyyy') year = v;\n else if (t === 'yy') year = 2000 + v;\n else if (t === 'mm' || t === 'm') month = v - 1;\n else if (t === 'dd' || t === 'd') day = v;\n });\n const date = new Date(year, month, day);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\n@Component({\n selector: 'f-datepicker',\n imports: [UiIconComponent, NgTemplateOutlet, PopoverComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n @if (inline()) {\n <div [class]=\"inlinePanelClass()\">\n <ng-container [ngTemplateOutlet]=\"panelContent\" />\n </div>\n } @else {\n <div class=\"relative\">\n <div [class]=\"wrapperClass()\">\n @if (iconDisplay() === 'input' && showIcon()) {\n <span class=\"inline-flex items-center justify-center pl-2 text-(--f-form-field-placeholder-color)\">\n <ui-icon name=\"calendar\" class=\"text-sm\"></ui-icon>\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n [class]=\"inputClass()\"\n [id]=\"inputId()\"\n [readOnly]=\"readonlyInput()\"\n [disabled]=\"disabled()\"\n [value]=\"displayValue()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-invalid]=\"invalid() ? true : null\"\n [attr.aria-readonly]=\"readonly() ? true : null\"\n (click)=\"onInputClick($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n (change)=\"onInputChange($any($event.target).value)\"\n />\n @if (showClear() && hasValue() && !disabled() && !readonly()) {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-1 text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer\" (click)=\"clear($event)\" aria-label=\"Clear\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (showIcon() && iconDisplay() === 'button') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2 text-(--f-form-field-placeholder-color) border-l border-(--f-content-border-color) cursor-pointer\" (click)=\"toggleCalendar($event)\" aria-label=\"Choose date\">\n <ui-icon name=\"calendar\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n\n @if (appendTo() === 'body') {\n <f-popover #pop [dismissable]=\"true\" [focusOnShow]=\"false\">\n <div class=\"p-3 min-w-64\" (keydown.escape)=\"closeAndFocusInput()\">\n <ng-container [ngTemplateOutlet]=\"panelContent\" />\n </div>\n </f-popover>\n } @else 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\" (keydown.escape)=\"closeAndFocusInput()\">\n <ng-container [ngTemplateOutlet]=\"panelContent\" />\n </div>\n }\n </div>\n }\n\n <ng-template #panelContent>\n @if (gridMode() === 'date') {\n <div class=\"flex gap-4\">\n @for (mv of calendarMonths(); track mv.month + '-' + mv.year; let i = $index) {\n <div>\n <div class=\"flex items-center justify-between mb-3\">\n @if (headerTpl()) {\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" [ngTemplateOutletContext]=\"{ $implicit: mv }\" />\n } @else {\n @if (i === 0) {\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" [attr.aria-label]=\"prevAriaLabel()\" (click)=\"onPrevClick()\">\n <ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon>\n </button>\n } @else {\n <span class=\"w-6\"></span>\n }\n <span class=\"flex items-center gap-1\">\n <button type=\"button\" class=\"text-sm font-semibold px-1 py-0.5 rounded-md hover:bg-(--f-content-hover-background) cursor-pointer\" [disabled]=\"view() !== 'date'\" (click)=\"onHeaderMonthClick()\">{{ MONTHS[mv.month] }}</button>\n <button type=\"button\" class=\"text-sm font-semibold px-1 py-0.5 rounded-md hover:bg-(--f-content-hover-background) cursor-pointer\" [disabled]=\"view() !== 'date'\" (click)=\"onHeaderYearClick()\">{{ mv.year }}</button>\n </span>\n @if (i === calendarMonths().length - 1) {\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" [attr.aria-label]=\"nextAriaLabel()\" (click)=\"onNextClick()\">\n <ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon>\n </button>\n } @else {\n <span class=\"w-6\"></span>\n }\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0.5 mb-1\">\n @for (d of orderedDayNames(); 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\" role=\"grid\" [attr.aria-label]=\"MONTHS[mv.month] + ' ' + mv.year\" (keydown)=\"onGridKeyDown($event)\">\n @for (day of daysFor(mv.month, mv.year); track day.date.getTime()) {\n @if (day.otherMonth && !showOtherMonths()) {\n <span class=\"invisible\"></span>\n } @else {\n <button\n type=\"button\"\n [id]=\"cellId(day.date)\"\n role=\"gridcell\"\n [attr.aria-selected]=\"day.selected\"\n [attr.aria-label]=\"day.date.toDateString()\"\n [tabindex]=\"isFocusedDay(day.date) ? 0 : -1\"\n [class]=\"dayClass(day)\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\"\n >\n @if (dateTpl()) {\n <ng-container [ngTemplateOutlet]=\"dateTpl()\" [ngTemplateOutletContext]=\"{ $implicit: day.date }\" />\n } @else {\n {{ day.day }}\n }\n </button>\n }\n }\n </div>\n </div>\n }\n </div>\n } @else if (gridMode() === 'month') {\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 cursor-pointer\" [attr.aria-label]=\"prevAriaLabel()\" (click)=\"onPrevClick()\">\n <ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon>\n </button>\n <button type=\"button\" class=\"text-sm font-semibold px-1 py-0.5 rounded-md hover:bg-(--f-content-hover-background) cursor-pointer\" [disabled]=\"view() !== 'date'\" (click)=\"onHeaderYearClick()\">{{ viewYear() }}</button>\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" [attr.aria-label]=\"nextAriaLabel()\" (click)=\"onNextClick()\">\n <ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n <div class=\"grid grid-cols-3 gap-1.5\" role=\"grid\" [attr.aria-label]=\"'Select month'\">\n @for (m of MONTH_SHORT; track m; let i = $index) {\n <button\n type=\"button\"\n role=\"gridcell\"\n [attr.aria-selected]=\"i === viewMonth()\"\n class=\"text-sm py-2.5 rounded-md transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-focus hover:bg-(--f-content-hover-background)\"\n [class.bg-primary]=\"i === viewMonth()\"\n [class.text-primary-contrast]=\"i === viewMonth()\"\n (click)=\"selectMonth(i)\"\n >{{ m }}</button>\n }\n </div>\n } @else {\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 cursor-pointer\" [attr.aria-label]=\"prevAriaLabel()\" (click)=\"onPrevClick()\">\n <ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon>\n </button>\n <span class=\"text-sm font-semibold\">{{ yearGridYears()[0] }} - {{ yearGridYears()[yearGridYears().length - 1] }}</span>\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" [attr.aria-label]=\"nextAriaLabel()\" (click)=\"onNextClick()\">\n <ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n <div class=\"grid grid-cols-3 gap-1.5\" role=\"grid\" [attr.aria-label]=\"'Select year'\">\n @for (y of yearGridYears(); track y) {\n <button\n type=\"button\"\n role=\"gridcell\"\n [attr.aria-selected]=\"y === viewYear()\"\n class=\"text-sm py-2.5 rounded-md transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-focus hover:bg-(--f-content-hover-background)\"\n [class.bg-primary]=\"y === viewYear()\"\n [class.text-primary-contrast]=\"y === viewYear()\"\n (click)=\"selectYear(y)\"\n >{{ y }}</button>\n }\n </div>\n }\n\n @if (gridMode() === 'date' && (showTime() || timeOnly())) {\n <div class=\"flex items-center justify-center gap-2 mt-3 pt-3 border-t border-(--f-content-border-color)\">\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"incrementHour()\" aria-label=\"Increment hour\"><ui-icon name=\"chevron-up\" class=\"text-xs\"></ui-icon></button>\n <span class=\"text-sm font-mono tabular-nums w-6 text-center\">{{ displayHourText() }}</span>\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"decrementHour()\" aria-label=\"Decrement hour\"><ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon></button>\n </div>\n <span class=\"text-sm font-semibold\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"incrementMinute()\" aria-label=\"Increment minute\"><ui-icon name=\"chevron-up\" class=\"text-xs\"></ui-icon></button>\n <span class=\"text-sm font-mono tabular-nums w-6 text-center\">{{ pad2(timeMinute()) }}</span>\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"decrementMinute()\" aria-label=\"Decrement minute\"><ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon></button>\n </div>\n @if (showSeconds()) {\n <span class=\"text-sm font-semibold\">:</span>\n <div class=\"flex flex-col items-center\">\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"incrementSecond()\" aria-label=\"Increment second\"><ui-icon name=\"chevron-up\" class=\"text-xs\"></ui-icon></button>\n <span class=\"text-sm font-mono tabular-nums w-6 text-center\">{{ pad2(timeSecond()) }}</span>\n <button type=\"button\" class=\"p-0.5 hover:bg-(--f-content-hover-background) rounded-md cursor-pointer\" (click)=\"decrementSecond()\" aria-label=\"Decrement second\"><ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon></button>\n </div>\n }\n @if (hourFormat() === '12') {\n <button type=\"button\" class=\"ml-1 px-2 py-1 text-xs font-semibold rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer\" (click)=\"togglePeriod()\">{{ isPM() ? 'PM' : 'AM' }}</button>\n }\n </div>\n }\n\n @if (footerTpl()) {\n <div class=\"mt-3 pt-2 border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n } @else 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 cursor-pointer\" (click)=\"handleTodayClick()\">Today</button>\n <button type=\"button\" class=\"text-xs font-medium text-(--f-text-muted-color) hover:underline cursor-pointer\" (click)=\"handleClearClick()\">Clear</button>\n </div>\n }\n </ng-template>\n `,\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n private static idCounter = 0;\n private readonly _instanceId = `f-datepicker-${++DatePickerComponent.idCounter}`;\n\n readonly MONTHS = MONTH_NAMES;\n readonly MONTH_SHORT = MONTH_SHORT_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 readonly = input(false, { transform: booleanAttribute });\n readonly readonlyInput = input(true, { transform: booleanAttribute });\n readonly showTime = input(false, { transform: booleanAttribute });\n readonly timeOnly = input(false, { transform: booleanAttribute });\n readonly hourFormat = input<FDatePickerHourFormat>('24');\n readonly showSeconds = input(false, { transform: booleanAttribute });\n readonly selectionMode = input<FDatePickerSelectionMode>('single');\n readonly minDate = input<Date | null | undefined>(null);\n readonly maxDate = input<Date | null | undefined>(null);\n readonly disabledDates = input<Date[]>([]);\n readonly disabledDays = input<number[]>([]);\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 iconDisplay = input<FDatePickerIconDisplay>('button');\n readonly showButtonBar = input(false, { transform: booleanAttribute });\n readonly inline = input(false, { transform: booleanAttribute });\n readonly numberOfMonths = input(1, { transform: numberAttribute });\n readonly view = input<FDatePickerView>('date');\n readonly showOtherMonths = input(true, { transform: booleanAttribute });\n readonly selectOtherMonths = input(false, { transform: booleanAttribute });\n readonly firstDayOfWeek = input(0, { transform: numberAttribute });\n readonly appendTo = input<FDatePickerAppendTo>('self');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n readonly onBlur = output<void>();\n readonly onSelect = output<Date>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onClearClick = output<void>();\n readonly onTodayClick = output<void>();\n readonly onMonthChange = output<{ month: number; year: number }>();\n readonly onYearChange = output<{ month: number; year: number }>();\n\n private readonly _value = signal<FDatePickerValue>(null);\n readonly value = this._value.asReadonly();\n private readonly _open = signal(false);\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 private readonly _gridMode = signal<FDatePickerView>('date');\n readonly gridMode = computed(() => (this.view() !== 'date' ? this.view() : this._gridMode()));\n private readonly _focusedDate = signal<Date | null>(null);\n\n private readonly _timeHour = signal(0);\n private readonly _timeMinute = signal(0);\n private readonly _timeSecond = signal(0);\n readonly timeMinute = this._timeMinute.asReadonly();\n readonly timeSecond = this._timeSecond.asReadonly();\n readonly displayHourText = computed(() => {\n const h = this._timeHour();\n if (this.hourFormat() === '12') {\n const h12 = h % 12;\n return pad2(h12 === 0 ? 12 : h12);\n }\n return pad2(h);\n });\n readonly isPM = computed(() => this._timeHour() >= 12);\n\n private readonly popoverRef = viewChild<PopoverComponent>('pop');\n private readonly _inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n readonly open = computed(() => (this.appendTo() === 'body' ? (this.popoverRef()?.visible() ?? false) : this._open()));\n\n private readonly _el = inject(ElementRef);\n private _onChange: (v: FDatePickerValue) => void = () => {};\n private _onTouched: () => void = () => {};\n private _wasOpen = false;\n\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly dateRef = contentChild<TemplateRef<unknown>>('date');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() => this.footerRef() ?? this.namedTemplate('footer'));\n readonly dateTpl = computed<TemplateRef<unknown> | null>(() => this.dateRef() ?? this.namedTemplate('date'));\n\n readonly orderedDayNames = computed(() => {\n const start = this.firstDayOfWeek();\n return [...DAY_NAMES.slice(start), ...DAY_NAMES.slice(0, start)];\n });\n\n readonly calendarMonths = computed(() => {\n const n = Math.max(1, this.numberOfMonths());\n const result: { month: number; year: number }[] = [];\n let m = this.viewMonth();\n let y = this.viewYear();\n for (let i = 0; i < n; i++) {\n result.push({ month: m, year: y });\n m++;\n if (m > 11) { m = 0; y++; }\n }\n return result;\n });\n\n readonly yearGridYears = computed(() => {\n const start = this.viewYear() - 5;\n return Array.from({ length: 12 }, (_, i) => start + i);\n });\n\n readonly inlinePanelClass = computed(() => `inline-block bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg p-3 min-w-64 ${this.styleClass()}`);\n\n readonly hasValue = computed(() => {\n const v = this.value();\n if (v == null) return false;\n if (Array.isArray(v)) return v.some(d => d instanceof Date);\n return true;\n });\n\n readonly displayValue = computed(() => {\n const v = this.value();\n if (v == null) return '';\n const mode = this.selectionMode();\n const fmt = this.dateFormat();\n const withTime = (d: Date) => {\n if (this.timeOnly()) return formatTime(d, this.hourFormat(), this.showSeconds());\n const base = this.formatDate(d, fmt);\n return this.showTime() ? `${base} ${formatTime(d, this.hourFormat(), this.showSeconds())}` : base;\n };\n if (mode === 'single' && v instanceof Date) return withTime(v);\n if (mode === 'multiple' && Array.isArray(v)) return v.filter((d): d is Date => d instanceof Date).map(withTime).join(', ');\n if (mode === 'range' && Array.isArray(v)) {\n const [start, end] = v;\n if (!start) return '';\n return end ? `${withTime(start)} - ${withTime(end)}` : withTime(start);\n }\n return '';\n });\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 const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : '';\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} ${disabledClass}`;\n });\n\n readonly inputClass = computed(() => {\n const cursor = this.readonlyInput() ? 'cursor-pointer ' : '';\n return `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}${this.inputStyleClass()}`;\n });\n\n readonly prevAriaLabel = computed(() => {\n switch (this.gridMode()) {\n case 'month': return 'Previous year';\n case 'year': return 'Previous years';\n default: return 'Previous month';\n }\n });\n\n readonly nextAriaLabel = computed(() => {\n switch (this.gridMode()) {\n case 'month': return 'Next year';\n case 'year': return 'Next years';\n default: return 'Next month';\n }\n });\n\n constructor() {\n effect(() => {\n const isOpen = this.open();\n if (isOpen === this._wasOpen) return;\n this._wasOpen = isOpen;\n if (isOpen) {\n if (this.view() === 'date') this._gridMode.set('date');\n const anchor = this.currentAnchorDate();\n this._focusedDate.set(anchor);\n this.syncViewToDate(anchor);\n if (this.showTime() || this.timeOnly()) {\n const v = this.value();\n const base = v instanceof Date ? v : anchor;\n this._timeHour.set(base.getHours());\n this._timeMinute.set(base.getMinutes());\n this._timeSecond.set(base.getSeconds());\n }\n this.onShow.emit();\n queueMicrotask(() => this.focusGridCell());\n } else {\n this._onTouched();\n this.onBlur.emit();\n this.onHide.emit();\n }\n });\n }\n\n private currentAnchorDate(): Date {\n const v = this.value();\n if (v instanceof Date) return v;\n if (Array.isArray(v)) {\n const found = [...v].reverse().find((d): d is Date => d instanceof Date);\n if (found) return found;\n }\n return new Date();\n }\n\n private syncViewToDate(date: Date): void {\n const inView = this.calendarMonths().some(m => m.month === date.getMonth() && m.year === date.getFullYear());\n if (!inView) {\n this._viewMonth.set(date.getMonth());\n this._viewYear.set(date.getFullYear());\n }\n }\n\n cellId(date: Date): string {\n return `${this._instanceId}-cell-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n }\n\n isFocusedDay(date: Date): boolean {\n return isSameDay(date, this._focusedDate());\n }\n\n onDayFocus(day: FDatePickerDay): void {\n this._focusedDate.set(day.date);\n }\n\n private focusGridCell(): void {\n const d = this._focusedDate();\n if (!d || typeof document === 'undefined') return;\n document.getElementById(this.cellId(d))?.focus();\n }\n\n private isDateDisabled(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && stripTime(date) < stripTime(min)) return true;\n if (max && stripTime(date) > stripTime(max)) return true;\n if (this.disabledDays().includes(date.getDay())) return true;\n if (this.disabledDates().some(d => isSameDay(d, date))) return true;\n return false;\n }\n\n daysFor(month: number, year: number): FDatePickerDay[] {\n const firstOfMonth = new Date(year, month, 1);\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const startOffset = (firstOfMonth.getDay() - this.firstDayOfWeek() + 7) % 7;\n const days: FDatePickerDay[] = [];\n\n if (startOffset > 0) {\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const prevDaysInMonth = new Date(prevYear, prevMonth + 1, 0).getDate();\n for (let i = startOffset - 1; i >= 0; i--) {\n days.push(this.buildDay(new Date(prevYear, prevMonth, prevDaysInMonth - i), true));\n }\n }\n for (let d = 1; d <= daysInMonth; d++) {\n days.push(this.buildDay(new Date(year, month, d), false));\n }\n const remainder = days.length % 7;\n if (remainder > 0) {\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let d = 1; d <= 7 - remainder; d++) {\n days.push(this.buildDay(new Date(nextYear, nextMonth, d), true));\n }\n }\n return days;\n }\n\n private buildDay(date: Date, otherMonth: boolean): FDatePickerDay {\n const value = this.value();\n const mode = this.selectionMode();\n let selected = false;\n let rangeStart = false;\n let rangeEnd = false;\n let inRange = false;\n if (mode === 'single' && value instanceof Date) {\n selected = isSameDay(value, date);\n } else if (mode === 'multiple' && Array.isArray(value)) {\n selected = value.some(d => isSameDay(d, date));\n } else if (mode === 'range' && Array.isArray(value)) {\n const [start, end] = value;\n rangeStart = isSameDay(start, date);\n rangeEnd = isSameDay(end, date);\n selected = rangeStart || rangeEnd;\n if (start && end) inRange = date > stripTime(start) && date < stripTime(end);\n }\n return {\n day: date.getDate(),\n date,\n otherMonth,\n selected,\n rangeStart,\n rangeEnd,\n inRange,\n today: isSameDay(date, new Date()),\n disabled: this.isDateDisabled(date) || (otherMonth && !this.selectOtherMonths()),\n };\n }\n\n dayClass(day: FDatePickerDay): string {\n const base = 'relative text-center text-sm py-1.5 transition-colors focus-visible:outline-none focus-visible:ring-focus disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none cursor-pointer';\n if (day.otherMonth && !this.selectOtherMonths()) {\n return `${base} text-(--f-text-muted-color) opacity-60 rounded-md`;\n }\n if (this.selectionMode() === 'range' && (day.rangeStart || day.rangeEnd)) {\n const shape = day.rangeStart && day.rangeEnd ? 'rounded-md' : day.rangeStart ? 'rounded-l-md' : 'rounded-r-md';\n return `${base} bg-primary text-primary-contrast ${shape}`;\n }\n if (day.inRange) {\n return `${base} bg-(--f-highlight-background) text-(--f-highlight-color)`;\n }\n if (day.selected) {\n return `${base} bg-primary text-primary-contrast rounded-md`;\n }\n if (day.today) {\n return `${base} rounded-md font-semibold text-primary hover:bg-(--f-content-hover-background)`;\n }\n return `${base} rounded-md hover:bg-(--f-content-hover-background) ${day.otherMonth ? 'text-(--f-text-muted-color)' : ''}`;\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 = pad2(month);\n const day = date.getDate();\n const dd = pad2(day);\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 pad2(n: number): string {\n return pad2(n);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.appendTo() === 'self' && this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n onInputClick(event: Event): void {\n this.toggleCalendar(event);\n }\n\n onInputKeyDown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n switch (event.key) {\n case 'ArrowDown':\n if (!this.open()) { event.preventDefault(); this.toggleCalendar(event); }\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); this.closeAndFocusInput(); }\n break;\n }\n }\n\n onInputChange(text: string): void {\n if (this.readonlyInput() || this.disabled() || this.readonly()) return;\n if (!text) { this.commitValue(null); return; }\n const parsed = parseDate(text, this.dateFormat());\n if (parsed && !this.isDateDisabled(parsed)) this.selectDate(parsed);\n }\n\n toggleCalendar(event: Event): void {\n if (this.disabled() || this.readonly()) return;\n if (this.appendTo() === 'body') this.popoverRef()?.toggle(event);\n else this._open.update(v => !v);\n }\n\n private closePanel(): void {\n if (this.appendTo() === 'body') this.popoverRef()?.hide();\n else this._open.set(false);\n }\n\n closeAndFocusInput(): void {\n this.closePanel();\n this._inputRef()?.nativeElement.focus();\n }\n\n clear(event: Event): void {\n event.stopPropagation();\n this.commitValue(null);\n }\n\n private commitValue(v: FDatePickerValue): void {\n this._value.set(v);\n this._onChange(v);\n this._onTouched();\n }\n\n onDayClick(day: FDatePickerDay): void {\n if (day.disabled || this.readonly()) return;\n if (day.otherMonth) {\n this._viewMonth.set(day.date.getMonth());\n this._viewYear.set(day.date.getFullYear());\n }\n this._focusedDate.set(day.date);\n this.selectDate(day.date);\n }\n\n selectDate(date: Date): void {\n if (this.isDateDisabled(date) || this.readonly()) return;\n const mode = this.selectionMode();\n let finalDate = date;\n if (this.showTime() && !this.timeOnly()) {\n finalDate = combineDateTime(date, this._timeHour(), this._timeMinute(), this._timeSecond());\n }\n\n if (mode === 'single') {\n this.commitValue(finalDate);\n this.onSelect.emit(finalDate);\n if (!this.showTime()) this.closePanel();\n return;\n }\n\n if (mode === 'multiple') {\n const arr = Array.isArray(this.value()) ? [...(this.value() as Date[])] : [];\n const idx = arr.findIndex(d => isSameDay(d, finalDate));\n if (idx >= 0) arr.splice(idx, 1);\n else arr.push(finalDate);\n arr.sort((a, b) => a.getTime() - b.getTime());\n this.commitValue(arr);\n this.onSelect.emit(finalDate);\n return;\n }\n\n const cur = Array.isArray(this.value()) ? (this.value() as (Date | null)[]) : [];\n const [start, end] = cur;\n let next: (Date | null)[];\n if (!start || (start && end)) {\n next = [finalDate, null];\n } else if (finalDate < start) {\n next = [finalDate, start];\n } else {\n next = [start, finalDate];\n }\n this.commitValue(next);\n this.onSelect.emit(finalDate);\n if (next[0] && next[1]) this.closePanel();\n }\n\n handleTodayClick(): void {\n const today = new Date();\n this._viewMonth.set(today.getMonth());\n this._viewYear.set(today.getFullYear());\n this._gridMode.set('date');\n this.selectDate(today);\n this.onTodayClick.emit();\n }\n\n handleClearClick(): void {\n this.commitValue(null);\n this.closePanel();\n this.onClearClick.emit();\n }\n\n onHeaderMonthClick(): void {\n if (this.view() !== 'date') return;\n this._gridMode.set('month');\n }\n\n onHeaderYearClick(): void {\n if (this.view() !== 'date') return;\n this._gridMode.set('year');\n }\n\n selectMonth(m: number): void {\n this._viewMonth.set(m);\n if (this.view() === 'month') {\n this.selectDate(new Date(this.viewYear(), m, 1));\n } else {\n this._gridMode.set('date');\n }\n this.emitNavChange();\n }\n\n selectYear(y: number): void {\n this._viewYear.set(y);\n if (this.view() === 'year') {\n this.selectDate(new Date(y, 0, 1));\n } else {\n this._gridMode.set(this.view() === 'date' ? 'month' : 'year');\n }\n this.emitNavChange();\n }\n\n private emitNavChange(): void {\n const payload = { month: this.viewMonth() + 1, year: this.viewYear() };\n this.onMonthChange.emit(payload);\n this.onYearChange.emit(payload);\n }\n\n onPrevClick(): void {\n switch (this.gridMode()) {\n case 'date': this.prevMonth(); break;\n case 'month': this._viewYear.update(y => y - 1); this.emitNavChange(); break;\n case 'year': this._viewYear.update(y => y - 12); this.emitNavChange(); break;\n }\n }\n\n onNextClick(): void {\n switch (this.gridMode()) {\n case 'date': this.nextMonth(); break;\n case 'month': this._viewYear.update(y => y + 1); this.emitNavChange(); break;\n case 'year': this._viewYear.update(y => y + 12); this.emitNavChange(); break;\n }\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 this.emitNavChange();\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 this.emitNavChange();\n }\n\n onGridKeyDown(event: KeyboardEvent): void {\n const cur = this._focusedDate() ?? this.currentAnchorDate();\n let next: Date | null = null;\n switch (event.key) {\n case 'ArrowRight': next = addDays(cur, 1); break;\n case 'ArrowLeft': next = addDays(cur, -1); break;\n case 'ArrowDown': next = addDays(cur, 7); break;\n case 'ArrowUp': next = addDays(cur, -7); break;\n case 'Home': next = startOfWeek(cur, this.firstDayOfWeek()); break;\n case 'End': next = endOfWeek(cur, this.firstDayOfWeek()); break;\n case 'PageUp': next = event.shiftKey ? addYears(cur, -1) : addMonths(cur, -1); break;\n case 'PageDown': next = event.shiftKey ? addYears(cur, 1) : addMonths(cur, 1); break;\n case 'Escape':\n event.preventDefault();\n this.closeAndFocusInput();\n return;\n default:\n return;\n }\n event.preventDefault();\n if (next) {\n this._focusedDate.set(next);\n this.syncViewToDate(next);\n queueMicrotask(() => this.focusGridCell());\n }\n }\n\n private commitTimeChange(): void {\n if (this.timeOnly()) {\n const base = this.value() instanceof Date ? (this.value() as Date) : new Date();\n this.commitValue(combineDateTime(base, this._timeHour(), this._timeMinute(), this._timeSecond()));\n return;\n }\n const v = this.value();\n if (v instanceof Date) {\n this.commitValue(combineDateTime(v, this._timeHour(), this._timeMinute(), this._timeSecond()));\n }\n }\n\n incrementHour(): void { this._timeHour.update(h => (h + 1) % 24); this.commitTimeChange(); }\n decrementHour(): void { this._timeHour.update(h => (h + 23) % 24); this.commitTimeChange(); }\n incrementMinute(): void { this._timeMinute.update(m => (m + 1) % 60); this.commitTimeChange(); }\n decrementMinute(): void { this._timeMinute.update(m => (m + 59) % 60); this.commitTimeChange(); }\n incrementSecond(): void { this._timeSecond.update(s => (s + 1) % 60); this.commitTimeChange(); }\n decrementSecond(): void { this._timeSecond.update(s => (s + 59) % 60); this.commitTimeChange(); }\n togglePeriod(): void { this._timeHour.update(h => (h + 12) % 24); this.commitTimeChange(); }\n\n writeValue(v: FDatePickerValue): void { this._value.set(v ?? null); }\n registerOnChange(fn: (v: FDatePickerValue) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, input, OnDestroy, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ProgressbarComponent } from '../progressbar/progressbar.component';\n\nexport type FileUploadMode = 'advanced' | 'basic';\nexport type FileUploadItemStatus = 'pending' | 'uploading' | 'done' | 'error';\n\nexport interface UploadItem {\n file: File;\n objectUrl: string | null;\n progress: number;\n status: FileUploadItemStatus;\n}\n\nexport interface FileSelectEvent { files: File[]; currentFiles: File[]; }\nexport interface FileRemoveEvent { file: File; }\nexport interface FileErrorEvent { file: File; reason: 'size' | 'count' | 'upload'; message?: string; }\nexport interface FileUploadEvent { files: File[]; response?: unknown; }\nexport interface FileProgressEvent { file: File; progress: number; }\nexport interface FileUploadHandlerEvent { files: File[]; }\n\n@Component({\n selector: 'f-fileupload',\n imports: [UiIconComponent, ButtonComponent, ProgressbarComponent],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n @if (mode() === 'advanced') {\n <div class=\"flex flex-wrap items-center gap-2 mb-3\">\n <f-button\n [label]=\"chooseLabel()\"\n [icon]=\"chooseIcon()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n (onClick)=\"chooseFileInput.click()\"\n ></f-button>\n @if (!auto() && showUploadButton()) {\n <f-button\n [label]=\"uploadLabel()\"\n [icon]=\"uploadIcon()\"\n severity=\"secondary\"\n [disabled]=\"disabled() || !files().length || isFileLimitExceeded() || uploading()\"\n (onClick)=\"upload()\"\n ></f-button>\n }\n @if (!auto() && showCancelButton()) {\n <f-button\n [label]=\"cancelLabel()\"\n [icon]=\"cancelIcon()\"\n severity=\"secondary\"\n [disabled]=\"disabled() || !files().length || uploading()\"\n (onClick)=\"clear()\"\n ></f-button>\n }\n <input #chooseFileInput type=\"file\"\n class=\"hidden\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n (change)=\"onFileChange($event)\"\n />\n </div>\n\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 <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 use the choose button above</p>\n </div>\n </div>\n </div>\n\n @if (items().length) {\n <div class=\"mt-5 space-y-1.5 text-left\">\n @for (item of items(); track item.file) {\n <div class=\"flex items-center gap-3 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg\">\n @if (item.objectUrl) {\n <img [src]=\"item.objectUrl\" [alt]=\"item.file.name\" [style.width.px]=\"previewWidth()\" [style.height.px]=\"previewWidth()\" class=\"rounded-md object-cover shrink-0\" />\n } @else {\n <ui-icon name=\"file\" class=\"text-(--f-text-muted-color) shrink-0 text-lg\"></ui-icon>\n }\n <div class=\"flex-1 min-w-0\">\n <div class=\"flex items-center gap-2\">\n <span class=\"flex-1 truncate text-sm text-(--f-text-color)\">{{ item.file.name }}</span>\n <span class=\"text-xs text-(--f-text-muted-color) shrink-0\">{{ formatSize(item.file.size) }}</span>\n </div>\n @if (item.status === 'uploading' || item.status === 'done') {\n <f-progressbar\n [value]=\"item.progress\"\n [showValue]=\"false\"\n [severity]=\"item.status === 'done' ? 'success' : null\"\n styleClass=\"mt-1\"\n ></f-progressbar>\n }\n </div>\n @if (item.status === 'done') {\n <ui-icon name=\"check-circle\" class=\"text-green-500 shrink-0 text-sm\"></ui-icon>\n } @else if (item.status === 'error') {\n <ui-icon name=\"exclamation-circle\" class=\"text-red-500 shrink-0 text-sm\"></ui-icon>\n }\n <button type=\"button\"\n class=\"inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer disabled:opacity-50 disabled:pointer-events-none\"\n [disabled]=\"item.status === 'uploading'\"\n (click)=\"removeFile(item.file)\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"flex items-center gap-3\">\n <f-button\n [label]=\"basicButtonLabel()\"\n [icon]=\"chooseIcon()\"\n [disabled]=\"disabled()\"\n (onClick)=\"onBasicClick(basicFileInput)\"\n ></f-button>\n <input #basicFileInput type=\"file\"\n class=\"hidden\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileChange($event)\"\n />\n @if (!auto() && files().length) {\n <span class=\"text-sm text-(--f-text-muted-color) truncate\">{{ files()[0].name }}</span>\n }\n </div>\n }\n `,\n})\nexport class FileUploadComponent implements OnDestroy {\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 headers = input<Record<string, string> | null>(null);\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 uploadLabel = input<string>('Upload');\n readonly cancelLabel = input<string>('Cancel');\n readonly chooseIcon = input<string>('upload');\n readonly uploadIcon = input<string>('upload');\n readonly cancelIcon = input<string>('times');\n readonly previewWidth = input<number>(48);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly mode = input<FileUploadMode>('advanced');\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n readonly onSelect = output<FileSelectEvent>();\n readonly onRemove = output<FileRemoveEvent>();\n readonly onClear = output<void>();\n readonly onError = output<FileErrorEvent[]>();\n readonly onUpload = output<FileUploadEvent>();\n readonly onProgress = output<FileProgressEvent>();\n readonly uploadHandler = output<FileUploadHandlerEvent>();\n\n private readonly _items = signal<UploadItem[]>([]);\n readonly items = this._items.asReadonly();\n readonly files = computed(() => this._items().map((i) => i.file));\n\n private readonly _isDragging = signal(false);\n readonly isDragging = this._isDragging.asReadonly();\n\n private readonly _uploading = signal(false);\n readonly uploading = this._uploading.asReadonly();\n\n readonly isFileLimitExceeded = computed(() => {\n const limit = this.fileLimit();\n return limit != null && limit < this.files().length;\n });\n\n readonly isChooseDisabled = computed(() => {\n const limit = this.fileLimit();\n return limit != null && limit <= this.files().length;\n });\n\n readonly basicButtonLabel = computed(() => {\n if (this.auto() || !this.files().length) return this.chooseLabel();\n return this.uploadLabel();\n });\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 onBasicClick(input: HTMLInputElement): void {\n if (!this.auto() && this.files().length) {\n this.upload();\n } else {\n input.click();\n }\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._items().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 newItems: UploadItem[] = candidates.map((file) => ({\n file,\n objectUrl: this.isImage(file) ? URL.createObjectURL(file) : null,\n progress: 0,\n status: 'pending',\n }));\n\n if (this.multiple()) {\n this._items.update((items) => [...items, ...newItems]);\n } else {\n this.revokeItemUrls(this._items());\n this._items.set(newItems);\n }\n\n const current = this._items().map((i) => i.file);\n this.onSelect.emit({ files: candidates, currentFiles: current });\n\n if (this.auto() && !this.disabled()) this.upload();\n }\n\n private isImage(file: File): boolean {\n return /^image\\//.test(file.type);\n }\n\n private revokeItemUrls(items: UploadItem[]): void {\n for (const item of items) {\n if (item.objectUrl) URL.revokeObjectURL(item.objectUrl);\n }\n }\n\n private updateItem(file: File, patch: Partial<UploadItem>): void {\n this._items.update((items) => items.map((i) => (i.file === file ? { ...i, ...patch } : i)));\n }\n\n private checkUploadFinished(): void {\n if (this._items().every((i) => i.status !== 'uploading')) {\n this._uploading.set(false);\n }\n }\n\n removeFile(file: File): void {\n const item = this._items().find((i) => i.file === file);\n if (item?.objectUrl) URL.revokeObjectURL(item.objectUrl);\n this._items.update((items) => items.filter((i) => i.file !== file));\n this.onRemove.emit({ file });\n }\n\n clear(): void {\n this.revokeItemUrls(this._items());\n this._items.set([]);\n this.onClear.emit();\n }\n\n upload(): void {\n if (!this.files().length || this.disabled()) return;\n if (this.customUpload()) {\n this.uploadHandler.emit({ files: this.files() });\n return;\n }\n if (!this.url()) return;\n this.uploadWithXhr();\n }\n\n reportProgress(file: File, progress: number): void {\n this.updateItem(file, { status: 'uploading', progress });\n this.onProgress.emit({ file, progress });\n }\n\n reportSuccess(file: File): void {\n this.updateItem(file, { status: 'done', progress: 100 });\n this.onUpload.emit({ files: [file] });\n this.checkUploadFinished();\n }\n\n reportError(file: File, message?: string): void {\n this.updateItem(file, { status: 'error', progress: 0 });\n this.onError.emit([{ file, reason: 'upload', message }]);\n this.checkUploadFinished();\n }\n\n private uploadWithXhr(): void {\n const targetUrl = this.url();\n const items = this._items().filter((i) => i.status === 'pending' || i.status === 'error');\n if (!items.length) return;\n\n this._uploading.set(true);\n for (const item of items) {\n this.updateItem(item.file, { status: 'uploading', progress: 0 });\n\n const formData = new FormData();\n formData.append(this.name() || 'file', item.file, item.file.name);\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', targetUrl, true);\n const hdrs = this.headers();\n if (hdrs) {\n for (const [k, v] of Object.entries(hdrs)) xhr.setRequestHeader(k, v);\n }\n xhr.upload.addEventListener('progress', (e) => {\n if (!e.lengthComputable) return;\n const pct = Math.round((e.loaded / e.total) * 100);\n this.updateItem(item.file, { progress: pct });\n this.onProgress.emit({ file: item.file, progress: pct });\n });\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n this.updateItem(item.file, { status: 'done', progress: 100 });\n this.onUpload.emit({ files: [item.file], response: xhr.response });\n } else {\n this.updateItem(item.file, { status: 'error', progress: 0 });\n this.onError.emit([{ file: item.file, reason: 'upload', message: xhr.statusText }]);\n }\n this.checkUploadFinished();\n });\n xhr.addEventListener('error', () => {\n this.updateItem(item.file, { status: 'error', progress: 0 });\n this.onError.emit([{ file: item.file, reason: 'upload', message: 'Network error' }]);\n this.checkUploadFinished();\n });\n xhr.send(formData);\n }\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 ngOnDestroy(): void {\n this.revokeItemUrls(this._items());\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type InputIconPosition = 'left' | 'right';\n\n@Component({\n selector: 'f-inputicon',\n imports: [UiIconComponent],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n @if (icon()) {\n <ui-icon [name]=\"icon()\"></ui-icon>\n }\n <ng-content />\n `,\n})\nexport class InputIconComponent {\n readonly icon = input<string>('');\n readonly position = input<InputIconPosition>('left');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => {\n const sideClass = this.position() === 'right' ? 'right-3' : 'left-3';\n return `absolute ${sideClass} top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) ${this.styleClass()}`;\n });\n}\n","import { Component, computed, contentChild, input } from '@angular/core';\nimport { InputIconComponent } from '../inputicon/inputicon.component';\n\nexport type IconFieldIconPosition = 'left' | 'right';\n\n@Component({\n selector: 'f-iconfield',\n host: { '[class]': 'hostClass()' },\n template: `<ng-content />`,\n})\nexport class IconFieldComponent {\n private readonly _icon = contentChild(InputIconComponent);\n\n readonly iconPosition = input<IconFieldIconPosition | ''>('');\n readonly styleClass = input<string>('');\n\n private readonly _resolvedPosition = computed<IconFieldIconPosition>(\n () => this.iconPosition() || this._icon()?.position() || 'left',\n );\n\n readonly hostClass = computed(() => {\n const paddingClass =\n this._resolvedPosition() === 'right'\n ? '[&_input]:pr-9 [&_textarea]:pr-9'\n : '[&_input]:pl-9 [&_textarea]:pl-9';\n return `relative flex items-center ${paddingClass} ${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\nexport type InputNumberMode = 'decimal' | 'currency';\nexport type InputNumberButtonLayout = 'stacked' | 'horizontal' | 'vertical';\nexport type InputNumberCurrencyDisplay = 'symbol' | 'code' | 'name';\nexport type InputNumberSize = 'small' | 'large' | null;\n\nexport interface InputNumberInputEvent {\n originalEvent: Event | null;\n value: number | null;\n formattedValue: string;\n}\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', '[style]': 'style()' },\n template: `\n <div [class]=\"wrapperClass()\">\n @if (showButtons() && buttonLayout() === 'vertical') {\n <button type=\"button\" class=\"w-full inline-flex items-center justify-center py-1 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 disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (click)=\"increment()\">\n <ui-icon name=\"chevron-up\" class=\"text-[10px]\"></ui-icon>\n </button>\n }\n <div class=\"flex flex-1 items-stretch\">\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 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 disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (click)=\"decrement()\">\n <ui-icon name=\"minus\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (prefix()) {\n <span [class]=\"addonClass('r')\">{{ prefix() }}</span>\n }\n <input\n type=\"text\"\n inputmode=\"decimal\"\n role=\"spinbutton\"\n [class]=\"inputClass()\"\n [id]=\"inputId()\"\n [value]=\"displayText()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onFocusHandler($event)\"\n (blur)=\"handleBlur()\"\n (keydown)=\"onKeyDownHandler($event)\"\n />\n @if (suffix()) {\n <span [class]=\"addonClass('l')\">{{ suffix() }}</span>\n }\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 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 disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (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 disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (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 disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (click)=\"decrement()\">\n <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon>\n </button>\n </div>\n }\n </div>\n @if (showButtons() && buttonLayout() === 'vertical') {\n <button type=\"button\" class=\"w-full inline-flex items-center justify-center py-1 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-t border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer disabled:opacity-60 disabled:cursor-not-allowed\" tabindex=\"-1\" [attr.aria-hidden]=\"true\" [disabled]=\"isDisabled() || readonly()\" (click)=\"decrement()\">\n <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class InputNumberComponent implements ControlValueAccessor {\n readonly mode = input<InputNumberMode>('decimal');\n readonly currency = input<string>('');\n readonly currencyDisplay = input<InputNumberCurrencyDisplay>('symbol');\n readonly locale = input<string>('');\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 buttonLayout = input<InputNumberButtonLayout>('stacked');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = 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 minFractionDigits = input<number | null>(null);\n readonly maxFractionDigits = input<number | null>(null);\n readonly size = input<InputNumberSize>(null);\n readonly ariaLabel = input<string>('');\n readonly ariaDescribedBy = input<string>('');\n readonly inputStyleClass = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onInputEvent = output<InputNumberInputEvent>({ alias: 'onInput' });\n readonly onFocus = output<FocusEvent>();\n readonly onBlur = output<void>();\n readonly onKeyDown = output<KeyboardEvent>();\n\n private readonly _value = signal<number | null>(null);\n readonly value = this._value.asReadonly();\n\n private readonly _displayText = signal('');\n readonly displayText = this._displayText.asReadonly();\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private readonly numberFormat = computed(() => {\n const options: Intl.NumberFormatOptions = {\n style: this.mode(),\n useGrouping: this.useGrouping(),\n };\n if (this.mode() === 'currency') {\n options.currency = this.currency() || 'USD';\n options.currencyDisplay = this.currencyDisplay();\n }\n if (this.minFractionDigits() != null) options.minimumFractionDigits = this.minFractionDigits()!;\n if (this.maxFractionDigits() != null) options.maximumFractionDigits = this.maxFractionDigits()!;\n return new Intl.NumberFormat(this.locale() || undefined, options);\n });\n\n private readonly textSizeClass = computed(() => (this.size() === 'small' ? 'text-xs' : this.size() === 'large' ? 'text-base' : 'text-sm'));\n private readonly paddingYClass = computed(() => (this.size() === 'small' ? 'py-1.5' : this.size() === 'large' ? 'py-2.5' : 'py-2'));\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 const directionClass = this.showButtons() && this.buttonLayout() === 'vertical' ? 'flex-col' : 'flex-row';\n return `flex w-full items-stretch ${directionClass} border rounded-lg overflow-hidden focus-within:ring-focus transition-colors duration-[var(--f-transition-duration)] ${stateClass} ${this.styleClass()}`;\n });\n\n readonly inputClass = computed(\n () => `block px-3 ${this.paddingYClass()} ${this.textSizeClass()} bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none w-full min-w-0 disabled:opacity-60 disabled:cursor-not-allowed ${this.inputStyleClass()}`,\n );\n\n addonClass(border: 'l' | 'r'): string {\n const borderClass = border === 'l' ? 'border-l' : 'border-r';\n return `px-2 ${this.paddingYClass()} ${this.textSizeClass()} text-(--f-text-muted-color) ${borderClass} border-(--f-content-border-color) bg-(--f-content-hover-background)`;\n }\n\n private _onChange: (v: number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInputChange(e: Event): void {\n if (this.readonly()) return;\n const text = (e.target as HTMLInputElement).value;\n this._displayText.set(text);\n const parsed = this.parseValue(text);\n const changed = parsed !== this._value();\n this._value.set(parsed);\n this._onChange(parsed);\n if (changed) {\n this.onInputEvent.emit({ originalEvent: e, value: parsed, formattedValue: text });\n }\n }\n\n onFocusHandler(e: FocusEvent): void {\n this.onFocus.emit(e);\n }\n\n onKeyDownHandler(e: KeyboardEvent): void {\n if (!this.readonly() && !this.isDisabled()) {\n switch (e.key) {\n case 'ArrowUp':\n this.spin(1, e);\n e.preventDefault();\n break;\n case 'ArrowDown':\n this.spin(-1, e);\n e.preventDefault();\n break;\n case 'Home':\n if (this.min() != null) {\n this.commitValue(this.min(), e);\n e.preventDefault();\n }\n break;\n case 'End':\n if (this.max() != null) {\n this.commitValue(this.max(), e);\n e.preventDefault();\n }\n break;\n case 'Enter':\n this.commitValue(this.clampOrNull(this.parseValue(this._displayText())), e);\n break;\n }\n }\n this.onKeyDown.emit(e);\n }\n\n increment(): void {\n if (this.isDisabled() || this.readonly()) return;\n this.spin(1);\n }\n\n decrement(): void {\n if (this.isDisabled() || this.readonly()) return;\n this.spin(-1);\n }\n\n handleBlur(): void {\n const parsed = this.clampOrNull(this.parseValue(this._displayText()));\n this._value.set(parsed);\n this._displayText.set(this.formatValue(parsed));\n this._onChange(parsed);\n this._onTouched();\n this.onBlur.emit();\n }\n\n private spin(dir: number, event?: Event): void {\n const base = this.value() ?? 0;\n const next = this.roundToStep(base + this.step() * dir);\n this.commitValue(this.clamp(next), event);\n }\n\n private commitValue(newValue: number | null, event?: Event): void {\n const changed = newValue !== this._value();\n this._value.set(newValue);\n this._displayText.set(this.formatValue(newValue));\n this._onChange(newValue);\n if (changed) {\n this.onInputEvent.emit({ originalEvent: event ?? null, value: newValue, formattedValue: this._displayText() });\n }\n }\n\n private roundToStep(v: number): number {\n const stepStr = this.step().toString();\n const decimals = stepStr.includes('.') ? stepStr.split('.')[1].length : 0;\n const factor = Math.pow(10, decimals);\n return Math.round(v * factor) / factor;\n }\n\n private clamp(v: number): number {\n let r = v;\n if (this.min() != null) r = Math.max(r, this.min()!);\n if (this.max() != null) r = Math.min(r, this.max()!);\n return r;\n }\n\n private clampOrNull(v: number | null): number | null {\n return v == null ? null : this.clamp(v);\n }\n\n private formatValue(value: number | null): string {\n if (value == null || isNaN(value)) return '';\n return this.numberFormat().format(value);\n }\n\n private parseValue(text: string): number | null {\n if (!text) return null;\n const trimmed = text.trim();\n if (!trimmed) return null;\n const negative = trimmed.charAt(0) === '-';\n const digitsOnly = trimmed.replace(/[^0-9.,]/g, '');\n const lastDot = digitsOnly.lastIndexOf('.');\n const lastComma = digitsOnly.lastIndexOf(',');\n const decimalIndex = Math.max(lastDot, lastComma);\n let normalized: string;\n if (decimalIndex === -1) {\n normalized = digitsOnly.replace(/[.,]/g, '');\n } else {\n const intPart = digitsOnly.slice(0, decimalIndex).replace(/[.,]/g, '');\n const fracPart = digitsOnly.slice(decimalIndex + 1).replace(/[.,]/g, '');\n normalized = `${intPart}.${fracPart}`;\n }\n if (!normalized || normalized === '.') return null;\n const num = Number((negative ? '-' : '') + normalized);\n return isNaN(num) ? null : num;\n }\n\n writeValue(v: number): void {\n const val = v ?? null;\n this._value.set(val);\n this._displayText.set(this.formatValue(val));\n }\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\nexport type InputVariant = 'outlined' | 'filled';\nexport type InputSize = 'small' | 'large' | null;\n\n@Directive({\n selector: '[fInputText]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-invalid]': \"invalid() && touched() ? 'true' : null\",\n },\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 readonly variant = input<InputVariant>('outlined');\n readonly size = input<InputSize>(null);\n // Inputs already span full width by default; set false to shrink to content width.\n readonly fluid = input(true, { transform: booleanAttribute });\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 invalidState = this.invalid() && this.touched();\n const variant = this.variant();\n const size = this.size();\n const iconLeft = this._iconLeft();\n\n const stateClass = invalidState\n ? 'border-red-400 focus:border-red-400'\n : variant === 'filled'\n ? 'border-transparent focus:border-primary'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n\n const variantClass = variant === 'filled'\n ? 'bg-(--f-surface-100)'\n : 'bg-(--f-form-field-background)';\n\n const paddingY = size === 'small' ? 'py-1.5' : size === 'large' ? 'py-3' : 'py-2';\n const textSize = size === 'small' ? 'text-xs' : size === 'large' ? 'text-base' : 'text-sm';\n const paddingX = iconLeft\n ? size === 'small' ? 'pl-8 pr-2.5' : size === 'large' ? 'pl-11 pr-4' : 'pl-9 pr-3'\n : size === 'small' ? 'px-2.5' : size === 'large' ? 'px-4' : 'px-3';\n\n return [\n 'block rounded-lg border',\n this.fluid() ? 'w-full' : 'w-auto',\n paddingX, paddingY, textSize,\n variantClass,\n '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, computed, Directive, effect, ElementRef, inject, input, signal } from '@angular/core';\n\n@Directive({ selector: '[fInputPassword]', exportAs: 'fInputPassword' })\nexport class InputPasswordDirective {\n private readonly _el = inject(ElementRef<HTMLInputElement>);\n\n readonly mask = input(true, { transform: booleanAttribute });\n // When true, the directive owns visibility state (see visible()/toggle()) instead of `mask`.\n readonly toggleMask = input(false, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n private readonly _masked = computed(() => this.toggleMask() ? !this._visible() : this.mask());\n\n constructor() {\n effect(() => {\n this._el.nativeElement.type = this._masked() ? 'password' : 'text';\n });\n }\n\n toggle(): void { this._visible.update(v => !v); }\n show(): void { this._visible.set(true); }\n hide(): void { this._visible.set(false); }\n}\n","import {\n AfterViewInit,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface ScrollerLazyLoadEvent {\n first: number;\n last: number;\n}\n\n@Component({\n selector: 'f-scroller',\n imports: [NgTemplateOutlet, UiIconComponent],\n host: { class: 'block' },\n template: `\n <div\n #viewport\n class=\"overflow-auto\"\n [class]=\"styleClass()\"\n [style]=\"viewportStyle()\"\n (scroll)=\"onScroll($event)\"\n >\n <div [style]=\"contentStyle()\">\n @for (item of visibleItems(); track trackItem($index, item)) {\n <div [style]=\"itemStyle($index)\">\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item, index: startIndex() + $index }\" />\n </div>\n }\n </div>\n @if (loading()) {\n @if (loaderTpl()) {\n <ng-container [ngTemplateOutlet]=\"loaderTpl() ?? null\" />\n } @else {\n <div class=\"flex items-center justify-center py-3\">\n <ui-icon name=\"spinner\" [spin]=\"true\" class=\"text-(--f-text-muted-color)\"></ui-icon>\n </div>\n }\n }\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 readonly scrollWidth = input<string>('100%');\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n readonly lazy = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly trackBy = input<((index: number, item: T) => unknown) | undefined>(undefined);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onLazyLoad = output<ScrollerLazyLoadEvent>();\n readonly onScrollIndexChange = output<ScrollerLazyLoadEvent>();\n\n readonly itemTpl = contentChild(TemplateRef);\n readonly loaderTpl = contentChild<TemplateRef<unknown>>('loader');\n\n private readonly viewportRef = viewChild<ElementRef<HTMLElement>>('viewport');\n private readonly destroyRef = inject(DestroyRef);\n private resizeObserver: ResizeObserver | null = null;\n\n private readonly scrollPos = signal(0);\n private readonly viewportExtent = signal(320);\n\n readonly totalSize = computed(() => this.items().length * this.itemSize());\n\n readonly startIndex = computed(() =>\n Math.max(0, Math.floor(this.scrollPos() / this.itemSize()) - 3),\n );\n\n private readonly endIndex = computed(() =>\n Math.min(\n this.items().length,\n Math.ceil((this.scrollPos() + this.viewportExtent()) / this.itemSize()) + 3,\n ),\n );\n\n readonly visibleItems = computed(() => this.items().slice(this.startIndex(), this.endIndex()));\n\n readonly viewportStyle = computed<Record<string, string>>(() => ({\n height: this.scrollHeight(),\n ...(this.orientation() === 'horizontal' ? { width: this.scrollWidth() } : {}),\n ...(this.style() ?? {}),\n }));\n\n readonly contentStyle = computed<Record<string, string>>(() =>\n this.orientation() === 'horizontal'\n ? { position: 'relative', height: '100%', width: `${this.totalSize()}px` }\n : { position: 'relative', width: '100%', height: `${this.totalSize()}px` },\n );\n\n constructor() {\n effect(() => {\n if (!this.lazy()) return;\n const last = this.endIndex();\n const total = this.items().length;\n if (total > 0 && last >= total) {\n const first = this.startIndex();\n untracked(() => this.onLazyLoad.emit({ first, last }));\n }\n });\n }\n\n itemStyle(relativeIndex: number): Record<string, string> {\n const offset = `${this.offsetFor(relativeIndex)}px`;\n const size = `${this.itemSize()}px`;\n return this.orientation() === 'horizontal'\n ? { position: 'absolute', top: '0', bottom: '0', left: offset, width: size }\n : { position: 'absolute', left: '0', right: '0', top: offset, height: size };\n }\n\n offsetFor(relativeIndex: number): number {\n return (this.startIndex() + relativeIndex) * this.itemSize();\n }\n\n trackItem(relativeIndex: number, item: T): unknown {\n const fn = this.trackBy();\n return fn ? fn(this.startIndex() + relativeIndex, item) : relativeIndex;\n }\n\n onScroll(e: Event): void {\n const el = e.target as HTMLElement;\n const horizontal = this.orientation() === 'horizontal';\n const prevStart = this.startIndex();\n const prevEnd = this.endIndex();\n\n this.scrollPos.set(horizontal ? el.scrollLeft : el.scrollTop);\n this.viewportExtent.set(horizontal ? el.clientWidth : el.clientHeight);\n\n if (this.startIndex() !== prevStart || this.endIndex() !== prevEnd) {\n this.onScrollIndexChange.emit({ first: this.startIndex(), last: this.endIndex() });\n }\n }\n\n scrollToIndex(index: number, behavior: ScrollBehavior = 'auto'): void {\n const el = this.viewportRef()?.nativeElement;\n if (!el) return;\n const pos = Math.max(index, 0) * this.itemSize();\n if (this.orientation() === 'horizontal') el.scrollTo({ left: pos, behavior });\n else el.scrollTo({ top: pos, behavior });\n }\n\n scrollToTop(behavior: ScrollBehavior = 'auto'): void {\n this.scrollToIndex(0, behavior);\n }\n\n ngAfterViewInit(): void {\n const el = this.viewportRef()?.nativeElement;\n if (!el) return;\n this.viewportExtent.set(\n this.orientation() === 'horizontal' ? el.clientWidth : el.clientHeight,\n );\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() =>\n this.viewportExtent.set(\n this.orientation() === 'horizontal' ? el.clientWidth : el.clientHeight,\n ),\n );\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 {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\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';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport type FMultiSelectFilterMatchMode = 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notEquals';\nexport type FMultiSelectDisplay = 'comma' | 'chip';\n\ntype FMultiSelectFlatItem =\n | { kind: 'option'; option: unknown }\n | { kind: 'group'; label: string };\n\n@Component({\n selector: 'f-multiselect',\n imports: [UiIconComponent, NgTemplateOutlet, ScrollerComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MultiSelectComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\">\n <div\n #trigger\n tabindex=\"0\"\n [id]=\"inputId()\"\n [attr.aria-disabled]=\"disabled() || loading() ? true : null\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeyDown($event)\"\n (focus)=\"onFocus.emit($event)\"\n [class]=\"triggerClass()\"\n role=\"combobox\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId() : null\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"invalid() ? true : null\"\n [attr.aria-readonly]=\"readonly() ? true : null\"\n >\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 (opt of selectedOptions(); track getOptionValue(opt)) {\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 @if (selectedItemTpl()) {\n <ng-container [ngTemplateOutlet]=\"selectedItemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: opt }\" />\n } @else {\n {{ getOptionLabel(opt) }}\n }\n @if (!disabled() && !readonly()) {\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:opacity-70 cursor-pointer\" (click)=\"removeOption($event, opt)\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n }\n </span>\n }\n </div>\n }\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n <span class=\"flex items-center gap-1 shrink-0 ml-auto\">\n @if (showClear() && values().length && !disabled() && !readonly()) {\n <ui-icon [name]=\"clearIcon()\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0\" (click)=\"clearAll($event)\"></ui-icon>\n }\n @if (loading()) {\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color) shrink-0\"></ui-icon>\n } @else {\n <ui-icon [name]=\"dropdownIcon()\" 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 </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 (headerTpl()) {\n <div class=\"border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n @if (filterTpl()) {\n <ng-container [ngTemplateOutlet]=\"filterTpl()\" [ngTemplateOutletContext]=\"{ $implicit: filterText(), filter: setFilterFn }\" />\n } @else {\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 #filterInput\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)=\"setFilter($any($event.target).value)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n }\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 data-multiselect-list [id]=\"listId()\" role=\"listbox\" [attr.aria-multiselectable]=\"true\" class=\"max-h-56 overflow-auto py-1\">\n @if (loading()) {\n @if (loaderTpl()) {\n <ng-container [ngTemplateOutlet]=\"loaderTpl()\" />\n } @else {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xl text-(--f-text-muted-color)\"></ui-icon>\n </div>\n }\n } @else if (virtualScroll()) {\n <f-scroller [items]=\"flatItems()\" [itemSize]=\"virtualScrollItemSize()\" scrollHeight=\"14rem\">\n <ng-template let-item let-i=\"index\">\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n </ng-template>\n </f-scroller>\n } @else {\n @for (item of flatItems(); track $index) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: $index }\" />\n } @empty {\n <ng-container [ngTemplateOutlet]=\"emptyStateTpl\" />\n }\n }\n </div>\n @if (footerTpl()) {\n <div class=\"border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n }\n </div>\n\n <ng-template #rowTpl let-item let-i=\"index\">\n @if (item.kind === 'group') {\n <div class=\"h-full flex items-center px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-(--f-text-muted-color) bg-(--f-content-hover-background)\">\n @if (groupTpl()) {\n <ng-container [ngTemplateOutlet]=\"groupTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.label }\" />\n } @else {\n {{ item.label }}\n }\n </div>\n } @else {\n <button\n type=\"button\"\n [id]=\"listId() + '-' + optionIndexOf(item.option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item.option)\"\n [disabled]=\"isOptionDisabled(item.option)\"\n class=\"h-full w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 transition-colors\"\n [class]=\"optionRowClass(item.option)\"\n (click)=\"toggleOption($event, item.option)\"\n (mouseenter)=\"onOptionMouseEnter(item.option)\"\n >\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(item.option) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\">\n @if (isSelected(item.option)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n <span class=\"flex-1 truncate\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.option }\" />\n } @else {\n {{ getOptionLabel(item.option) }}\n }\n </span>\n </button>\n }\n </ng-template>\n\n <ng-template #emptyStateTpl>\n @if (filterText() && emptyFilterTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyFilterTpl()\" />\n } @else if (filterText()) {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"search\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">{{ emptyFilterMessage() }}</span>\n </div>\n } @else if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\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)\">{{ emptyMessage() }}</span>\n </div>\n }\n </ng-template>\n `,\n})\nexport class MultiSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n constructor() {\n afterNextRender(() => {\n if (!this.autofocus()) return;\n this._triggerRef()?.nativeElement.focus();\n });\n\n effect(() => {\n const idx = this._focusedOptionIndex();\n if (!this.open() || idx < 0) return;\n const id = `${this.listId()}-${idx}`;\n queueMicrotask(() => document.getElementById(id)?.scrollIntoView({ block: 'nearest' }));\n });\n\n effect(() => {\n if (this.open() && this.filter() && this.autofocusFilter()) {\n queueMicrotask(() => this._filterInputRef()?.nativeElement.focus());\n }\n });\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this.closeList();\n }\n }\n\n private readonly _triggerRef = viewChild<ElementRef<HTMLDivElement>>('trigger');\n private readonly _filterInputRef = viewChild<ElementRef<HTMLInputElement>>('filterInput');\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 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' : (this.readonly() ? 'cursor-default' : 'cursor-pointer');\n return `${base} ${stateClass} ${disabledClass}`;\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 filterBy = input<string>('');\n readonly filterMatchMode = input<FMultiSelectFilterMatchMode>('contains');\n readonly filterLocale = input<string>('');\n readonly filterPlaceholder = input<string>('Search...');\n readonly resetFilterOnHide = input(false, { transform: booleanAttribute });\n readonly autofocusFilter = input(true, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No options');\n readonly emptyFilterMessage = input<string>('No results found');\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<FMultiSelectDisplay>('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 readonly style = input<Record<string, string> | null>(null);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly autofocus = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingIcon = input<string>('loader-circle');\n readonly dropdownIcon = input<string>('chevron-down');\n readonly clearIcon = input<string>('x');\n readonly group = input(false, { transform: booleanAttribute });\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(36);\n readonly lazy = input(false, { transform: booleanAttribute });\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n readonly onBlur = output<void>();\n readonly onFocus = output<FocusEvent>();\n readonly onChange = output<unknown[]>();\n readonly onFilter = output<{ filter: string }>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onClear = output<void>();\n readonly onLazyLoad = output<{ filter: string }>();\n readonly onSelectAllChange = output<boolean>();\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 private readonly _focusedOptionIndex = signal(-1);\n readonly focusedOptionIndex = this._focusedOptionIndex.asReadonly();\n\n readonly selectedItemRef = contentChild<TemplateRef<unknown>>('selectedItem');\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly groupRef = contentChild<TemplateRef<unknown>>('group');\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly emptyFilterRef = contentChild<TemplateRef<unknown>>('emptyfilter');\n readonly loaderRef = contentChild<TemplateRef<unknown>>('loader');\n readonly filterRef = contentChild<TemplateRef<unknown>>('filter');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly selectedItemTpl = computed<TemplateRef<unknown> | null>(() => this.selectedItemRef() ?? this.namedTemplate('selectedItem'));\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.itemRef() ?? this.namedTemplate('item'));\n readonly groupTpl = computed<TemplateRef<unknown> | null>(() => this.groupRef() ?? this.namedTemplate('group'));\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() => this.footerRef() ?? this.namedTemplate('footer'));\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() => this.emptyRef() ?? this.namedTemplate('empty'));\n readonly emptyFilterTpl = computed<TemplateRef<unknown> | null>(() => this.emptyFilterRef() ?? this.namedTemplate('emptyfilter'));\n readonly loaderTpl = computed<TemplateRef<unknown> | null>(() => this.loaderRef() ?? this.namedTemplate('loader'));\n readonly filterTpl = computed<TemplateRef<unknown> | null>(() => this.filterRef() ?? this.namedTemplate('filter'));\n\n private _onChange: (v: unknown[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly listId = computed(() => `${this.inputId() || 'f-multiselect'}-list`);\n\n readonly setFilterFn = (v: string) => this.setFilter(v);\n\n setFilter(v: string): void {\n this._filterText.set(v);\n this._focusedOptionIndex.set(-1);\n this.onFilter.emit({ filter: v });\n if (this.lazy()) this.onLazyLoad.emit({ filter: v });\n }\n\n readonly filterFieldList = computed(() => {\n const by = this.filterBy();\n return by ? by.split(',').map(f => f.trim()).filter(Boolean) : [this.optionLabel()];\n });\n\n private matchesFilter(raw: unknown, query: string): boolean {\n const locale = this.filterLocale() || undefined;\n const s = locale ? String(raw ?? '').toLocaleLowerCase(locale) : String(raw ?? '').toLowerCase();\n const q = locale ? query.toLocaleLowerCase(locale) : query.toLowerCase();\n switch (this.filterMatchMode()) {\n case 'startsWith': return s.startsWith(q);\n case 'endsWith': return s.endsWith(q);\n case 'equals': return s === q;\n case 'notEquals': return s !== q;\n case 'contains':\n default: return s.includes(q);\n }\n }\n\n private optionMatchesQuery(opt: unknown, query: string): boolean {\n if (!query) return true;\n if (opt === null || typeof opt !== 'object') return this.matchesFilter(opt, query);\n const rec = opt as Record<string, unknown>;\n return this.filterFieldList().some(f => this.matchesFilter(rec[f], query));\n }\n\n readonly filteredOptions = computed(() => {\n const opts = this.options();\n const q = this.filterText();\n if (!q) return opts;\n return opts.filter(o => this.optionMatchesQuery(o, q));\n });\n\n readonly allLeafOptions = computed<unknown[]>(() => {\n if (!this.group()) return this.options();\n const groups = this.options() as Record<string, unknown>[];\n return groups.flatMap(g => (g[this.optionGroupChildren()] as unknown[]) ?? []);\n });\n\n readonly flatItems = computed<FMultiSelectFlatItem[]>(() => {\n const q = this.filterText();\n if (!this.group()) {\n return this.filteredOptions().map(o => ({ kind: 'option', option: o }) as FMultiSelectFlatItem);\n }\n const groups = this.options() as Record<string, unknown>[];\n const out: FMultiSelectFlatItem[] = [];\n for (const g of groups) {\n const children = (g[this.optionGroupChildren()] as unknown[]) ?? [];\n const filteredChildren = q ? children.filter(o => this.optionMatchesQuery(o, q)) : children;\n if (!filteredChildren.length) continue;\n out.push({ kind: 'group', label: String(g[this.optionGroupLabel()] ?? '') });\n for (const c of filteredChildren) out.push({ kind: 'option', option: c });\n }\n return out;\n });\n\n readonly navigableOptions = computed(() =>\n this.flatItems()\n .filter((i): i is { kind: 'option'; option: unknown } => i.kind === 'option')\n .map(i => i.option),\n );\n\n readonly activeDescendantId = computed(() => {\n const idx = this._focusedOptionIndex();\n return idx >= 0 ? `${this.listId()}-${idx}` : null;\n });\n\n optionIndexOf(opt: unknown): number {\n return this.navigableOptions().indexOf(opt);\n }\n\n optionRowClass(opt: unknown): string {\n if (this.isOptionDisabled(opt)) return 'opacity-50 cursor-not-allowed';\n const focused = this.optionIndexOf(opt) === this._focusedOptionIndex();\n return focused\n ? 'bg-(--f-content-hover-background) text-(--f-text-color) cursor-pointer'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer';\n }\n\n onOptionMouseEnter(opt: unknown): void {\n this._focusedOptionIndex.set(this.optionIndexOf(opt));\n }\n\n readonly selectedOptions = computed(() => {\n const vals = this.values();\n return this.allLeafOptions().filter(o => vals.includes(this.getOptionValue(o)));\n });\n\n readonly selectedLabels = computed(() => this.selectedOptions().map(o => this.getOptionLabel(o)));\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 { 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 toggleOpen(): void {\n if (this.disabled() || this.loading() || this.readonly()) return;\n if (this.open()) this.closeList(); else this.openList();\n }\n\n private openList(): void {\n this._open.set(true);\n this._focusedOptionIndex.set(-1);\n this.onShow.emit();\n if (this.lazy()) this.onLazyLoad.emit({ filter: this.filterText() });\n }\n\n private closeList(): void {\n this._open.set(false);\n this._focusedOptionIndex.set(-1);\n if (this.resetFilterOnHide()) this._filterText.set('');\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n\n toggleOption(e: Event, opt: unknown): void {\n e.stopPropagation();\n if (this.readonly() || 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 this.onChange.emit(next);\n }\n\n clearAll(e: Event): void {\n e.stopPropagation();\n if (this.readonly()) return;\n this._values.set([]);\n this._onChange([]);\n this._onTouched();\n this.onChange.emit([]);\n this.onClear.emit();\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 if (this.readonly()) return;\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 selectingAll = !this.allFilteredSelected();\n const next = selectingAll\n ? [...cur, ...selectableValues.filter(v => !cur.includes(v))]\n : cur.filter(v => !selectableValues.includes(v));\n const limited = this.selectionLimit() != null ? next.slice(0, this.selectionLimit()!) : next;\n this._values.set(limited);\n this._onChange(limited);\n this.onChange.emit(limited);\n this.onSelectAllChange.emit(selectingAll);\n }\n\n removeOption(e: Event, opt: unknown): void {\n e.stopPropagation();\n this.toggleOption(e, opt);\n }\n\n private focusFirst(): void {\n this._focusedOptionIndex.set(this.navigableOptions().length ? 0 : -1);\n }\n\n private moveFocus(delta: number): void {\n const len = this.navigableOptions().length;\n if (!len) return;\n const cur = this._focusedOptionIndex();\n const next = cur < 0 ? (delta > 0 ? 0 : len - 1) : Math.min(len - 1, Math.max(0, cur + delta));\n this._focusedOptionIndex.set(next);\n }\n\n private _typeaheadStr = '';\n private _typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n private typeahead(char: string): void {\n if (!this.open()) this.openList();\n this._typeaheadStr += char.toLowerCase();\n if (this._typeaheadTimer) clearTimeout(this._typeaheadTimer);\n this._typeaheadTimer = setTimeout(() => { this._typeaheadStr = ''; }, 500);\n const opts = this.navigableOptions();\n if (!opts.length) return;\n const start = this._focusedOptionIndex() + 1;\n const ordered = [...opts.slice(start), ...opts.slice(0, start)];\n const match = ordered.find(o => this.getOptionLabel(o).toLowerCase().startsWith(this._typeaheadStr));\n if (match) this._focusedOptionIndex.set(opts.indexOf(match));\n }\n\n onTriggerKeyDown(event: KeyboardEvent): void {\n if (this.disabled() || this.loading()) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) { this.openList(); this.focusFirst(); } else this.moveFocus(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) { this.openList(); this.focusFirst(); } else this.moveFocus(-1);\n break;\n case 'Home':\n if (this.open()) { event.preventDefault(); this._focusedOptionIndex.set(0); }\n break;\n case 'End':\n if (this.open()) { event.preventDefault(); this._focusedOptionIndex.set(this.navigableOptions().length - 1); }\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n if (!this.open()) { this.openList(); }\n else {\n const opt = this.navigableOptions()[this._focusedOptionIndex()];\n if (opt !== undefined) this.toggleOption(event, opt);\n }\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); event.stopPropagation(); this.closeList(); }\n break;\n case 'Tab':\n if (this.open()) this.closeList();\n break;\n default:\n if (event.key.length === 1 && !event.altKey && !event.ctrlKey && !event.metaKey) {\n this.typeahead(event.key);\n }\n }\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';\nimport { InputVariant, InputSize } from '../input-text/input-text.directive';\n\nexport type PasswordAppendTo = 'self' | 'body';\ntype PasswordStrengthLevel = 'prompt' | 'weak' | 'medium' | 'strong';\n\n@Component({\n selector: 'f-password',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PasswordComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\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 [attr.aria-invalid]=\"invalid() && touched() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedby() || null\"\n (input)=\"onInput($event)\"\n (focus)=\"handleFocus()\"\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 focus-visible:outline-none focus-visible:ring-focus rounded-sm\"\n [attr.aria-label]=\"show() ? 'Hide password' : 'Show password'\"\n [attr.aria-pressed]=\"show()\"\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() && focused()) {\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\" aria-live=\"polite\">{{ 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 readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly ariaDescribedby = input<string>('');\n readonly variant = input<InputVariant>('outlined');\n readonly size = input<InputSize>(null);\n readonly fluid = input(true, { transform: booleanAttribute });\n readonly appendTo = input<PasswordAppendTo>('self');\n\n readonly promptLabel = input<string>('Please enter a password');\n readonly weakLabel = input<string>('Weak');\n readonly mediumLabel = input<string>('Medium');\n readonly strongLabel = input<string>('Strong');\n readonly mediumRegex = input<string>('^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})');\n readonly strongRegex = input<string>('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})');\n\n readonly onBlur = output<void>();\n readonly onFocus = 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 private readonly _focused = signal(false);\n readonly focused = this._focused.asReadonly();\n\n readonly hostClass = computed(() => `block ${this.fluid() ? 'w-full' : 'w-auto'} ${this.styleClass()}`);\n\n readonly strengthLevel = computed<PasswordStrengthLevel>(() => {\n const v = this.value();\n if (!v) return 'prompt';\n if (new RegExp(this.strongRegex()).test(v)) return 'strong';\n if (new RegExp(this.mediumRegex()).test(v)) return 'medium';\n return 'weak';\n });\n\n readonly strength = computed(() => {\n switch (this.strengthLevel()) {\n case 'weak': return { segments: 1, label: this.weakLabel(), color: 'var(--f-red-500)' };\n case 'medium': return { segments: 2, label: this.mediumLabel(), color: 'var(--f-yellow-500)' };\n case 'strong': return { segments: 3, label: this.strongLabel(), color: 'var(--f-green-500)' };\n default: return { segments: 0, label: this.promptLabel(), color: 'var(--f-text-muted-color)' };\n }\n });\n\n readonly inputClass = computed(() => {\n const invalidState = this.invalid() && this.touched();\n const variant = this.variant();\n const size = this.size();\n\n const stateClass = invalidState\n ? 'border-red-400 focus:border-red-400'\n : variant === 'filled'\n ? 'border-transparent focus:border-primary'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n\n const variantClass = variant === 'filled' ? 'bg-(--f-surface-100)' : 'bg-(--f-form-field-background)';\n\n const paddingY = size === 'small' ? 'py-1.5' : size === 'large' ? 'py-3' : 'py-2';\n const textSize = size === 'small' ? 'text-xs' : size === 'large' ? 'text-base' : 'text-sm';\n const paddingLeft = size === 'small' ? 'pl-2.5' : size === 'large' ? 'pl-4' : 'pl-3';\n const paddingRight = this.toggleMask()\n ? (size === 'small' ? 'pr-8' : size === 'large' ? 'pr-11' : 'pr-10')\n : (size === 'small' ? 'pr-2.5' : size === 'large' ? 'pr-4' : 'pr-3');\n\n return [\n 'block rounded-lg border',\n this.fluid() ? 'w-full' : 'w-auto',\n paddingLeft, paddingRight, paddingY, textSize,\n variantClass,\n '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 this.inputStyleClass(),\n ].filter(Boolean).join(' ');\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 handleFocus(): void {\n this._focused.set(true);\n this.onFocus.emit();\n }\n\n handleBlur(): void {\n this._focused.set(false);\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, computed, 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\nexport type RadioButtonVariant = 'filled' | 'outlined' | null;\nexport type RadioButtonSize = 'small' | 'large' | null;\n\n@Component({\n selector: 'f-radiobutton',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioButtonComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\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 [attr.aria-checked]=\"isChecked()\"\n [attr.aria-readonly]=\"readonly() || null\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div [class]=\"boxClass()\">\n @if (isChecked()) {\n <div [class]=\"dotClass()\"></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 readonly = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly variant = input<RadioButtonVariant>(null);\n readonly size = input<RadioButtonSize>(null);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\n readonly onClick = output<RadioButtonClickEvent>();\n readonly onBlur = output<void>();\n\n readonly boxClass = computed(() => {\n const sizing = this.size() === 'small' ? 'w-4 h-4' : this.size() === 'large' ? 'w-6 h-6' : 'w-5 h-5';\n const base = `rounded-full border-2 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 const unchecked = this.variant() === 'filled'\n ? 'bg-(--f-content-hover-background) border-transparent'\n : 'bg-(--f-form-field-background) border-(--f-form-field-border-color)';\n const invalidClass = this.invalid() ? 'border-red-400' : '';\n return `${sizing} ${base} ${unchecked} ${invalidClass}`;\n });\n\n readonly dotClass = computed(() => {\n const sizing = this.size() === 'small' ? 'w-2 h-2' : this.size() === 'large' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n return `${sizing} rounded-full bg-primary transition-transform duration-[var(--f-transition-duration)] scale-100`;\n });\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 onInputClick(event: Event): void {\n if (this.readonly()) event.preventDefault();\n }\n\n onChange(e: Event): void {\n if (this.readonly()) return;\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, numberAttribute, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface RatingRateEvent {\n value: number;\n}\n\n@Component({\n selector: 'f-rating',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RatingComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n <div\n class=\"inline-flex items-center gap-1\"\n role=\"radiogroup\"\n [class.pointer-events-none]=\"readonly()\"\n [class.opacity-60]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.aria-readonly]=\"readonly() || null\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (cancel()) {\n <button type=\"button\" class=\"text-(--f-text-muted-color) hover:text-red-500 cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50\" [disabled]=\"disabled()\" [attr.aria-label]=\"'Clear rating'\" (click)=\"applyValue(0)\">\n <ui-icon [name]=\"cancelIcon()\"></ui-icon>\n </button>\n }\n @for (star of starsArray(); track star) {\n <button\n type=\"button\"\n role=\"radio\"\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-checked]=\"star <= value()\"\n [attr.aria-label]=\"'Rate as ' + star\"\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(5, { transform: numberAttribute });\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 cancelIcon = input<string>('times');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `inline-block ${this.styleClass()}`);\n readonly onRate = output<RatingRateEvent>();\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 applyValue(v: number): void {\n if (this.readonly() || this.disabled()) return;\n const clamped = Math.min(this.stars(), Math.max(0, v));\n this._value.set(clamped);\n this._onChange(clamped);\n this._onTouched();\n this.onRate.emit({ value: clamped });\n }\n\n setValue(v: number): void {\n if (this.readonly() || this.disabled()) return;\n this.applyValue(this.cancel() && v === this.value() ? 0 : v);\n }\n\n onKeydown(e: KeyboardEvent): void {\n if (this.readonly() || this.disabled()) return;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n this.applyValue(this.value() + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n this.applyValue(this.value() - 1);\n break;\n case 'Home':\n e.preventDefault();\n this.applyValue(0);\n break;\n case 'End':\n e.preventDefault();\n this.applyValue(this.stars());\n break;\n }\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 {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\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';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport type FSelectFilterMatchMode = 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notEquals';\n\ntype FSelectFlatItem =\n | { kind: 'option'; option: unknown }\n | { kind: 'group'; label: string };\n\n@Component({\n selector: 'f-select',\n imports: [UiIconComponent, NgTemplateOutlet, ScrollerComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\">\n <button\n #trigger\n type=\"button\"\n data-select-trigger\n [id]=\"editable() ? null : inputId()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeyDown($event)\"\n (focus)=\"onFocus.emit($event)\"\n [class]=\"triggerClass()\"\n role=\"combobox\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? listId() : null\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"invalid() ? true : null\"\n [attr.aria-readonly]=\"readonly() ? true : null\"\n >\n @if (editable()) {\n <input\n #editableInputEl\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 [readOnly]=\"readonly()\"\n (input)=\"onEditableInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeyDown($event)\"\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() && !readonly()) {\n <ui-icon [name]=\"clearIcon()\" 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]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color) shrink-0\"></ui-icon>\n } @else {\n <ui-icon [name]=\"dropdownIcon()\" 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 (headerTpl()) {\n <div class=\"border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n @if (filterTpl()) {\n <ng-container [ngTemplateOutlet]=\"filterTpl()\" [ngTemplateOutletContext]=\"{ $implicit: filterText(), filter: setFilterFn }\" />\n } @else {\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 #filterInput\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)=\"setFilter($any($event.target).value)\"\n (keydown)=\"onTriggerKeyDown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n }\n </div>\n }\n <div data-select-list [id]=\"listId()\" role=\"listbox\" class=\"max-h-56 overflow-auto py-1\">\n @if (loading()) {\n @if (loaderTpl()) {\n <ng-container [ngTemplateOutlet]=\"loaderTpl()\" />\n } @else {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xl text-(--f-text-muted-color)\"></ui-icon>\n </div>\n }\n } @else if (virtualScroll()) {\n <f-scroller [items]=\"flatItems()\" [itemSize]=\"virtualScrollItemSize()\" scrollHeight=\"14rem\">\n <ng-template let-item let-i=\"index\">\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n </ng-template>\n </f-scroller>\n } @else {\n @for (item of flatItems(); track $index) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: $index }\" />\n } @empty {\n <ng-container [ngTemplateOutlet]=\"emptyStateTpl\" />\n }\n }\n </div>\n @if (footerTpl()) {\n <div class=\"border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n }\n </div>\n\n <ng-template #rowTpl let-item let-i=\"index\">\n @if (item.kind === 'group') {\n <div class=\"h-full flex items-center px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-(--f-text-muted-color) bg-(--f-content-hover-background)\">\n @if (groupTpl()) {\n <ng-container [ngTemplateOutlet]=\"groupTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.label }\" />\n } @else {\n {{ item.label }}\n }\n </div>\n } @else {\n <button\n type=\"button\"\n [id]=\"listId() + '-' + optionIndexOf(item.option)\"\n role=\"option\"\n [attr.aria-selected]=\"getOptionValue(item.option) === value()\"\n class=\"h-full w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors cursor-pointer\"\n [class]=\"optionRowClass(item.option)\"\n (click)=\"selectOption(item.option)\"\n (mouseenter)=\"onOptionMouseEnter(item.option)\"\n >\n @if (checkmark() && getOptionValue(item.option) === value()) {\n <ui-icon name=\"check\" class=\"text-xs shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.option }\" />\n } @else {\n {{ getOptionLabel(item.option) }}\n }\n </span>\n @if (!checkmark() && getOptionValue(item.option) === value()) {\n <ui-icon name=\"check\" class=\"text-xs shrink-0\"></ui-icon>\n }\n </button>\n }\n </ng-template>\n\n <ng-template #emptyStateTpl>\n @if (filterText() && emptyFilterTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyFilterTpl()\" />\n } @else if (filterText()) {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"search\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">{{ emptyFilterMessage() }}</span>\n </div>\n } @else if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\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)\">{{ emptyMessage() }}</span>\n </div>\n }\n </ng-template>\n `,\n})\nexport class SelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n constructor() {\n afterNextRender(() => {\n if (!this.autofocus()) return;\n const el = this._editableInputRef()?.nativeElement ?? this._triggerRef()?.nativeElement;\n el?.focus();\n });\n\n effect(() => {\n const idx = this._focusedOptionIndex();\n if (!this.open() || idx < 0) return;\n const id = `${this.listId()}-${idx}`;\n queueMicrotask(() => document.getElementById(id)?.scrollIntoView({ block: 'nearest' }));\n });\n\n effect(() => {\n if (this.open() && this.filter() && this.autofocusFilter()) {\n queueMicrotask(() => this._filterInputRef()?.nativeElement.focus());\n }\n });\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this.closeList();\n }\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 filterBy = input<string>('');\n readonly filterMatchMode = input<FSelectFilterMatchMode>('contains');\n readonly filterLocale = input<string>('');\n readonly filterPlaceholder = input<string>('Search...');\n readonly resetFilterOnHide = input(false, { transform: booleanAttribute });\n readonly autofocusFilter = input(true, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No options');\n readonly emptyFilterMessage = input<string>('No results found');\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingIcon = input<string>('loader-circle');\n readonly dropdownIcon = input<string>('chevron-down');\n readonly clearIcon = input<string>('x');\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 style = input<Record<string, string> | null>(null);\n readonly editable = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly autofocus = input(false, { transform: booleanAttribute });\n readonly checkmark = input(false, { transform: booleanAttribute });\n readonly group = input(false, { transform: booleanAttribute });\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(36);\n readonly lazy = 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 readonly onFocus = output<FocusEvent>();\n readonly onClear = output<void>();\n readonly onLazyLoad = output<{ filter: string }>();\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 private readonly _focusedOptionIndex = signal(-1);\n readonly focusedOptionIndex = this._focusedOptionIndex.asReadonly();\n\n private readonly _triggerRef = viewChild<ElementRef<HTMLButtonElement>>('trigger');\n private readonly _editableInputRef = viewChild<ElementRef<HTMLInputElement>>('editableInputEl');\n private readonly _filterInputRef = viewChild<ElementRef<HTMLInputElement>>('filterInput');\n\n readonly selectedItemRef = contentChild<TemplateRef<unknown>>('selectedItem');\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly groupRef = contentChild<TemplateRef<unknown>>('group');\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly emptyFilterRef = contentChild<TemplateRef<unknown>>('emptyfilter');\n readonly loaderRef = contentChild<TemplateRef<unknown>>('loader');\n readonly filterRef = contentChild<TemplateRef<unknown>>('filter');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly selectedItemTpl = computed<TemplateRef<unknown> | null>(() => this.selectedItemRef() ?? this.namedTemplate('selectedItem'));\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.itemRef() ?? this.namedTemplate('item'));\n readonly groupTpl = computed<TemplateRef<unknown> | null>(() => this.groupRef() ?? this.namedTemplate('group'));\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() => this.footerRef() ?? this.namedTemplate('footer'));\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() => this.emptyRef() ?? this.namedTemplate('empty'));\n readonly emptyFilterTpl = computed<TemplateRef<unknown> | null>(() => this.emptyFilterRef() ?? this.namedTemplate('emptyfilter'));\n readonly loaderTpl = computed<TemplateRef<unknown> | null>(() => this.loaderRef() ?? this.namedTemplate('loader'));\n readonly filterTpl = computed<TemplateRef<unknown> | null>(() => this.filterRef() ?? this.namedTemplate('filter'));\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly setFilterFn = (v: string) => this.setFilter(v);\n\n setFilter(v: string): void {\n this._filterText.set(v);\n this._focusedOptionIndex.set(-1);\n this.onFilter.emit({ filter: v });\n if (this.lazy()) this.onLazyLoad.emit({ filter: v });\n }\n\n readonly listId = computed(() => `${this.inputId() || 'f-select'}-list`);\n\n readonly filterFieldList = computed(() => {\n const by = this.filterBy();\n return by ? by.split(',').map(f => f.trim()).filter(Boolean) : [this.optionLabel()];\n });\n\n private matchesFilter(raw: unknown, query: string): boolean {\n const locale = this.filterLocale() || undefined;\n const s = locale ? String(raw ?? '').toLocaleLowerCase(locale) : String(raw ?? '').toLowerCase();\n const q = locale ? query.toLocaleLowerCase(locale) : query.toLowerCase();\n switch (this.filterMatchMode()) {\n case 'startsWith': return s.startsWith(q);\n case 'endsWith': return s.endsWith(q);\n case 'equals': return s === q;\n case 'notEquals': return s !== q;\n case 'contains':\n default: return s.includes(q);\n }\n }\n\n private optionMatchesQuery(opt: unknown, query: string): boolean {\n if (!query) return true;\n if (opt === null || typeof opt !== 'object') return this.matchesFilter(opt, query);\n const rec = opt as Record<string, unknown>;\n return this.filterFieldList().some(f => this.matchesFilter(rec[f], query));\n }\n\n readonly filteredOptions = computed(() => {\n const opts = this.options();\n const q = this.filterText();\n if (!q) return opts;\n return opts.filter(o => this.optionMatchesQuery(o, q));\n });\n\n readonly allLeafOptions = computed<unknown[]>(() => {\n if (!this.group()) return this.options();\n const groups = this.options() as Record<string, unknown>[];\n return groups.flatMap(g => (g[this.optionGroupChildren()] as unknown[]) ?? []);\n });\n\n readonly flatItems = computed<FSelectFlatItem[]>(() => {\n const q = this.filterText();\n if (!this.group()) {\n return this.filteredOptions().map(o => ({ kind: 'option', option: o }) as FSelectFlatItem);\n }\n const groups = this.options() as Record<string, unknown>[];\n const out: FSelectFlatItem[] = [];\n for (const g of groups) {\n const children = (g[this.optionGroupChildren()] as unknown[]) ?? [];\n const filteredChildren = q ? children.filter(o => this.optionMatchesQuery(o, q)) : children;\n if (!filteredChildren.length) continue;\n out.push({ kind: 'group', label: String(g[this.optionGroupLabel()] ?? '') });\n for (const c of filteredChildren) out.push({ kind: 'option', option: c });\n }\n return out;\n });\n\n readonly navigableOptions = computed(() =>\n this.flatItems()\n .filter((i): i is { kind: 'option'; option: unknown } => i.kind === 'option')\n .map(i => i.option),\n );\n\n readonly activeDescendantId = computed(() => {\n const idx = this._focusedOptionIndex();\n return idx >= 0 ? `${this.listId()}-${idx}` : null;\n });\n\n optionIndexOf(opt: unknown): number {\n return this.navigableOptions().indexOf(opt);\n }\n\n optionRowClass(opt: unknown): string {\n const selected = this.getOptionValue(opt) === this.value();\n const focused = this.optionIndexOf(opt) === this._focusedOptionIndex();\n if (selected && !this.checkmark()) {\n return focused\n ? 'bg-(--f-highlight-focus-background) text-(--f-highlight-focus-color)'\n : 'bg-(--f-highlight-background) text-(--f-highlight-color)';\n }\n return focused\n ? 'bg-(--f-content-hover-background) text-(--f-text-color)'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)';\n }\n\n onOptionMouseEnter(opt: unknown): void {\n this._focusedOptionIndex.set(this.optionIndexOf(opt));\n }\n\n readonly selectedLabel = computed(() => {\n const v = this.value();\n if (v == null) return '';\n const found = this.allLeafOptions().find(o => this.getOptionValue(o) === v);\n return found ? this.getOptionLabel(found) : 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' : (this.readonly() ? 'cursor-default' : '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.allLeafOptions().find(o => this.getOptionValue(o) === 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 if (this.readonly()) return;\n this._editableOverride.set(text);\n const match = this.allLeafOptions().find(o => this.getOptionLabel(o) === text);\n const v = match ? this.getOptionValue(match) : 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 this.onClear.emit();\n }\n\n toggleOpen(): void {\n if (this.disabled() || this.loading() || this.readonly()) return;\n if (this.open()) this.closeList(); else this.openList();\n }\n\n private openList(): void {\n this._open.set(true);\n this._focusedOptionIndex.set(-1);\n this.onShow.emit();\n if (this.lazy()) this.onLazyLoad.emit({ filter: this.filterText() });\n }\n\n private closeList(): void {\n this._open.set(false);\n this._focusedOptionIndex.set(-1);\n if (this.resetFilterOnHide()) this._filterText.set('');\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n\n selectOption(opt: unknown): void {\n if (this.readonly()) return;\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.onChange.emit(v);\n this.closeList();\n }\n\n private focusFirstOrSelected(): void {\n const opts = this.navigableOptions();\n const idx = opts.findIndex(o => this.getOptionValue(o) === this.value());\n this._focusedOptionIndex.set(idx >= 0 ? idx : (opts.length ? 0 : -1));\n }\n\n private moveFocus(delta: number): void {\n const len = this.navigableOptions().length;\n if (!len) return;\n const cur = this._focusedOptionIndex();\n const next = cur < 0 ? (delta > 0 ? 0 : len - 1) : Math.min(len - 1, Math.max(0, cur + delta));\n this._focusedOptionIndex.set(next);\n }\n\n private _typeaheadStr = '';\n private _typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n private typeahead(char: string): void {\n if (!this.open()) this.openList();\n this._typeaheadStr += char.toLowerCase();\n if (this._typeaheadTimer) clearTimeout(this._typeaheadTimer);\n this._typeaheadTimer = setTimeout(() => { this._typeaheadStr = ''; }, 500);\n const opts = this.navigableOptions();\n if (!opts.length) return;\n const start = this._focusedOptionIndex() + 1;\n const ordered = [...opts.slice(start), ...opts.slice(0, start)];\n const match = ordered.find(o => this.getOptionLabel(o).toLowerCase().startsWith(this._typeaheadStr));\n if (match) this._focusedOptionIndex.set(opts.indexOf(match));\n }\n\n onTriggerKeyDown(event: KeyboardEvent): void {\n if (this.disabled() || this.loading()) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open()) { this.openList(); this.focusFirstOrSelected(); } else this.moveFocus(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open()) { this.openList(); this.focusFirstOrSelected(); } else this.moveFocus(-1);\n break;\n case 'Home':\n if (this.open()) { event.preventDefault(); this._focusedOptionIndex.set(0); }\n break;\n case 'End':\n if (this.open()) { event.preventDefault(); this._focusedOptionIndex.set(this.navigableOptions().length - 1); }\n break;\n case 'Enter':\n event.preventDefault();\n if (!this.open()) { this.openList(); }\n else {\n const opt = this.navigableOptions()[this._focusedOptionIndex()];\n if (opt !== undefined) this.selectOption(opt);\n }\n break;\n case 'Escape':\n if (this.open()) { event.preventDefault(); event.stopPropagation(); this.closeList(); }\n break;\n case 'Tab':\n if (this.open()) this.closeList();\n break;\n default:\n if (!this.editable() && event.key.length === 1 && !event.altKey && !event.ctrlKey && !event.metaKey) {\n this.typeahead(event.key);\n }\n }\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, computed, 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 host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n <div\n class=\"f-selectbutton\"\n role=\"group\"\n [class.f-selectbutton-sm]=\"size() === 'small'\"\n [class.f-selectbutton-lg]=\"size() === 'large'\"\n [class.f-selectbutton-invalid]=\"invalid()\"\n >\n @for (opt of options(); track getOptionValue(opt)) {\n <button\n type=\"button\"\n role=\"button\"\n class=\"f-selectbutton-item\"\n [class.f-selectbutton-item-checked]=\"isSelected(opt)\"\n [disabled]=\"disabled() || getOptionDisabled(opt)\"\n [attr.aria-pressed]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"disabled() || getOptionDisabled(opt) || null\"\n (click)=\"select(opt, $event)\"\n (keydown)=\"onKeydown($event)\"\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-invalid {\n border-color: var(--f-red-500);\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:focus-visible {\n outline-width: var(--f-focus-ring-width);\n outline-style: var(--f-focus-ring-style);\n outline-offset: var(--f-focus-ring-offset);\n outline-color: var(--f-focus-ring-color);\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 .f-selectbutton-lg .f-selectbutton-item {\n font-size: 0.9375rem;\n padding: 0.6rem 1.05rem;\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 optionDisabled = input<string>('disabled');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly allowEmpty = input(true, { transform: booleanAttribute });\n readonly size = input<'small' | 'large' | ''>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onChange = output<{ value: unknown; originalEvent?: Event }>();\n\n private _value = signal<unknown>(null);\n private _values = signal<unknown[]>([]);\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly hostClass = computed(() => `inline-block ${this.styleClass()}`);\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 getOptionDisabled(opt: unknown): boolean {\n if (opt === null || opt === undefined || typeof opt !== 'object') return false;\n return !!(opt as Record<string, unknown>)[this.optionDisabled()];\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, event?: Event): void {\n if (this.disabled() || this.getOptionDisabled(opt)) 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(), originalEvent: event });\n }\n\n onKeydown(event: KeyboardEvent): void {\n const key = event.key;\n if (key !== 'ArrowRight' && key !== 'ArrowDown' && key !== 'ArrowLeft' && key !== 'ArrowUp' && key !== 'Home' && key !== 'End') return;\n const buttons = Array.from(\n (event.currentTarget as HTMLElement).parentElement?.querySelectorAll<HTMLButtonElement>('button.f-selectbutton-item') ?? [],\n );\n if (!buttons.length) return;\n event.preventDefault();\n const currentIndex = buttons.indexOf(event.currentTarget as HTMLButtonElement);\n let nextIndex = currentIndex;\n if (key === 'ArrowRight' || key === 'ArrowDown') nextIndex = (currentIndex + 1) % buttons.length;\n else if (key === 'ArrowLeft' || key === 'ArrowUp') nextIndex = (currentIndex - 1 + buttons.length) % buttons.length;\n else if (key === 'Home') nextIndex = 0;\n else if (key === 'End') nextIndex = buttons.length - 1;\n buttons[nextIndex]?.focus();\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 { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input, output } from '@angular/core';\n\nexport type TextareaVariant = 'outlined' | 'filled';\n\n@Directive({\n selector: '[fTextarea]',\n host: {\n '[class]': 'classes()',\n '[attr.aria-invalid]': \"invalid() && touched() ? 'true' : null\",\n '(input)': 'onInput()',\n },\n})\nexport class TextareaDirective {\n private readonly _el = inject(ElementRef<HTMLTextAreaElement>);\n\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 variant = input<TextareaVariant>('outlined');\n // Inputs already span full width by default; set false to shrink to content width.\n readonly fluid = input(true, { transform: booleanAttribute });\n readonly autoResize = input(false, { transform: booleanAttribute });\n\n readonly onResize = output<void>();\n\n constructor() {\n afterNextRender(() => {\n if (this.autoResize()) this.resize();\n });\n }\n\n onInput(): void {\n if (this.autoResize()) this.resize();\n }\n\n private resize(): void {\n const el = this._el.nativeElement;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n this.onResize.emit();\n }\n\n readonly classes = computed(() => {\n const invalidState = this.invalid() && this.touched();\n const variant = this.variant();\n\n const stateClass = invalidState\n ? 'border-red-400 focus:border-red-400'\n : variant === 'filled'\n ? 'border-transparent focus:border-primary'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n\n const variantClass = variant === 'filled'\n ? 'bg-(--f-surface-100)'\n : 'bg-(--f-form-field-background)';\n\n return [\n 'block px-3 py-2 text-sm rounded-lg border',\n this.fluid() ? 'w-full' : 'w-auto',\n variantClass,\n '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 this.autoResize() ? 'resize-none overflow-hidden' : '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, numberAttribute, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonSeverity, severitySolidBackground } from '../button/button.component';\n\n@Component({\n selector: 'f-togglebutton',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleButtonComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"checked()\"\n [attr.aria-readonly]=\"readonly() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.tabindex]=\"disabled() ? -1 : tabindex()\"\n role=\"switch\"\n (click)=\"toggle()\"\n >\n @if (iconPos() === 'left') {\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 }\n <span class=\"leading-none\">{{ checked() ? onLabel() : offLabel() }}</span>\n @if (iconPos() === 'right') {\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 }\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 iconPos = input<'left' | 'right'>('left');\n readonly severity = input<ButtonSeverity>('primary');\n readonly size = input<'small' | 'large' | null>(null);\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 tabindex = input(0, { transform: numberAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\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 hostClass = computed(() => `inline-block ${this.styleClass()}`);\n\n readonly buttonClass = computed(() => {\n const sizing =\n this.size() === 'small' ? 'px-2.5 py-1.5 text-xs' : this.size() === 'large' ? 'px-4 py-2.5 text-base' : 'px-3 py-2 text-sm';\n const base = `inline-flex items-center gap-2 ${sizing} 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} ${severitySolidBackground(this.severity())}`;\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() || this.readonly()) 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, numberAttribute, 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 host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId()\"\n [attr.aria-checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-readonly]=\"readonly() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.tabindex]=\"isDisabled() ? -1 : tabindex()\"\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 readonly size = input<'small' | 'large' | null>(null);\n readonly tabindex = input(0, { transform: numberAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\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 hostClass = computed(() => `inline-block ${this.styleClass()}`);\n\n readonly trackClass = computed(() => {\n const sizing = this.size() === 'small' ? 'h-5 w-9' : this.size() === 'large' ? 'h-7 w-14' : 'h-6 w-11';\n const cursor = this.readonly() ? 'cursor-default' : 'cursor-pointer';\n const base = `relative inline-flex items-center ${cursor} ${sizing} 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 sizing = this.size() === 'small' ? 'h-3.5 w-3.5' : this.size() === 'large' ? 'h-5 w-5' : 'h-4 w-4';\n const checkedTranslate = this.size() === 'small' ? 'translate-x-[18px]' : this.size() === 'large' ? 'translate-x-8' : 'translate-x-6';\n const base = 'pointer-events-none block rounded-full bg-white shadow transform transition duration-200 ease-in-out ring-0';\n return `${base} ${sizing} ${this.checked() ? checkedTranslate : '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 ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\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;\nconst FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nexport type DialogPosition =\n | 'center'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'topleft'\n | 'topright'\n | 'bottomleft'\n | 'bottomright';\n\n@Component({\n selector: 'f-dialog',\n imports: [NgTemplateOutlet, UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\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 p-4\" [class]=\"containerPositionClass()\" [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() && closable() && close()\"\n ></div>\n }\n <div\n #panel\n [class]=\"panelClass()\"\n [class.closing]=\"closing()\"\n [style]=\"panelStyle()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"header() ? headerId : null\"\n (keydown.tab)=\"onTab($event)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n >\n @if (resizable() && !maximized()) {\n <div class=\"dialog-resize-handle\" (pointerdown)=\"onResizeStart($event)\"></div>\n }\n @if (header() || resolvedHeader() || closable() || maximizable()) {\n <div\n class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\"\n [class.cursor-move]=\"draggable() && !maximized()\"\n (pointerdown)=\"onDragStart($event)\"\n >\n @if (resolvedHeader()) {\n <ng-container [ngTemplateOutlet]=\"resolvedHeader()\" />\n } @else {\n <h2 [id]=\"headerId\" class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n }\n <div class=\"flex items-center gap-1\">\n @if (maximizable()) {\n <button\n type=\"button\"\n [attr.aria-label]=\"maximized() ? 'Restore' : 'Maximize'\"\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)=\"toggleMaximize()\"\n >\n <ui-icon [name]=\"maximized() ? 'minimize-2' : 'window-maximize'\" class=\"text-xs\"></ui-icon>\n </button>\n }\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 </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 </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 closeOnEscape = input(true, { transform: booleanAttribute });\n readonly dismissableMask = input(false, { transform: booleanAttribute });\n readonly resizable = input(true, { transform: booleanAttribute });\n readonly draggable = input(false, { transform: booleanAttribute });\n readonly maximizable = input(false, { transform: booleanAttribute });\n readonly blockScroll = input(false, { transform: booleanAttribute });\n readonly returnFocusOnClose = input(true, { transform: booleanAttribute });\n readonly position = input<DialogPosition>('center');\n readonly style = input<Record<string, string> | null>(null);\n readonly styleClass = input<string>('');\n readonly breakpoints = input<Record<string, string> | null>(null);\n\n private readonly _resizedSize = signal<{ width: string; height: string } | null>(null);\n private readonly _dragPosition = signal<Record<string, string> | null>(null);\n private readonly _maximized = signal(false);\n readonly maximized = this._maximized.asReadonly();\n\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 const maximizedStyle: Record<string, string> = { width: '100vw', height: '100vh', maxWidth: '100vw', maxHeight: '100vh', margin: '0' };\n if (this._maximized()) return maximizedStyle;\n return {\n width: '32rem',\n ...this.style(),\n ...(this.breakpointWidth() ? { width: this.breakpointWidth()! } : {}),\n ...(this._resizedSize() ?? {}),\n ...(this._dragPosition() ?? {}),\n };\n });\n\n readonly containerPositionClass = computed(() => {\n const map: Record<DialogPosition, string> = {\n center: 'items-center justify-center',\n top: 'items-start justify-center',\n bottom: 'items-end justify-center',\n left: 'items-center justify-start',\n right: 'items-center justify-end',\n topleft: 'items-start justify-start',\n topright: 'items-start justify-end',\n bottomleft: 'items-end justify-start',\n bottomright: 'items-end justify-end',\n };\n return map[this.position()] ?? map['center'];\n });\n\n readonly panelClass = computed(() => {\n const max = this._maximized();\n const base = 'dialog-panel relative bg-(--f-overlay-popover-background) shadow-2xl flex flex-col overflow-hidden pointer-events-auto';\n const shape = max ? 'inset-0 w-screen h-screen rounded-none' : 'rounded-2xl max-h-[90vh] max-w-[calc(100vw-2rem)]';\n return `${base} ${shape} ${this.styleClass()}`.trim();\n });\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onMaximize = output<{ maximized: boolean }>();\n\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly resolvedHeader = computed<TemplateRef<unknown> | null>(() => {\n if (this.headerRef()) return this.headerRef() ?? null;\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'header');\n return tpl?.templateRef ?? null;\n });\n\n readonly resolvedFooter = computed<TemplateRef<unknown> | null>(() => {\n if (this.footerRef()) return this.footerRef() ?? null;\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 private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n private _previouslyFocused: HTMLElement | null = null;\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 this._previouslyFocused = typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;\n if (this.modal() || this.blockScroll()) this._doc.body.style.overflow = 'hidden';\n this.onShow.emit();\n setTimeout(() => this.focusPanel(), 0);\n } else if (this._rendered()) {\n this._closing.set(true);\n if (this.modal() || this.blockScroll()) this._doc.body.style.overflow = '';\n if (this.returnFocusOnClose()) this._previouslyFocused?.focus();\n this._previouslyFocused = null;\n this._resizedSize.set(null);\n this._dragPosition.set(null);\n this._maximized.set(false);\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.closable() && this.closeOnEscape()) this.close();\n }\n\n close(): void {\n this.visible.set(false);\n this.onHide.emit();\n }\n\n toggleMaximize(): void {\n this._maximized.update(v => !v);\n if (this._maximized()) {\n this._resizedSize.set(null);\n this._dragPosition.set(null);\n }\n this.onMaximize.emit({ maximized: this._maximized() });\n }\n\n private focusPanel(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return;\n const focusable = panelEl.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n (focusable ?? panelEl).focus();\n }\n\n private getFocusable(): HTMLElement[] {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return [];\n return Array.from(panelEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n }\n\n onTab(event: Event): void {\n if (!this.modal()) return;\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[focusables.length - 1]) {\n event.preventDefault();\n focusables[0].focus();\n }\n }\n\n onShiftTab(event: Event): void {\n if (!this.modal()) return;\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[0]) {\n event.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n\n onDragStart(event: PointerEvent): void {\n if (!this.draggable() || this.maximized()) return;\n if ((event.target as HTMLElement).closest('button')) return;\n const panel = this.panelRef()?.nativeElement;\n if (!panel) return;\n event.preventDefault();\n const rect = panel.getBoundingClientRect();\n const startX = event.clientX;\n const startY = event.clientY;\n const startLeft = rect.left;\n const startTop = rect.top;\n this._dragPosition.set({ position: 'fixed', margin: '0', left: `${startLeft}px`, top: `${startTop}px` });\n\n const onMove = (e: PointerEvent): void => {\n const left = Math.max(0, startLeft + (e.clientX - startX));\n const top = Math.max(0, startTop + (e.clientY - startY));\n this._dragPosition.set({ position: 'fixed', margin: '0', left: `${left}px`, top: `${top}px` });\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 onResizeStart(event: PointerEvent): void {\n event.preventDefault();\n const panel = this.panelRef()?.nativeElement;\n if (!panel) return;\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 {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom' | 'full';\n\nconst CLOSE_ANIMATION_MS = 200;\nconst FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n@Component({\n selector: 'f-drawer',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block', '(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)=\"dismissable() && close()\"></div>\n }\n <div\n #panel\n [class]=\"panelClass()\"\n [class.closing]=\"closing()\"\n [style]=\"style()\"\n role=\"complementary\"\n [attr.aria-modal]=\"modal() ? 'true' : null\"\n [attr.aria-labelledby]=\"header() ? headerId : null\"\n (keydown.tab)=\"onTab($event)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n >\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n @if (resolvedHeader()) {\n <ng-container [ngTemplateOutlet]=\"resolvedHeader()\" />\n } @else {\n <h2 [id]=\"headerId\" class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n }\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 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 <div class=\"p-6 flex-1 overflow-y-auto pointer-events-auto\">\n @if (resolvedContent()) {\n <ng-container [ngTemplateOutlet]=\"resolvedContent()\" />\n }\n <ng-content />\n </div>\n @if (resolvedFooter()) {\n <div class=\"px-6 py-4 border-t border-(--f-content-border-color) shrink-0\">\n <ng-container [ngTemplateOutlet]=\"resolvedFooter()\" />\n </div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DrawerComponent {\n private static idCounter = 0;\n private readonly _doc = inject(DOCUMENT);\n protected readonly headerId = `f-drawer-header-${++DrawerComponent.idCounter}`;\n\n readonly header = input<string>('');\n readonly visible = model<boolean>(false);\n readonly position = input<DrawerPosition>('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 readonly dismissable = input(true, { transform: booleanAttribute });\n readonly blockScroll = input(false, { transform: booleanAttribute });\n readonly returnFocusOnClose = input(true, { transform: booleanAttribute });\n readonly style = input<Record<string, string> | null>(null);\n readonly styleClass = input<string>('');\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly contentRef = contentChild<TemplateRef<unknown>>('content');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly resolvedHeader = computed<TemplateRef<unknown> | null>(() => {\n if (this.headerRef()) return this.headerRef() ?? null;\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'header');\n return tpl?.templateRef ?? null;\n });\n\n readonly resolvedFooter = computed<TemplateRef<unknown> | null>(() => {\n if (this.footerRef()) return this.footerRef() ?? null;\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'footer');\n return tpl?.templateRef ?? null;\n });\n\n readonly resolvedContent = computed<TemplateRef<unknown> | null>(() => {\n if (this.contentRef()) return this.contentRef() ?? null;\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'content');\n return tpl?.templateRef ?? null;\n });\n\n private readonly isFull = computed(() => this.fullScreen() || this.position() === 'full');\n\n readonly panelClass = computed(() => {\n const pos = this.position();\n const full = this.isFull();\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 const key = full && pos !== 'top' && pos !== 'bottom' ? 'right' : pos;\n return `${posMap[key] ?? posMap['right']} ${this.styleClass()}`.trim();\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 private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n private _previouslyFocused: HTMLElement | null = null;\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this._closing.set(false);\n this._rendered.set(true);\n this._previouslyFocused = typeof document !== 'undefined' ? (document.activeElement as HTMLElement | null) : null;\n if (this.modal() && this.blockScroll()) this._doc.body.style.overflow = 'hidden';\n this.onShow.emit();\n setTimeout(() => this.focusPanel(), 0);\n } else if (this._rendered()) {\n this._closing.set(true);\n if (this.modal() && this.blockScroll()) this._doc.body.style.overflow = '';\n if (this.returnFocusOnClose()) this._previouslyFocused?.focus();\n this._previouslyFocused = null;\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 private focusPanel(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return;\n const focusable = panelEl.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n (focusable ?? panelEl).focus();\n }\n\n private getFocusable(): HTMLElement[] {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return [];\n return Array.from(panelEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n }\n\n onTab(event: Event): void {\n if (!this.modal()) return;\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[focusables.length - 1]) {\n event.preventDefault();\n focusables[0].focus();\n }\n }\n\n onShiftTab(event: Event): void {\n if (!this.modal()) return;\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[0]) {\n event.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n}\n","import { Component, computed, contentChild, contentChildren, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-card',\n imports: [NgTemplateOutlet],\n host: { '[class]': 'hostClass()' },\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\" [style]=\"style()\">\n @if (headerTemplateResolved() || header()) {\n <div class=\"border-b border-(--f-content-border-color) bg-(--f-content-background)/80\">\n @if (headerTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplateResolved()\" />\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 @if (contentTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplateResolved()\" />\n }\n </div>\n @if (footerTemplateResolved()) {\n <div class=\"p-(--f-card-padding) border-t border-(--f-content-border-color) bg-(--f-content-hover-background)/50\">\n <ng-container [ngTemplateOutlet]=\"footerTemplateResolved()\" />\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 readonly style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\n\n readonly headerTemplateRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerTemplateRef = contentChild<TemplateRef<unknown>>('footer');\n readonly contentTemplateRef = contentChild<TemplateRef<unknown>>('content');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly headerTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.headerTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'header')?.templateRef ?? null,\n );\n readonly footerTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.footerTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'footer')?.templateRef ?? null,\n );\n readonly contentTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.contentTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'content')?.templateRef ?? null,\n );\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n input,\n model,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-panel',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: {\n class: 'block',\n },\n template: `\n <div [class]=\"rootClass()\" [style]=\"style()\">\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 [class.cursor-pointer]=\"toggleable()\"\n (click)=\"toggleable() && toggleCollapsed()\"\n >\n @if (headerTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplateResolved()\" />\n } @else {\n <span class=\"font-semibold text-(--f-text-color) text-sm tracking-tight\">{{ header() }}</span>\n }\n <div class=\"flex items-center gap-1\">\n @if (iconsTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"iconsTemplateResolved()\" />\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 [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-label]=\"header() || null\"\n (click)=\"onToggleIconClick($event)\"\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 </div>\n <div\n [id]=\"contentId\"\n class=\"grid [transition:grid-template-rows_220ms_ease]\"\n [style.grid-template-rows]=\"collapsed() ? '0fr' : '1fr'\"\n role=\"region\"\n [attr.aria-hidden]=\"collapsed()\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"p-5\">\n <ng-content />\n </div>\n @if (footerTemplateResolved()) {\n <div class=\"px-5 pb-5 pt-3 mt-1 border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTemplateResolved()\" />\n </div>\n }\n </div>\n </div>\n </div>\n `,\n})\nexport class PanelComponent {\n private static idCounter = 0;\n protected readonly contentId = `f-panel-content-${++PanelComponent.idCounter}`;\n\n readonly header = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onBeforeToggle = output<{ collapsed: boolean }>();\n readonly onAfterToggle = output<{ collapsed: boolean }>();\n\n readonly headerTemplateRef = contentChild<TemplateRef<unknown>>('header');\n readonly iconsTemplateRef = contentChild<TemplateRef<unknown>>('icons');\n readonly footerTemplateRef = contentChild<TemplateRef<unknown>>('footer');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly rootClass = computed(\n () => `border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm ${this.styleClass()}`,\n );\n\n readonly headerTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.headerTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'header')?.templateRef ?? null,\n );\n readonly iconsTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.iconsTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'icons')?.templateRef ?? null,\n );\n readonly footerTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.footerTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'footer')?.templateRef ?? null,\n );\n\n toggleCollapsed(): void {\n const next = !this.collapsed();\n this.onBeforeToggle.emit({ collapsed: this.collapsed() });\n this.collapsed.set(next);\n this.onAfterToggle.emit({ collapsed: next });\n }\n\n onToggleIconClick(event: Event): void {\n event.stopPropagation();\n this.toggleCollapsed();\n }\n}\n","import { booleanAttribute, Component, ElementRef, input, model, output, viewChildren } 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 host: { class: 'block w-full' },\n template: `\n @if (orientation() === 'vertical') {\n <div role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class]=\"'flex flex-col items-start w-full ' + styleClass()\" [style]=\"style()\">\n @for (item of model(); track $index; let i = $index; let last = $last) {\n <div class=\"flex items-start w-full\" [class.pb-1]=\"!last\">\n <div class=\"flex flex-col items-center\">\n <button\n #stepBtn\n type=\"button\"\n role=\"tab\"\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(item, i)\"\n [disabled]=\"isStepDisabled(item, i)\"\n [attr.aria-selected]=\"i === activeIndex() ? 'true' : 'false'\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n (click)=\"onStepClick($event, i, item)\"\n (keydown)=\"onKeydown($event, 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 (!last) {\n <div class=\"w-[1.5px] flex-1 min-h-[24px] my-1 rounded-full transition-all duration-[var(--f-transition-duration)]\" [class]=\"i < activeIndex() ? 'bg-primary' : 'bg-(--f-content-border-color)'\"></div>\n }\n </div>\n @if (item.label) {\n <span class=\"text-xs leading-tight ml-3 mt-1.5 transition-all duration-[var(--f-transition-duration)]\"\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 }\n </div>\n } @else {\n <div role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class]=\"'flex items-start w-full ' + styleClass()\" [style]=\"style()\">\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 #stepBtn\n type=\"button\"\n role=\"tab\"\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(item, i)\"\n [disabled]=\"isStepDisabled(item, i)\"\n [attr.aria-selected]=\"i === activeIndex() ? 'true' : 'false'\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n (click)=\"onStepClick($event, i, item)\"\n (keydown)=\"onKeydown($event, 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 `,\n})\nexport class StepsComponent {\n readonly model = input<MenuItem[]>([]);\n readonly activeIndex = model<number>(0);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly linear = input(false, { transform: booleanAttribute });\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly ariaLabel = input<string>('Steps');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onChange = output<number>();\n\n private readonly stepButtons = viewChildren<ElementRef<HTMLButtonElement>>('stepBtn');\n\n isStepDisabled(item: MenuItem, i: number): boolean {\n if (item.disabled) return true;\n if (this.readonly()) return true;\n if (this.linear() && i > this.activeIndex()) return true;\n return false;\n }\n\n stepCircleClass(item: MenuItem, i: number): string {\n const interactive = !this.isStepDisabled(item, i);\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 onStepClick(e: Event, i: number, item: MenuItem): void {\n if (this.isStepDisabled(item, i)) return;\n this.activeIndex.set(i);\n this.onChange.emit(i);\n }\n\n onKeydown(e: KeyboardEvent, i: number): void {\n const items = this.model();\n if (!items.length) return;\n const forwardKey = this.orientation() === 'vertical' ? 'ArrowDown' : 'ArrowRight';\n const backwardKey = this.orientation() === 'vertical' ? 'ArrowUp' : 'ArrowLeft';\n\n let next: number | null = null;\n if (e.key === forwardKey) next = (i + 1) % items.length;\n else if (e.key === backwardKey) next = (i - 1 + items.length) % items.length;\n else if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = items.length - 1;\n\n if (next === null) return;\n e.preventDefault();\n this.stepButtons()[next]?.nativeElement.focus();\n }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n contentChildren,\n effect,\n inject,\n input,\n output,\n PLATFORM_ID,\n signal,\n untracked,\n} from '@angular/core';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport interface SplitterResizeEvent {\n originalEvent: Event;\n sizes: number[];\n}\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 [style]=\"style()\"\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 [style.flex]=\"'0 0 ' + gutterSize() + 'px'\"\n role=\"separator\"\n tabindex=\"0\"\n [attr.aria-orientation]=\"layout()\"\n [attr.aria-valuenow]=\"gutterValueNow(i)\"\n (pointerdown)=\"onGutterPointerDown($event, i)\"\n (keydown)=\"onGutterKeyDown($event, i)\"\n ></div>\n }\n }\n } @else {\n <ng-content />\n }\n </div>\n `,\n styles: [\n `\n .f-splitter-gutter {\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 .f-splitter-gutter:focus-visible {\n background: var(--f-primary-color);\n outline: none;\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 gutterSize = input<number>(4);\n readonly step = input<number>(5);\n readonly stateKey = input<string | null>(null);\n readonly stateStorage = input<'session' | 'local'>('session');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onResizeStart = output<SplitterResizeEvent>();\n readonly onResizeEnd = output<SplitterResizeEvent>();\n\n readonly panelTemplates = contentChildren(FTemplateDirective);\n\n private readonly platformId = inject(PLATFORM_ID);\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\n const key = this.stateKey();\n const restored = key ? this.restoreState(key) : null;\n if (restored && restored.length === count) {\n untracked(() => this._sizes.set(restored));\n return;\n }\n\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 gutterValueNow(index: number): number {\n return Math.round((this.sizes()[index] ?? 0) * 100) / 100;\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 this.onResizeStart.emit({ originalEvent: event, sizes: startSizes });\n\n const onMove = (e: PointerEvent) => {\n const delta =\n (((horizontal ? e.clientX : e.clientY) - startPos) / total) * 100;\n this._sizes.set(this.clampPair(index, startSizes, startSizes[index] + delta));\n };\n const stop = (e: PointerEvent) => {\n gutter.removeEventListener('pointermove', onMove);\n gutter.removeEventListener('pointerup', stop);\n gutter.removeEventListener('pointercancel', stop);\n this.onResizeEnd.emit({ originalEvent: e, sizes: this._sizes() });\n this.persistState();\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 onGutterKeyDown(event: KeyboardEvent, index: number): void {\n const horizontal = this.layout() !== 'vertical';\n const increaseKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const decreaseKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n if (event.key !== increaseKey && event.key !== decreaseKey) return;\n\n const startSizes = this._sizes();\n if (startSizes.length < index + 2) return;\n\n event.preventDefault();\n this.onResizeStart.emit({ originalEvent: event, sizes: startSizes });\n\n const delta = event.key === increaseKey ? this.step() : -this.step();\n const updated = this.clampPair(index, startSizes, startSizes[index] + delta);\n this._sizes.set(updated);\n\n this.onResizeEnd.emit({ originalEvent: event, sizes: updated });\n this.persistState();\n }\n\n private clampPair(\n index: number,\n startSizes: number[],\n rawPrevSize: number,\n ): number[] {\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 const prev = Math.min(Math.max(rawPrevSize, min), Math.max(max, min));\n const updated = [...startSizes];\n updated[index] = prev;\n updated[index + 1] = pairTotal - prev;\n return updated;\n }\n\n private getStorage(): Storage | undefined {\n if (!isPlatformBrowser(this.platformId)) return undefined;\n return this.stateStorage() === 'local'\n ? window.localStorage\n : window.sessionStorage;\n }\n\n private persistState(): void {\n const key = this.stateKey();\n if (!key) return;\n try {\n this.getStorage()?.setItem(key, JSON.stringify(this._sizes()));\n } catch {\n // storage unavailable (quota exceeded, private browsing, etc.)\n }\n }\n\n private restoreState(key: string): number[] | null {\n try {\n const raw = this.getStorage()?.getItem(key);\n return raw ? (JSON.parse(raw) as number[]) : null;\n } catch {\n return null;\n }\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 role=\"toolbar\"\n class=\"flex flex-col sm:flex-row sm: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 [style]=\"style()\"\n >\n <div class=\"flex items-center gap-2 flex-wrap flex-1 min-w-0\">\n <ng-content select=\"[start],[fStart]\" />\n </div>\n <div class=\"flex items-center gap-2 flex-wrap justify-center shrink-0\">\n <ng-content select=\"[center],[fCenter]\" />\n </div>\n <div class=\"flex items-center gap-2 flex-wrap flex-1 justify-start sm:justify-end min-w-0\">\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 readonly style = input<Record<string, string> | null>(null);\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 afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TabsContext } from './tabs.context';\n\n// ─── Tabs root — provides context ─────────────────────────────────────────────\n@Component({\n selector: 'f-tabs',\n providers: [TabsContext],\n host: { class: 'block' },\n template: `<div [class]=\"'flex flex-col ' + styleClass()\" [style]=\"style()\"><ng-content /></div>`,\n})\nexport class TabsComponent {\n readonly value = model<string | number>(0);\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\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, with optional scroll navigators ────────────\n@Component({\n selector: 'f-tablist',\n imports: [UiIconComponent],\n host: { class: 'block' },\n template: `\n <div class=\"flex items-center gap-1\">\n @if (ctx.scrollable() && showPrevButton()) {\n <button\n type=\"button\"\n class=\"shrink-0 w-7 h-7 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\"\n aria-label=\"Scroll back\"\n (click)=\"scrollBy(-1)\"\n >\n <ui-icon name=\"chevron-left\" [size]=\"14\"></ui-icon>\n </button>\n }\n <div #scrollContainer [class]=\"containerClass()\" (scroll)=\"updateScrollButtons()\">\n <div [class]=\"listClass()\" role=\"tablist\" (keydown)=\"onKeydown($event)\">\n <ng-content />\n </div>\n </div>\n @if (ctx.scrollable() && showNextButton()) {\n <button\n type=\"button\"\n class=\"shrink-0 w-7 h-7 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\"\n aria-label=\"Scroll forward\"\n (click)=\"scrollBy(1)\"\n >\n <ui-icon name=\"chevron-right\" [size]=\"14\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class TabListComponent {\n readonly ctx = inject(TabsContext);\n private readonly tabs = contentChildren(TabComponent);\n private readonly scrollContainerRef = viewChild<ElementRef<HTMLDivElement>>('scrollContainer');\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _showPrevButton = signal(false);\n readonly showPrevButton = this._showPrevButton.asReadonly();\n private readonly _showNextButton = signal(false);\n readonly showNextButton = this._showNextButton.asReadonly();\n\n private resizeObserver?: ResizeObserver;\n\n readonly containerClass = computed(() =>\n this.ctx.scrollable() ? 'flex-1 min-w-0 overflow-x-auto scrollbar-none' : 'flex-1 min-w-0',\n );\n\n readonly listClass = computed(() => {\n const base = 'flex border-b border-(--f-content-border-color) gap-0';\n return this.ctx.scrollable() ? `${base} w-max` : `${base} flex-wrap`;\n });\n\n constructor() {\n afterNextRender(() => {\n this.updateScrollButtons();\n const el = this.scrollContainerRef()?.nativeElement;\n if (el) {\n this.resizeObserver = new ResizeObserver(() => this.updateScrollButtons());\n this.resizeObserver.observe(el);\n }\n });\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\n }\n\n updateScrollButtons(): void {\n if (!this.ctx.scrollable()) {\n this._showPrevButton.set(false);\n this._showNextButton.set(false);\n return;\n }\n const el = this.scrollContainerRef()?.nativeElement;\n if (!el) return;\n this._showPrevButton.set(el.scrollLeft > 1);\n this._showNextButton.set(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);\n }\n\n scrollBy(direction: 1 | -1): void {\n const el = this.scrollContainerRef()?.nativeElement;\n if (!el) return;\n el.scrollBy({ left: direction * el.clientWidth * 0.8, behavior: 'smooth' });\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 tabs[nextIndex].buttonEl()?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n}\n\n// ─── Tab — individual clickable tab button ────────────────────────────────────\n@Component({\n selector: 'f-tab',\n imports: [UiIconComponent],\n host: { '[class]': 'hostClass()' },\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() ? 'true' : 'false'\"\n [attr.tabindex]=\"isActive() ? 0 : -1\"\n (click)=\"onClick()\"\n >\n <ng-content />\n </button>\n @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-4 h-4 my-auto mr-2 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 focus:outline-none focus-visible:ring-focus\"\n (click)=\"onCloseClick($event)\"\n >\n <ui-icon name=\"times\" class=\"text-[9px]\"></ui-icon>\n </button>\n }\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 closable = input(false, { transform: booleanAttribute });\n readonly isActive = computed(() => this.ctx.active() === this.value());\n\n readonly onClose = output<{ originalEvent: Event; value: string | number }>();\n\n readonly triggerId = computed(() => `f-tab-trigger-${this.value()}`);\n readonly panelId = computed(() => `f-tab-panel-${this.value()}`);\n\n readonly hostClass = computed(() => {\n const base = 'inline-flex items-stretch border-b-[2.5px] -mb-px transition-all duration-[var(--f-transition-duration)]';\n return this.isActive() ? `${base} border-primary` : `${base} border-transparent hover:border-(--f-content-border-color)`;\n });\n\n readonly tabClass = computed(() => {\n const base = 'px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-all duration-[var(--f-transition-duration)] 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} text-primary`\n : `${base} text-(--f-text-muted-color) hover:text-(--f-text-hover-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 onCloseClick(e: Event): void {\n e.stopPropagation();\n this.onClose.emit({ originalEvent: e, value: this.value() });\n }\n}\n\n// ─── TabPanels — wrapper around individual panels ─────────────────────────────\n@Component({\n selector: 'f-tabpanels',\n host: { class: 'block' },\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 class: 'block',\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 static idCounter = 0;\n readonly id = `f-accordion-${AccordionContext.idCounter++}`;\n\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 // Delegates the actual value mutation up to the owning AccordionComponent so\n // that `value` (a model()) stays the single source of truth — this signal is\n // a read-only projection of it, kept in sync via setValues().\n private _toggleFn: (v: string | number) => void = (v) =>\n this.setValues(this._values().includes(v) ? [] : [v]);\n\n isOpen(v: string | number): boolean {\n return this._values().includes(v);\n }\n\n toggle(v: string | number): void {\n this._toggleFn(v);\n }\n\n setToggleFn(fn: (v: string | number) => void): void {\n this._toggleFn = fn;\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 readonly _disabled = signal(false);\n readonly disabled = this._disabled.asReadonly();\n private readonly _value = signal<string | number>('');\n readonly value = this._value.asReadonly();\n\n private _toggleFn: () => void = () => this._open.update(v => !v);\n\n setToggleFn(fn: () => void): void { this._toggleFn = fn; }\n toggle(): void {\n if (this._disabled()) return;\n this._toggleFn();\n }\n setOpen(v: boolean): void { this._open.set(v); }\n setDisabled(v: boolean): void { this._disabled.set(v); }\n setValue(v: string | number): void { this._value.set(v); }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n viewChild,\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]=\"rootClass()\"\n [style]=\"style()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-content />\n </div>`,\n})\nexport class AccordionComponent {\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<string | number | (string | number)[] | null>(null);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onOpen = output<{ value: string | number }>();\n readonly onClose = output<{ value: string | number }>();\n readonly onTabChange = output<{ value: string | number }>();\n readonly onTabClose = output<{ value: string | number }>();\n\n private readonly ctx = inject(AccordionContext);\n private readonly headers = contentChildren(AccordionHeaderComponent);\n\n readonly rootClass = computed(\n () => `border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm bg-(--f-content-background) ${this.styleClass()}`,\n );\n\n constructor() {\n // Set synchronously so f-accordion-panel children read the right open\n // state on their own first render — effect() below only fires after CD.\n this.ctx.setMultiple(this.multiple());\n this.syncValuesToContext();\n this.ctx.setToggleFn((v) => this.applyToggle(v));\n\n effect(() => this.ctx.setMultiple(this.multiple()));\n effect(() => {\n this.value();\n this.syncValuesToContext();\n });\n }\n\n private syncValuesToContext(): void {\n const v = this.value();\n this.ctx.setValues(v == null ? [] : Array.isArray(v) ? v : [v]);\n }\n\n private applyToggle(v: string | number): void {\n const current = this.value();\n if (this.multiple()) {\n const cur = Array.isArray(current) ? current : current == null ? [] : [current];\n const wasOpen = cur.includes(v);\n this.value.set(wasOpen ? cur.filter(x => x !== v) : [...cur, v]);\n this.emitToggle(v, wasOpen);\n } else {\n const wasOpen = current === v;\n this.value.set(wasOpen ? null : v);\n this.emitToggle(v, wasOpen);\n }\n }\n\n private emitToggle(v: string | number, wasOpen: boolean): void {\n if (wasOpen) {\n this.onClose.emit({ value: v });\n this.onTabClose.emit({ value: v });\n } else {\n this.onOpen.emit({ value: v });\n this.onTabChange.emit({ value: v });\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const headers = this.headers().filter(h => !h.disabled());\n if (!headers.length) return;\n\n const currentEl = document.activeElement;\n const currentIndex = headers.findIndex(h => h.buttonEl() === currentEl);\n\n let nextIndex: number | null = null;\n if (event.key === 'ArrowDown') nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % headers.length;\n else if (event.key === 'ArrowUp') nextIndex = currentIndex < 0 ? 0 : (currentIndex - 1 + headers.length) % headers.length;\n else if (event.key === 'Home') nextIndex = 0;\n else if (event.key === 'End') nextIndex = headers.length - 1;\n\n if (nextIndex === null) return;\n event.preventDefault();\n headers[nextIndex].focusButton();\n }\n}\n\n// ─── AccordionPanel — provides panel-level context ────────────────────────────\n@Component({\n selector: 'f-accordion-panel',\n providers: [AccordionPanelCtx],\n host: {\n '[class.opacity-50]': 'disabled()',\n },\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 {\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 constructor() {\n this.panelCtx.setValue(this.value());\n this.panelCtx.setDisabled(this.disabled());\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 effect(() => this.panelCtx.setValue(this.value()));\n effect(() => this.panelCtx.setDisabled(this.disabled()));\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 #btn\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 disabled:cursor-not-allowed disabled:opacity-50\"\n [id]=\"headerId()\"\n [disabled]=\"panelCtx.disabled()\"\n [attr.aria-expanded]=\"panelCtx.open()\"\n [attr.aria-controls]=\"contentId()\"\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 private readonly accordionCtx = inject(AccordionContext, { optional: true });\n private readonly buttonRef = viewChild<ElementRef<HTMLButtonElement>>('btn');\n\n readonly disabled = computed(() => this.panelCtx.disabled());\n readonly headerId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-header-${this.panelCtx.value()}`);\n readonly contentId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-content-${this.panelCtx.value()}`);\n\n buttonEl(): HTMLButtonElement | undefined {\n return this.buttonRef()?.nativeElement;\n }\n\n focusButton(): void {\n this.buttonRef()?.nativeElement.focus();\n }\n}\n\n// ─── AccordionContent — shows/hides via panel context ─────────────────────────\n@Component({\n selector: 'f-accordion-content',\n host: {\n class: 'block',\n role: 'region',\n '[id]': 'contentId()',\n '[attr.aria-labelledby]': 'headerId()',\n '[attr.aria-hidden]': '!panelCtx.open()',\n },\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 private readonly accordionCtx = inject(AccordionContext, { optional: true });\n\n readonly headerId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-header-${this.panelCtx.value()}`);\n readonly contentId = computed(() => `${this.accordionCtx?.id ?? 'f-accordion'}-content-${this.panelCtx.value()}`);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n PLATFORM_ID,\n viewChild,\n} from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\nexport type ChartType =\n | 'bar'\n | 'line'\n | 'scatter'\n | 'bubble'\n | 'pie'\n | 'doughnut'\n | 'polarArea'\n | 'radar';\n\nexport interface ChartDataSelectEvent {\n originalEvent: MouseEvent;\n element: unknown;\n dataset: unknown;\n}\n\n@Component({\n selector: 'f-chart',\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n },\n template: `\n <canvas\n #canvas\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n (click)=\"onCanvasClick($event)\"\n ></canvas>\n `,\n})\nexport class ChartComponent implements AfterViewInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly type = input<ChartType>('bar');\n readonly data = input<unknown>(null);\n readonly options = input<unknown>({});\n readonly plugins = input<unknown[]>([]);\n readonly width = input<string>('');\n readonly height = input<string>('300');\n readonly responsive = input(true, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly ariaLabelledBy = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onDataSelect = output<ChartDataSelectEvent>();\n\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\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 = this.mergeOptions(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 onCanvasClick(event: MouseEvent): void {\n if (!this.chart) return;\n const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n if (element?.[0] && dataset) {\n this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset });\n }\n }\n\n getCanvas(): HTMLCanvasElement | undefined {\n return this.canvasRef()?.nativeElement;\n }\n\n getBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n refresh(): void {\n this.chart?.update();\n }\n\n private mergeOptions(options: unknown): Chart['options'] {\n const opts = { ...((options as Record<string, unknown>) ?? {}) };\n opts['responsive'] = this.responsive();\n if (this.responsive() && (this.height() || this.width())) {\n opts['maintainAspectRatio'] = false;\n }\n return opts as Chart['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: this.mergeOptions(options),\n plugins: this.plugins() as never,\n });\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n input,\n model,\n numberAttribute,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\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, NgTemplateOutlet],\n host: { '[class]': 'hostClass()' },\n template: `\n @if (alwaysShow() || pageCount() > 1) {\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\" role=\"navigation\" [attr.aria-label]=\"ariaLabel()\">\n <div class=\"flex items-center gap-2\">\n @if (contentStartTpl()) {\n <ng-container [ngTemplateOutlet]=\"contentStartTpl()\" [ngTemplateOutletContext]=\"{ $implicit: state() }\" />\n }\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 [attr.aria-label]=\"rowsPerPageAriaLabel()\"\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 @if (showFirstLastIcon()) {\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)\" [attr.aria-label]=\"firstPageAriaLabel()\"\n ><ui-icon name=\"chevrons-left\" class=\"text-xs\"></ui-icon></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() === 0\" (click)=\"goTo(currentPage() - 1)\" [attr.aria-label]=\"prevPageAriaLabel()\"\n ><ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon></button>\n @if (showPageLinks()) {\n @for (p of visiblePages(); track p) {\n <button [class]=\"pageClass(p)\" (click)=\"goTo(p)\" [attr.aria-current]=\"p === currentPage() ? 'page' : null\" [attr.aria-label]=\"'Page ' + (p + 1)\">{{ formatNumber(p + 1) }}</button>\n }\n }\n @if (showJumpToPageInput()) {\n <input\n type=\"number\"\n class=\"w-14 h-8 text-xs text-center rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) text-(--f-text-color) focus:outline-none focus:border-primary focus:ring-focus\"\n [min]=\"1\" [max]=\"pageCount()\"\n [value]=\"currentPage() + 1\"\n [attr.aria-label]=\"jumpToPageAriaLabel()\"\n (change)=\"onJumpInput($any($event.target).value)\"\n />\n }\n @if (showJumpToPageDropdown()) {\n <div class=\"relative\">\n <select\n class=\"h-8 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 focus:outline-none focus:border-primary focus:ring-focus appearance-none\"\n [attr.aria-label]=\"jumpToPageAriaLabel()\"\n (change)=\"onJumpDropdown($any($event.target).value)\"\n >\n @for (p of pageOptions(); track p) {\n <option [value]=\"p\" [selected]=\"p === currentPage()\">{{ formatNumber(p + 1) }}</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 <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)\" [attr.aria-label]=\"nextPageAriaLabel()\"\n ><ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon></button>\n @if (showFirstLastIcon()) {\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)\" [attr.aria-label]=\"lastPageAriaLabel()\"\n ><ui-icon name=\"chevrons-right\" class=\"text-xs\"></ui-icon></button>\n }\n @if (contentEndTpl()) {\n <ng-container [ngTemplateOutlet]=\"contentEndTpl()\" [ngTemplateOutletContext]=\"{ $implicit: state() }\" />\n }\n </div>\n </div>\n }\n `,\n})\nexport class PaginatorComponent {\n readonly first = model<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 pageLinkSize = input(5, { transform: numberAttribute });\n readonly alwaysShow = input(true, { transform: booleanAttribute });\n readonly showFirstLastIcon = input(true, { transform: booleanAttribute });\n readonly showPageLinks = input(true, { transform: booleanAttribute });\n readonly showJumpToPageDropdown = input(false, { transform: booleanAttribute });\n readonly showJumpToPageInput = input(false, { transform: booleanAttribute });\n readonly locale = input<string>('');\n readonly styleClass = input<string>('');\n readonly ariaLabel = input<string>('Pagination');\n\n readonly onPageChange = output<PaginatorState>();\n\n readonly contentStartRef = contentChild<TemplateRef<{ $implicit: PaginatorState }>>('contentStart');\n readonly contentEndRef = contentChild<TemplateRef<{ $implicit: PaginatorState }>>('contentEnd');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<{ $implicit: PaginatorState }> | null {\n return (this.fTemplates().find(t => t.fTemplate() === name)?.templateRef as TemplateRef<{ $implicit: PaginatorState }> | undefined) ?? null;\n }\n\n readonly contentStartTpl = computed(() => this.contentStartRef() ?? this.namedTemplate('contentStart'));\n readonly contentEndTpl = computed(() => this.contentEndRef() ?? this.namedTemplate('contentEnd'));\n\n readonly hostClass = computed(() => `block ${this.styleClass()}`);\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 pageOptions = computed(() => Array.from({ length: this.pageCount() }, (_, i) => i));\n\n readonly state = computed<PaginatorState>(() => ({\n first: this.first(),\n rows: this.rows(),\n page: this.currentPage(),\n pageCount: this.pageCount(),\n }));\n\n formatNumber(n: number): string {\n const locale = this.locale();\n return locale ? n.toLocaleString(locale) : String(n);\n }\n\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, this.formatNumber(first))\n .replace(/\\{last\\}/g, this.formatNumber(last))\n .replace(/\\{totalRecords\\}/g, this.formatNumber(totalRecords))\n .replace(/\\{rows\\}/g, this.formatNumber(this.rows()))\n .replace(/\\{currentPage\\}/g, this.formatNumber(this.currentPage() + 1))\n .replace(/\\{totalPages\\}/g, this.formatNumber(this.pageCount()));\n });\n\n readonly visiblePages = computed(() => {\n const cur = this.currentPage();\n const total = this.pageCount();\n const size = Math.max(1, this.pageLinkSize());\n const half = Math.floor(size / 2);\n let start = Math.max(0, cur - half);\n const end = Math.min(total - 1, start + size - 1);\n start = Math.max(0, end - size + 1);\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n readonly rowsPerPageAriaLabel = computed(() => 'Rows per page');\n readonly firstPageAriaLabel = computed(() => 'Go to first page');\n readonly prevPageAriaLabel = computed(() => 'Go to previous page');\n readonly nextPageAriaLabel = computed(() => 'Go to next page');\n readonly lastPageAriaLabel = computed(() => 'Go to last page');\n readonly jumpToPageAriaLabel = computed(() => 'Jump to page');\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 clamped = Math.min(Math.max(0, page), this.pageCount() - 1);\n const rows = this.rows();\n this.first.set(clamped * rows);\n this.onPageChange.emit({ first: clamped * rows, rows, page: clamped, pageCount: this.pageCount() });\n }\n\n onJumpInput(value: string): void {\n const page = Number(value) - 1;\n if (!Number.isNaN(page)) this.goTo(page);\n }\n\n onJumpDropdown(value: string): void {\n const page = Number(value);\n if (!Number.isNaN(page)) this.goTo(page);\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.first.set(0);\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 DestroyRef,\n inject,\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';\nimport {\n ScrollerComponent,\n ScrollerLazyLoadEvent,\n} from '../scroller/scroller.component';\n\nexport type TableSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\nexport type TableSortMode = 'single' | 'multiple';\nexport type TableResponsiveLayout = 'scroll' | 'stack';\nexport type TableFilterMatchMode =\n | 'contains'\n | 'notContains'\n | 'startsWith'\n | 'endsWith'\n | 'equals'\n | 'notEquals'\n | 'lt'\n | 'lte'\n | 'gt'\n | 'gte'\n | 'in';\n\nexport interface TableSortMeta {\n field: string;\n order: number;\n}\n\nexport interface TableFilterMeta {\n value: unknown;\n matchMode: TableFilterMatchMode;\n}\n\nexport interface TableLazyLoadEvent {\n first: number;\n rows: number;\n sortField?: string;\n sortOrder?: number;\n multiSortMeta?: TableSortMeta[];\n filters?: Record<string, TableFilterMeta>;\n globalFilter?: string;\n}\n\nexport interface TableSortEvent {\n sortField: string | null;\n sortOrder: number;\n multiSortMeta?: TableSortMeta[];\n}\n\nexport interface TableRowSelectEvent {\n originalEvent?: Event;\n data: unknown;\n index?: number;\n}\n\nexport interface TableRowExpandEvent {\n originalEvent?: Event;\n data: unknown;\n}\n\nexport interface TableFilterEvent {\n filters: Record<string, TableFilterMeta>;\n}\n\nexport interface TableColResizeEvent {\n element: HTMLElement;\n delta: number;\n}\n\nexport interface TableRowContextMenuEvent {\n originalEvent: MouseEvent;\n data: unknown;\n}\n\n@Component({\n selector: 'f-table',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent, ScrollerComponent],\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 @media (max-width: 640px) {\n :host.f-table-stack ::ng-deep table,\n :host.f-table-stack ::ng-deep thead,\n :host.f-table-stack ::ng-deep tbody,\n :host.f-table-stack ::ng-deep tr {\n display: block;\n width: 100%;\n }\n :host.f-table-stack ::ng-deep thead {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n }\n :host.f-table-stack ::ng-deep tbody tr {\n margin-bottom: 0.75rem;\n border: 1px solid var(--f-content-border-color);\n border-radius: 0.5rem;\n padding: 0.375rem 0;\n }\n :host.f-table-stack ::ng-deep tbody tr td {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n border: none;\n }\n }\n `,\n ],\n host: {\n '[class.row-hover]': 'rowHover()',\n '[class.f-table-stack]': \"responsiveLayout() === 'stack'\",\n '[class]': 'hostClass()',\n },\n template: `\n <div\n class=\"w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\"\n >\n @if (captionTemplate() || globalFilterFields().length > 0) {\n <div\n class=\"p-2 border-b border-(--f-content-border-color) flex items-center justify-between gap-2 flex-wrap\"\n >\n @if (captionTemplate()) {\n <ng-container [ngTemplateOutlet]=\"captionTemplate()\" />\n }\n @if (globalFilterFields().length > 0) {\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) ml-auto\"\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 }\n </div>\n }\n @if (loading()) {\n @if (loadingBodyTemplate()) {\n <table role=\"table\" [attr.aria-busy]=\"true\" 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 <ng-container [ngTemplateOutlet]=\"loadingBodyTemplate()\" />\n </tbody>\n </table>\n } @else {\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 }\n } @else if (virtualScroll() && scrollable()) {\n <table role=\"table\" class=\"w-full text-sm text-left border-collapse\" [style]=\"virtualTableStyle()\">\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 </table>\n @if (virtualRows().length > 0) {\n <f-scroller\n [items]=\"virtualRows()\"\n [itemSize]=\"virtualScrollItemSize()\"\n [scrollHeight]=\"scrollHeight()\"\n [lazy]=\"lazy()\"\n [loading]=\"false\"\n (onLazyLoad)=\"onScrollerLazyLoad($event)\"\n >\n <ng-template let-row let-i=\"index\">\n <table role=\"table\" class=\"w-full text-sm text-left border-collapse\" [style]=\"virtualTableStyle()\">\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (bodyTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"bodyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: i }\"\n />\n }\n </tbody>\n </table>\n </ng-template>\n </f-scroller>\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <div class=\"text-center py-16 text-(--f-text-muted-color)\">No records found</div>\n }\n }\n } @else {\n <div\n [class]=\"scrollable() ? 'overflow-auto' : 'overflow-x-auto'\"\n [style]=\"scrollContainerStyle()\"\n >\n <table\n role=\"table\"\n class=\"w-full text-sm text-left border-collapse\"\n [style]=\"normalTableStyle()\"\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 @if (rowExpansionTemplate() && isRowExpanded(row)) {\n <ng-container\n [ngTemplateOutlet]=\"rowExpansionTemplate()\"\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 @if (footerTemplate()) {\n <tfoot class=\"border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\" />\n </tfoot>\n }\n </table>\n </div>\n }\n @if (paginator() && effectiveTotalRecords() > 0) {\n <div class=\"border-t border-(--f-content-border-color) px-4 flex items-center gap-2\">\n @if (paginatorLeftTemplate()) {\n <ng-container [ngTemplateOutlet]=\"paginatorLeftTemplate()\" />\n }\n <f-paginator\n class=\"flex-1\"\n [first]=\"currentFirst()\"\n [rows]=\"currentRows()\"\n [totalRecords]=\"effectiveTotalRecords()\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n (onPageChange)=\"handlePageChange($event)\"\n />\n @if (paginatorRightTemplate()) {\n <ng-container [ngTemplateOutlet]=\"paginatorRightTemplate()\" />\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 scrollHeight = input<string>('28rem');\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 hostClass = computed(() => `block w-full ${this.styleClass()}`);\n readonly globalFilterFields = input<string[]>([]);\n readonly filterDelay = input<number>(300);\n readonly responsiveLayout = input<TableResponsiveLayout>('scroll');\n\n readonly selectionMode = input<TableSelectionMode>(null);\n readonly sortMode = input<TableSortMode>('single');\n readonly rowExpandMode = input<'multiple' | 'single'>('multiple');\n readonly resizableColumns = input(false, { transform: booleanAttribute });\n readonly rowStyleClass = input<\n ((row: unknown, index: number) => string) | null\n >(null);\n\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(46);\n\n readonly sortField = model<string | null>(null);\n readonly sortOrder = model<number>(1);\n readonly multiSortMeta = model<TableSortMeta[]>([]);\n readonly filters = model<Record<string, TableFilterMeta>>({});\n readonly selection = model<unknown>(null);\n readonly expandedRowKeys = model<Record<string, boolean>>({});\n readonly contextMenuSelection = model<unknown>(null);\n\n readonly onLazyLoad = output<TableLazyLoadEvent>();\n readonly onSort = output<TableSortEvent>();\n readonly onFilter = output<TableFilterEvent>();\n readonly onRowSelect = output<TableRowSelectEvent>();\n readonly onRowUnselect = output<TableRowSelectEvent>();\n readonly onSelectAllChange = output<{ checked: boolean }>();\n readonly onRowExpand = output<TableRowExpandEvent>();\n readonly onRowCollapse = output<TableRowExpandEvent>();\n readonly onColResize = output<TableColResizeEvent>();\n readonly onRowContextMenu = output<TableRowContextMenuEvent>();\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n readonly captionTemplate = contentChild<TemplateRef<unknown>>('caption');\n readonly footerTemplate = contentChild<TemplateRef<unknown>>('footer');\n readonly loadingBodyTemplate =\n contentChild<TemplateRef<unknown>>('loadingbody');\n readonly paginatorLeftTemplate =\n contentChild<TemplateRef<unknown>>('paginatorleft');\n readonly paginatorRightTemplate =\n contentChild<TemplateRef<unknown>>('paginatorright');\n readonly rowExpansionTemplate =\n contentChild<TemplateRef<unknown>>('rowexpansion');\n\n private readonly destroyRef = inject(DestroyRef);\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 private filterInputTimeout: ReturnType<typeof setTimeout> | undefined;\n private resizeCleanup: (() => void) | null = null;\n\n readonly scrollContainerStyle = computed<Record<string, string> | null>(\n () => (this.scrollable() ? { 'max-height': this.scrollHeight() } : null),\n );\n\n readonly normalTableStyle = computed<Record<string, string> | null>(() => {\n const base = this.tableStyle() ?? {};\n return this.resizableColumns()\n ? { 'table-layout': 'fixed', ...base }\n : Object.keys(base).length\n ? base\n : null;\n });\n\n readonly virtualTableStyle = computed<Record<string, string>>(() => ({\n 'table-layout': 'fixed',\n width: '100%',\n ...(this.tableStyle() ?? {}),\n }));\n\n readonly columnFilteredValue = computed(() => {\n const rows = this.value() ?? [];\n if (this.lazy()) return rows;\n const filters = this.filters();\n const entries = Object.entries(filters).filter(\n ([, f]) => f.value !== null && f.value !== undefined && f.value !== '',\n );\n if (!entries.length) return rows;\n return rows.filter((row) =>\n entries.every(([field, f]) =>\n this.matchValue(\n (row as Record<string, unknown>)?.[field],\n f.value,\n f.matchMode,\n ),\n ),\n );\n });\n\n readonly filteredValue = computed(() => {\n const rows = this.columnFilteredValue();\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 if (this.lazy()) return rows;\n if (this.sortMode() === 'multiple') {\n const metas = this.multiSortMeta();\n if (!metas.length) return rows;\n return [...rows].sort((a, b) => {\n for (const meta of metas) {\n const result =\n this.compareValues(\n (a as Record<string, unknown>)?.[meta.field],\n (b as Record<string, unknown>)?.[meta.field],\n ) * meta.order;\n if (result !== 0) return result;\n }\n return 0;\n });\n }\n const field = this.sortField();\n if (!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 readonly virtualRows = computed(() => this.sortedValue());\n\n readonly allSelected = computed(() => {\n const rows = this.sortedValue();\n if (!rows.length) return false;\n const sel = this.selection();\n const selArr = Array.isArray(sel) ? sel : [];\n return rows.every((row) => selArr.some((s) => this.rowsEqual(s, row)));\n });\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.filterInputTimeout);\n this.resizeCleanup?.();\n });\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 clearTimeout(this.filterInputTimeout);\n this.filterInputTimeout = setTimeout(() => {\n this._currentFirst.set(0);\n if (this.lazy()) {\n this.onLazyLoad.emit(\n this.buildLazyEvent(0, this.currentRows()),\n );\n }\n }, this.filterDelay());\n }\n\n filterGlobal(value: string): void {\n this.onFilterInput(value);\n }\n\n filter(\n value: unknown,\n field: string,\n matchMode: TableFilterMatchMode = 'contains',\n ): void {\n clearTimeout(this.filterInputTimeout);\n this.filterInputTimeout = setTimeout(\n () => this.applyFilter(value, field, matchMode),\n this.filterDelay(),\n );\n }\n\n clearFilter(field: string): void {\n const next = { ...this.filters() };\n delete next[field];\n this.filters.set(next);\n }\n\n clear(): void {\n this.sortField.set(null);\n this.sortOrder.set(1);\n this.multiSortMeta.set([]);\n this.filters.set({});\n this._filterText.set('');\n this._currentFirst.set(this.first());\n this.selection.set(\n this.selectionMode() === 'multiple' || this.selectionMode() === 'checkbox'\n ? []\n : null,\n );\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 onScrollerLazyLoad(event: ScrollerLazyLoadEvent): void {\n if (!this.lazy()) return;\n this.onLazyLoad.emit(\n this.buildLazyEvent(event.first, event.last - event.first),\n );\n }\n\n sort(field: string, event?: MouseEvent): void {\n if (!field) return;\n\n if (this.sortMode() === 'multiple') {\n const additive = !!(event && (event.metaKey || event.ctrlKey));\n const current = [...this.multiSortMeta()];\n const idx = current.findIndex((m) => m.field === field);\n\n if (!additive) {\n if (current.length === 1 && idx === 0 && current[0].order === 1) {\n current[0] = { field, order: -1 };\n } else if (\n current.length === 1 &&\n idx === 0 &&\n current[0].order === -1\n ) {\n current.length = 0;\n } else {\n current.length = 0;\n current.push({ field, order: 1 });\n }\n } else if (idx > -1) {\n if (current[idx].order === 1) current[idx] = { field, order: -1 };\n else current.splice(idx, 1);\n } else {\n current.push({ field, order: 1 });\n }\n\n this.multiSortMeta.set(current);\n this.onSort.emit({\n sortField: field,\n sortOrder: current.find((m) => m.field === field)?.order ?? 0,\n multiSortMeta: current,\n });\n } else {\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\n if (this.lazy()) {\n this.onLazyLoad.emit(\n this.buildLazyEvent(this.currentFirst(), this.currentRows()),\n );\n }\n }\n\n isSelected(row: unknown): boolean {\n const sel = this.selection();\n if (sel == null) return false;\n if (Array.isArray(sel)) return sel.some((r) => this.rowsEqual(r, row));\n return this.rowsEqual(sel, row);\n }\n\n toggleRowSelection(row: unknown, event?: Event): void {\n const mode = this.selectionMode();\n if (!mode) return;\n\n if (mode === 'single') {\n const already = this.isSelected(row);\n this.selection.set(already ? null : row);\n if (already) this.onRowUnselect.emit({ originalEvent: event, data: row });\n else this.onRowSelect.emit({ originalEvent: event, data: row });\n return;\n }\n\n const current = Array.isArray(this.selection())\n ? [...(this.selection() as unknown[])]\n : [];\n const idx = current.findIndex((r) => this.rowsEqual(r, row));\n if (idx > -1) {\n current.splice(idx, 1);\n this.selection.set(current);\n this.onRowUnselect.emit({ originalEvent: event, data: row });\n } else {\n current.push(row);\n this.selection.set(current);\n this.onRowSelect.emit({ originalEvent: event, data: row });\n }\n }\n\n toggleAll(event?: Event): void {\n const checked = !this.allSelected();\n this.selection.set(checked ? [...this.sortedValue()] : []);\n this.onSelectAllChange.emit({ checked });\n void event;\n }\n\n isRowExpanded(row: unknown): boolean {\n return !!this.expandedRowKeys()[this.rowKey(row)];\n }\n\n toggleRow(row: unknown): void {\n const key = this.rowKey(row);\n const next = { ...this.expandedRowKeys() };\n if (next[key]) {\n delete next[key];\n this.onRowCollapse.emit({ data: row });\n } else {\n if (this.rowExpandMode() === 'single') {\n for (const k of Object.keys(next)) delete next[k];\n }\n next[key] = true;\n this.onRowExpand.emit({ data: row });\n }\n this.expandedRowKeys.set(next);\n }\n\n getRowStyleClass(row: unknown, index: number): string {\n const fn = this.rowStyleClass();\n return fn ? fn(row, index) : '';\n }\n\n onRowContextMenuHandler(event: MouseEvent, row: unknown): void {\n event.preventDefault();\n this.contextMenuSelection.set(row);\n this.onRowContextMenu.emit({ originalEvent: event, data: row });\n }\n\n startResize(event: MouseEvent): void {\n if (!this.resizableColumns()) return;\n const handle = event.currentTarget as HTMLElement;\n const th = handle.closest('th');\n if (!th) return;\n\n event.preventDefault();\n const startX = event.pageX;\n const startWidth = th.offsetWidth;\n\n const onMove = (e: MouseEvent) => {\n th.style.width = `${Math.max(40, startWidth + (e.pageX - startX))}px`;\n };\n const onUp = (e: MouseEvent) => {\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n this.resizeCleanup = null;\n this.onColResize.emit({ element: th, delta: e.pageX - startX });\n };\n\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n this.resizeCleanup = () => {\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n }\n\n private applyFilter(\n value: unknown,\n field: string,\n matchMode: TableFilterMatchMode,\n ): void {\n const next = { ...this.filters() };\n if (value === '' || value == null) delete next[field];\n else next[field] = { value, matchMode };\n this.filters.set(next);\n this._currentFirst.set(0);\n this.onFilter.emit({ filters: next });\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(0, this.currentRows()));\n }\n }\n\n private rowKey(row: unknown): string {\n const key = this.dataKey();\n const value = (row as Record<string, unknown>)?.[key];\n return value != null ? String(value) : '';\n }\n\n private rowsEqual(a: unknown, b: unknown): boolean {\n const key = this.dataKey();\n const av = (a as Record<string, unknown>)?.[key];\n const bv = (b as Record<string, unknown>)?.[key];\n return av !== undefined && av === bv;\n }\n\n private buildLazyEvent(first: number, rows: number): TableLazyLoadEvent {\n const field = this.sortField();\n const multi = this.multiSortMeta();\n const filters = this.filters();\n return {\n first,\n rows,\n ...(field ? { sortField: field, sortOrder: this.sortOrder() } : {}),\n ...(this.sortMode() === 'multiple' && multi.length\n ? { multiSortMeta: multi }\n : {}),\n ...(Object.keys(filters).length ? { filters } : {}),\n ...(this.filterText() ? { globalFilter: this.filterText() } : {}),\n };\n }\n\n private matchValue(\n value: unknown,\n filterValue: unknown,\n matchMode: TableFilterMatchMode,\n ): boolean {\n if (filterValue == null || filterValue === '') return true;\n if (matchMode === 'in' && Array.isArray(filterValue)) {\n return filterValue.includes(value);\n }\n const a = value == null ? '' : value;\n switch (matchMode) {\n case 'equals':\n return this.compareValues(a, filterValue) === 0;\n case 'notEquals':\n return this.compareValues(a, filterValue) !== 0;\n case 'lt':\n return this.compareValues(a, filterValue) < 0;\n case 'lte':\n return this.compareValues(a, filterValue) <= 0;\n case 'gt':\n return this.compareValues(a, filterValue) > 0;\n case 'gte':\n return this.compareValues(a, filterValue) >= 0;\n case 'startsWith':\n return String(a)\n .toLowerCase()\n .startsWith(String(filterValue).toLowerCase());\n case 'endsWith':\n return String(a)\n .toLowerCase()\n .endsWith(String(filterValue).toLowerCase());\n case 'notContains':\n return !String(a)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n case 'contains':\n default:\n return String(a)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\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 role: 'columnheader',\n tabindex: '0',\n '[attr.aria-sort]': 'ariaSort()',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onKeydown($event)',\n '(keydown.space)': 'onKeydown($event)',\n },\n})\nexport class SortableColumnDirective {\n readonly fSortableColumn = input<string>('');\n private readonly table = inject(TableComponent, { optional: true });\n\n readonly ariaSort = computed<'ascending' | 'descending' | 'none'>(() => {\n const field = this.fSortableColumn();\n if (!field || !this.table) return 'none';\n if (this.table.sortMode() === 'multiple') {\n const meta = this.table.multiSortMeta().find((m) => m.field === field);\n return meta ? (meta.order === 1 ? 'ascending' : 'descending') : 'none';\n }\n if (this.table.sortField() !== field) return 'none';\n return this.table.sortOrder() === 1 ? 'ascending' : 'descending';\n });\n\n onClick(event: MouseEvent): void {\n const field = this.fSortableColumn();\n if (field) this.table?.sort(field, event);\n }\n\n onKeydown(event: Event): void {\n event.preventDefault();\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 items-center gap-0.5 ml-1\">\n <span class=\"inline-flex flex-col 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 @if (priority() !== null) {\n <sup class=\"text-[9px] font-semibold text-primary\">{{ priority() }}</sup>\n }\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 if (!this.table) return 0;\n if (this.table.sortMode() === 'multiple') {\n return (\n this.table.multiSortMeta().find((m) => m.field === this.field())\n ?.order ?? 0\n );\n }\n return this.table.sortField() === this.field() ? this.table.sortOrder() : 0;\n });\n\n readonly priority = computed<number | null>(() => {\n if (!this.table || this.table.sortMode() !== 'multiple') return null;\n const meta = this.table.multiSortMeta();\n if (meta.length < 2) return null;\n const idx = meta.findIndex((m) => m.field === this.field());\n return idx > -1 ? idx + 1 : null;\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 } else if (enterTo) {\n enterTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\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 === '@self') return el;\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 numberAttribute,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\n\nlet nextTooltipId = 0;\n\n@Directive({\n selector: '[fTooltip]',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'scheduleHide()',\n '(click)': 'onClick()',\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 positionStyle = input<'fixed' | 'absolute'>('fixed');\n readonly tooltipStyleClass = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly tooltipEvent = input<'hover' | 'focus' | 'both'>('hover');\n readonly showDelay = input(0, { transform: numberAttribute });\n readonly hideDelay = input(0, { transform: numberAttribute });\n readonly life = input(0, { transform: numberAttribute });\n readonly autoHide = input(true, { transform: booleanAttribute });\n readonly positionTop = input(0, { transform: numberAttribute });\n readonly positionLeft = input(0, { transform: numberAttribute });\n // `escape` is accepted for PrimeNG API parity but content is always\n // rendered as text — raw HTML injection is intentionally unsupported.\n readonly escape = input(true, { transform: booleanAttribute });\n\n private readonly id = `f-tooltip-${nextTooltipId++}`;\n private tip: HTMLElement | null = null;\n private tipLeaveListener: (() => void) | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n private lifeTimer: 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 onMouseEnter(): void {\n if (this.tooltipEvent() === 'focus') return;\n this.scheduleShow();\n }\n\n onMouseLeave(event: MouseEvent): void {\n if (this.tooltipEvent() === 'focus') return;\n if (!this.autoHide() && this.tip) {\n const related = event.relatedTarget as Node | null;\n if (related && this.tip.contains(related)) return;\n }\n this.scheduleHide();\n }\n\n onClick(): void {\n if (this.tooltipEvent() === 'focus') return;\n this.hide();\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.setAttribute(this.tip, 'id', this.id);\n this.renderer.setAttribute(this.tip, 'role', 'tooltip');\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', this.positionStyle());\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', this.autoHide() ? 'none' : 'auto');\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\n if (!this.autoHide()) {\n this.tipLeaveListener = this.renderer.listen(this.tip, 'mouseleave', () => this.scheduleHide());\n }\n\n this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', this.id);\n this.position();\n window.addEventListener('scroll', this.onScrollOrResize, true);\n window.addEventListener('resize', this.onScrollOrResize);\n\n const life = this.life();\n if (life > 0) {\n this.lifeTimer = setTimeout(() => this.hide(), life);\n }\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.lifeTimer) { clearTimeout(this.lifeTimer); this.lifeTimer = null; }\n if (this.tip && isPlatformBrowser(this.platformId)) {\n if (this.tipLeaveListener) { this.tipLeaveListener(); this.tipLeaveListener = null; }\n this.renderer.removeChild(document.body, this.tip);\n this.tip = null;\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\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 tw = this.tip.offsetWidth;\n const th = this.tip.offsetHeight;\n const gap = 8;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const compute = (pos: 'top' | 'bottom' | 'left' | 'right') => {\n switch (pos) {\n case 'top': return { top: rect.top - th - gap, left: rect.left + rect.width / 2 - tw / 2 };\n case 'bottom': return { top: rect.bottom + gap, left: rect.left + rect.width / 2 - tw / 2 };\n case 'left': return { top: rect.top + rect.height / 2 - th / 2, left: rect.left - tw - gap };\n case 'right': return { top: rect.top + rect.height / 2 - th / 2, left: rect.right + gap };\n }\n };\n const opposite: Record<'top' | 'bottom' | 'left' | 'right', 'top' | 'bottom' | 'left' | 'right'> = {\n top: 'bottom', bottom: 'top', left: 'right', right: 'left',\n };\n const overflows = (c: { top: number; left: number }): boolean =>\n c.top < 0 || c.left < 0 || c.top + th > vh || c.left + tw > vw;\n\n const pos = this.tooltipPosition();\n let coords = compute(pos);\n if (overflows(coords)) {\n const flipped = compute(opposite[pos]);\n if (!overflows(flipped)) coords = flipped;\n }\n\n let top = coords.top;\n let left = coords.left;\n if (this.positionStyle() === 'absolute') {\n top += window.scrollY;\n left += window.scrollX;\n }\n top += this.positionTop();\n left += this.positionLeft();\n\n left = Math.max(8, Math.min(left, vw - tw - 8));\n top = Math.max(8, Math.min(top, vh - 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 contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport interface AutoCompleteCompleteEvent {\n originalEvent: Event;\n query: string;\n}\n\nexport interface AutoCompleteSelectEvent {\n originalEvent: Event;\n value: unknown;\n}\n\nexport interface AutoCompleteLazyLoadEvent {\n originalEvent: Event;\n first: number;\n last: number;\n}\n\ninterface AutoCompleteRow {\n type: 'group' | 'item';\n item?: unknown;\n groupItem?: unknown;\n groupLabel?: string;\n flatIndex?: number;\n}\n\nlet nextAutoCompleteId = 0;\n\n@Component({\n selector: 'f-autocomplete',\n imports: [UiIconComponent, FormsModule, NgTemplateOutlet, ScrollerComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutoCompleteComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\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 class=\"relative\">\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 [class.pr-7]=\"showClear() || loading()\"\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 @if (selectedItemTpl()) {\n <ng-container [ngTemplateOutlet]=\"selectedItemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: chip }\" />\n } @else {\n {{ getLabel(chip) }}\n }\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 role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null\"\n />\n </div>\n <span class=\"absolute right-2 top-0 h-full flex items-center gap-1\">\n @if (loading()) {\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color)\"></ui-icon>\n } @else if (showClear() && selectedItems().length && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer\" (click)=\"clear($event)\"></ui-icon>\n }\n </span>\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 role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeIndex() >= 0 ? listboxId + '-' + activeIndex() : null\"\n />\n <span class=\"absolute right-0 top-0 h-full flex items-center gap-1 pr-3\">\n @if (loading()) {\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color)\"></ui-icon>\n } @else {\n @if (showClear() && query && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) cursor-pointer\" (click)=\"clear($event)\"></ui-icon>\n }\n @if (dropdown()) {\n <button type=\"button\" class=\"inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color)\" (click)=\"onDropdownButtonClick($event)\">\n <ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon>\n </button>\n }\n }\n </span>\n </div>\n }\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 (headerTpl()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n\n @if (loading()) {\n <div class=\"px-3 py-6 flex flex-col items-center gap-2\">\n @if (loaderTpl()) {\n <ng-container [ngTemplateOutlet]=\"loaderTpl()\" />\n } @else {\n <ui-icon [name]=\"loadingIcon()\" [spin]=\"true\" class=\"text-lg text-(--f-text-muted-color)\"></ui-icon>\n }\n </div>\n } @else if (flatSuggestions().length === 0) {\n <div class=\"px-3 py-6 flex flex-col items-center gap-2 text-(--f-text-muted-color)\">\n @if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\n <ui-icon name=\"inbox\" class=\"text-xl\"></ui-icon>\n <span class=\"text-sm\">{{ emptyMessage() }}</span>\n }\n </div>\n } @else if (virtualScroll() && !group()) {\n <f-scroller [items]=\"flatSuggestions()\" [itemSize]=\"virtualScrollItemSize()\" [scrollHeight]=\"scrollHeight()\">\n <ng-template let-item let-i=\"index\">\n <div\n [id]=\"listboxId + '-' + i\"\n role=\"option\"\n [attr.aria-selected]=\"i === activeIndex()\"\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 @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n } @else {\n <span class=\"flex-1 truncate\">{{ getLabel(item) }}</span>\n }\n </div>\n </ng-template>\n </f-scroller>\n } @else {\n <ul [id]=\"listboxId\" class=\"overflow-auto py-1\" [style.max-height]=\"scrollHeight()\" role=\"listbox\" [attr.aria-multiselectable]=\"multiple()\" (scroll)=\"onListScroll($event)\">\n @for (row of rows(); track $index) {\n @if (row.type === 'group') {\n <li class=\"px-3 py-1.5 text-xs font-semibold text-(--f-text-muted-color) uppercase tracking-wide\">\n @if (groupTpl()) {\n <ng-container [ngTemplateOutlet]=\"groupTpl()\" [ngTemplateOutletContext]=\"{ $implicit: row.groupItem }\" />\n } @else {\n {{ row.groupLabel }}\n }\n </li>\n } @else {\n <li\n [id]=\"listboxId + '-' + row.flatIndex\"\n role=\"option\"\n [attr.aria-selected]=\"row.flatIndex === activeIndex()\"\n class=\"px-3 py-2 text-sm cursor-pointer flex items-center gap-2 transition-colors\"\n [class]=\"row.flatIndex === activeIndex() ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (mousedown)=\"selectItem($event, row.item)\"\n >\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: row.item, index: row.flatIndex }\" />\n } @else {\n <span class=\"flex-1 truncate\">{{ getLabel(row.item) }}</span>\n }\n </li>\n }\n }\n </ul>\n }\n\n @if (footerTpl()) {\n <div class=\"p-2 border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class AutoCompleteComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n private readonly _id = `f-autocomplete-${nextAutoCompleteId++}`;\n readonly listboxId = `${this._id}-list`;\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 readonly showClear = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingIcon = input<string>('loader-circle');\n readonly emptyMessage = input<string>('No results found');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input(38, { transform: numberAttribute });\n readonly scrollHeight = input<string>('14rem');\n readonly lazy = input(false, { transform: booleanAttribute });\n\n readonly group = input(false, { transform: booleanAttribute });\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n\n readonly hostClass = computed(() => `relative block w-full ${this.styleClass()}`);\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 readonly onLazyLoad = output<AutoCompleteLazyLoadEvent>();\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 itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly groupRef = contentChild<TemplateRef<unknown>>('group');\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly selectedItemRef = contentChild<TemplateRef<unknown>>('selectedItem');\n readonly loaderRef = contentChild<TemplateRef<unknown>>('loader');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.itemRef() ?? this.fTemplates().find(t => t.fTemplate() === 'item')?.templateRef ?? null,\n );\n readonly groupTpl = computed<TemplateRef<unknown> | null>(() =>\n this.groupRef() ?? this.fTemplates().find(t => t.fTemplate() === 'group')?.templateRef ?? null,\n );\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() =>\n this.headerRef() ?? this.fTemplates().find(t => t.fTemplate() === 'header')?.templateRef ?? null,\n );\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() =>\n this.footerRef() ?? this.fTemplates().find(t => t.fTemplate() === 'footer')?.templateRef ?? null,\n );\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() =>\n this.emptyRef() ?? this.fTemplates().find(t => t.fTemplate() === 'empty')?.templateRef ?? null,\n );\n readonly selectedItemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.selectedItemRef() ?? this.fTemplates().find(t => t.fTemplate() === 'selectedItem')?.templateRef ?? null,\n );\n readonly loaderTpl = computed<TemplateRef<unknown> | null>(() =>\n this.loaderRef() ?? this.fTemplates().find(t => t.fTemplate() === 'loader')?.templateRef ?? null,\n );\n\n readonly filteredSuggestions = computed(() => this.suggestions() as unknown[]);\n\n readonly flatSuggestions = computed<unknown[]>(() => {\n const list = this.filteredSuggestions();\n if (!this.group()) return list;\n const groups = list as Record<string, unknown>[];\n return groups.flatMap(g => ((g[this.optionGroupChildren()] as unknown[]) ?? []));\n });\n\n readonly rows = computed<AutoCompleteRow[]>(() => {\n if (!this.group()) {\n return this.filteredSuggestions().map((item, i) => ({ type: 'item' as const, item, flatIndex: i }));\n }\n const groups = this.filteredSuggestions() as Record<string, unknown>[];\n const rows: AutoCompleteRow[] = [];\n let flatIndex = 0;\n for (const g of groups) {\n rows.push({ type: 'group', groupItem: g, groupLabel: String(g[this.optionGroupLabel()] ?? '') });\n const children = (g[this.optionGroupChildren()] as unknown[]) ?? [];\n for (const item of children) {\n rows.push({ type: 'item', item, flatIndex: flatIndex++ });\n }\n }\n return rows;\n });\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.flatSuggestions().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.flatSuggestions().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.flatSuggestions()[idx]);\n } else if (e.key === 'Escape') {\n this._open.set(false);\n } else if (e.key === 'Backspace' && this.multiple() && this.query === '' && this.selectedItems().length) {\n this.removeChip(this.selectedItems().length - 1, e);\n }\n }\n\n onListScroll(e: Event): void {\n if (!this.lazy()) return;\n const el = e.target as HTMLElement;\n if (el.scrollHeight - el.scrollTop - el.clientHeight < 40) {\n this.onLazyLoad.emit({ originalEvent: e, first: 0, last: this.flatSuggestions().length });\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 clear(e: Event): void {\n e.stopPropagation();\n if (this.multiple()) {\n this._selectedItems.set([]);\n this._onChange([]);\n } else {\n this.query = '';\n this._value.set(null);\n this._onChange(null);\n }\n this.onClear.emit();\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 computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { PopoverComponent } from '../popover/popover.component';\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorPickerChangeEvent = { value: string };\nexport type ColorPickerAppendTo = 'self' | 'body';\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, PopoverComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ColorPickerComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\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 focus-visible:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:cursor-not-allowed\"\n [style.background-color]=\"value()\"\n [disabled]=\"disabled()\"\n (click)=\"togglePanel($event)\"\n (keydown)=\"onTriggerKeydown($event)\"\n [attr.aria-label]=\"ariaLabel()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n ></button>\n\n @if (appendTo() === 'body') {\n <f-popover #pop [dismissable]=\"true\">\n <div class=\"p-3 w-56 space-y-3\" (keydown.escape)=\"closePanel()\">\n <ng-container [ngTemplateOutlet]=\"pickerPanel\" />\n </div>\n </f-popover>\n } @else if (open()) {\n <div\n 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 (keydown.escape)=\"closePanel()\"\n >\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 focus-visible:outline-none focus-visible:ring-focus\"\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 [attr.aria-label]=\"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 [attr.aria-label]=\"'Hex value'\"\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 [attr.aria-label]=\"'Native color picker'\"\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.appendTo() === 'self' && 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 readonly appendTo = input<ColorPickerAppendTo>('self');\n readonly ariaLabel = input<string>('Pick color');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onChange = output<ColorPickerChangeEvent>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n private readonly _open = signal(false);\n private readonly popoverRef = viewChild<PopoverComponent>('pop');\n\n readonly open = computed(() =>\n this.appendTo() === 'body' ? (this.popoverRef()?.visible() ?? false) : this._open(),\n );\n\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 readonly hostClass = computed(() => `relative inline-block ${this.styleClass()}`);\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _wasOpen = false;\n\n constructor() {\n effect(() => {\n const nowOpen = this.open();\n if (nowOpen !== this._wasOpen) {\n this._wasOpen = nowOpen;\n if (nowOpen) this.onShow.emit();\n else this.onHide.emit();\n }\n });\n }\n\n togglePanel(event: Event): void {\n if (this.disabled()) return;\n if (this.appendTo() === 'body') {\n this.popoverRef()?.toggle(event);\n } else {\n this._open.update(v => !v);\n }\n }\n\n closePanel(): void {\n if (this.appendTo() === 'body') this.popoverRef()?.hide();\n else this._open.set(false);\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') this.closePanel();\n }\n\n selectPreset(color: string): void {\n this._setValue(color);\n this.closePanel();\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 contentChild,\n contentChildren,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport type FListboxFilterMatchMode = 'contains' | 'startsWith' | 'endsWith' | 'equals' | 'notEquals';\n\nexport interface ListboxChangeEvent {\n originalEvent: Event;\n value: unknown;\n}\n\ntype FListboxFlatItem =\n | { kind: 'option'; option: unknown }\n | { kind: 'group'; label: string };\n\n@Component({\n selector: 'f-listbox',\n imports: [UiIconComponent, NgTemplateOutlet, ScrollerComponent],\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 (headerTpl()) {\n <div class=\"border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n @if (filterTpl()) {\n <ng-container [ngTemplateOutlet]=\"filterTpl()\" [ngTemplateOutletContext]=\"{ $implicit: filterText(), filter: setFilterFn }\" />\n } @else {\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 }\n </div>\n }\n @if (multiple() && selectAll() && flatItems().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)=\"toggleSelectAll($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\n <div\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n class=\"overflow-auto\"\n [style.max-height]=\"listStyle()?.['max-height'] || '12rem'\"\n >\n @if (virtualScroll()) {\n <f-scroller [items]=\"flatItems()\" [itemSize]=\"virtualScrollItemSize()\" [scrollHeight]=\"listStyle()?.['max-height'] || '12rem'\">\n <ng-template let-item let-i=\"index\">\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n </ng-template>\n </f-scroller>\n } @else {\n <div class=\"divide-y divide-(--f-content-border-color)\">\n @for (item of flatItems(); track $index) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, index: $index }\" />\n } @empty {\n @if (filterText() && emptyFilterTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyFilterTpl()\" />\n } @else if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\n <div 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\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n\n @if (footerTpl()) {\n <div class=\"border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n\n <ng-template #rowTpl let-item let-i=\"index\">\n @if (item.kind === 'group') {\n <div class=\"px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-(--f-text-muted-color) bg-(--f-content-hover-background)\">\n @if (groupTpl()) {\n <ng-container [ngTemplateOutlet]=\"groupTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.label }\" />\n } @else {\n {{ item.label }}\n }\n </div>\n } @else {\n <div\n [id]=\"listId() + '-' + optionIndexOf(item.option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item.option)\"\n [attr.aria-disabled]=\"isOptionDisabled(item.option) ? true : null\"\n class=\"flex items-center gap-3 px-3 py-2.5 cursor-pointer transition-colors text-sm select-none\"\n [class]=\"optionClass(item.option)\"\n (click)=\"onOptionClick($event, item.option)\"\n (mouseenter)=\"onOptionMouseEnter(item.option)\"\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(item.option) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\"\n >\n @if (isSelected(item.option)) {\n <ui-icon name=\"check\" class=\"text-[10px] text-primary-contrast\"></ui-icon>\n }\n </span>\n } @else {\n @if (isSelected(item.option)) {\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\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item.option }\" />\n } @else {\n {{ getOptionLabel(item.option) }}\n }\n </span>\n </div>\n }\n </ng-template>\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 optionDisabled = input<string>('');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly filterBy = input<string>('');\n readonly filterMatchMode = input<FListboxFilterMatchMode>('contains');\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 readonly selectAll = input(false, { transform: booleanAttribute });\n readonly group = input(false, { transform: booleanAttribute });\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(40);\n readonly inputId = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly onChange = output<ListboxChangeEvent>();\n readonly onSelectAllChange = output<boolean>();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _value = signal<unknown>(null);\n private readonly _focusedOptionIndex = signal(-1);\n readonly focusedOptionIndex = this._focusedOptionIndex.asReadonly();\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly groupRef = contentChild<TemplateRef<unknown>>('group');\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly emptyFilterRef = contentChild<TemplateRef<unknown>>('emptyfilter');\n readonly filterRef = contentChild<TemplateRef<unknown>>('filter');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.itemRef() ?? this.namedTemplate('item'));\n readonly groupTpl = computed<TemplateRef<unknown> | null>(() => this.groupRef() ?? this.namedTemplate('group'));\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() => this.footerRef() ?? this.namedTemplate('footer'));\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() => this.emptyRef() ?? this.namedTemplate('empty'));\n readonly emptyFilterTpl = computed<TemplateRef<unknown> | null>(() => this.emptyFilterRef() ?? this.namedTemplate('emptyfilter'));\n readonly filterTpl = computed<TemplateRef<unknown> | null>(() => this.filterRef() ?? this.namedTemplate('filter'));\n\n readonly listId = computed(() => `${this.inputId() || 'f-listbox'}-list`);\n readonly setFilterFn = (v: string) => this._filterText.set(v);\n\n readonly filterFieldList = computed(() => {\n const by = this.filterBy();\n return by ? by.split(',').map(f => f.trim()).filter(Boolean) : [this.optionLabel()];\n });\n\n private matchesFilter(raw: unknown, query: string): boolean {\n const s = String(raw ?? '').toLowerCase();\n const q = query.toLowerCase();\n switch (this.filterMatchMode()) {\n case 'startsWith': return s.startsWith(q);\n case 'endsWith': return s.endsWith(q);\n case 'equals': return s === q;\n case 'notEquals': return s !== q;\n case 'contains':\n default: return s.includes(q);\n }\n }\n\n private optionMatchesQuery(opt: unknown, query: string): boolean {\n if (!query) return true;\n if (opt === null || typeof opt !== 'object') return this.matchesFilter(opt, query);\n const rec = opt as Record<string, unknown>;\n return this.filterFieldList().some(f => this.matchesFilter(rec[f], query));\n }\n\n readonly filteredOptions = computed(() => {\n const q = this.filterText();\n const opts = this.options();\n if (!q) return opts;\n return opts.filter(o => this.optionMatchesQuery(o, q));\n });\n\n readonly flatItems = computed<FListboxFlatItem[]>(() => {\n const q = this.filterText();\n if (!this.group()) {\n return this.filteredOptions().map(o => ({ kind: 'option', option: o }) as FListboxFlatItem);\n }\n const groups = this.options() as Record<string, unknown>[];\n const out: FListboxFlatItem[] = [];\n for (const g of groups) {\n const children = (g[this.optionGroupChildren()] as unknown[]) ?? [];\n const filteredChildren = q ? children.filter(o => this.optionMatchesQuery(o, q)) : children;\n if (!filteredChildren.length) continue;\n out.push({ kind: 'group', label: String(g[this.optionGroupLabel()] ?? '') });\n for (const c of filteredChildren) out.push({ kind: 'option', option: c });\n }\n return out;\n });\n\n readonly navigableOptions = computed(() =>\n this.flatItems()\n .filter((i): i is { kind: 'option'; option: unknown } => i.kind === 'option')\n .map(i => i.option),\n );\n\n readonly activeDescendantId = computed(() => {\n const idx = this._focusedOptionIndex();\n return idx >= 0 ? `${this.listId()}-${idx}` : null;\n });\n\n optionIndexOf(opt: unknown): number {\n return this.navigableOptions().indexOf(opt);\n }\n\n onOptionMouseEnter(opt: unknown): void {\n this._focusedOptionIndex.set(this.optionIndexOf(opt));\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 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 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 if (this.isOptionDisabled(opt)) return 'opacity-50 cursor-not-allowed';\n const focused = this.optionIndexOf(opt) === this._focusedOptionIndex();\n if (this.isSelected(opt)) {\n return focused\n ? 'bg-(--f-highlight-focus-background) text-(--f-highlight-focus-color) font-medium'\n : 'bg-(--f-highlight-background) text-(--f-highlight-color) font-medium';\n }\n return focused\n ? 'bg-(--f-content-hover-background) text-(--f-text-color)'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)';\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 toggleSelectAll(e: Event): void {\n e.stopPropagation();\n if (this.disabled()) return;\n const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));\n const selectableValues = selectable.map(o => this.getOptionValue(o));\n const cur = Array.isArray(this._value()) ? (this._value() as unknown[]) : [];\n const selectingAll = !this.allFilteredSelected();\n const next = selectingAll\n ? [...cur, ...selectableValues.filter(v => !cur.includes(v))]\n : cur.filter(v => !selectableValues.includes(v));\n this._value.set(next);\n this._onChange(next);\n this.onChange.emit({ originalEvent: e, value: next });\n this.onSelectAllChange.emit(selectingAll);\n }\n\n onOptionClick(e: Event, opt: unknown): void {\n if (this.disabled() || this.isOptionDisabled(opt)) return;\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._focusedOptionIndex.set(this.optionIndexOf(opt));\n this._onChange(newVal);\n this._onTouched();\n this.onChange.emit({ originalEvent: e, value: newVal });\n }\n\n private moveFocus(delta: number): void {\n const len = this.navigableOptions().length;\n if (!len) return;\n const cur = this._focusedOptionIndex();\n const next = cur < 0 ? (delta > 0 ? 0 : len - 1) : Math.min(len - 1, Math.max(0, cur + delta));\n this._focusedOptionIndex.set(next);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.moveFocus(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.moveFocus(-1);\n break;\n case 'Home':\n event.preventDefault();\n this._focusedOptionIndex.set(0);\n break;\n case 'End':\n event.preventDefault();\n this._focusedOptionIndex.set(this.navigableOptions().length - 1);\n break;\n case ' ':\n case 'Enter': {\n event.preventDefault();\n const opt = this.navigableOptions()[this._focusedOptionIndex()];\n if (opt !== undefined) this.onOptionClick(event, opt);\n break;\n }\n }\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 viewChild,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent, ButtonSeverity, computeButtonClasses } 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 <div #group [class]=\"groupClass()\">\n <f-button\n [label]=\"label()\"\n [icon]=\"icon()\"\n [iconPos]=\"iconPos()\"\n [severity]=\"severity()\"\n [loading]=\"loading()\"\n [disabled]=\"disabled()\"\n [rounded]=\"rounded()\"\n [outlined]=\"outlined()\"\n [text]=\"text()\"\n [size]=\"size()\"\n class=\"shrink-0\"\n (onClick)=\"onClick.emit($event)\"\n />\n <button\n #dropdownButton\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"dropdownClass()\"\n (click)=\"toggleMenu($event)\"\n (keydown)=\"onDropdownButtonKeydown($event)\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"expandAriaLabel() || null\"\n aria-haspopup=\"menu\"\n >\n <ui-icon [name]=\"dropdownIcon() || 'chevron-down'\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n\n @if (open() && model().length > 0) {\n <div\n #menuPanel\n [class]=\"menuPanelClass()\"\n [style.top.px]=\"appendTo() === 'body' ? menuTop() : null\"\n [style.left.px]=\"appendTo() === 'body' ? menuLeft() : null\"\n role=\"menu\"\n [attr.aria-label]=\"expandAriaLabel() || null\"\n (keydown)=\"onMenuKeydown($event)\"\n >\n <ul class=\"py-1\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li role=\"separator\" class=\"my-1 border-t border-(--f-content-border-color)\"></li>\n } @else if (item.visible !== false) {\n <li role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n [disabled]=\"item.disabled\"\n [class]=\"itemClass(item)\"\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 text-left\">{{ 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 </button>\n </li>\n }\n }\n </ul>\n </div>\n }\n </div>\n `,\n})\nexport class SplitButtonComponent {\n private readonly _el = inject(ElementRef);\n private readonly _group = viewChild<ElementRef<HTMLElement>>('group');\n private readonly _dropdownBtn = viewChild<ElementRef<HTMLButtonElement>>('dropdownButton');\n private readonly _menuPanel = viewChild<ElementRef<HTMLElement>>('menuPanel');\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this.close(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<'self' | 'body'>('body');\n readonly dropdownIcon = input<string>('');\n readonly expandAriaLabel = input<string>('');\n\n readonly onClick = output<MouseEvent>();\n readonly onDropdownClick = output<MouseEvent>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n\n private readonly _menuTop = signal(0);\n private readonly _menuLeft = signal(0);\n readonly menuTop = this._menuTop.asReadonly();\n readonly menuLeft = this._menuLeft.asReadonly();\n\n readonly groupClass = computed(() => {\n const shape = this.rounded() ? 'rounded-full' : 'rounded-lg';\n const raisedCls = this.raised() ? 'shadow-md' : '';\n return `inline-flex overflow-hidden ${shape} ${raisedCls}`;\n });\n\n readonly dropdownClass = computed(() => {\n const classes = computeButtonClasses({\n severity: this.severity(),\n text: this.text(),\n link: false,\n outlined: this.outlined(),\n rounded: this.rounded(),\n raised: false,\n fluid: false,\n size: this.size(),\n iconOnly: true,\n });\n const divider = this.outlined() || this.text() ? '' : 'border-l border-white/20';\n return `${classes} ${divider}`;\n });\n\n readonly menuPanelClass = computed(() => {\n const base = 'z-50 min-w-[10rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden';\n const position = this.appendTo() === 'body' ? 'fixed' : 'absolute right-0 top-full mt-1';\n return `${position} ${base} ${this.menuStyleClass()}`;\n });\n\n itemClass(item: MenuItem): string {\n const base = 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors focus:outline-none focus-visible:ring-focus';\n return item.disabled\n ? `${base} opacity-60 pointer-events-none text-(--f-text-muted-color)`\n : `${base} text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer`;\n }\n\n toggleMenu(e: MouseEvent): void {\n if (this.open()) {\n this.close(false);\n } else {\n this.openMenu();\n }\n this.onDropdownClick.emit(e);\n }\n\n onDropdownButtonKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.openMenu();\n queueMicrotask(() => this.focusItem(0));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.openMenu();\n queueMicrotask(() => this.focusItem(-1));\n break;\n case 'Escape':\n if (this.open()) {\n event.preventDefault();\n this.close(true);\n }\n break;\n }\n }\n\n onMenuKeydown(event: KeyboardEvent): void {\n const items = this.menuItems();\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const i = items.indexOf(document.activeElement as HTMLElement);\n items[(i + 1 + items.length) % items.length]?.focus();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const i = items.indexOf(document.activeElement as HTMLElement);\n items[(i - 1 + items.length) % items.length]?.focus();\n break;\n }\n case 'Home':\n event.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Escape':\n event.preventDefault();\n this.close(true);\n break;\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this.close(false);\n }\n\n private openMenu(): void {\n if (this.open()) return;\n this._open.set(true);\n if (this.appendTo() === 'body') {\n this.positionMenu();\n queueMicrotask(() => this.adjustMenuForViewport());\n }\n this.onShow.emit();\n }\n\n private close(returnFocus: boolean): void {\n if (!this.open()) return;\n this._open.set(false);\n this.onHide.emit();\n if (returnFocus) this._dropdownBtn()?.nativeElement.focus();\n }\n\n private menuItems(): HTMLElement[] {\n return Array.from(this._menuPanel()?.nativeElement.querySelectorAll<HTMLElement>('[role=\"menuitem\"]') ?? []);\n }\n\n private focusItem(index: number): void {\n const items = this.menuItems();\n if (!items.length) return;\n const target = index === -1 ? items[items.length - 1] : items[index];\n target?.focus();\n }\n\n private positionMenu(): void {\n const anchor = this._group()?.nativeElement;\n if (!anchor || typeof window === 'undefined') return;\n const rect = anchor.getBoundingClientRect();\n this._menuTop.set(rect.bottom + 4);\n this._menuLeft.set(Math.max(8, rect.right - 160));\n }\n\n private adjustMenuForViewport(): void {\n const anchor = this._group()?.nativeElement;\n const panel = this._menuPanel()?.nativeElement;\n if (!anchor || !panel || typeof window === 'undefined') return;\n const anchorRect = anchor.getBoundingClientRect();\n const panelRect = panel.getBoundingClientRect();\n const gap = 4;\n let left = anchorRect.right - panelRect.width;\n left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));\n this._menuLeft.set(left);\n if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {\n this._menuTop.set(Math.max(8, anchorRect.top - panelRect.height - gap));\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n effect,\n inject,\n Injectable,\n input,\n model,\n OnInit,\n output,\n signal,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { TreeNode } from '../../interfaces/tree-node';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport {\n PaginatorComponent,\n PaginatorState,\n} from '../paginator/paginator.component';\nimport {\n ScrollerComponent,\n ScrollerLazyLoadEvent,\n} from '../scroller/scroller.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\nexport type TreeTableSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\nexport type TreeTableSortMode = 'single' | 'multiple';\nexport type TreeTableFilterMatchMode =\n | 'contains'\n | 'notContains'\n | 'startsWith'\n | 'endsWith'\n | 'equals'\n | 'notEquals'\n | 'lt'\n | 'lte'\n | 'gt'\n | 'gte';\n\nexport interface TreeTableSortMeta {\n field: string;\n order: number;\n}\n\nexport interface TreeTableFilterMeta {\n value: unknown;\n matchMode: TreeTableFilterMatchMode;\n}\n\nexport interface TreeTableLazyLoadEvent {\n first: number;\n rows: number;\n sortField?: string;\n sortOrder?: number;\n multiSortMeta?: TreeTableSortMeta[];\n filters?: Record<string, TreeTableFilterMeta>;\n globalFilter?: string;\n}\n\nexport interface TreeTableNodeEvent {\n originalEvent?: Event;\n node: TreeNode;\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 private readonly _lastToggle =\n signal<{ key: string; node: TreeNode; expanded: boolean } | null>(null);\n readonly lastToggle = this._lastToggle.asReadonly();\n\n toggle(key: string, node: TreeNode): void {\n this._expanded.update((s) => {\n const next = new Set(s);\n let expanded: boolean;\n if (next.has(key)) {\n next.delete(key);\n node.expanded = false;\n expanded = false;\n } else {\n next.add(key);\n node.expanded = true;\n expanded = true;\n }\n this._lastToggle.set({ key, node, expanded });\n return next;\n });\n }\n\n isExpanded(key: string): boolean {\n return this._expanded().has(key);\n }\n\n setExpanded(keys: ReadonlySet<string>): void {\n this._expanded.set(new Set(keys));\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 '[attr.aria-level]': 'rowNode().level + 1',\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, PaginatorComponent, ScrollerComponent],\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 rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\"\n >\n @if (captionTemplate() || globalFilterFields().length > 0) {\n <div\n class=\"p-2 border-b border-(--f-content-border-color) flex items-center justify-between gap-2 flex-wrap\"\n >\n @if (captionTemplate()) {\n <ng-container [ngTemplateOutlet]=\"captionTemplate()\" />\n }\n @if (globalFilterFields().length > 0) {\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) ml-auto\"\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 }\n </div>\n }\n @if (loading()) {\n @if (loadingBodyTemplate()) {\n <table role=\"treegrid\" [attr.aria-busy]=\"true\" 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 <ng-container [ngTemplateOutlet]=\"loadingBodyTemplate()\" />\n </tbody>\n </table>\n } @else {\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 }\n } @else if (virtualScroll() && scrollable()) {\n <table role=\"treegrid\" class=\"w-full text-sm text-left border-collapse\" [style]=\"virtualTableStyle()\">\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 </table>\n @if (flatRows().length > 0) {\n <f-scroller\n [items]=\"flatRows()\"\n [itemSize]=\"virtualScrollItemSize()\"\n [scrollHeight]=\"scrollHeight()\"\n [lazy]=\"lazy()\"\n [loading]=\"false\"\n (onLazyLoad)=\"onScrollerLazyLoad($event)\"\n >\n <ng-template let-row let-i=\"index\">\n <table role=\"treegrid\" class=\"w-full text-sm text-left border-collapse\" [style]=\"virtualTableStyle()\">\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (bodyTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"bodyTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n rowData: row.node.data,\n rowNode: row,\n rowIndex: i,\n }\"\n />\n }\n </tbody>\n </table>\n </ng-template>\n </f-scroller>\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <div class=\"text-center py-16 text-(--f-text-muted-color)\">No records found</div>\n }\n }\n } @else {\n <div\n [class]=\"scrollable() ? 'overflow-auto' : 'overflow-x-auto'\"\n [style]=\"scrollContainerStyle()\"\n >\n <table role=\"treegrid\" class=\"w-full text-sm text-left border-collapse\" [style]=\"normalTableStyle()\">\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 (flatRows().length > 0) {\n @for (row of flatRows(); track trackByRow($index, row); let i = $index) {\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 rowIndex: i,\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 class=\"text-sm font-medium text-(--f-text-muted-color)\">\n No records found\n </p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n @if (footerTemplate()) {\n <tfoot class=\"border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\" />\n </tfoot>\n }\n </table>\n </div>\n }\n @if (paginator() && effectiveTotalRecords() > 0) {\n <div class=\"border-t border-(--f-content-border-color) px-4 flex items-center gap-2\">\n @if (paginatorLeftTemplate()) {\n <ng-container [ngTemplateOutlet]=\"paginatorLeftTemplate()\" />\n }\n <f-paginator\n class=\"flex-1\"\n [first]=\"currentFirst()\"\n [rows]=\"currentRows()\"\n [totalRecords]=\"effectiveTotalRecords()\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n (onPageChange)=\"handlePageChange($event)\"\n />\n @if (paginatorRightTemplate()) {\n <ng-container [ngTemplateOutlet]=\"paginatorRightTemplate()\" />\n }\n </div>\n }\n </div>\n `,\n host: { '[class]': 'hostClass()' },\n})\nexport class TreeTableComponent implements OnInit {\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 hostClass = computed(() => `block w-full ${this.styleClass()}`);\n readonly tableStyle = input<Record<string, string> | null>(null);\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly scrollHeight = input<string>('28rem');\n readonly resizableColumns = input(false, { transform: booleanAttribute });\n\n readonly lazy = input(false, { transform: booleanAttribute });\n readonly totalRecords = input<number>(0);\n readonly paginator = input(false, { transform: booleanAttribute });\n readonly first = input<number>(0);\n readonly rows = input<number>(10);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly showCurrentPageReport = input(false, {\n transform: booleanAttribute,\n });\n readonly currentPageReportTemplate = input<string>('');\n\n readonly globalFilterFields = input<string[]>([]);\n readonly filterDelay = input<number>(300);\n\n readonly selectionMode = input<TreeTableSelectionMode>(null);\n readonly sortMode = input<TreeTableSortMode>('single');\n\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(46);\n\n readonly sortField = model<string | null>(null);\n readonly sortOrder = model<number>(1);\n readonly multiSortMeta = model<TreeTableSortMeta[]>([]);\n readonly filters = model<Record<string, TreeTableFilterMeta>>({});\n readonly selection = model<unknown>(null);\n readonly contextMenuSelection = model<TreeNode | null>(null);\n\n readonly onLazyLoad = output<TreeTableLazyLoadEvent>();\n readonly onSort = output<{ sortField: string | null; sortOrder: number; multiSortMeta?: TreeTableSortMeta[] }>();\n readonly onFilter = output<{ filters: Record<string, TreeTableFilterMeta> }>();\n readonly onNodeExpand = output<TreeTableNodeEvent>();\n readonly onNodeCollapse = output<TreeTableNodeEvent>();\n readonly onNodeSelect = output<TreeTableNodeEvent>();\n readonly onNodeUnselect = output<TreeTableNodeEvent>();\n readonly onRowContextMenu = output<{ originalEvent: MouseEvent; node: TreeNode }>();\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n readonly captionTemplate = contentChild<TemplateRef<unknown>>('caption');\n readonly footerTemplate = contentChild<TemplateRef<unknown>>('footer');\n readonly loadingBodyTemplate =\n contentChild<TemplateRef<unknown>>('loadingbody');\n readonly paginatorLeftTemplate =\n contentChild<TemplateRef<unknown>>('paginatorleft');\n readonly paginatorRightTemplate =\n contentChild<TemplateRef<unknown>>('paginatorright');\n\n private readonly svc = inject(TreeTableService);\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 scrollContainerStyle = computed<Record<string, string> | null>(\n () => (this.scrollable() ? { 'max-height': this.scrollHeight() } : null),\n );\n\n readonly normalTableStyle = computed<Record<string, string> | null>(() => {\n const base = this.tableStyle() ?? {};\n return this.resizableColumns()\n ? { 'table-layout': 'fixed', ...base }\n : Object.keys(base).length\n ? base\n : null;\n });\n\n readonly virtualTableStyle = computed<Record<string, string>>(() => ({\n 'table-layout': 'fixed',\n width: '100%',\n ...(this.tableStyle() ?? {}),\n }));\n\n private readonly filterResult = computed(() => {\n if (this.lazy()) return { nodes: this.value(), matchedKeys: new Set<string>() };\n const query = this.filterText().trim().toLowerCase();\n const hasFilters = Object.keys(this.filters()).length > 0;\n if (!query && !hasFilters) return { nodes: this.value(), matchedKeys: new Set<string>() };\n return this.filterNodes(this.value(), query);\n });\n\n readonly filteredRoots = computed(() => this.filterResult().nodes);\n private readonly filterMatchedKeys = computed(() => this.filterResult().matchedKeys);\n\n readonly sortedRoots = computed(() => {\n const roots = this.filteredRoots();\n if (this.lazy()) return roots;\n return this.sortNodesRecursive(roots);\n });\n\n readonly effectiveTotalRecords = computed(() =>\n this.lazy() ? this.totalRecords() : this.filteredRoots().length,\n );\n\n readonly pagedRoots = computed(() => {\n const roots = this.sortedRoots();\n if (this.lazy() || !this.paginator()) return roots;\n const start = this.currentFirst();\n return roots.slice(start, start + this.currentRows());\n });\n\n readonly flatRows = computed<TreeTableNode[]>(() => {\n const expandedKeys = this.svc.expanded();\n const matched = this.filterMatchedKeys();\n const roots = this.virtualScroll() ? this.sortedRoots() : this.pagedRoots();\n const rows: TreeTableNode[] = [];\n this._flatten(roots, rows, 0, true, expandedKeys, matched.size > 0 ? matched : null);\n return rows;\n });\n\n constructor() {\n // Bridge internal expand/collapse toggles (fired by TreeTableTogglerComponent,\n // which is injected into the same DI subtree via TreeTableService) out to\n // this component's own onNodeExpand/onNodeCollapse outputs.\n effect(() => {\n const toggle = this.svc.lastToggle();\n if (!toggle) return;\n untracked(() => {\n if (toggle.expanded) this.onNodeExpand.emit({ node: toggle.node });\n else this.onNodeCollapse.emit({ node: toggle.node });\n });\n });\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 trackByRow(_idx: number, row: TreeTableNode): unknown {\n return assignKey(row.node);\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 onScrollerLazyLoad(event: ScrollerLazyLoadEvent): void {\n if (!this.lazy()) return;\n this.onLazyLoad.emit(\n this.buildLazyEvent(event.first, event.last - event.first),\n );\n }\n\n onFilterInput(v: string): void {\n this.filterGlobal(v);\n }\n\n filterGlobal(value: string): void {\n this._filterText.set(value);\n this._currentFirst.set(0);\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(0, this.currentRows()));\n }\n }\n\n filter(\n value: unknown,\n field: string,\n matchMode: TreeTableFilterMatchMode = 'contains',\n ): void {\n const next = { ...this.filters() };\n if (value === '' || value == null) delete next[field];\n else next[field] = { value, matchMode };\n this.filters.set(next);\n this._currentFirst.set(0);\n this.onFilter.emit({ filters: next });\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(0, this.currentRows()));\n }\n }\n\n clearFilter(field: string): void {\n const next = { ...this.filters() };\n delete next[field];\n this.filters.set(next);\n }\n\n sort(field: string, event?: MouseEvent): void {\n if (!field) return;\n\n if (this.sortMode() === 'multiple') {\n const additive = !!(event && (event.metaKey || event.ctrlKey));\n const current = [...this.multiSortMeta()];\n const idx = current.findIndex((m) => m.field === field);\n\n if (!additive) {\n if (current.length === 1 && idx === 0 && current[0].order === 1) {\n current[0] = { field, order: -1 };\n } else if (current.length === 1 && idx === 0 && current[0].order === -1) {\n current.length = 0;\n } else {\n current.length = 0;\n current.push({ field, order: 1 });\n }\n } else if (idx > -1) {\n if (current[idx].order === 1) current[idx] = { field, order: -1 };\n else current.splice(idx, 1);\n } else {\n current.push({ field, order: 1 });\n }\n\n this.multiSortMeta.set(current);\n this.onSort.emit({\n sortField: field,\n sortOrder: current.find((m) => m.field === field)?.order ?? 0,\n multiSortMeta: current,\n });\n } else {\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 this.onSort.emit({ sortField: this.sortField(), sortOrder: this.sortOrder() });\n }\n\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(this.currentFirst(), this.currentRows()));\n }\n }\n\n isSelected(node: TreeNode): boolean {\n const sel = this.selection();\n if (sel == null) return false;\n if (Array.isArray(sel)) return sel.some((n) => this.nodesEqual(n as TreeNode, node));\n return this.nodesEqual(sel as TreeNode, node);\n }\n\n isPartialSelected(node: TreeNode): boolean {\n if (this.selectionMode() !== 'checkbox' || this.isSelected(node)) return false;\n if (!node.children?.length) return false;\n let any = false;\n let all = true;\n for (const child of node.children) {\n const childSelected = this.isSelected(child) || this.isPartialSelected(child);\n any = any || childSelected;\n all = all && this.isSelected(child);\n }\n return any && !all;\n }\n\n toggleNodeSelection(node: TreeNode, event?: Event): void {\n const mode = this.selectionMode();\n if (!mode) return;\n\n if (mode === 'single') {\n const already = this.isSelected(node);\n this.selection.set(already ? null : node);\n already\n ? this.onNodeUnselect.emit({ originalEvent: event, node })\n : this.onNodeSelect.emit({ originalEvent: event, node });\n return;\n }\n\n if (mode === 'multiple') {\n const current = Array.isArray(this.selection())\n ? [...(this.selection() as TreeNode[])]\n : [];\n const idx = current.findIndex((n) => this.nodesEqual(n, node));\n if (idx > -1) {\n current.splice(idx, 1);\n this.selection.set(current);\n this.onNodeUnselect.emit({ originalEvent: event, node });\n } else {\n current.push(node);\n this.selection.set(current);\n this.onNodeSelect.emit({ originalEvent: event, node });\n }\n return;\n }\n\n const map = new Map<string, TreeNode>();\n for (const n of Array.isArray(this.selection()) ? (this.selection() as TreeNode[]) : []) {\n map.set(assignKey(n), n);\n }\n const willSelect = !map.has(assignKey(node));\n this.setDescendants(node, willSelect, map);\n this.selection.set([...map.values()]);\n willSelect\n ? this.onNodeSelect.emit({ originalEvent: event, node })\n : this.onNodeUnselect.emit({ originalEvent: event, node });\n }\n\n onRowContextMenuHandler(event: MouseEvent, node: TreeNode): void {\n event.preventDefault();\n this.contextMenuSelection.set(node);\n this.onRowContextMenu.emit({ originalEvent: event, node });\n }\n\n toggleRow(node: TreeNode): void {\n this.svc.toggle(assignKey(node), node);\n }\n\n isRowExpanded(node: TreeNode): boolean {\n return this.svc.isExpanded(assignKey(node));\n }\n\n expandAll(): void {\n const keys = new Set<string>();\n const collect = (nodes: TreeNode[]) => {\n for (const node of nodes) {\n if (node.children?.length) {\n keys.add(assignKey(node));\n collect(node.children);\n }\n }\n };\n collect(this.value());\n this.svc.setExpanded(keys);\n }\n\n collapseAll(): void {\n this.svc.setExpanded(new Set());\n }\n\n private setDescendants(node: TreeNode, selected: boolean, map: Map<string, TreeNode>): void {\n const key = assignKey(node);\n if (selected) map.set(key, node);\n else map.delete(key);\n for (const child of node.children ?? []) this.setDescendants(child, selected, map);\n }\n\n private nodesEqual(a: TreeNode, b: TreeNode): boolean {\n return assignKey(a) === assignKey(b);\n }\n\n private fieldValue(node: TreeNode, field: string): unknown {\n return (\n (node.data as Record<string, unknown> | undefined)?.[field] ??\n (node as Record<string, unknown>)[field]\n );\n }\n\n private matchesQuery(node: TreeNode, query: string): boolean {\n if (!query) return true;\n const fields = this.globalFilterFields();\n if (!fields.length) return String(node.label ?? '').toLowerCase().includes(query);\n return fields.some((field) => {\n const val = this.fieldValue(node, field);\n return val != null && String(val).toLowerCase().includes(query);\n });\n }\n\n private matchesFilters(node: TreeNode): boolean {\n const entries = Object.entries(this.filters()).filter(\n ([, f]) => f.value !== null && f.value !== undefined && f.value !== '',\n );\n if (!entries.length) return true;\n return entries.every(([field, f]) =>\n this.matchValue(this.fieldValue(node, field), f.value, f.matchMode),\n );\n }\n\n private filterNodes(\n nodes: TreeNode[],\n query: string,\n ): { nodes: TreeNode[]; matchedKeys: Set<string> } {\n const matchedKeys = new Set<string>();\n const out: TreeNode[] = [];\n for (const node of nodes) {\n const key = assignKey(node);\n const selfMatch = this.matchesQuery(node, query) && this.matchesFilters(node);\n const childResult = node.children?.length\n ? this.filterNodes(node.children, query)\n : null;\n const childMatch = !!childResult && childResult.nodes.length > 0;\n\n if (selfMatch || childMatch) {\n matchedKeys.add(key);\n if (childResult) for (const k of childResult.matchedKeys) matchedKeys.add(k);\n out.push(childResult ? { ...node, children: childResult.nodes } : node);\n }\n }\n return { nodes: out, matchedKeys };\n }\n\n private sortNodesRecursive(nodes: TreeNode[]): TreeNode[] {\n const withSortedChildren = nodes.map((n) =>\n n.children?.length ? { ...n, children: this.sortNodesRecursive(n.children) } : n,\n );\n\n if (this.sortMode() === 'multiple') {\n const metas = this.multiSortMeta();\n if (!metas.length) return withSortedChildren;\n return withSortedChildren.sort((a, b) => {\n for (const meta of metas) {\n const result =\n this.compareValues(this.fieldValue(a, meta.field), this.fieldValue(b, meta.field)) *\n meta.order;\n if (result !== 0) return result;\n }\n return 0;\n });\n }\n\n const field = this.sortField();\n if (!field) return withSortedChildren;\n const order = this.sortOrder();\n return withSortedChildren.sort(\n (a, b) => this.compareValues(this.fieldValue(a, field), this.fieldValue(b, field)) * order,\n );\n }\n\n private buildLazyEvent(first: number, rows: number): TreeTableLazyLoadEvent {\n const field = this.sortField();\n const multi = this.multiSortMeta();\n const filters = this.filters();\n return {\n first,\n rows,\n ...(field ? { sortField: field, sortOrder: this.sortOrder() } : {}),\n ...(this.sortMode() === 'multiple' && multi.length ? { multiSortMeta: multi } : {}),\n ...(Object.keys(filters).length ? { filters } : {}),\n ...(this.filterText() ? { globalFilter: this.filterText() } : {}),\n };\n }\n\n private matchValue(\n value: unknown,\n filterValue: unknown,\n matchMode: TreeTableFilterMatchMode,\n ): boolean {\n if (filterValue == null || filterValue === '') return true;\n const a = value == null ? '' : value;\n switch (matchMode) {\n case 'equals':\n return this.compareValues(a, filterValue) === 0;\n case 'notEquals':\n return this.compareValues(a, filterValue) !== 0;\n case 'lt':\n return this.compareValues(a, filterValue) < 0;\n case 'lte':\n return this.compareValues(a, filterValue) <= 0;\n case 'gt':\n return this.compareValues(a, filterValue) > 0;\n case 'gte':\n return this.compareValues(a, filterValue) >= 0;\n case 'startsWith':\n return String(a).toLowerCase().startsWith(String(filterValue).toLowerCase());\n case 'endsWith':\n return String(a).toLowerCase().endsWith(String(filterValue).toLowerCase());\n case 'notContains':\n return !String(a).toLowerCase().includes(String(filterValue).toLowerCase());\n case 'contains':\n default:\n return String(a).toLowerCase().includes(String(filterValue).toLowerCase());\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 private _flatten(\n nodes: TreeNode[],\n out: TreeTableNode[],\n level: number,\n parentVisible: boolean,\n expandedKeys: ReadonlySet<string>,\n forceExpandKeys: ReadonlySet<string> | null,\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 =\n expandedKeys.has(key) ||\n node.expanded === true ||\n (!isLeaf && !!forceExpandKeys?.has(key));\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, forceExpandKeys);\n }\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { TreeNode } from '../../interfaces/tree-node';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox';\nexport type TreeSelectDisplay = 'comma' | 'chip';\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, NgTemplateOutlet, ScrollerComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TreeSelectComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <div\n role=\"combobox\"\n aria-haspopup=\"tree\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [class]=\"triggerClass()\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeyDown($event)\"\n >\n @if (valueTpl()) {\n <span class=\"flex-1 min-w-0 truncate text-left text-sm\">\n <ng-container [ngTemplateOutlet]=\"valueTpl()\" [ngTemplateOutletContext]=\"{ $implicit: selectedNodes(), placeholder: placeholder() }\" />\n </span>\n } @else 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 && display() === 'chip') {\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 if (selectedLabels().length) {\n <span class=\"flex-1 min-w-0 truncate text-sm text-(--f-text-color)\">{{ selectedLabels().join(', ') }}</span>\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n <span class=\"ml-auto flex items-center gap-1 shrink-0\">\n @if (showClear() && selectedKeys().size && !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 <ui-icon name=\"chevron-down\" class=\"text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </span>\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 (headerTpl()) {\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" [ngTemplateOutletContext]=\"{ $implicit: options() }\" />\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 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\n @if (visibleFlatNodes().length === 0) {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n @if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\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)\">{{ emptyMessage() }}</span>\n }\n </div>\n } @else if (virtualScroll()) {\n <f-scroller role=\"tree\" [items]=\"visibleFlatNodes()\" [itemSize]=\"virtualScrollItemSize()\" scrollHeight=\"16rem\">\n <ng-template let-row>\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n </ng-template>\n </f-scroller>\n } @else {\n <div class=\"max-h-64 overflow-auto py-1\" role=\"tree\">\n @for (row of visibleFlatNodes(); track row.key) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n </div>\n }\n\n @if (footerTpl()) {\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" [ngTemplateOutletContext]=\"{ $implicit: options() }\" />\n }\n </div>\n }\n </div>\n\n <ng-template #rowTpl let-row>\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 role=\"treeitem\"\n [attr.aria-level]=\"row.level + 1\"\n [attr.aria-expanded]=\"row.leaf ? null : isExpanded(row.key)\"\n [attr.aria-selected]=\"isSelected(row.key)\"\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 </ng-template>\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 filterBy = input<string>('label');\n readonly selectionMode = input<TreeSelectionMode>('single');\n readonly display = input<TreeSelectDisplay>('comma');\n readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(36);\n readonly emptyMessage = input<string>('No options');\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 style = input<Record<string, string> | null>(null);\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\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 private _keyToParent = new Map<string, TreeNode | null>();\n\n readonly valueRef = contentChild<TemplateRef<unknown>>('value');\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly valueTpl = computed<TemplateRef<unknown> | null>(() =>\n this.valueRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'value')?.templateRef ?? null,\n );\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() =>\n this.headerRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'header')?.templateRef ?? null,\n );\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() =>\n this.footerRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'footer')?.templateRef ?? null,\n );\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() =>\n this.emptyRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'empty')?.templateRef ?? null,\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\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._keyToParent.clear();\n this._flatten(this.options(), out, 0, true, expanded, q, null);\n return out;\n });\n\n readonly visibleFlatNodes = computed(() => this.flatNodes().filter((row) => row.visible));\n\n readonly selectedNodes = computed(() => {\n const keys = this.selectedKeys();\n const nodes: TreeNode[] = [];\n for (const row of this.flatNodes()) {\n if (keys.has(row.key)) nodes.push(row.node);\n }\n return nodes;\n });\n\n readonly selectedLabels = computed(() => this.selectedNodes().map((n) => n.label ?? ''));\n\n private matchesFilter(node: TreeNode, query: string): boolean {\n if (!query) return true;\n const fields = this.filterBy().split(',').map((f) => f.trim()).filter(Boolean);\n if (!fields.length) fields.push('label');\n return fields.some((field) => String((node as Record<string, unknown>)[field] ?? '').toLowerCase().includes(query));\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 parent: TreeNode | null,\n ): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n this._keyToParent.set(key, parent);\n const isLeaf = !node.children || node.children.length === 0;\n const selfMatch = this.matchesFilter(node, 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, node);\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 onTriggerKeyDown(e: KeyboardEvent): void {\n if (this.disabled()) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.toggleOpen();\n } else if (e.key === 'Escape' && this.open()) {\n e.preventDefault();\n this._open.set(false);\n this._onTouched();\n }\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 if (this.propagateSelectionDown()) {\n this.setDescendantSelection(node, willSelect, next);\n } else {\n willSelect ? next.add(key) : next.delete(key);\n }\n if (this.propagateSelectionUp()) {\n this.propagateUp(node, next);\n }\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 private propagateUp(node: TreeNode, set: Set<string>): void {\n let parent = this._keyToParent.get(assignKey(node)) ?? null;\n while (parent) {\n const parentKey = assignKey(parent);\n const children = parent.children ?? [];\n const allSelected = children.length > 0 && children.every((c) => set.has(assignKey(c)));\n allSelected ? set.add(parentKey) : set.delete(parentKey);\n parent = this._keyToParent.get(parentKey) ?? null;\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 clear(e: Event): void {\n e.stopPropagation();\n this._selectedKeys.set(new Set());\n this.emitChange();\n this._onTouched();\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, 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 host: { class: 'block' },\n template: `\n <div class=\"relative inline-flex items-center justify-center\">\n <ng-content></ng-content>\n <f-badge\n [value]=\"value()\"\n [severity]=\"severity()\"\n [size]=\"size()\"\n [styleClass]=\"styleClass()\"\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 readonly styleClass = input<string>('');\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n input,\n model,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-fieldset',\n imports: [UiIconComponent, NgTemplateOutlet],\n template: `\n <fieldset [class]=\"rootClass()\" [style]=\"style()\">\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 [attr.aria-controls]=\"toggleable() ? contentId : 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 @if (legendTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"legendTemplateResolved()\" />\n } @else {\n {{ legend() }}\n }\n </legend>\n <div\n [id]=\"contentId\"\n class=\"grid [transition:grid-template-rows_220ms_ease]\"\n [style.grid-template-rows]=\"collapsed() ? '0fr' : '1fr'\"\n role=\"region\"\n [attr.aria-hidden]=\"collapsed()\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"pt-2\">\n <ng-content />\n </div>\n </div>\n </div>\n </fieldset>\n `,\n host: {\n class: 'block',\n },\n})\nexport class FieldsetComponent {\n private static idCounter = 0;\n protected readonly contentId = `f-fieldset-content-${++FieldsetComponent.idCounter}`;\n\n readonly legend = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onBeforeToggle = output<{ collapsed: boolean }>();\n readonly onAfterToggle = output<{ collapsed: boolean }>();\n\n readonly legendTemplateRef = contentChild<TemplateRef<unknown>>('legend');\n readonly fTemplates = contentChildren(FTemplateDirective);\n readonly legendTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.legendTemplateRef() ?? this.fTemplates().find(t => t.fTemplate() === 'legend')?.templateRef ?? null,\n );\n\n readonly rootClass = computed(\n () => `border border-(--f-content-border-color) rounded-lg p-4 pt-0 ${this.styleClass()}`,\n );\n\n toggleCollapsed(): void {\n const next = !this.collapsed();\n this.onBeforeToggle.emit({ collapsed: this.collapsed() });\n this.collapsed.set(next);\n this.onAfterToggle.emit({ collapsed: next });\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 label {\n position: absolute;\n inset-inline-start: 0.75rem;\n top: 50%;\n transform: translateY(-50%);\n line-height: 1;\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 ::ng-deep textarea ~ label,\n :host:has(::ng-deep textarea) ::ng-deep label {\n top: 0.75rem;\n transform: translateY(0);\n }\n :host ::ng-deep input:has(~ .f-inputicon:first-child) ~ label,\n :host:has(::ng-deep .f-inputicon:first-child) ::ng-deep label {\n inset-inline-start: 2.5rem;\n }\n\n /* over (default): label floats fully above the field */\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 :host(.f-floatlabel-over):has(textarea:focus) ::ng-deep label,\n :host(.f-floatlabel-over):has(textarea:not(:placeholder-shown)) ::ng-deep label {\n top: -0.6rem;\n font-size: 0.75rem;\n color: var(--f-primary-color, var(--color-primary));\n }\n\n /* in: label floats up but stays inside the field's padding */\n :host(.f-floatlabel-in) ::ng-deep input,\n :host(.f-floatlabel-in) ::ng-deep textarea {\n padding-block-start: 1.25rem;\n padding-block-end: 0.35rem;\n }\n :host(.f-floatlabel-in):has(input:focus) ::ng-deep label,\n :host(.f-floatlabel-in):has(input:not(:placeholder-shown)) ::ng-deep label,\n :host(.f-floatlabel-in):has(textarea:focus) ::ng-deep label,\n :host(.f-floatlabel-in):has(textarea:not(:placeholder-shown)) ::ng-deep label {\n top: 0.6rem;\n transform: translateY(0);\n font-size: 0.75rem;\n color: var(--f-primary-color, var(--color-primary));\n }\n\n /* on: label rests exactly on the field's top border, like a notch */\n :host(.f-floatlabel-on):has(input:focus) ::ng-deep label,\n :host(.f-floatlabel-on):has(input:not(:placeholder-shown)) ::ng-deep label,\n :host(.f-floatlabel-on):has(textarea:focus) ::ng-deep label,\n :host(.f-floatlabel-on):has(textarea:not(:placeholder-shown)) ::ng-deep label {\n top: 0;\n transform: translateY(-50%);\n font-size: 0.75rem;\n border-radius: 0.25rem;\n background: var(--f-content-background);\n padding: 0 0.25rem;\n color: var(--f-primary-color, var(--color-primary));\n }\n\n :host:has(input.ng-invalid.ng-dirty) ::ng-deep label,\n :host:has(textarea.ng-invalid.ng-dirty) ::ng-deep label {\n color: var(--color-red-400);\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 readonly styleClass = input<string>('');\n\n readonly hostClass = computed(\n () => `block w-full f-floatlabel-${this.variant()} ${this.styleClass()}`,\n );\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-iftalabel',\n host: { '[class]': 'hostClass()' },\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 textarea,\n :host ::ng-deep .f-iftalabel-target {\n padding-top: 1.35rem !important;\n padding-bottom: 0.35rem !important;\n }\n :host ::ng-deep textarea ~ label {\n top: 0.5rem;\n }\n :host:has(input.ng-invalid.ng-dirty) ::ng-deep label,\n :host:has(textarea.ng-invalid.ng-dirty) ::ng-deep label {\n color: var(--color-red-400);\n }\n `],\n template: `<ng-content></ng-content>`,\n})\nexport class IftaLabelComponent {\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(() => `relative block w-full ${this.styleClass()}`);\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-buttongroup',\n host: {\n class:\n 'inline-flex [&>button]:rounded-none [&>f-button>button]:rounded-none [&>button:first-child]:rounded-s-lg [&>f-button:first-child>button]:rounded-s-lg [&>button:last-child]:rounded-e-lg [&>f-button:last-child>button]:rounded-e-lg [&>button:not(:first-child)]:-ms-px [&>f-button:not(:first-child)>button]:-ms-px [&>button:focus-visible]:z-10 [&>f-button>button:focus-visible]:z-10',\n role: 'group',\n '[attr.aria-label]': 'ariaLabel() || null',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class ButtonGroupComponent {\n readonly ariaLabel = input<string>('');\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-inputgroup',\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupComponent {\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => [\n 'flex items-stretch w-full',\n '[&>*]:rounded-none [&>*:first-child]:rounded-s-lg [&>*:last-child]:rounded-e-lg [&>*:not(:first-child)]:-ms-px',\n '[&>*:focus-within]:z-10 [&>*:focus-visible]:z-10',\n '[&>f-button>button]:rounded-none [&>f-button:first-child>button]:rounded-s-lg [&>f-button:last-child>button]:rounded-e-lg [&>f-button:not(:first-child)>button]:-ms-px [&>f-button>button:focus-visible]:z-10',\n this.styleClass(),\n ].join(' '));\n}\n\n@Component({\n selector: 'f-inputgroupaddon',\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupAddonComponent {\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(\n () => `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) ${this.styleClass()}`,\n );\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, computed, 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 host: { class: 'block' },\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClass()\"\n [style]=\"style()\"\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 [attr.tabindex]=\"visible() ? 0 : -1\"\n (click)=\"scrollToTop()\"\n >\n <ui-icon [name]=\"icon()\" 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 icon = input<string>('arrow-up');\n readonly buttonAriaLabel = input<string>('Scroll to top');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n readonly buttonClass = computed(() => {\n const position = this.target() === 'parent' ? 'sticky' : 'fixed';\n return `scrolltop-btn ${position} 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 ${this.styleClass()}`;\n });\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, contentChild, contentChildren, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { BadgeSeverity } from '../badge/badge.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport interface MeterItem {\n label: string;\n value: number;\n color?: string;\n severity?: BadgeSeverity;\n icon?: string;\n}\n\nexport type MeterGroupOrientation = 'horizontal' | 'vertical';\nexport type MeterGroupLabelPosition = 'start' | 'end';\n\nconst SEVERITY_COLOR: Record<string, string> = {\n success: 'var(--f-green-500)',\n info: 'var(--f-blue-500)',\n warn: 'var(--f-yellow-500)',\n danger: 'var(--f-red-500)',\n secondary: 'var(--color-surface-400)',\n contrast: 'var(--color-surface-950)',\n};\n\n@Component({\n selector: 'f-metergroup',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: {\n '[class]': 'hostClass()',\n role: 'meter',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'totalPercent()',\n },\n template: `\n <div [class]=\"containerClass()\" [style]=\"style()\">\n @if (labelPosition() === 'start') {\n @if (labelTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"labelTemplateResolved()\" [ngTemplateOutletContext]=\"labelContext()\" />\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLabelTpl\" />\n }\n }\n\n <div [class]=\"metersClass()\">\n @for (item of values(); track item.label) {\n @if (meterTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"meterTemplateResolved()\" [ngTemplateOutletContext]=\"meterContext(item)\" />\n } @else if (item.value > 0) {\n <div\n [class]=\"orientation() === 'vertical' ? 'w-full transition-all duration-300' : 'h-full transition-all duration-300'\"\n [style.width.%]=\"orientation() === 'horizontal' ? percent(item.value) : null\"\n [style.height.%]=\"orientation() === 'vertical' ? percent(item.value) : null\"\n [style.background-color]=\"segmentColor(item)\"\n ></div>\n }\n }\n </div>\n\n @if (labelPosition() === 'end') {\n @if (labelTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"labelTemplateResolved()\" [ngTemplateOutletContext]=\"labelContext()\" />\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLabelTpl\" />\n }\n }\n </div>\n\n <ng-template #defaultLabelTpl>\n <div [class]=\"orientation() === 'vertical' ? 'flex flex-col gap-2' : '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]=\"segmentColor(item)\"></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 </ng-template>\n `,\n})\nexport class MeterGroupComponent {\n readonly values = input<MeterItem[]>([]);\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly orientation = input<MeterGroupOrientation>('horizontal');\n readonly labelPosition = input<MeterGroupLabelPosition>('end');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n readonly containerClass = computed(() => (this.orientation() === 'vertical' ? 'inline-flex items-end gap-4' : 'flex flex-col w-full'));\n readonly metersClass = computed(() =>\n this.orientation() === 'vertical'\n ? 'flex flex-col-reverse w-2 h-40 rounded-full overflow-hidden bg-(--f-content-hover-background) shrink-0'\n : 'flex w-full h-2 rounded-full overflow-hidden bg-(--f-content-hover-background)',\n );\n\n private readonly labelTplRef = contentChild<TemplateRef<unknown>>('label');\n private readonly meterTplRef = contentChild<TemplateRef<unknown>>('meter');\n private readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly labelTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.labelTplRef() ?? this.fTemplates().find(t => t.fTemplate() === 'label')?.templateRef ?? null,\n );\n readonly meterTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.meterTplRef() ?? this.fTemplates().find(t => t.fTemplate() === 'meter')?.templateRef ?? null,\n );\n\n readonly totalPercent = computed(() => this.percent(this.values().reduce((acc, v) => acc + (v.value || 0), 0)));\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 segmentColor(item: MeterItem): string {\n if (item.color) return item.color;\n return item.severity ? (SEVERITY_COLOR[item.severity] ?? 'var(--color-primary)') : 'var(--color-primary)';\n }\n\n labelContext(): Record<string, unknown> {\n return { $implicit: this.values(), totalPercent: this.totalPercent(), min: this.min(), max: this.max() };\n }\n\n meterContext(item: MeterItem): Record<string, unknown> {\n return { $implicit: item, percent: this.percent(item.value), orientation: this.orientation() };\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nconst FLUID_DESCENDANT_CLASSES =\n '[&_input]:w-full [&_textarea]:w-full [&_button]:w-full [&_select]:w-full ' +\n '[&_f-select]:w-full [&_f-multiselect]:w-full [&_f-autocomplete]:w-full ' +\n '[&_f-cascadeselect]:w-full [&_f-treeselect]:w-full [&_f-inputnumber]:w-full ' +\n '[&_f-inputotp]:w-full [&_f-colorpicker]:w-full [&_f-datepicker]:w-full ' +\n '[&_f-password]:w-full [&_f-splitbutton]:w-full [&_f-togglebutton]:w-full ' +\n '[&_f-toggleswitch]:w-full [&_f-selectbutton]:w-full [&_f-knob]:w-full [&_f-button]:w-full';\n\n@Component({\n selector: 'f-fluid',\n host: { '[class]': 'hostClass()' },\n template: `<ng-content></ng-content>`,\n})\nexport class FluidComponent {\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(\n () => `block w-full ${FLUID_DESCENDANT_CLASSES} ${this.styleClass()}`,\n );\n}\n","import { booleanAttribute, Component, computed, contentChild, input, numberAttribute, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-blockui',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: {\n '[class]': 'hostClass()',\n '[attr.aria-busy]': 'blocked()',\n },\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 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 [style.z-index]=\"baseZIndex() || null\"\n [class.z-40]=\"!baseZIndex()\"\n >\n @if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n } @else {\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 baseZIndex = input(0, { transform: numberAttribute });\n readonly styleClass = input<string>('');\n\n readonly contentTemplate = contentChild<TemplateRef<unknown>>('content');\n\n readonly hostClass = computed(() => `relative block ${this.styleClass()}`);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type MenuAppendTo = 'self' | 'body';\n\n@Component({\n selector: 'f-menu',\n imports: [UiIconComponent, BadgeComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\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 <f-badge [value]=\"item.badge\" [styleClass]=\"item.badgeStyleClass ?? ''\" size=\"small\" class=\"shrink-0\"></f-badge>\n }\n @if (item.selected) {\n <ui-icon name=\"check\" class=\"text-primary text-sm shrink-0\"></ui-icon>\n }\n }\n </ng-template>\n\n <ng-template #itemLiTpl let-item>\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\" [class]=\"item.styleClass ?? ''\" [style]=\"item.style ?? null\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : 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 [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : 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 [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : 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 </ng-template>\n\n @if (!popup() || visible()) {\n <div #container [class]=\"containerClass()\" [style]=\"containerStyle()\">\n @if (startTpl()) {\n <div class=\"px-3 py-2 border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"startTpl()\" />\n </div>\n }\n <ul class=\"py-1\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n @if (hasGroups()) {\n @for (group of model(); track $index) {\n @if (group.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (group.visible !== false) {\n @if (group.label) {\n <li class=\"px-3 pt-2 pb-1 text-xs font-semibold text-(--f-text-muted-color) uppercase tracking-wide\" role=\"none\">{{ group.label }}</li>\n }\n @for (item of group.items; track $index) {\n <ng-container [ngTemplateOutlet]=\"itemLiTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n }\n }\n } @else {\n @for (item of model(); track $index) {\n <ng-container [ngTemplateOutlet]=\"itemLiTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @empty {\n <li class=\"px-3 py-2 text-sm text-(--f-text-muted-color)\">No items</li>\n }\n }\n </ul>\n @if (endTpl()) {\n <div class=\"px-3 py-2 border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"endTpl()\" />\n </div>\n }\n </div>\n }\n `,\n})\nexport class MenuComponent {\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly containerRef = viewChild<ElementRef<HTMLElement>>('container');\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n readonly appendTo = input<MenuAppendTo>('self');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _top = signal(0);\n private readonly _left = signal(0);\n private _openedAt = 0;\n private _anchor: HTMLElement | null = null;\n\n readonly fTemplates = contentChildren(FTemplateDirective);\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('item'));\n readonly startTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('start'));\n readonly endTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('end'));\n\n readonly hasGroups = computed(() => this.model().some(item => !!item.items?.length));\n\n readonly containerClass = computed(() => {\n const base = 'min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg overflow-hidden';\n if (!this.popup()) {\n return `w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg overflow-hidden ${this.styleClass()}`;\n }\n const position = this.appendTo() === 'body' ? 'fixed' : 'absolute mt-1';\n return `${position} z-50 shadow-lg ${base} ${this.styleClass()}`;\n });\n\n readonly containerStyle = computed<Record<string, string>>(() => {\n const style = this.style() ?? {};\n if (this.popup() && this.appendTo() === 'body') {\n return { ...style, top: `${this._top()}px`, left: `${this._left()}px` };\n }\n return style;\n });\n\n toggle(event?: Event): void {\n if (this.visible()) this.hide();\n else this.show(event);\n }\n\n show(event?: Event): void {\n this._anchor = (event?.currentTarget as HTMLElement) ?? null;\n this._openedAt = Date.now();\n if (this.appendTo() === 'body') this.position();\n this._visible.set(true);\n this.onShow.emit();\n if (this.appendTo() === 'body') {\n setTimeout(() => this.adjustForViewport(), 0);\n }\n }\n\n hide(): void {\n if (!this._visible()) return;\n this._visible.set(false);\n this.onHide.emit();\n }\n\n private position(): void {\n if (!this._anchor || typeof window === 'undefined') return;\n const rect = this._anchor.getBoundingClientRect();\n this._top.set(rect.bottom + 4);\n this._left.set(rect.left);\n }\n\n private adjustForViewport(): void {\n const el = this.containerRef()?.nativeElement;\n if (!el || !this._anchor || typeof window === 'undefined') return;\n const anchorRect = this._anchor.getBoundingClientRect();\n const panelRect = el.getBoundingClientRect();\n const gap = 4;\n let left = anchorRect.left;\n left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));\n this._left.set(left);\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: MouseEvent): void {\n if (Date.now() - this._openedAt < 50) return;\n if (this.popup() && this.visible() && !this._el.nativeElement.contains(e.target as Node)) {\n this.hide();\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.hide();\n }\n\n onKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([data-p-disabled])'),\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 {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nconst SUBMENU_ESTIMATED_WIDTH = 192;\n\n@Component({\n selector: 'f-menubar',\n imports: [UiIconComponent, BadgeComponent, NgTemplateOutlet, RouterLink],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <ng-template #contentTpl let-item let-root=\"root\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, root }\" />\n } @else {\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.badge) {\n <f-badge [value]=\"item.badge\" [styleClass]=\"item.badgeStyleClass ?? ''\" size=\"small\" class=\"shrink-0\"></f-badge>\n }\n @if (item.items?.length) {\n <ui-icon [name]=\"root ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px] shrink-0\"></ui-icon>\n }\n }\n </ng-template>\n\n <ng-template #submenuTpl let-list let-level=\"level\">\n <ul\n class=\"py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible\"\n role=\"menu\"\n (keydown)=\"onSubmenuKeydown($event)\"\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\" [class]=\"item.styleClass ?? ''\" [style]=\"item.style ?? null\" (mouseenter)=\"onItemMouseEnter($event, item, level)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: false }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: false }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: false }\" />\n </button>\n }\n @if (item.items?.length && isItemActive(item, level)) {\n <div\n class=\"absolute top-0 z-[70]\"\n [class.left-full]=\"!flipByLevel()[level]\"\n [class.ml-0.5]=\"!flipByLevel()[level]\"\n [class.right-full]=\"flipByLevel()[level]\"\n [class.mr-0.5]=\"flipByLevel()[level]\"\n >\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: level + 1 }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n <div [class]=\"wrapperClass()\" [style]=\"style()\" (mouseleave)=\"onMenuMouseLeave()\">\n @if (startTpl()) {\n <div class=\"flex items-center\">\n <ng-container [ngTemplateOutlet]=\"startTpl()\" />\n </div>\n }\n\n @if (isMobile()) {\n <button\n type=\"button\"\n class=\"p-2 rounded-md text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus\"\n [attr.aria-expanded]=\"mobileActive()\"\n aria-label=\"Toggle menu\"\n (click)=\"toggleMobile($event)\"\n >\n <ui-icon name=\"bars\" class=\"text-sm\"></ui-icon>\n </button>\n }\n\n <ul [class]=\"rootListClass()\" 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 : (isItemActive(item, 0)\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\" [class]=\"item.styleClass ?? ''\" [style]=\"item.style ?? null\" (mouseenter)=\"onItemMouseEnter($event, item, 0)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"0\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, 0) : null\"\n [class]=\"rootClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item, 0)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"0\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, 0) : null\"\n [class]=\"rootClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item, 0)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [attr.data-level]=\"0\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, 0) : null\"\n [class]=\"rootClass\"\n (click)=\"onItemClick($event, item, 0)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </button>\n }\n @if (item.items?.length && isItemActive(item, 0)) {\n <div class=\"absolute left-0 top-full mt-1 z-[70]\">\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: 1 }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n\n @if (endTpl()) {\n <div class=\"flex items-center ml-auto\">\n <ng-container [ngTemplateOutlet]=\"endTpl()\" />\n </div>\n }\n </div>\n `,\n})\nexport class MenubarComponent {\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly autoDisplay = input(true, { transform: booleanAttribute });\n readonly breakpoint = input<string>('960px');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly fTemplates = contentChildren(FTemplateDirective);\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('item'));\n readonly startTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('start'));\n readonly endTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('end'));\n\n private readonly _windowWidth = signal(\n typeof window !== 'undefined' ? window.innerWidth : Number.POSITIVE_INFINITY,\n );\n readonly isMobile = computed(() => this._windowWidth() <= parseInt(this.breakpoint(), 10));\n\n private readonly _mobileActive = signal(false);\n readonly mobileActive = this._mobileActive.asReadonly();\n\n private readonly _activeItemPath = signal<MenuItem[]>([]);\n private readonly _flipByLevel = signal<Record<number, boolean>>({});\n readonly flipByLevel = this._flipByLevel.asReadonly();\n private _dirty = false;\n private _hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n\n readonly wrapperClass = computed(() =>\n `flex flex-wrap items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg ${this.styleClass()}`,\n );\n\n readonly rootListClass = computed(() => {\n if (this.isMobile()) {\n return this.mobileActive()\n ? 'flex flex-col gap-1 w-full basis-full order-last mt-1'\n : 'hidden';\n }\n return 'flex items-center gap-1';\n });\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\n toggleMobile(e: Event): void {\n e.stopPropagation();\n this._mobileActive.update(v => !v);\n this._activeItemPath.set([]);\n }\n\n isItemActive(item: MenuItem, level: number): boolean {\n return this._activeItemPath()[level] === item;\n }\n\n itemsAtLevel(level: number): MenuItem[] {\n return level === 0 ? this.model() : (this._activeItemPath()[level - 1]?.items ?? []);\n }\n\n onItemMouseEnter(event: MouseEvent, item: MenuItem, level: number): void {\n if (item.disabled) return;\n if (this._hoverCloseTimer) { clearTimeout(this._hoverCloseTimer); this._hoverCloseTimer = null; }\n if (level === 0 && !this.autoDisplay() && !this._dirty) return;\n const path = this._activeItemPath().slice(0, level);\n if (item.items?.length) {\n path.push(item);\n const li = event.currentTarget as HTMLElement;\n const rect = li.getBoundingClientRect();\n const flip = rect.right + SUBMENU_ESTIMATED_WIDTH > window.innerWidth;\n this._flipByLevel.update(m => ({ ...m, [level]: flip }));\n }\n this._activeItemPath.set(path);\n }\n\n onMenuMouseLeave(): void {\n if (!this._activeItemPath().length) return;\n this._hoverCloseTimer = setTimeout(() => {\n this._activeItemPath.set([]);\n this._dirty = false;\n }, 150);\n }\n\n onItemClick(e: Event, item: MenuItem, level: number): void {\n if (item.disabled) return;\n if (item.items?.length) {\n e.preventDefault();\n this._dirty = true;\n const path = this._activeItemPath();\n this._activeItemPath.set(\n this.isItemActive(item, level) ? path.slice(0, level) : [...path.slice(0, level), item],\n );\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeItemPath.set([]);\n this._dirty = false;\n this._mobileActive.set(false);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target as Node)) {\n this._activeItemPath.set([]);\n this._dirty = false;\n this._mobileActive.set(false);\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\"]:not([data-p-disabled])'),\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 this.openFocusedSubmenu(0);\n break;\n case 'Escape':\n e.preventDefault();\n this._activeItemPath.set([]);\n this._dirty = false;\n break;\n case 'Enter':\n case ' ':\n if (document.activeElement instanceof HTMLElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n\n onSubmenuKeydown(e: KeyboardEvent): void {\n e.stopPropagation();\n const activeEl = document.activeElement as HTMLElement | null;\n const level = Number(activeEl?.dataset['level'] ?? 1);\n const ul = activeEl?.closest('ul[role=\"menu\"]');\n const items = ul ? Array.from(ul.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]:not([data-p-disabled])')) : [];\n const currentIndex = items.indexOf(activeEl 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 'ArrowRight':\n e.preventDefault();\n this.openFocusedSubmenu(level);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n this.closeCurrentLevel(level);\n break;\n case 'Escape':\n e.preventDefault();\n this._activeItemPath.set([]);\n this._dirty = false;\n break;\n case 'Enter':\n case ' ':\n if (activeEl) {\n e.preventDefault();\n activeEl.click();\n }\n break;\n }\n }\n\n private openFocusedSubmenu(level: number): void {\n const activeEl = document.activeElement as HTMLElement | null;\n if (!activeEl) return;\n const container = activeEl.closest('ul[role=\"menu\"], ul[role=\"menubar\"]');\n if (!container) return;\n const allItems = Array.from(container.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'));\n const index = allItems.indexOf(activeEl);\n if (index < 0) return;\n const item = this.itemsAtLevel(level)[index];\n if (!item?.items?.length || item.disabled) return;\n this._dirty = true;\n this._activeItemPath.set([...this._activeItemPath().slice(0, level), item]);\n queueMicrotask(() => {\n this._el.nativeElement.querySelector<HTMLElement>(`[data-level=\"${level + 1}\"]`)?.focus();\n });\n }\n\n private closeCurrentLevel(level: number): void {\n if (level <= 0) return;\n const parentItem = this._activeItemPath()[level - 1];\n this._activeItemPath.set(this._activeItemPath().slice(0, level - 1));\n queueMicrotask(() => {\n const parentItems = this.itemsAtLevel(level - 1);\n const index = parentItems.indexOf(parentItem);\n this._el.nativeElement.querySelectorAll<HTMLElement>(`[data-level=\"${level - 1}\"]`)[index]?.focus();\n });\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nconst SUBMENU_ESTIMATED_WIDTH = 192;\n\n@Component({\n selector: 'f-tieredmenu',\n imports: [UiIconComponent, BadgeComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\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 <f-badge [value]=\"item.badge\" [styleClass]=\"item.badgeStyleClass ?? ''\" size=\"small\" class=\"shrink-0\"></f-badge>\n }\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 }\n </ng-template>\n\n <ng-template #itemsTpl let-list let-root=\"root\" let-level=\"level\">\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 top-0 z-[70]'\"\n [class.left-full]=\"!root && !flipByLevel()[level]\"\n [class.ml-0.5]=\"!root && !flipByLevel()[level]\"\n [class.right-full]=\"!root && flipByLevel()[level]\"\n [class.mr-0.5]=\"!root && flipByLevel()[level]\"\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\" [class]=\"item.styleClass ?? ''\" [style]=\"item.style ?? null\" (mouseenter)=\"onItemMouseEnter($event, item, level)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item, level)\"\n (keydown.arrowRight)=\"onArrowRight($event, item, level)\"\n (keydown.arrowLeft)=\"onArrowLeft($event, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item, level)\"\n (keydown.arrowRight)=\"onArrowRight($event, item, level)\"\n (keydown.arrowLeft)=\"onArrowLeft($event, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [attr.data-level]=\"level\"\n [attr.aria-disabled]=\"item.disabled ? true : null\"\n [attr.data-p-disabled]=\"item.disabled ? true : null\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item, level)\"\n (keydown.arrowRight)=\"onArrowRight($event, item, level)\"\n (keydown.arrowLeft)=\"onArrowLeft($event, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && isItemActive(item, level)) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, root: false, level: level + 1 }\" />\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n @if (!popup() || visible()) {\n <div\n #container\n [class]=\"containerClass()\"\n [style]=\"style()\"\n [style.top.px]=\"popup() ? top() : null\"\n [style.left.px]=\"popup() ? left() : null\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (startTpl()) {\n <div class=\"px-3 py-2 border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"startTpl()\" />\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), root: true, level: 0 }\" />\n @if (endTpl()) {\n <div class=\"px-3 py-2 border-t border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"endTpl()\" />\n </div>\n }\n </div>\n }\n `,\n})\nexport class TieredMenuComponent {\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly containerRef = viewChild<ElementRef<HTMLElement>>('container');\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\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 private _openedAt = 0;\n private _anchor: HTMLElement | null = null;\n\n private readonly _activeItemPath = signal<MenuItem[]>([]);\n private readonly _flipByLevel = signal<Record<number, boolean>>({});\n readonly flipByLevel = this._flipByLevel.asReadonly();\n\n readonly fTemplates = contentChildren(FTemplateDirective);\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('item'));\n readonly startTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('start'));\n readonly endTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('end'));\n\n readonly containerClass = computed(() => {\n const position = this.popup() ? 'fixed z-50' : 'relative inline-block';\n return `${position} ${this.styleClass()}`;\n });\n\n toggle(event?: Event): void {\n event?.stopPropagation();\n if (this.visible()) this.hide();\n else this.show(event);\n }\n\n show(event?: Event): void {\n event?.stopPropagation();\n this._anchor = (event?.currentTarget as HTMLElement) ?? null;\n this._openedAt = Date.now();\n this._activeItemPath.set([]);\n this._flipByLevel.set({});\n if (this._anchor) this.position();\n this._visible.set(true);\n this.onShow.emit();\n setTimeout(() => this.adjustForViewport(), 0);\n }\n\n hide(): void {\n if (!this._visible()) return;\n this._visible.set(false);\n this._activeItemPath.set([]);\n this.onHide.emit();\n }\n\n private position(): void {\n if (!this._anchor || typeof window === 'undefined') return;\n const rect = this._anchor.getBoundingClientRect();\n this._top.set(rect.bottom + 4);\n this._left.set(rect.left);\n }\n\n private adjustForViewport(): void {\n const el = this.containerRef()?.nativeElement;\n if (!el || !this._anchor || typeof window === 'undefined') return;\n const anchorRect = this._anchor.getBoundingClientRect();\n const panelRect = el.getBoundingClientRect();\n const gap = 4;\n let left = anchorRect.left;\n left = Math.max(8, Math.min(left, window.innerWidth - panelRect.width - 8));\n this._left.set(left);\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 isItemActive(item: MenuItem, level: number): boolean {\n return this._activeItemPath()[level] === item;\n }\n\n itemsAtLevel(level: number): MenuItem[] {\n return level === 0 ? this.model() : (this._activeItemPath()[level - 1]?.items ?? []);\n }\n\n onItemMouseEnter(event: MouseEvent, item: MenuItem, level: number): void {\n if (item.disabled) return;\n const path = this._activeItemPath().slice(0, level);\n if (item.items?.length) {\n path.push(item);\n const li = event.currentTarget as HTMLElement;\n const rect = li.getBoundingClientRect();\n const flip = rect.right + SUBMENU_ESTIMATED_WIDTH > window.innerWidth;\n this._flipByLevel.update(m => ({ ...m, [level]: flip }));\n }\n this._activeItemPath.set(path);\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 as Node)) {\n this.hide();\n }\n }\n\n onItemClick(e: Event, item: MenuItem, level: number): void {\n if (item.disabled) return;\n if (item.items?.length) {\n e.preventDefault();\n const path = this._activeItemPath();\n this._activeItemPath.set(\n this.isItemActive(item, level) ? path.slice(0, level) : [...path.slice(0, level), item],\n );\n return;\n }\n item.command?.({ originalEvent: e, item });\n if (this.popup()) this.hide();\n else this._activeItemPath.set([]);\n }\n\n onArrowRight(e: Event, item: MenuItem, level: number): void {\n if (!item.items?.length || item.disabled) return;\n e.preventDefault();\n e.stopPropagation();\n this._activeItemPath.set([...this._activeItemPath().slice(0, level), item]);\n queueMicrotask(() => {\n this._el.nativeElement.querySelector<HTMLElement>(`[data-level=\"${level + 1}\"]`)?.focus();\n });\n }\n\n onArrowLeft(e: Event, level: number): void {\n if (level <= 0) return;\n e.preventDefault();\n e.stopPropagation();\n const parentItem = this._activeItemPath()[level - 1];\n this._activeItemPath.set(this._activeItemPath().slice(0, level - 1));\n queueMicrotask(() => {\n const parentItems = this.itemsAtLevel(level - 1);\n const index = parentItems.indexOf(parentItem);\n this._el.nativeElement.querySelectorAll<HTMLElement>(`[data-level=\"${level - 1}\"]`)[index]?.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\"]:not([data-p-disabled])'));\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 'Enter':\n case ' ':\n if (document.activeElement instanceof HTMLElement) {\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 output,\n signal,\n viewChild,\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\nconst SUBMENU_ESTIMATED_WIDTH = 192;\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 @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.items?.length) {\n <ui-icon name=\"chevron-right\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n </ng-template>\n\n <ng-template #listTpl let-items let-level=\"level\">\n <ul\n class=\"py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\"\n role=\"menu\"\n >\n @for (item of items; 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)=\"onItemMouseEnter($event, item, level)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [class]=\"itemClass\"\n [attr.data-level]=\"level\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item, level)\"\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 [attr.data-level]=\"level\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item, level)\"\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 [attr.data-level]=\"level\"\n [attr.aria-haspopup]=\"item.items?.length ? 'menu' : null\"\n [attr.aria-expanded]=\"item.items?.length ? isItemActive(item, level) : null\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && isItemActive(item, level)) {\n <div\n class=\"absolute top-0 z-[70]\"\n [class.left-full]=\"!flipByLevel()[level]\"\n [class.ml-0.5]=\"!flipByLevel()[level]\"\n [class.right-full]=\"flipByLevel()[level]\"\n [class.mr-0.5]=\"flipByLevel()[level]\"\n >\n <ng-container [ngTemplateOutlet]=\"listTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: level + 1 }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n @if (visible()) {\n <div #container class=\"fixed z-[60]\" [style.top.px]=\"y()\" [style.left.px]=\"x()\" (keydown)=\"onKeydown($event)\">\n <ng-container [ngTemplateOutlet]=\"listTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), level: 0 }\" />\n </div>\n }\n `,\n})\nexport class ContextMenuComponent {\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly containerRef = viewChild<ElementRef<HTMLElement>>('container');\n\n readonly model = input<MenuItem[]>([]);\n readonly target = input<string>('');\n readonly global = input(false, { transform: booleanAttribute });\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\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 private readonly _activeItemPath = signal<MenuItem[]>([]);\n private readonly _flipByLevel = signal<Record<number, boolean>>({});\n readonly flipByLevel = this._flipByLevel.asReadonly();\n\n show(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this._activeItemPath.set([]);\n this._flipByLevel.set({});\n const clientX = event.clientX;\n const clientY = event.clientY;\n this._x.set(clientX);\n this._y.set(clientY);\n this._visible.set(true);\n this.onShow.emit();\n queueMicrotask(() => this.repositionRoot(clientX, clientY));\n }\n\n hide(): void {\n if (!this._visible()) return;\n this._visible.set(false);\n this._activeItemPath.set([]);\n this.onHide.emit();\n }\n\n onDocumentContextMenu(e: MouseEvent): void {\n if (this.global()) {\n this.show(e);\n return;\n }\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 as Node)) {\n this.hide();\n }\n }\n\n isItemActive(item: MenuItem, level: number): boolean {\n return this._activeItemPath()[level] === item;\n }\n\n itemsAtLevel(level: number): MenuItem[] {\n return level === 0 ? this.model() : (this._activeItemPath()[level - 1]?.items ?? []);\n }\n\n onItemMouseEnter(event: MouseEvent, item: MenuItem, level: number): void {\n if (item.disabled) return;\n const path = this._activeItemPath().slice(0, level);\n if (item.items?.length) {\n path.push(item);\n const li = event.currentTarget as HTMLElement;\n const rect = li.getBoundingClientRect();\n const flip = rect.right + SUBMENU_ESTIMATED_WIDTH > window.innerWidth;\n this._flipByLevel.update(m => ({ ...m, [level]: flip }));\n }\n this._activeItemPath.set(path);\n }\n\n onItemClick(e: Event, item: MenuItem, level: number): void {\n if (item.disabled) return;\n if (item.items?.length) {\n e.preventDefault();\n const path = this._activeItemPath();\n this._activeItemPath.set(\n this.isItemActive(item, level) ? path.slice(0, level) : [...path.slice(0, level), item],\n );\n return;\n }\n item.command?.({ originalEvent: e, item });\n this.hide();\n }\n\n onKeydown(e: KeyboardEvent): void {\n const activeEl = document.activeElement as HTMLElement | null;\n const level = Number(activeEl?.dataset['level'] ?? 0);\n const ul = activeEl?.closest('ul[role=\"menu\"]');\n const items = ul ? Array.from(ul.querySelectorAll<HTMLElement>(':scope > li > [role=\"menuitem\"]')) : [];\n const currentIndex = items.indexOf(activeEl 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 'ArrowRight':\n e.preventDefault();\n this.openFocusedSubmenu(level, currentIndex);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n this.closeCurrentLevel(level);\n break;\n case 'Escape':\n e.preventDefault();\n this.hide();\n break;\n case 'Enter':\n case ' ':\n if (activeEl) {\n e.preventDefault();\n activeEl.click();\n }\n break;\n }\n }\n\n private openFocusedSubmenu(level: number, index: number): void {\n if (index < 0) return;\n const item = this.itemsAtLevel(level)[index];\n if (!item?.items?.length || item.disabled) return;\n this._activeItemPath.set([...this._activeItemPath().slice(0, level), item]);\n queueMicrotask(() => {\n this._el.nativeElement.querySelector<HTMLElement>(`[data-level=\"${level + 1}\"]`)?.focus();\n });\n }\n\n private closeCurrentLevel(level: number): void {\n if (level <= 0) return;\n const parentItem = this._activeItemPath()[level - 1];\n this._activeItemPath.set(this._activeItemPath().slice(0, level - 1));\n queueMicrotask(() => {\n const parentItems = this.itemsAtLevel(level - 1);\n const index = parentItems.indexOf(parentItem);\n this._el.nativeElement.querySelectorAll<HTMLElement>(`[data-level=\"${level - 1}\"]`)[index]?.focus();\n });\n }\n\n private repositionRoot(clientX: number, clientY: number): void {\n const el = this.containerRef()?.nativeElement;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n let x = clientX;\n let y = clientY;\n if (x + rect.width > window.innerWidth) x = Math.max(0, clientX - rect.width);\n if (y + rect.height > window.innerHeight) y = Math.max(0, clientY - rect.height);\n this._x.set(x);\n this._y.set(y);\n }\n}\n","import {\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n inject,\n input,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type MegaMenuOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'f-megamenu',\n imports: [UiIconComponent, RouterLink, NgTemplateOutlet],\n host: { class: 'block relative', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item let-root=\"root\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else if (root) {\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]=\"orientation() === 'horizontal' ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon> }\n } @else {\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ item.label }}\n }\n </ng-template>\n\n <div [class]=\"hostRowClass()\" [style]=\"style()\">\n @if (startTpl()) {\n <div class=\"shrink-0\">\n <ng-container [ngTemplateOutlet]=\"startTpl()\" />\n </div>\n }\n\n <div class=\"md:hidden flex items-center justify-end flex-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg\">\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center w-8 h-8 rounded-md text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors duration-[var(--f-transition-duration)] cursor-pointer focus:outline-none focus-visible:ring-focus\"\n [attr.aria-expanded]=\"mobileOpen()\"\n [attr.aria-label]=\"ariaLabel() || 'Toggle menu'\"\n (click)=\"toggleMobile($event)\"\n >\n <ui-icon name=\"bars\" class=\"text-sm\"></ui-icon>\n </button>\n </div>\n\n <ul [class]=\"rootClass()\" role=\"menubar\" [attr.aria-orientation]=\"orientation()\" [attr.aria-label]=\"ariaLabel() || null\" (keydown)=\"onRootKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n <li class=\"relative\" role=\"none\" (mouseenter)=\"onRootEnter(item)\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"rootItemClass(item)\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onRootClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"rootItemClass(item)\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onRootClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"rootItemClass(item)\" (click)=\"onRootClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, root: true }\" />\n </button>\n }\n @if (item.items?.length && activeItem() === item) {\n <div\n #megaPanel\n [class]=\"panelClass()\"\n [style.grid-template-columns]=\"gridTemplateColumns(item)\"\n role=\"menu\"\n [attr.aria-label]=\"item.label ?? null\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (column of item.items; track $index) {\n @if (column.visible !== false) {\n <div [attr.data-mm-col]=\"$index\">\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 @if (link.visible !== false) {\n @let linkClass = leafItemClass(link);\n <li [class]=\"link.styleClass ?? null\" [style]=\"link.style ?? null\">\n @if (link.routerLink) {\n <a role=\"menuitem\" [class]=\"linkClass\" [routerLink]=\"link.routerLink\" [queryParams]=\"link.queryParams\" (click)=\"onLeafClick($event, link)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: link, root: false }\" />\n </a>\n } @else if (link.url) {\n <a role=\"menuitem\" [class]=\"linkClass\" [href]=\"link.url\" [target]=\"link.target ?? null\" (click)=\"onLeafClick($event, link)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: link, root: false }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"linkClass\" (click)=\"onLeafClick($event, link)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: link, root: false }\" />\n </button>\n }\n </li>\n }\n }\n </ul>\n </div>\n }\n }\n </div>\n }\n </li>\n }\n }\n </ul>\n\n @if (endTpl()) {\n <div class=\"shrink-0 ml-auto\">\n <ng-container [ngTemplateOutlet]=\"endTpl()\" />\n </div>\n }\n </div>\n\n @if (mobileOpen()) {\n <div class=\"md:hidden mt-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg\" role=\"menu\" [attr.aria-label]=\"ariaLabel() || null\">\n <ng-container [ngTemplateOutlet]=\"mobileListTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), level: 0 }\" />\n </div>\n }\n\n <ng-template #mobileContentTpl 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) {\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]=\"isMobileExpanded(item)\"></ui-icon>\n }\n </ng-template>\n\n <ng-template #mobileListTpl let-list let-level=\"level\">\n <ul [class.pl-3]=\"level > 0\">\n @for (item of list; track $index) {\n @if (item.visible !== false) {\n @let mClass = leafItemClass(item);\n <li [class]=\"item.styleClass ?? null\" [style]=\"item.style ?? null\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"mClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onMobileItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"mobileContentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"mClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onMobileItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"mobileContentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"mClass\" (click)=\"onMobileItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"mobileContentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length) {\n <div class=\"grid [transition:grid-template-rows_220ms_ease]\" [style.grid-template-rows]=\"isMobileExpanded(item) ? '1fr' : '0fr'\">\n <div class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"mobileListTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: level + 1 }\" />\n </div>\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n `,\n})\nexport class MegaMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly orientation = input<MegaMenuOrientation>('horizontal');\n readonly ariaLabel = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly startRef = contentChild<TemplateRef<unknown>>('start');\n readonly endRef = contentChild<TemplateRef<unknown>>('end');\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly startTpl = computed<TemplateRef<unknown> | null>(() => this.startRef() ?? this.namedTemplate('start'));\n readonly endTpl = computed<TemplateRef<unknown> | null>(() => this.endRef() ?? this.namedTemplate('end'));\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.itemRef() ?? this.namedTemplate('item'));\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('megaPanel');\n\n private readonly _activeItem = signal<MenuItem | null>(null);\n readonly activeItem = this._activeItem.asReadonly();\n private readonly _panelAlign = signal<'start' | 'end'>('start');\n readonly panelAlign = this._panelAlign.asReadonly();\n private readonly _mobileOpen = signal(false);\n readonly mobileOpen = this._mobileOpen.asReadonly();\n private readonly _mobileExpanded = signal<Set<MenuItem>>(new Set());\n\n // Set once a panel has been opened via click; while dirty, hovering across\n // sibling root items follows the mouse (PrimeNG-style hover-after-click).\n private _dirty = false;\n\n readonly hostRowClass = computed(() => `flex items-center gap-2 relative ${this.styleClass()}`);\n\n readonly rootClass = computed(() =>\n this.orientation() === 'vertical'\n ? 'hidden md:flex md:flex-col items-stretch gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg'\n : 'hidden md:flex items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg',\n );\n\n readonly panelClass = computed(() => {\n const alignClass = this.panelAlign() === 'end' ? 'right-0' : 'left-0';\n const posClass = this.orientation() === 'vertical' ? 'left-full top-0 ml-1' : `${alignClass} top-full mt-1`;\n return `absolute ${posClass} z-50 grid gap-8 p-5 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-max max-h-[80vh] overflow-auto`;\n });\n\n rootItemClass(item: MenuItem): string {\n if (item.disabled) {\n return '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 }\n return this.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 }\n\n leafItemClass(item: MenuItem): string {\n return item.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 }\n\n gridTemplateColumns(item: MenuItem): string {\n const count = item.items?.length ?? 1;\n return `repeat(${Math.max(1, count)}, minmax(10rem, 1fr))`;\n }\n\n isMobileExpanded(item: MenuItem): boolean {\n return this._mobileExpanded().has(item);\n }\n\n onRootEnter(item: MenuItem): void {\n if (this._dirty && item.items?.length && this.activeItem() !== item) {\n this._activeItem.set(item);\n this.scheduleViewportCheck();\n }\n }\n\n onRootClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n const opening = this.activeItem() !== item;\n this._activeItem.set(opening ? item : null);\n this._dirty = opening;\n if (opening) this.scheduleViewportCheck();\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeItem.set(null);\n this._dirty = false;\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 this._dirty = false;\n }\n\n onMobileItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this._mobileExpanded.update(s => {\n const next = new Set(s);\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._mobileOpen.set(false);\n this._mobileExpanded.set(new Set());\n }\n\n toggleMobile(e: Event): void {\n e.stopPropagation();\n this._mobileOpen.update(v => !v);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target)) {\n this._activeItem.set(null);\n this._dirty = false;\n this._mobileOpen.set(false);\n }\n }\n\n private scheduleViewportCheck(): void {\n if (typeof window === 'undefined') return;\n setTimeout(() => this.adjustForViewport());\n }\n\n private adjustForViewport(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl || typeof window === 'undefined') return;\n const rect = panelEl.getBoundingClientRect();\n this._panelAlign.set(rect.right > window.innerWidth ? 'end' : 'start');\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 const horizontal = this.orientation() === 'horizontal';\n\n const focusNext = () => items[(currentIndex + 1 + items.length) % items.length]?.focus();\n const focusPrev = () => items[(currentIndex - 1 + items.length) % items.length]?.focus();\n const openPanel = () => {\n const li = (document.activeElement as HTMLElement)?.closest('li');\n const trigger = li?.querySelector<HTMLElement>(':scope > [role=\"menuitem\"]');\n trigger?.click();\n setTimeout(() => li?.querySelector<HTMLElement>('[data-mm-col] [role=\"menuitem\"]')?.focus());\n };\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n horizontal ? focusNext() : openPanel();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n if (horizontal) focusPrev(); else this._activeItem.set(null);\n break;\n case 'ArrowDown':\n e.preventDefault();\n horizontal ? openPanel() : focusNext();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!horizontal) focusPrev();\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._activeItem.set(null);\n this._dirty = false;\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n\n onPanelKeydown(e: KeyboardEvent): void {\n e.stopPropagation();\n const panel = e.currentTarget as HTMLElement;\n const columns = Array.from(panel.querySelectorAll<HTMLElement>('[data-mm-col]'));\n const target = document.activeElement as HTMLElement;\n const colEl = target?.closest<HTMLElement>('[data-mm-col]') ?? null;\n const colIndex = colEl ? columns.indexOf(colEl) : -1;\n const colItems = colEl ? Array.from(colEl.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')) : [];\n const rowIndex = colItems.indexOf(target);\n\n const focusColumn = (col: HTMLElement | undefined) => {\n if (!col) return;\n const colItemEls = Array.from(col.querySelectorAll<HTMLElement>('[role=\"menuitem\"]'));\n (colItemEls[Math.min(rowIndex, colItemEls.length - 1)] ?? colItemEls[0])?.focus();\n };\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (colItems.length) colItems[(rowIndex + 1 + colItems.length) % colItems.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (colItems.length) colItems[(rowIndex - 1 + colItems.length) % colItems.length]?.focus();\n break;\n case 'ArrowRight':\n e.preventDefault();\n if (columns.length) focusColumn(columns[(colIndex + 1 + columns.length) % columns.length]);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n if (columns.length) focusColumn(columns[(colIndex - 1 + columns.length) % columns.length]);\n break;\n case 'Home':\n e.preventDefault();\n colItems[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n colItems[colItems.length - 1]?.focus();\n break;\n case 'Escape':\n e.preventDefault();\n this._activeItem.set(null);\n this._dirty = false;\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 { booleanAttribute, Component, computed, 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 role=\"tree\" [class.pl-4]=\"level > 0\" (keydown)=\"onKeydown($event)\">\n @for (item of list; track $index) {\n @if (item.visible !== false) {\n @let itemClass = itemClasses(item);\n <li [class]=\"item.styleClass ?? null\" [style]=\"item.style ?? null\">\n @if (item.routerLink) {\n <a\n role=\"treeitem\"\n [class]=\"itemClass\"\n [attr.aria-level]=\"level + 1\"\n [attr.aria-expanded]=\"item.items?.length ? isExpanded(item) : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"treeitem\"\n [class]=\"itemClass\"\n [attr.aria-level]=\"level + 1\"\n [attr.aria-expanded]=\"item.items?.length ? isExpanded(item) : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item, level)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"treeitem\"\n [class]=\"itemClass\"\n [attr.aria-level]=\"level + 1\"\n [attr.aria-expanded]=\"item.items?.length ? isExpanded(item) : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick($event, item, level)\"\n >\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]=\"rootClass()\" [style]=\"style()\">\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(true, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly rootClass = computed(\n () => `w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-1.5 ${this.styleClass()}`,\n );\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 itemClasses(item: MenuItem): string {\n return 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 }\n\n onItemClick(e: Event, item: MenuItem, level: number): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this.expanded.update(s => {\n const next = new Set(s);\n // Single-open mode only constrains sibling top-level panels, matching\n // PrimeNG's PanelMenu — nested groups always expand independently.\n if (level === 0 && !this.multiple()) {\n for (const it of this.model()) {\n if (it !== item) next.delete(it);\n }\n }\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 e.stopPropagation();\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 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 'ArrowRight': {\n e.preventDefault();\n const target = document.activeElement as HTMLElement;\n if (target?.getAttribute('aria-expanded') === 'false') target.click();\n break;\n }\n case 'ArrowLeft': {\n e.preventDefault();\n const target = document.activeElement as HTMLElement;\n if (target?.getAttribute('aria-expanded') === 'true') {\n target.click();\n } else {\n const parentLi = ul.parentElement?.closest('li');\n parentLi?.querySelector<HTMLElement>(':scope > [role=\"treeitem\"]')?.focus();\n }\n break;\n }\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 ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, contentChildren, input, TemplateRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-breadcrumb',\n imports: [UiIconComponent, RouterLink, NgTemplateOutlet],\n host: { class: 'block' },\n template: `\n <nav role=\"navigation\" [attr.aria-label]=\"ariaLabel()\" [class]=\"styleClass()\" [style]=\"style()\">\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 (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: home() }\" />\n } @else if (home()!.routerLink) {\n <a [class]=\"homeClass()\" [attr.aria-disabled]=\"home()!.disabled ? true : null\" [attr.tabindex]=\"home()!.disabled ? -1 : null\" [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]=\"homeClass()\" [attr.aria-disabled]=\"home()!.disabled ? true : null\" [attr.tabindex]=\"home()!.disabled ? -1 : null\" [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]=\"homeClass()\" [disabled]=\"home()!.disabled\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (model().length) {\n @if (separatorTpl()) {\n <ng-container [ngTemplateOutlet]=\"separatorTpl()\" />\n } @else {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon>\n }\n }\n </li>\n }\n @for (item of model(); track $index) {\n <li class=\"flex items-center gap-2\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else if (item.routerLink) {\n <a [class]=\"itemLinkClass(item, $last)\" [attr.aria-current]=\"$last ? 'page' : null\" [attr.aria-disabled]=\"item.disabled ? true : null\" [attr.tabindex]=\"item.disabled ? -1 : 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]=\"itemLinkClass(item, $last)\" [attr.aria-current]=\"$last ? 'page' : null\" [attr.aria-disabled]=\"item.disabled ? true : null\" [attr.tabindex]=\"item.disabled ? -1 : 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]=\"itemLinkClass(item, $last)\" [attr.aria-current]=\"$last ? 'page' : null\" [disabled]=\"item.disabled\" (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) {\n @if (separatorTpl()) {\n <ng-container [ngTemplateOutlet]=\"separatorTpl()\" />\n } @else {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon>\n }\n }\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 readonly ariaLabel = input<string>('Breadcrumb');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n private readonly fTemplates = contentChildren(FTemplateDirective);\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('item'));\n readonly separatorTpl = computed<TemplateRef<unknown> | null>(() => this.namedTemplate('separator'));\n\n readonly homeClass = computed(() => {\n const interactive = !this.home()?.disabled;\n return `text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors focus:outline-none focus-visible:ring-focus ${interactive ? 'cursor-pointer' : 'pointer-events-none opacity-50 cursor-not-allowed'}`;\n });\n\n itemLinkClass(item: MenuItem, last: boolean): string {\n if (last) return 'transition-colors text-(--f-text-color) font-medium pointer-events-none focus:outline-none focus-visible:ring-focus';\n const interactive = !item.disabled;\n return `transition-colors text-(--f-text-muted-color) hover:text-(--f-text-color) focus:outline-none focus-visible:ring-focus ${interactive ? 'cursor-pointer' : 'pointer-events-none opacity-50 cursor-not-allowed'}`;\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n item.command?.({ originalEvent: e, item });\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type SpeedDialDirection =\n | 'up'\n | 'down'\n | 'left'\n | 'right'\n | 'up-left'\n | 'up-right'\n | 'down-left'\n | 'down-right';\nexport type SpeedDialType = 'linear' | 'circle' | 'semi-circle' | 'quarter-circle';\n\nconst SEMI_CIRCLE_ARCS: Partial<Record<SpeedDialDirection, [number, number]>> = {\n up: [180, 360],\n down: [0, 180],\n left: [90, 270],\n right: [-90, 90],\n};\n\nconst QUARTER_CIRCLE_ARCS: Partial<Record<SpeedDialDirection, [number, number]>> = {\n 'up-left': [180, 270],\n 'up-right': [270, 360],\n 'down-left': [90, 180],\n 'down-right': [0, 90],\n};\n\n@Component({\n selector: 'f-speeddial',\n imports: [UiIconComponent],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscapeKey()',\n },\n template: `\n <div [class]=\"containerClass()\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <div class=\"contents\" role=\"menu\" [attr.aria-label]=\"ariaLabel() || null\">\n @if (visible()) {\n @for (item of model(); track $index) {\n <button\n type=\"button\"\n role=\"menuitem\"\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 [attr.aria-label]=\"item.label || null\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'circle'\" class=\"text-sm\"></ui-icon>\n </button>\n }\n }\n </div>\n <button\n #toggleButton\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 disabled:cursor-default disabled:pointer-events-none\"\n [class.rotate-45]=\"visible() && rotateAnimation() && !hideIcon()\"\n [class.relative]=\"type() !== 'linear'\"\n [class.z-10]=\"type() !== 'linear'\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"visible()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n aria-haspopup=\"menu\"\n (click)=\"onToggleClick($event)\"\n >\n <ui-icon [name]=\"buttonIcon()\" class=\"text-base\"></ui-icon>\n </button>\n </div>\n @if (mask() && visible()) {\n <div class=\"fixed inset-0 z-40 bg-(--f-mask-background)\" (click)=\"hide()\"></div>\n }\n `,\n})\nexport class SpeedDialComponent {\n readonly model = input<MenuItem[]>([]);\n readonly icon = input<string>('plus');\n readonly showIcon = input<string>('');\n readonly hideIcon = input<string>('');\n readonly direction = input<SpeedDialDirection>('up');\n readonly rotateAnimation = input(true, { transform: booleanAttribute });\n readonly type = input<SpeedDialType>('linear');\n readonly radius = input<number>(0);\n readonly transitionDelay = input<number>(30);\n readonly mask = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly hideOnClickOutside = input(true, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly visible = model(false);\n\n readonly onClick = output<MouseEvent>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onVisibleChange = output<boolean>();\n\n private readonly _el = inject(ElementRef);\n private readonly _toggleBtn = viewChild<ElementRef<HTMLButtonElement>>('toggleButton');\n\n readonly hostClass = computed(() => `relative inline-flex ${this.styleClass()}`);\n\n readonly effectiveRadius = computed(() => this.radius() || this.model().length * 20);\n\n readonly buttonIcon = computed(() => {\n if (!this.visible() && this.showIcon()) return this.showIcon();\n if (this.visible() && this.hideIcon()) return this.hideIcon();\n return this.showIcon() || this.icon();\n });\n\n onDocumentClick(e: MouseEvent): void {\n if (this.visible() && this.hideOnClickOutside() && !this._el.nativeElement.contains(e.target)) {\n this.hide();\n }\n }\n\n onEscapeKey(): void {\n if (!this.visible()) return;\n this.hide();\n this._toggleBtn()?.nativeElement.focus();\n }\n\n readonly containerClass = computed(() => {\n if (this.type() !== 'linear') 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 'up-left': 'flex flex-col-reverse items-center gap-2',\n 'up-right': 'flex flex-col-reverse items-center gap-2',\n 'down-left': 'flex flex-col items-center gap-2',\n 'down-right': 'flex flex-col items-center gap-2',\n };\n return dirMap[this.direction()];\n });\n\n itemStyle(i: number): Record<string, string> {\n const total = this.model().length;\n const delay = (this.visible() ? i : total - i - 1) * this.transitionDelay();\n const style: Record<string, string> = { 'transition-delay': `${delay}ms` };\n const type = this.type();\n if (type === 'linear') return style;\n\n const r = this.effectiveRadius();\n let deg: number;\n if (type === 'circle') {\n deg = total > 0 ? (360 / total) * i : 0;\n } else {\n const arcs = type === 'semi-circle' ? SEMI_CIRCLE_ARCS : QUARTER_CIRCLE_ARCS;\n const [startDeg, endDeg] = arcs[this.direction()] ?? [0, 180];\n const step = total > 1 ? (endDeg - startDeg) / (total - 1) : 0;\n deg = startDeg + step * i;\n }\n const rad = (deg * Math.PI) / 180;\n style['position'] = 'absolute';\n style['transform'] = `translate(${Math.cos(rad) * r}px, ${Math.sin(rad) * r}px)`;\n return style;\n }\n\n show(): void {\n if (this.visible() || this.disabled()) return;\n this.visible.set(true);\n this.onVisibleChange.emit(true);\n this.onShow.emit();\n }\n\n hide(): void {\n if (!this.visible()) return;\n this.visible.set(false);\n this.onVisibleChange.emit(false);\n this.onHide.emit();\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.visible() ? this.hide() : this.show();\n }\n\n onToggleClick(event: MouseEvent): void {\n this.onClick.emit(event);\n this.toggle();\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this.hide();\n }\n}\n","import { Component, computed, ElementRef, input, signal, viewChild } 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]': 'hostClass()' },\n template: `\n <div [class]=\"containerClass()\">\n <div\n #list\n class=\"contents\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-orientation]=\"orientation()\"\n (keydown)=\"onListKeydown($event)\"\n >\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n <button\n type=\"button\"\n role=\"menuitem\"\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 [style.transform]=\"'scale(' + itemScale($index) + ')'\"\n [class.opacity-60]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [attr.title]=\"item.label\"\n [attr.aria-label]=\"item.label || null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (mouseenter)=\"onHover($index)\"\n (mouseleave)=\"onHoverLeave()\"\n (focus)=\"onHover($index)\"\n (blur)=\"onHoverLeave()\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'app-window'\" class=\"text-xl\"></ui-icon>\n </button>\n }\n }\n </div>\n </div>\n `,\n})\nexport class DockComponent {\n readonly model = input<MenuItem[]>([]);\n readonly position = input<DockPosition>('bottom');\n readonly ariaLabel = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n private readonly _list = viewChild<ElementRef<HTMLElement>>('list');\n\n private readonly _hoveredIndex = signal<number | null>(null);\n readonly hoveredIndex = this._hoveredIndex.asReadonly();\n\n readonly hostClass = computed(() => `inline-flex ${this.styleClass()}`);\n\n readonly orientation = computed(() => (this.position() === 'left' || this.position() === 'right' ? 'vertical' : 'horizontal'));\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 ${this.styleClass()}`;\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 itemScale(i: number): number {\n const h = this.hoveredIndex();\n if (h === null) return 1;\n const distance = Math.abs(h - i);\n if (distance === 0) return 1.5;\n if (distance === 1) return 1.25;\n if (distance === 2) return 1.1;\n return 1;\n }\n\n onHover(i: number): void {\n this._hoveredIndex.set(i);\n }\n\n onHoverLeave(): void {\n this._hoveredIndex.set(null);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n }\n\n onListKeydown(event: KeyboardEvent): void {\n const buttons = this.itemButtons();\n if (!buttons.length) return;\n const horizontal = this.position() === 'top' || this.position() === 'bottom';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const prevKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const current = buttons.indexOf(document.activeElement as HTMLElement);\n\n switch (event.key) {\n case nextKey:\n event.preventDefault();\n buttons[(current + 1 + buttons.length) % buttons.length]?.focus();\n break;\n case prevKey:\n event.preventDefault();\n buttons[(current - 1 + buttons.length) % buttons.length]?.focus();\n break;\n case 'Home':\n event.preventDefault();\n buttons[0]?.focus();\n break;\n case 'End':\n event.preventDefault();\n buttons[buttons.length - 1]?.focus();\n break;\n }\n }\n\n private itemButtons(): HTMLElement[] {\n return Array.from(this._list()?.nativeElement.querySelectorAll<HTMLElement>('button[role=\"menuitem\"]') ?? []);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { InputTextDirective } from '../input-text/input-text.directive';\n\n@Directive({\n selector: '[fInputMask]',\n hostDirectives: [\n { directive: InputTextDirective, inputs: ['invalid', 'touched', 'variant', 'size', 'fluid'] },\n ],\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 readonly autoClear = input(true, { transform: booleanAttribute });\n // When true, the model value is the raw unmasked characters; otherwise it includes mask literals.\n readonly unmask = input(false, { transform: booleanAttribute });\n readonly characterPattern = input<string>('[a-zA-Z]');\n\n readonly onComplete = output<void>();\n readonly onInputEvent = output<string>({ alias: 'onInput' });\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n private get tokens(): Record<string, RegExp> {\n const pattern = this.characterPattern();\n return {\n '9': /[0-9]/,\n a: new RegExp(pattern),\n '*': new RegExp(`(?:${pattern})|[0-9]`),\n };\n }\n\n onInput(e: Event): void {\n const el = e.target as HTMLInputElement;\n if (el.readOnly) return;\n const formatted = this.format(el.value);\n el.value = formatted;\n const emitValue = this.unmask() ? this.stripLiterals(formatted) : formatted;\n this._onChange(emitValue);\n this.onInputEvent.emit(emitValue);\n if (formatted && this.isComplete(formatted)) this.onComplete.emit();\n }\n\n onBlur(): void {\n const el = this._el.nativeElement;\n if (this.autoClear() && el.value && !this.isComplete(el.value)) {\n el.value = '';\n this._onChange('');\n }\n this._onTouched();\n }\n\n private isComplete(value: string): boolean {\n const mask = this.fInputMask();\n if (!mask) return false;\n for (let i = 0; i < mask.length; i++) {\n if (this.tokens[mask[i]] && value[i] === this.slotChar()) return false;\n }\n return true;\n }\n\n private format(raw: string): string {\n const mask = this.fInputMask();\n if (!mask) return raw;\n const tokens = this.tokens;\n const usedTokenChars = [...mask].filter(c => tokens[c]);\n if (!usedTokenChars.length) return raw;\n\n const chars = raw.split('').filter(ch => usedTokenChars.some(tc => tokens[tc].test(ch)));\n if (!chars.length) return '';\n\n let out = '';\n let ci = 0;\n let filledAny = false;\n for (const m of mask) {\n const re = tokens[m];\n if (re) {\n while (ci < chars.length && !re.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 stripLiterals(value: string): string {\n const mask = this.fInputMask();\n if (!mask) return value;\n const tokens = this.tokens;\n let out = '';\n for (let i = 0; i < value.length; i++) {\n if (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 contentChild,\n ElementRef,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport type InputOtpSize = 'small' | 'large' | null;\n\nexport interface InputOtpChangeEvent {\n value: string;\n originalEvent: Event;\n}\n\nexport interface InputOtpCellContext {\n $implicit: string;\n index: number;\n events: {\n input: (event: Event) => void;\n keydown: (event: KeyboardEvent) => void;\n paste: (event: ClipboardEvent) => void;\n focus: (event: FocusEvent) => void;\n blur: () => void;\n };\n}\n\n@Component({\n selector: 'f-inputotp',\n imports: [NgTemplateOutlet],\n host: { class: 'inline-block' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputOtpComponent), multi: true }],\n template: `\n <div [class]=\"groupClass()\">\n @for (i of indices(); track i) {\n @if (cellTemplate()) {\n <ng-container [ngTemplateOutlet]=\"cellTemplate()!\" [ngTemplateOutletContext]=\"cellContext(i)\"></ng-container>\n } @else {\n <input\n #cell\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.aria-label]=\"'Digit ' + (i + 1)\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.inputmode]=\"integerOnly() ? 'numeric' : 'text'\"\n [class]=\"cellClass()\"\n [value]=\"digits()[i] || ''\"\n [type]=\"mask() ? 'password' : 'text'\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n (input)=\"onDigitInput($event, i)\"\n (keydown)=\"onKeydown($event, i)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocusHandler($event, i)\"\n (blur)=\"handleBlur()\"\n />\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 readonly = input(false, { transform: booleanAttribute });\n readonly integerOnly = input(true, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly size = input<InputOtpSize>(null);\n readonly styleClass = input<string>('');\n\n readonly onChangeEvent = output<InputOtpChangeEvent>({ alias: 'onChange' });\n readonly onFocus = output<FocusEvent>();\n readonly onBlur = output<void>();\n\n readonly cellTemplate = contentChild<TemplateRef<InputOtpCellContext>>('cell');\n readonly cells = viewChildren<ElementRef<HTMLInputElement>>('cell');\n\n private readonly sizeClass = computed(() => {\n switch (this.size()) {\n case 'small': return 'w-8 h-9 text-sm';\n case 'large': return 'w-12 h-13 text-xl';\n default: return 'w-10 h-11 text-lg';\n }\n });\n\n readonly groupClass = computed(() => `flex items-center gap-2 ${this.styleClass()}`);\n\n readonly cellClass = computed(() => {\n const base = `${this.sizeClass()} text-center 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 disabled:cursor-not-allowed`;\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 cellContext(i: number): InputOtpCellContext {\n return {\n $implicit: this.digits()[i] || '',\n index: i,\n events: {\n input: (e: Event) => this.onDigitInput(e, i),\n keydown: (e: KeyboardEvent) => this.onKeydown(e, i),\n paste: (e: ClipboardEvent) => this.onPaste(e),\n focus: (e: FocusEvent) => this.onFocusHandler(e, i),\n blur: () => this.handleBlur(),\n },\n };\n }\n\n onDigitInput(e: Event, i: number): void {\n if (this.readonly()) return;\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(e);\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 (this.readonly()) return;\n if (e.key === 'Backspace') {\n if (!this.digits()[i] && i > 0) {\n e.preventDefault();\n const next = [...this.digits()];\n next[i - 1] = '';\n this._digits.set(next);\n this.emitValue(e);\n this.cells()[i - 1]?.nativeElement.focus();\n }\n return;\n }\n if (e.key === 'ArrowLeft' && i > 0) { this.cells()[i - 1]?.nativeElement.focus(); return; }\n if (e.key === 'ArrowRight' && i < this.length() - 1) { this.cells()[i + 1]?.nativeElement.focus(); return; }\n if (this.integerOnly() && e.key.length === 1 && !/[0-9]/.test(e.key) && !e.ctrlKey && !e.metaKey && !e.altKey) {\n e.preventDefault();\n }\n }\n\n onPaste(e: ClipboardEvent): void {\n if (this.readonly() || this.disabled()) return;\n e.preventDefault();\n let text = e.clipboardData?.getData('text') ?? '';\n if (this.integerOnly() && /[^0-9]/.test(text)) {\n text = text.replace(/[^0-9]/g, '');\n }\n const chars = text.split('').slice(0, this.length());\n this._digits.set(chars);\n this.emitValue(e);\n this.cells()[Math.min(chars.length, this.length() - 1)]?.nativeElement.focus();\n }\n\n onFocusHandler(e: FocusEvent, _i: number): void {\n (e.target as HTMLInputElement).select();\n this.onFocus.emit(e);\n }\n\n handleBlur(): void {\n this._onTouched();\n this.onBlur.emit();\n }\n\n private emitValue(originalEvent: Event): void {\n const value = this.digits().join('');\n this._onChange(value);\n this._onTouched();\n this.onChangeEvent.emit({ value, originalEvent });\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 input,\n numberAttribute,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport type SliderOrientation = 'horizontal' | 'vertical';\n\nexport interface SliderChangeEvent {\n value?: number;\n values?: [number, number];\n originalEvent: Event;\n}\n\n@Component({\n selector: 'f-slider',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\n template: `\n <div\n #track\n [class]=\"trackClass()\"\n (mousedown)=\"onTrackDown($event)\"\n >\n <div [class]=\"rangeClass()\" [style.left.%]=\"orientation() === 'horizontal' ? rangeStartPercent() : null\" [style.width.%]=\"orientation() === 'horizontal' ? rangePercent() : null\"\n [style.bottom.%]=\"orientation() === 'vertical' ? rangeStartPercent() : null\" [style.height.%]=\"orientation() === 'vertical' ? rangePercent() : null\"></div>\n\n @if (range()) {\n <div\n [class]=\"handleClass()\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"start()\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [style.left.%]=\"orientation() === 'horizontal' ? startPercent() : null\"\n [style.bottom.%]=\"orientation() === 'vertical' ? startPercent() : null\"\n (mousedown)=\"onHandleDown($event, 0)\"\n (touchstart)=\"onHandleTouchStart($event, 0)\"\n (keydown)=\"onKeydown($event, 0)\"\n ></div>\n }\n <div\n [class]=\"handleClass()\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"end()\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [style.left.%]=\"orientation() === 'horizontal' ? endPercent() : null\"\n [style.bottom.%]=\"orientation() === 'vertical' ? endPercent() : null\"\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 _track = viewChild<ElementRef<HTMLElement>>('track');\n\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n readonly range = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly orientation = input<SliderOrientation>('horizontal');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onChangeEvent = output<SliderChangeEvent>({ alias: 'onChange' });\n readonly onSlideEnd = output<SliderChangeEvent>();\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 readonly hostClass = computed(() => {\n const base = this.orientation() === 'vertical' ? 'inline-block h-48 px-2' : 'block w-full py-2';\n return `${base} ${this.styleClass()}`;\n });\n\n readonly trackClass = computed(() => {\n const dims = this.orientation() === 'vertical' ? 'relative w-1.5 h-full' : 'relative h-1.5 w-full';\n const state = this.disabled() ? 'opacity-60 pointer-events-none' : 'cursor-pointer';\n return `${dims} rounded-full bg-(--f-content-hover-background) ${state}`;\n });\n\n readonly rangeClass = computed(() => 'absolute rounded-full bg-primary');\n\n readonly handleClass = computed(() => {\n const center = this.orientation() === 'vertical' ? 'left-1/2 -translate-x-1/2' : 'top-1/2 -translate-y-1/2';\n return `absolute ${center} 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 });\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 fromPointer(clientX: number, clientY: number): number {\n const rect = this._track()!.nativeElement.getBoundingClientRect();\n const pct = this.orientation() === 'vertical'\n ? Math.min(1, Math.max(0, (rect.bottom - clientY) / rect.height))\n : 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.fromPointer(e.clientX, e.clientY);\n if (this.range()) {\n const idx = Math.abs(value - this.start()) < Math.abs(value - this.end()) ? 0 : 1;\n this.setValue(idx, value, e);\n this.startDrag(idx);\n } else {\n this.setValue(1, value, e);\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)), e);\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.fromPointer(ev.clientX, ev.clientY), ev);\n };\n const onUp = (ev: MouseEvent) => {\n if (this._dragIdx === null) return;\n this._dragIdx = null;\n this._onTouched();\n this.emitSlideEnd(ev);\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.fromPointer(ev.touches[0].clientX, ev.touches[0].clientY), ev);\n };\n const onEnd = (ev: TouchEvent) => {\n if (this._dragIdx === null) return;\n this._dragIdx = null;\n this._onTouched();\n this.emitSlideEnd(ev);\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 emitSlideEnd(originalEvent: Event): void {\n this.onSlideEnd.emit(\n this.range() ? { values: [this.start(), this.end()], originalEvent } : { value: this.end(), originalEvent },\n );\n }\n\n private setValue(idx: 0 | 1, value: number, originalEvent: Event): 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 this.onChangeEvent.emit(\n this.range() ? { values: [this.start(), this.end()], originalEvent } : { value: this.end(), originalEvent },\n );\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]': 'hostClass()', '[style]': 'style()' },\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() && !readonly()\"\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-valuetext]=\"displayValue()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-readonly]=\"readonly() ? 'true' : null\"\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 @if (showValue()) {\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 >{{ displayValue() }}</text>\n }\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 readonly valueTemplate = input<string>('{value}');\n readonly ariaLabel = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => `inline-block ${this.styleClass()}`);\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 readonly displayValue = computed(() => this.valueTemplate().replace('{value}', String(this.value())));\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 === 'PageUp') next = current + step * 10;\n else if (e.key === 'PageDown') next = current - step * 10;\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(next);\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 this.setValue(stepped);\n }\n\n private setValue(next: number): void {\n const clamped = Math.min(this.max(), Math.max(this.min(), next));\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 contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\ninterface CascadeOption {\n [key: string]: unknown;\n}\n\n@Component({\n selector: 'f-cascadeselect',\n imports: [UiIconComponent, NgTemplateOutlet],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CascadeSelectComponent),\n multi: true,\n },\n ],\n host: {\n '[class]': 'hostClass()',\n '[style]': 'style()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\">\n <button\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"tree\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [class]=\"triggerClass()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (valueTpl()) {\n <span class=\"flex-1 min-w-0 truncate text-left text-sm\">\n <ng-container [ngTemplateOutlet]=\"valueTpl()\" [ngTemplateOutletContext]=\"{ $implicit: value(), placeholder: placeholder() }\" />\n </span>\n } @else {\n <span\n class=\"flex-1 min-w-0 truncate text-left text-sm\"\n [class.text-(--f-form-field-placeholder-color)]=\"!selectedPath().length\"\n >\n {{\n selectedPath().length ? selectedPath().join(' / ') : placeholder()\n }}\n </span>\n }\n <span class=\"flex items-center gap-1 shrink-0\">\n @if (showClear() && selectedPath().length && !disabled() && !loading()) {\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\n [name]=\"dropdownIcon()\"\n class=\"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 }\n </span>\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 role=\"tree\"\n >\n @if (levels()[0].length) {\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 role=\"group\"\n >\n @for (opt of level; track getLabel(opt)) {\n <li\n role=\"treeitem\"\n [attr.aria-level]=\"$index + 1\"\n [attr.aria-expanded]=\"getChildren(opt, $index).length ? isActive(opt, $index) : null\"\n [attr.aria-selected]=\"getChildren(opt, $index).length ? null : isSelectedOption(opt)\"\n >\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 (mouseenter)=\"onOptionHover(opt, $index)\"\n >\n <span class=\"truncate\">\n @if (getChildren(opt, $index).length && groupTpl()) {\n <ng-container [ngTemplateOutlet]=\"groupTpl()\" [ngTemplateOutletContext]=\"{ $implicit: opt, level: $index }\" />\n } @else if (optionTpl()) {\n <ng-container [ngTemplateOutlet]=\"optionTpl()\" [ngTemplateOutletContext]=\"{ $implicit: opt, level: $index }\" />\n } @else {\n {{ getLabel(opt) }}\n }\n </span>\n @if (getChildren(opt, $index).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 } @else {\n <div class=\"w-full min-w-[10rem]\">\n @if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\n <div class=\"py-6 px-4 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)\">{{ emptyMessage() }}</span>\n </div>\n }\n </div>\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 optionGroupChildren = input<string[]>([]);\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 readonly showClear = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly dropdownIcon = input<string>('chevron-down');\n readonly emptyMessage = input<string>('No options');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\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 _focusedPath = signal<CascadeOption[]>([]);\n readonly focusedPath = this._focusedPath.asReadonly();\n private readonly _value = signal<unknown>(null);\n readonly value = this._value.asReadonly();\n private readonly _selectedPath = signal<string[]>([]);\n readonly selectedPath = this._selectedPath.asReadonly();\n private readonly _selectedOptionPath = signal<CascadeOption[]>([]);\n readonly selectedOptionPath = this._selectedOptionPath.asReadonly();\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly valueRef = contentChild<TemplateRef<unknown>>('value');\n readonly optionRef = contentChild<TemplateRef<unknown>>('option');\n readonly groupRef = contentChild<TemplateRef<unknown>>('group');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly valueTpl = computed<TemplateRef<unknown> | null>(() =>\n this.valueRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'value')?.templateRef ?? null,\n );\n readonly optionTpl = computed<TemplateRef<unknown> | null>(() =>\n this.optionRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'option')?.templateRef ?? null,\n );\n readonly groupTpl = computed<TemplateRef<unknown> | null>(() =>\n this.groupRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'group')?.templateRef ?? null,\n );\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() =>\n this.emptyRef() ?? this.fTemplates().find((t) => t.fTemplate() === 'empty')?.templateRef ?? null,\n );\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() || this.loading()\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 this.activePath().forEach((opt, i) => {\n const children = this.getChildren(opt, i);\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 private childrenField(level: number): string {\n return this.optionGroupChildren()[level] ?? this.optionChildren();\n }\n getChildren(opt: CascadeOption, level: number): CascadeOption[] {\n return (opt[this.childrenField(level)] as CascadeOption[]) ?? [];\n }\n\n isActive(opt: CascadeOption, level: number): boolean {\n return this._activePath()[level] === opt;\n }\n\n isSelectedOption(opt: CascadeOption): boolean {\n const path = this._selectedOptionPath();\n return path.length > 0 && path[path.length - 1] === opt;\n }\n\n toggleOpen(): void {\n if (this.disabled() || this.loading()) return;\n this.open() ? this.closePanel() : this.openPanel();\n }\n\n private openPanel(): void {\n this._open.set(true);\n const sel = this._selectedOptionPath();\n if (sel.length) {\n this._activePath.set(sel.slice(0, -1));\n this._focusedPath.set(sel);\n } else {\n this._activePath.set([]);\n this._focusedPath.set([]);\n }\n }\n\n private closePanel(): void {\n this._open.set(false);\n this._onTouched();\n }\n\n private openGroup(opt: CascadeOption, level: number): void {\n const path = [...this._activePath().slice(0, level), opt];\n this._activePath.set(path);\n this._focusedPath.set(path);\n }\n\n onOptionHover(opt: CascadeOption, level: number): void {\n if (!this.open() || !this.getChildren(opt, level).length) return;\n this.openGroup(opt, level);\n }\n\n onOptionClick(opt: CascadeOption, level: number): void {\n const children = this.getChildren(opt, level);\n if (children.length) {\n this.openGroup(opt, level);\n return;\n }\n const path = [...this._activePath().slice(0, level), opt];\n this._value.set(this.getValue(opt));\n this._selectedPath.set(path.map((p) => this.getLabel(p)));\n this._selectedOptionPath.set(path);\n this._onChange(this._value());\n this.closePanel();\n }\n\n onKeyDown(e: KeyboardEvent): void {\n if (this.disabled() || this.loading()) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this.open() ? this.moveFocus(1) : this.openPanel();\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (this.open()) this.moveFocus(-1);\n break;\n case 'ArrowRight':\n if (this.open()) {\n e.preventDefault();\n this.drillIn();\n }\n break;\n case 'ArrowLeft':\n if (this.open()) {\n e.preventDefault();\n this.drillOut();\n }\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.open() ? this.selectFocused() : this.openPanel();\n break;\n case 'Escape':\n if (this.open()) {\n e.preventDefault();\n this.closePanel();\n }\n break;\n }\n }\n\n private moveFocus(delta: number): void {\n const level = Math.max(0, this._focusedPath().length - 1);\n const column = this.levels()[level] ?? [];\n if (!column.length) return;\n const current = this._focusedPath()[level];\n const idx = current ? column.indexOf(current) : -1;\n const next = Math.min(column.length - 1, Math.max(0, idx + delta));\n const path = [...this._focusedPath().slice(0, level), column[next]];\n this._focusedPath.set(path);\n }\n\n private drillIn(): void {\n const level = this._focusedPath().length - 1;\n if (level < 0) {\n this.moveFocus(1);\n return;\n }\n const opt = this._focusedPath()[level];\n const children = this.getChildren(opt, level);\n if (!children.length) return;\n this.openGroup(opt, level);\n this._focusedPath.set([...this._focusedPath().slice(0, level + 1), children[0]]);\n }\n\n private drillOut(): void {\n const level = this._focusedPath().length - 1;\n if (level <= 0) return;\n this._activePath.set(this._activePath().slice(0, level - 1));\n this._focusedPath.set(this._focusedPath().slice(0, level));\n }\n\n private selectFocused(): void {\n const level = this._focusedPath().length - 1;\n if (level < 0) return;\n this.onOptionClick(this._focusedPath()[level], level);\n }\n\n clear(e: Event): void {\n e.stopPropagation();\n this._value.set(null);\n this._selectedPath.set([]);\n this._selectedOptionPath.set([]);\n this._onChange(null);\n this._onTouched();\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this.closePanel();\n }\n }\n\n writeValue(v: unknown): void {\n this._value.set(v);\n if (v == null) {\n this._selectedPath.set([]);\n this._selectedOptionPath.set([]);\n return;\n }\n const path = this.findPath(this.options(), v, 0);\n this._selectedPath.set(path.map((p) => this.getLabel(p)));\n this._selectedOptionPath.set(path);\n }\n\n private findPath(\n options: CascadeOption[],\n value: unknown,\n level: number,\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, level), value, level + 1, 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 { booleanAttribute, Directive, input } from '@angular/core';\n\nexport type KeyFilterPreset = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'hex' | 'alpha' | 'alphanum' | 'email';\n\nconst PRESETS: Record<KeyFilterPreset, RegExp> = {\n pint: /\\d/,\n int: /[\\d-]/,\n pnum: /[\\d.]/,\n num: /[\\d.-]/,\n money: /[\\d.,\\s]/,\n hex: /[0-9a-fA-F]/,\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 readonly validateOnPaste = input(true, { transform: booleanAttribute });\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 || !this.validateOnPaste()) 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 { booleanAttribute, Component, computed, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\nconst FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n@Component({\n selector: 'f-confirmpopup',\n imports: [UiIconComponent, ButtonComponent],\n host: {\n class: 'block',\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 [class]=\"styleClass()\"\n [style]=\"style()\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n role=\"alertdialog\"\n [attr.aria-labelledby]=\"c.header ? headerId : null\"\n [attr.aria-describedby]=\"c.message ? descId : null\"\n (click)=\"$event.stopPropagation()\"\n (keydown.tab)=\"onTab($event)\"\n (keydown.shift.tab)=\"onShiftTab($event)\"\n >\n <div class=\"flex items-start gap-3\">\n @if (resolvedIcon(c)) {\n <ui-icon [name]=\"resolvedIcon(c)\" class=\"text-lg shrink-0 mt-0.5\" [style.color]=\"'var(--f-yellow-500)'\"></ui-icon>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) { <div [id]=\"headerId\" class=\"text-sm font-semibold text-(--f-text-color)\">{{ c.header }}</div> }\n @if (c.message) { <p [id]=\"descId\" 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 <f-button\n severity=\"secondary\"\n [outlined]=\"true\"\n size=\"small\"\n [label]=\"resolvedRejectLabel(c)\"\n [icon]=\"resolvedRejectIcon(c)\"\n [styleClass]=\"c.rejectButtonStyleClass ?? rejectButtonStyleClass()\"\n [autofocus]=\"defaultFocus() === 'reject'\"\n (onClick)=\"reject(c.reject)\"\n ></f-button>\n }\n @if (c.acceptVisible !== false) {\n <f-button\n size=\"small\"\n [label]=\"resolvedAcceptLabel(c)\"\n [icon]=\"resolvedAcceptIcon(c)\"\n [styleClass]=\"c.acceptButtonStyleClass ?? acceptButtonStyleClass()\"\n [autofocus]=\"defaultFocus() === 'accept'\"\n (onClick)=\"accept(c.accept)\"\n ></f-button>\n }\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmPopupComponent {\n private static idCounter = 0;\n protected readonly headerId = `f-confirmpopup-header-${++ConfirmPopupComponent.idCounter}`;\n protected readonly descId = `f-confirmpopup-desc-${ConfirmPopupComponent.idCounter}`;\n\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n readonly acceptLabel = input<string>('');\n readonly rejectLabel = input<string>('');\n readonly acceptIcon = input<string>('');\n readonly rejectIcon = input<string>('');\n readonly acceptButtonStyleClass = input<string>('');\n readonly rejectButtonStyleClass = input<string>('');\n readonly defaultFocus = input<'accept' | 'reject' | 'none'>('accept');\n readonly closeOnEscape = input(true, { transform: booleanAttribute });\n readonly dismissable = input(true, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\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\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 }, 0);\n }\n });\n\n if (typeof window !== 'undefined') {\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n if (this.activeConfirmation()) this.confirmationService.close();\n });\n }\n }\n\n resolvedIcon(c: { icon?: string }): string {\n return c.icon || '';\n }\n\n resolvedAcceptLabel(c: { acceptLabel?: string }): string {\n return c.acceptLabel || this.acceptLabel() || 'Yes';\n }\n\n resolvedRejectLabel(c: { rejectLabel?: string }): string {\n return c.rejectLabel || this.rejectLabel() || 'No';\n }\n\n resolvedAcceptIcon(c: { acceptIcon?: string }): string {\n return c.acceptIcon || this.acceptIcon();\n }\n\n resolvedRejectIcon(c: { rejectIcon?: string }): string {\n return c.rejectIcon || this.rejectIcon();\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 const closeOnEscape = c?.closeOnEscape ?? this.closeOnEscape();\n if (c && closeOnEscape) 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 if (!this.dismissable()) return;\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 private getFocusable(): HTMLElement[] {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl) return [];\n return Array.from(panelEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n }\n\n onTab(event: Event): void {\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[focusables.length - 1]) {\n event.preventDefault();\n focusables[0].focus();\n }\n }\n\n onShiftTab(event: Event): void {\n const focusables = this.getFocusable();\n if (!focusables.length) return;\n if (document.activeElement === focusables[0]) {\n event.preventDefault();\n focusables[focusables.length - 1].focus();\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 style?: Record<string, string> | null;\n styleClass?: string;\n closable?: boolean;\n closeOnEscape?: boolean;\n modal?: 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, DestroyRef, effect, inject, Injector } from '@angular/core';\nimport { DOCUMENT, 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: { class: 'block', '(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\" [class.pointer-events-none]=\"s.config.modal === false\" [style.z-index]=\"40 + i * 2\">\n @if (s.config.modal !== false) {\n <div\n class=\"dynamicdialog-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\"\n (click)=\"s.config.dismissableMask && s.config.closable !== false && s.ref.close()\"\n ></div>\n }\n <div\n [class]=\"panelClass(s)\"\n [style]=\"panelStyle(s)\"\n role=\"dialog\"\n [attr.aria-modal]=\"s.config.modal !== false ? 'true' : null\"\n [attr.aria-labelledby]=\"s.config.header ? 'f-dynamicdialog-header-' + s.id : null\"\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 [id]=\"'f-dynamicdialog-header-' + s.id\" 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 private readonly _doc = inject(DOCUMENT);\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 effect(() => {\n const anyModal = this.dialogService.states().some((s) => s.config.modal !== false);\n this._doc.body.style.overflow = anyModal ? 'hidden' : '';\n });\n\n inject(DestroyRef).onDestroy(() => {\n this._doc.body.style.overflow = '';\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 panelStyle(state: DynamicDialogState): Record<string, string> {\n return {\n width: state.config.width || '32rem',\n ...(state.config.height ? { height: state.config.height } : {}),\n ...(state.config.style ?? {}),\n };\n }\n\n panelClass(state: DynamicDialogState): string {\n const base = '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)] pointer-events-auto';\n return `${base} ${state.config.styleClass ?? ''}`.trim();\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', '[attr.aria-live]': \"'polite'\" },\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 [class.opacity-60]=\"disabled()\"\n [attr.tabindex]=\"disabled() ? null : 0\"\n role=\"button\"\n [attr.aria-disabled]=\"disabled() || null\"\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 @if (closable()) {\n <button\n type=\"button\"\n class=\"w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) focus-visible:outline-none focus-visible:ring-focus\"\n aria-label=\"Close\"\n (click)=\"close()\"\n >\n <ui-icon name=\"check\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n `,\n})\nexport class InplaceComponent {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly closable = input(true, { 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() || this.active()) return;\n this.active.set(true);\n this.onActivate.emit();\n }\n\n close(): void {\n if (this.disabled()) return;\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, contentChild, contentChildren, input, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TreeNode } from '../../interfaces/tree-node';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { ScrollerComponent } from '../scroller/scroller.component';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\nexport type TreeDropPosition = 'before' | 'after' | 'inside';\n\nexport interface TreeNodeDropEvent {\n dragNode: TreeNode;\n dropNode: TreeNode;\n position: TreeDropPosition;\n}\n\nexport interface TreeNodeContextMenuEvent {\n originalEvent: MouseEvent;\n node: TreeNode;\n}\n\nexport interface TreeFilterEvent {\n originalEvent: Event;\n query: string;\n matchCount: number;\n}\n\ninterface FlatNode {\n node: TreeNode;\n key: string;\n level: number;\n leaf: boolean;\n loading: boolean;\n disabled: 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, NgTemplateOutlet, ScrollerComponent],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"containerClass()\" [style]=\"style()\" [attr.aria-disabled]=\"disabled() ? 'true' : null\">\n @if (headerTpl()) {\n <div class=\"mb-2\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n\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 [disabled]=\"disabled()\" placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($event)\" />\n @if (filterText()) {\n <button type=\"button\" class=\"inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color) cursor-pointer\" (click)=\"clearFilter()\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\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 if (!flatNodes().length) {\n @if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\n <div class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">{{ emptyMessage() }}</div>\n }\n } @else if (virtualScroll()) {\n <f-scroller [items]=\"flatNodes()\" [itemSize]=\"virtualScrollItemSize()\" scrollHeight=\"20rem\">\n <ng-template let-row>\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n </ng-template>\n </f-scroller>\n } @else {\n <ul role=\"tree\" class=\"[&>li]:list-none\">\n @for (row of flatNodes(); track row.key) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n </ul>\n }\n\n @if (footerTpl()) {\n <div class=\"mt-2\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n </div>\n\n <ng-template #rowTpl let-row>\n <li\n role=\"treeitem\"\n [attr.aria-expanded]=\"row.leaf ? null : isExpanded(row.key)\"\n [attr.aria-selected]=\"selectionMode() ? isSelected(row.key) : null\"\n [attr.aria-level]=\"row.level + 1\"\n [attr.aria-disabled]=\"row.disabled ? 'true' : null\"\n [attr.tabindex]=\"effectiveFocusedKey() === row.key ? 0 : -1\"\n [attr.draggable]=\"dragEnabled(row) ? true : null\"\n class=\"flex items-center gap-1.5 px-2 py-1.5 text-sm rounded-md cursor-pointer transition-colors outline-none focus-visible:ring-focus\"\n [style.padding-left.px]=\"row.level * 16 + 8\"\n [class]=\"rowClass(row)\"\n (click)=\"onNodeClick(row)\"\n (contextmenu)=\"onNodeContextMenu($event, row)\"\n (keydown)=\"onRowKeyDown($event, row)\"\n (dragstart)=\"onDragStart($event, row)\"\n (dragover)=\"onDragOver($event, row)\"\n (dragleave)=\"onDragLeave($event, row)\"\n (drop)=\"onDrop($event, row)\"\n (dragend)=\"onDragEnd()\"\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 @if (row.loading) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-[10px]\"></ui-icon>\n } @else {\n <ui-icon [name]=\"isExpanded(row.key) ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon>\n }\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 (nodeTemplateFor(row.node); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: row.node }\" />\n } @else {\n @if (nodeIcon(row)) { <ui-icon [name]=\"nodeIcon(row)\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ row.node.label }}</span>\n }\n </li>\n </ng-template>\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 filterBy = input<string>('label');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No records found');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n readonly propagateSelectionUp = input(true, { transform: booleanAttribute });\n readonly propagateSelectionDown = input(true, { transform: booleanAttribute });\n readonly lazy = input(false, { transform: booleanAttribute });\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n readonly virtualScrollItemSize = input<number>(32);\n readonly dragdropScope = input<string>('');\n\n readonly selectionChange = output<TreeNode[]>();\n readonly nodeSelect = output<TreeNode>();\n readonly nodeUnselect = output<TreeNode>();\n readonly nodeExpand = output<TreeNode>();\n readonly nodeCollapse = output<TreeNode>();\n readonly nodeContextMenu = output<TreeNodeContextMenuEvent>();\n readonly nodeDrop = output<TreeNodeDropEvent>();\n readonly onFilter = output<TreeFilterEvent>();\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 readonly _structureVersion = signal(0);\n private readonly _focusedKey = signal<string | null>(null);\n readonly focusedKey = this._focusedKey.asReadonly();\n\n private readonly _dragKey = signal<string | null>(null);\n private readonly _dropTargetKey = signal<string | null>(null);\n private readonly _dropPosition = signal<TreeDropPosition | null>(null);\n\n private _keyToNode = new Map<string, TreeNode>();\n private _keyToParentKey = new Map<string, string | null>();\n private _keyToContainer = new Map<string, TreeNode[]>();\n private _typeaheadBuffer = '';\n private _typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly footerTpl = computed<TemplateRef<unknown> | null>(() => this.footerRef() ?? this.namedTemplate('footer'));\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() => this.emptyRef() ?? this.namedTemplate('empty'));\n\n readonly containerClass = computed(() => {\n const base = 'w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-2';\n const disabledClass = this.disabled() ? 'opacity-60 pointer-events-none' : '';\n return `${base} ${disabledClass} ${this.styleClass()}`;\n });\n\n readonly flatNodes = computed<FlatNode[]>(() => {\n this._structureVersion();\n const expanded = this.expandedKeys();\n const q = this.filterText().trim().toLowerCase();\n const out: FlatNode[] = [];\n this._keyToNode.clear();\n this._keyToParentKey.clear();\n this._keyToContainer.clear();\n this._flatten(this.value(), out, 0, expanded, q, null, this.value());\n return out;\n });\n\n readonly effectiveFocusedKey = computed(() => this.focusedKey() ?? this.flatNodes()[0]?.key ?? null);\n\n nodeTemplateFor(node: TreeNode): TemplateRef<unknown> | null {\n if (node.type) {\n const specific = this.fTemplates().find(t => t.fTemplate() === node.type)?.templateRef;\n if (specific) return specific;\n }\n return this.namedTemplate('node');\n }\n\n nodeIcon(row: FlatNode): string {\n const n = row.node;\n if (n.icon) return n.icon;\n if (!row.leaf) return (this.isExpanded(row.key) ? n.expandedIcon : n.collapsedIcon) ?? '';\n return '';\n }\n\n rowClass(row: FlatNode): string {\n const parts: string[] = [];\n if (row.disabled) {\n parts.push('opacity-50 cursor-not-allowed');\n } else if (this.isSelected(row.key) && this.selectionMode() !== 'checkbox') {\n parts.push('bg-(--f-highlight-background) text-(--f-highlight-color)');\n } else {\n parts.push('text-(--f-text-color) hover:bg-(--f-content-hover-background)');\n }\n if (row.node.styleClass) parts.push(row.node.styleClass);\n const dropClass = this.rowDropClass(row);\n if (dropClass) parts.push(dropClass);\n return parts.join(' ');\n }\n\n rowDropClass(row: FlatNode): string {\n if (this._dropTargetKey() !== row.key) return '';\n switch (this._dropPosition()) {\n case 'before': return 'border-t-2 border-primary';\n case 'after': return 'border-b-2 border-primary';\n case 'inside': return 'bg-primary/10 ring-1 ring-inset ring-primary/40';\n default: return '';\n }\n }\n\n private matchesFilter(node: TreeNode, query: string): boolean {\n if (!query) return true;\n const fields = this.filterBy().split(',').map(f => f.trim()).filter(Boolean);\n if (!fields.length) fields.push('label');\n return fields.some(field => String((node as Record<string, unknown>)[field] ?? '').toLowerCase().includes(query));\n }\n\n private _flatten(\n nodes: TreeNode[],\n out: FlatNode[],\n level: number,\n expanded: Set<string>,\n query: string,\n parentKey: string | null,\n container: TreeNode[],\n ): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n this._keyToParentKey.set(key, parentKey);\n this._keyToContainer.set(key, container);\n const isLazyParent = node.leaf === false;\n const isLeaf = !isLazyParent && (!node.children || node.children.length === 0);\n const selfMatch = !query || this.matchesFilter(node, query);\n\n let childRows: FlatNode[] = [];\n let childMatch = false;\n if (!isLeaf && node.children?.length) {\n childRows = [];\n childMatch = this._flatten(node.children, childRows, level + 1, expanded, query, key, node.children);\n }\n\n if (selfMatch || childMatch) {\n out.push({\n node,\n key,\n level,\n leaf: isLeaf,\n loading: node['loading'] === true,\n disabled: node.selectable === false,\n });\n if (!isLeaf && (expanded.has(key) || query)) out.push(...childRows);\n anyMatch = true;\n }\n }\n return anyMatch;\n }\n\n onFilterInput(e: Event): void {\n const value = (e.target as HTMLInputElement).value;\n this._filterText.set(value);\n this.onFilter.emit({ originalEvent: e, query: value, matchCount: this.flatNodes().length });\n }\n\n clearFilter(): void {\n this._filterText.set('');\n }\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.setExpanded(key, !this.isExpanded(key));\n }\n\n private setExpanded(key: string, expand: boolean): void {\n const node = this._keyToNode.get(key);\n if (!node) return;\n this.expandedKeys.update(s => {\n const next = new Set(s);\n if (expand) next.add(key); else next.delete(key);\n return next;\n });\n if (expand) {\n if (this.lazy() && !node.children) node['loading'] = true;\n this.nodeExpand.emit(node);\n } else {\n this.nodeCollapse.emit(node);\n }\n }\n\n setNodeChildren(key: string, children: TreeNode[]): void {\n const node = this._keyToNode.get(key);\n if (!node) return;\n node.children = children;\n node['loading'] = false;\n this._structureVersion.update(v => v + 1);\n }\n\n refresh(): void {\n this._structureVersion.update(v => v + 1);\n }\n\n onNodeClick(row: FlatNode): void {\n if (this.disabled() || row.disabled) return;\n this._focusedKey.set(row.key);\n const mode = this.selectionMode();\n if (!mode) return;\n if (mode === 'single') {\n const wasSelected = this.selectedKeys().has(row.key);\n this._selectedKeys.set(wasSelected ? new Set() : new Set([row.key]));\n wasSelected ? this.nodeUnselect.emit(row.node) : this.nodeSelect.emit(row.node);\n } else if (mode === 'multiple') {\n const wasSelected = this.selectedKeys().has(row.key);\n this._selectedKeys.update(s => {\n const next = new Set(s);\n wasSelected ? next.delete(row.key) : next.add(row.key);\n return next;\n });\n wasSelected ? this.nodeUnselect.emit(row.node) : this.nodeSelect.emit(row.node);\n } else if (mode === 'checkbox') {\n const next = new Set(this.selectedKeys());\n const willSelect = !next.has(row.key);\n if (this.propagateSelectionDown()) this.setDescendants(row.node, willSelect, next);\n else willSelect ? next.add(row.key) : next.delete(row.key);\n if (this.propagateSelectionUp()) this.propagateUp(row.key, next);\n this._selectedKeys.set(next);\n willSelect ? this.nodeSelect.emit(row.node) : this.nodeUnselect.emit(row.node);\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 propagateUp(key: string, set: Set<string>): void {\n let parentKey = this._keyToParentKey.get(key) ?? null;\n while (parentKey) {\n const parent = this._keyToNode.get(parentKey);\n const children = parent?.children ?? [];\n const allSelected = children.length > 0 && children.every(c => set.has(assignKey(c)));\n allSelected ? set.add(parentKey) : set.delete(parentKey);\n parentKey = this._keyToParentKey.get(parentKey) ?? null;\n }\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 onNodeContextMenu(e: MouseEvent, row: FlatNode): void {\n if (this.disabled()) return;\n this.nodeContextMenu.emit({ originalEvent: e, node: row.node });\n }\n\n dragEnabled(row: FlatNode): boolean {\n return !this.disabled() && !!this.dragdropScope() && row.node.draggable !== false;\n }\n\n private dropAllowedInside(row: FlatNode): boolean {\n return !!this.dragdropScope() && row.node.droppable !== false;\n }\n\n onDragStart(e: DragEvent, row: FlatNode): void {\n if (!this.dragEnabled(row)) { e.preventDefault(); return; }\n e.dataTransfer?.setData('text/plain', row.key);\n this._dragKey.set(row.key);\n }\n\n onDragOver(e: DragEvent, row: FlatNode): void {\n const dragKey = this._dragKey();\n if (!this.dragdropScope() || !dragKey || dragKey === row.key) return;\n e.preventDefault();\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const y = e.clientY - rect.top;\n let position: TreeDropPosition;\n if (y < rect.height * 0.25) position = 'before';\n else if (y > rect.height * 0.75) position = 'after';\n else position = this.dropAllowedInside(row) ? 'inside' : (y < rect.height / 2 ? 'before' : 'after');\n this._dropTargetKey.set(row.key);\n this._dropPosition.set(position);\n }\n\n onDragLeave(_e: DragEvent, row: FlatNode): void {\n if (this._dropTargetKey() === row.key) {\n this._dropTargetKey.set(null);\n this._dropPosition.set(null);\n }\n }\n\n onDrop(e: DragEvent, row: FlatNode): void {\n e.preventDefault();\n e.stopPropagation();\n const dragKey = this._dragKey();\n const position = this._dropPosition();\n if (dragKey && position && this._dropTargetKey() === row.key) {\n this.performDrop(dragKey, row.key, position);\n }\n this.clearDragState();\n }\n\n onDragEnd(): void {\n this.clearDragState();\n }\n\n private clearDragState(): void {\n this._dragKey.set(null);\n this._dropTargetKey.set(null);\n this._dropPosition.set(null);\n }\n\n private isDescendant(ancestor: TreeNode, node: TreeNode): boolean {\n for (const child of ancestor.children ?? []) {\n if (child === node || this.isDescendant(child, node)) return true;\n }\n return false;\n }\n\n private performDrop(dragKey: string, dropKey: string, position: TreeDropPosition): void {\n if (dragKey === dropKey) return;\n const dragNode = this._keyToNode.get(dragKey);\n const dropNode = this._keyToNode.get(dropKey);\n const sourceContainer = this._keyToContainer.get(dragKey);\n if (!dragNode || !dropNode || !sourceContainer) return;\n if (this.isDescendant(dragNode, dropNode)) return;\n\n const srcIdx = sourceContainer.indexOf(dragNode);\n if (srcIdx === -1) return;\n sourceContainer.splice(srcIdx, 1);\n\n if (position === 'inside') {\n dropNode.children = dropNode.children ?? [];\n dropNode.children.push(dragNode);\n this.setExpanded(dropKey, true);\n } else {\n const targetContainer = this._keyToContainer.get(dropKey) ?? [];\n const idx = targetContainer.indexOf(dropNode);\n const insertAt = position === 'before' ? idx : idx + 1;\n targetContainer.splice(Math.max(insertAt, 0), 0, dragNode);\n }\n\n this._structureVersion.update(v => v + 1);\n this.nodeDrop.emit({ dragNode, dropNode, position });\n }\n\n onRowKeyDown(e: KeyboardEvent, row: FlatNode): void {\n if (this.disabled()) return;\n const rows = this.flatNodes();\n const idx = rows.findIndex(r => r.key === row.key);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this.focusByIndex(rows, idx + 1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n this.focusByIndex(rows, idx - 1);\n break;\n case 'ArrowRight':\n e.preventDefault();\n if (!row.leaf && !this.isExpanded(row.key)) this.setExpanded(row.key, true);\n else if (!row.leaf) this.focusByIndex(rows, idx + 1);\n break;\n case 'ArrowLeft':\n e.preventDefault();\n if (!row.leaf && this.isExpanded(row.key)) this.setExpanded(row.key, false);\n else {\n const parentKey = this._keyToParentKey.get(row.key);\n if (parentKey) this._focusedKey.set(parentKey);\n }\n break;\n case 'Home':\n e.preventDefault();\n this.focusByIndex(rows, 0);\n break;\n case 'End':\n e.preventDefault();\n this.focusByIndex(rows, rows.length - 1);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.onNodeClick(row);\n break;\n default:\n if (e.key.length === 1 && /[a-z0-9]/i.test(e.key)) this.handleTypeahead(e.key, rows);\n break;\n }\n }\n\n private focusByIndex(rows: FlatNode[], idx: number): void {\n if (idx < 0 || idx >= rows.length) return;\n this._focusedKey.set(rows[idx].key);\n }\n\n private handleTypeahead(char: string, rows: FlatNode[]): void {\n this._typeaheadBuffer += char.toLowerCase();\n if (this._typeaheadTimer) clearTimeout(this._typeaheadTimer);\n this._typeaheadTimer = setTimeout(() => { this._typeaheadBuffer = ''; }, 500);\n const startIdx = rows.findIndex(r => r.key === this.effectiveFocusedKey());\n const ordered = [...rows.slice(startIdx + 1), ...rows.slice(0, startIdx + 1)];\n const match = ordered.find(r => String(r.node.label ?? '').toLowerCase().startsWith(this._typeaheadBuffer));\n if (match) this._focusedKey.set(match.key);\n }\n}\n","import { Component, computed, contentChild, contentChildren, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\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]': 'hostClass()' },\n template: `\n <div [class]=\"layout() === 'horizontal' ? 'flex items-start' : 'flex flex-col'\" [style]=\"style()\">\n @for (item of value(); track dataKey() ? getKey(item) : $index) {\n <div [class]=\"layout() === 'horizontal' ? 'flex-1 flex flex-col items-center' : 'flex gap-4'\">\n @if (layout() === 'horizontal') {\n @if (oppositeTemplateResolved()) {\n <div class=\"mb-3 text-center px-2\">\n <ng-container [ngTemplateOutlet]=\"oppositeTemplateResolved()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n } @else if (beforeMarker($index)) {\n <div class=\"flex-1 text-right pr-2\">\n <ng-container [ngTemplateOutlet]=\"contentTemplateResolved()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n } @else if (oppositeTemplateResolved()) {\n <div class=\"flex-1 text-right pr-2\">\n <ng-container [ngTemplateOutlet]=\"oppositeTemplateResolved()\" [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 @if (markerTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"markerTemplateResolved()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <div class=\"w-3 h-3 rounded-full bg-primary shrink-0 ring-4 ring-(--f-content-background)\"></div>\n }\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]=\"contentTemplateResolved()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n } @else if (afterMarker($index)) {\n <div class=\"flex-1 pb-6\">\n <ng-container [ngTemplateOutlet]=\"contentTemplateResolved()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n } @else if (oppositeTemplateResolved()) {\n <div class=\"flex-1 pb-6\">\n <ng-container [ngTemplateOutlet]=\"oppositeTemplateResolved()\" [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 readonly dataKey = input<string | null>(null);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n private readonly defaultTpl = contentChild(TemplateRef);\n private readonly contentTplRef = contentChild<TemplateRef<unknown>>('content');\n private readonly oppositeTplRef = contentChild<TemplateRef<unknown>>('opposite');\n private readonly markerTplRef = contentChild<TemplateRef<unknown>>('marker');\n private readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly contentTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.contentTplRef() ?? this.fTemplates().find(t => t.fTemplate() === 'content')?.templateRef ?? this.defaultTpl() ?? null,\n );\n readonly oppositeTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.oppositeTplRef() ?? this.fTemplates().find(t => t.fTemplate() === 'opposite')?.templateRef ?? null,\n );\n readonly markerTemplateResolved = computed<TemplateRef<unknown> | null>(\n () => this.markerTplRef() ?? this.fTemplates().find(t => t.fTemplate() === 'marker')?.templateRef ?? null,\n );\n\n beforeMarker(index: number): boolean {\n return this.layout() !== 'horizontal' && (this.align() === 'right' || (this.align() === 'alternate' && index % 2 === 1));\n }\n\n afterMarker(index: number): boolean {\n return this.layout() !== 'horizontal' && (this.align() === 'left' || (this.align() === 'alternate' && index % 2 === 0));\n }\n\n getKey(item: T): unknown {\n const key = this.dataKey();\n return key ? (item as Record<string, unknown>)?.[key] : undefined;\n }\n}\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, effect, 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';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport type DataViewLayout = 'list' | 'grid';\n\nexport interface DataViewLazyLoadEvent {\n first: number;\n rows: number;\n sortField: string | null;\n sortOrder: number;\n}\n\n@Component({\n selector: 'f-dataview',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent],\n host: { '[class]': 'hostClass()' },\n template: `\n <div class=\"w-full\" [style]=\"style()\">\n @if (headerTemplateResolved()) {\n <div class=\"mb-3\">\n <ng-container [ngTemplateOutlet]=\"headerTemplateResolved()\" />\n </div>\n }\n\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 (displayedValue().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 displayedValue(); track $index) {\n <ng-container [ngTemplateOutlet]=\"activeTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, layout: layout() }\" />\n }\n </div>\n\n @if (paginator()) {\n <f-paginator\n [rows]=\"rows()\"\n [totalRecords]=\"effectiveTotalRecords()\"\n [first]=\"first()\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n (onPageChange)=\"handlePageChange($event)\"\n />\n }\n } @else {\n @if (emptyTemplateResolved()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplateResolved()\" />\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 }\n\n @if (footerTemplateResolved()) {\n <div class=\"mt-3\">\n <ng-container [ngTemplateOutlet]=\"footerTemplateResolved()\" />\n </div>\n }\n </div>\n `,\n})\nexport class DataViewComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly showLayoutToggle = input(true, { transform: booleanAttribute });\n readonly paginator = input(false, { transform: booleanAttribute });\n readonly rows = model<number>(10);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly totalRecords = input<number>(0);\n readonly first = model<number>(0);\n readonly sortField = input<string | null>(null);\n readonly sortOrder = input<1 | -1>(1);\n readonly lazy = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly layout = model<DataViewLayout>('list');\n\n readonly onPageChange = output<PaginatorState>();\n readonly onLazyLoad = output<DataViewLazyLoadEvent>();\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n private readonly itemTpl = contentChild(TemplateRef);\n private readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly listTemplateResolved = computed(\n () => this.fTemplates().find(t => t.fTemplate() === 'list')?.templateRef ?? this.itemTpl() ?? null,\n );\n readonly gridTemplateResolved = computed(\n () => this.fTemplates().find(t => t.fTemplate() === 'grid')?.templateRef ?? this.itemTpl() ?? null,\n );\n readonly headerTemplateResolved = computed(\n () => this.fTemplates().find(t => t.fTemplate() === 'header')?.templateRef ?? null,\n );\n readonly footerTemplateResolved = computed(\n () => this.fTemplates().find(t => t.fTemplate() === 'footer')?.templateRef ?? null,\n );\n readonly emptyTemplateResolved = computed(\n () => this.fTemplates().find(t => t.fTemplate() === 'empty')?.templateRef ?? null,\n );\n readonly activeTemplate = computed(() => (this.layout() === 'grid' ? this.gridTemplateResolved() : this.listTemplateResolved()));\n\n readonly sortedValue = computed(() => {\n const field = this.sortField();\n if (!field || this.lazy()) return this.value();\n const order = this.sortOrder();\n return [...this.value()].sort((a, b) => {\n const v1 = (a as Record<string, unknown>)?.[field];\n const v2 = (b as Record<string, unknown>)?.[field];\n if (v1 == null && v2 != null) return -1;\n if (v1 != null && v2 == null) return 1;\n if (v1 == null && v2 == null) return 0;\n if (typeof v1 === 'string' && typeof v2 === 'string') return order * v1.localeCompare(v2);\n const n1 = v1 as number;\n const n2 = v2 as number;\n return order * (n1 < n2 ? -1 : n1 > n2 ? 1 : 0);\n });\n });\n\n readonly displayedValue = computed(() => {\n const data = this.sortedValue();\n if (!this.paginator() || this.lazy()) return data;\n const first = this.first();\n return data.slice(first, first + this.rows());\n });\n\n readonly effectiveTotalRecords = computed(() => this.totalRecords() || this.value().length);\n\n constructor() {\n effect(() => {\n if (!this.lazy()) return;\n this.onLazyLoad.emit({\n first: this.first(),\n rows: this.rows(),\n sortField: this.sortField(),\n sortOrder: this.sortOrder(),\n });\n });\n }\n\n handlePageChange(event: PaginatorState): void {\n this.first.set(event.first);\n this.rows.set(event.rows);\n this.onPageChange.emit(event);\n }\n}\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, DestroyRef, effect, inject, input, model, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport interface CarouselResponsiveOptions {\n breakpoint: string;\n numVisible: number;\n numScroll: number;\n}\n\nexport type CarouselOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'f-carousel',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: {\n '[class]': 'hostClass()',\n role: 'region',\n 'aria-roledescription': 'carousel',\n tabindex: '0',\n '(keydown)': 'onKeydown($event)',\n },\n template: `\n @if (headerTpl()) {\n <div class=\"mb-2\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n }\n\n <div class=\"flex items-center gap-2\" [class.flex-col]=\"isVertical()\">\n @if (showNavigators()) {\n <button type=\"button\"\n aria-label=\"Previous\"\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]=\"isBackwardDisabled()\"\n (click)=\"prev()\"\n ><ui-icon [name]=\"isVertical() ? 'chevron-up' : 'chevron-left'\" class=\"text-sm\"></ui-icon></button>\n }\n\n <div\n class=\"flex-1 overflow-hidden\"\n [style.height]=\"isVertical() ? verticalViewPortHeight() : null\"\n [attr.aria-live]=\"autoplayInterval() > 0 ? 'polite' : 'off'\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n >\n <div\n class=\"flex transition-transform duration-300 ease-out\"\n [class.flex-col]=\"isVertical()\"\n [class.h-full]=\"isVertical()\"\n [style.transform]=\"isVertical() ? 'translateY(-' + translatePercent() + '%)' : 'translateX(-' + translatePercent() + '%)'\"\n >\n @for (item of value(); track $index) {\n <div\n class=\"shrink-0\"\n [style.width]=\"isVertical() ? '100%' : itemWidthPercent() + '%'\"\n [style.height]=\"isVertical() ? itemWidthPercent() + '%' : null\"\n role=\"group\"\n [attr.aria-label]=\"'Slide ' + ($index + 1) + ' of ' + value().length\"\n [attr.aria-hidden]=\"!isItemActive($index)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n </div>\n\n @if (showNavigators()) {\n <button type=\"button\"\n aria-label=\"Next\"\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]=\"isForwardDisabled()\"\n (click)=\"next()\"\n ><ui-icon [name]=\"isVertical() ? 'chevron-down' : 'chevron-right'\" class=\"text-sm\"></ui-icon></button>\n }\n </div>\n\n @if (showIndicators()) {\n <ul class=\"flex justify-center gap-1.5 mt-3 list-none p-0 m-0\" role=\"tablist\" (keydown)=\"onIndicatorKeydown($event)\">\n @for (i of pageIndices(); track i) {\n <li role=\"presentation\">\n <button type=\"button\"\n role=\"tab\"\n [attr.aria-label]=\"'Page ' + (i + 1)\"\n [attr.aria-selected]=\"i === page()\"\n [tabindex]=\"i === page() ? 0 : -1\"\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 </li>\n }\n </ul>\n }\n\n @if (footerTpl()) {\n <div class=\"mt-2\">\n <ng-container [ngTemplateOutlet]=\"footerTpl()\" />\n </div>\n }\n `,\n})\nexport class CarouselComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly numVisible = input<number>(1);\n readonly numScroll = input<number>(1);\n readonly responsiveOptions = input<CarouselResponsiveOptions[] | null>(null);\n readonly orientation = input<CarouselOrientation>('horizontal');\n readonly verticalViewPortHeight = input<string>('300px');\n readonly showIndicators = input(true, { transform: booleanAttribute });\n readonly showNavigators = input(true, { transform: booleanAttribute });\n readonly circular = input(false, { transform: booleanAttribute });\n readonly autoplayInterval = input<number>(0);\n readonly styleClass = input<string>('');\n\n readonly page = model<number>(0);\n readonly onPage = output<number>();\n\n readonly hostClass = computed(() => `block w-full relative ${this.styleClass()}`.trim());\n readonly isVertical = computed(() => this.orientation() === 'vertical');\n\n private readonly itemTplDefault = contentChild(TemplateRef);\n private readonly fTemplates = contentChildren(FTemplateDirective);\n readonly headerTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'header')?.templateRef ?? null);\n readonly footerTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'footer')?.templateRef ?? null);\n readonly itemTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'item')?.templateRef ?? this.itemTplDefault() ?? null);\n\n private readonly destroyRef = inject(DestroyRef);\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private touchStartX = 0;\n private touchStartY = 0;\n\n private readonly _windowWidth = signal(typeof window !== 'undefined' ? window.innerWidth : Number.POSITIVE_INFINITY);\n\n readonly effectiveOptions = computed(() => {\n const opts = this.responsiveOptions();\n if (!opts?.length) return { numVisible: this.numVisible(), numScroll: this.numScroll() };\n const width = this._windowWidth();\n const sorted = [...opts].sort((a, b) => parseInt(a.breakpoint, 10) - parseInt(b.breakpoint, 10));\n const match = sorted.find(o => width <= parseInt(o.breakpoint, 10));\n return match ? { numVisible: match.numVisible, numScroll: match.numScroll } : { numVisible: this.numVisible(), numScroll: this.numScroll() };\n });\n\n readonly itemWidthPercent = computed(() => 100 / Math.max(1, this.effectiveOptions().numVisible));\n readonly maxOffset = computed(() => Math.max(0, this.value().length - this.effectiveOptions().numVisible));\n readonly offset = computed(() => Math.min(this.page() * this.effectiveOptions().numScroll, this.maxOffset()));\n readonly translatePercent = computed(() => this.offset() * this.itemWidthPercent());\n\n readonly pageCount = computed(() => {\n const { numVisible, numScroll } = this.effectiveOptions();\n const len = this.value().length;\n if (len <= numVisible) return 1;\n return Math.max(1, Math.ceil((len - numVisible) / numScroll) + 1);\n });\n readonly pageIndices = computed(() => Array.from({ length: this.pageCount() }, (_, i) => i));\n\n readonly isForwardDisabled = computed(() => this.value().length === 0 || (!this.circular() && this.page() >= this.pageCount() - 1));\n readonly isBackwardDisabled = computed(() => this.value().length === 0 || (!this.circular() && this.page() <= 0));\n\n constructor() {\n this.destroyRef.onDestroy(() => this.stopAutoplay());\n\n effect(() => {\n this.autoplayInterval();\n this.startAutoplay();\n });\n\n effect(() => {\n const count = this.pageCount();\n if (this.page() > count - 1) this.page.set(Math.max(0, count - 1));\n });\n\n if (typeof window !== 'undefined') {\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed())\n .subscribe(() => this._windowWidth.set(window.innerWidth));\n }\n }\n\n isItemActive(index: number): boolean {\n const { numVisible } = this.effectiveOptions();\n const start = this.offset();\n return index >= start && index < start + numVisible;\n }\n\n private setPage(p: number): void {\n const clamped = Math.max(0, Math.min(p, this.pageCount() - 1));\n if (clamped === this.page()) return;\n this.page.set(clamped);\n this.onPage.emit(clamped);\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 onKeydown(event: KeyboardEvent): void {\n const forwardKey = this.isVertical() ? 'ArrowDown' : 'ArrowRight';\n const backwardKey = this.isVertical() ? 'ArrowUp' : 'ArrowLeft';\n if (event.key === forwardKey) {\n event.preventDefault();\n this.next();\n } else if (event.key === backwardKey) {\n event.preventDefault();\n this.prev();\n }\n }\n\n onIndicatorKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') return;\n event.preventDefault();\n const target = event.target as HTMLElement;\n const li = target.closest('li');\n const sibling = event.key === 'ArrowRight' ? li?.nextElementSibling : li?.previousElementSibling;\n const button = sibling?.querySelector<HTMLButtonElement>('button');\n if (!button || !li?.parentElement) return;\n const index = Array.from(li.parentElement.children).indexOf(sibling as Element);\n this.goToPage(index);\n button.focus();\n }\n\n onTouchStart(event: TouchEvent): void {\n const touch = event.touches[0];\n if (!touch) return;\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n }\n\n onTouchMove(event: TouchEvent): void {\n if (event.cancelable) event.preventDefault();\n }\n\n onTouchEnd(event: TouchEvent): void {\n const touch = event.changedTouches[0];\n if (!touch) return;\n const diff = this.isVertical() ? touch.clientY - this.touchStartY : touch.clientX - this.touchStartX;\n if (Math.abs(diff) > 20) {\n if (diff < 0) this.next();\n else this.prev();\n }\n }\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","import {\n AfterViewInit,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\n\nexport interface ScrollPanelScrollEvent {\n originalEvent: Event;\n scrollTop: number;\n scrollLeft: number;\n}\n\nlet nextScrollPanelId = 0;\n\n@Component({\n selector: 'f-scrollpanel',\n host: { class: 'block' },\n styles: [\n `\n .f-scrollpanel-content {\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n .f-scrollpanel-content::-webkit-scrollbar {\n display: none;\n }\n .f-scrollpanel-bar {\n position: absolute;\n background: var(--f-content-border-color);\n border-radius: 999px;\n opacity: 0;\n transition:\n opacity var(--f-transition-duration),\n background-color var(--f-transition-duration);\n }\n .f-scrollpanel-wrapper:hover .f-scrollpanel-bar,\n .f-scrollpanel-bar:focus-visible,\n .f-scrollpanel-bar-dragging {\n opacity: 1;\n }\n .f-scrollpanel-bar:hover,\n .f-scrollpanel-bar-dragging {\n background: var(--f-primary-color);\n }\n .f-scrollpanel-bar-hidden {\n display: none;\n }\n .f-scrollpanel-bar-x {\n left: 0;\n bottom: 2px;\n height: 8px;\n cursor: pointer;\n outline: none;\n }\n .f-scrollpanel-bar-y {\n top: 0;\n right: 2px;\n width: 8px;\n cursor: pointer;\n outline: none;\n }\n `,\n ],\n template: `\n <div class=\"f-scrollpanel-wrapper relative\" [class]=\"styleClass()\" [style]=\"style()\">\n <div\n #content\n [id]=\"contentId\"\n class=\"f-scrollpanel-content overflow-auto\"\n [style.max-height]=\"maxHeight()\"\n [style.max-width]=\"maxWidth()\"\n (scroll)=\"onContentScroll($event)\"\n (mouseenter)=\"updateBars()\"\n >\n <ng-content />\n </div>\n <div\n #barX\n class=\"f-scrollpanel-bar f-scrollpanel-bar-x\"\n role=\"scrollbar\"\n tabindex=\"0\"\n aria-orientation=\"horizontal\"\n [attr.aria-valuenow]=\"scrollLeftPercent()\"\n [attr.aria-controls]=\"contentId\"\n [class.f-scrollpanel-bar-hidden]=\"xBarHidden()\"\n [class.f-scrollpanel-bar-dragging]=\"draggingAxis() === 'x'\"\n [style.width.%]=\"xBarSize()\"\n [style.left.%]=\"xBarPos()\"\n (pointerdown)=\"onBarPointerDown($event, 'x')\"\n (keydown)=\"onBarKeyDown($event, 'x')\"\n ></div>\n <div\n #barY\n class=\"f-scrollpanel-bar f-scrollpanel-bar-y\"\n role=\"scrollbar\"\n tabindex=\"0\"\n aria-orientation=\"vertical\"\n [attr.aria-valuenow]=\"scrollTopPercent()\"\n [attr.aria-controls]=\"contentId\"\n [class.f-scrollpanel-bar-hidden]=\"yBarHidden()\"\n [class.f-scrollpanel-bar-dragging]=\"draggingAxis() === 'y'\"\n [style.height.%]=\"yBarSize()\"\n [style.top.%]=\"yBarPos()\"\n (pointerdown)=\"onBarPointerDown($event, 'y')\"\n (keydown)=\"onBarKeyDown($event, 'y')\"\n ></div>\n </div>\n `,\n})\nexport class ScrollPanelComponent implements AfterViewInit {\n readonly maxHeight = input<string>('100%');\n readonly maxWidth = input<string>('100%');\n readonly step = input<number>(5);\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onScroll = output<ScrollPanelScrollEvent>();\n readonly onScrollXChange = output<number>();\n readonly onScrollYChange = output<number>();\n\n readonly contentId = `f-scrollpanel-${nextScrollPanelId++}-content`;\n\n private readonly contentRef = viewChild<ElementRef<HTMLElement>>('content');\n private readonly destroyRef = inject(DestroyRef);\n private resizeObserver: ResizeObserver | null = null;\n\n private readonly draggingAxisSignal = signal<'x' | 'y' | null>(null);\n readonly draggingAxis = this.draggingAxisSignal.asReadonly();\n\n private readonly _scrollTop = signal(0);\n private readonly _scrollLeft = signal(0);\n private readonly _metrics = signal({\n scrollWidth: 0,\n scrollHeight: 0,\n clientWidth: 0,\n clientHeight: 0,\n });\n\n private readonly xRatio = computed(() => {\n const m = this._metrics();\n return m.scrollWidth > 0 ? m.clientWidth / m.scrollWidth : 1;\n });\n private readonly yRatio = computed(() => {\n const m = this._metrics();\n return m.scrollHeight > 0 ? m.clientHeight / m.scrollHeight : 1;\n });\n\n readonly xBarHidden = computed(() => this.xRatio() >= 1);\n readonly yBarHidden = computed(() => this.yRatio() >= 1);\n readonly xBarSize = computed(() => Math.max(this.xRatio() * 100, 10));\n readonly yBarSize = computed(() => Math.max(this.yRatio() * 100, 10));\n\n readonly xBarPos = computed(() => {\n const m = this._metrics();\n const track = m.scrollWidth - m.clientWidth;\n return track > 0 ? (this._scrollLeft() / track) * (100 - this.xBarSize()) : 0;\n });\n readonly yBarPos = computed(() => {\n const m = this._metrics();\n const track = m.scrollHeight - m.clientHeight;\n return track > 0 ? (this._scrollTop() / track) * (100 - this.yBarSize()) : 0;\n });\n\n readonly scrollLeftPercent = computed(() => {\n const m = this._metrics();\n const track = m.scrollWidth - m.clientWidth;\n return track > 0 ? Math.round((this._scrollLeft() / track) * 100) : 0;\n });\n readonly scrollTopPercent = computed(() => {\n const m = this._metrics();\n const track = m.scrollHeight - m.clientHeight;\n return track > 0 ? Math.round((this._scrollTop() / track) * 100) : 0;\n });\n\n ngAfterViewInit(): void {\n this.updateBars();\n\n const el = this.contentRef()?.nativeElement;\n if (!el || typeof ResizeObserver === 'undefined') return;\n\n this.resizeObserver = new ResizeObserver(() => this.updateBars());\n this.resizeObserver.observe(el);\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\n }\n\n updateBars(): void {\n const el = this.contentRef()?.nativeElement;\n if (!el) return;\n this._metrics.set({\n scrollWidth: el.scrollWidth,\n scrollHeight: el.scrollHeight,\n clientWidth: el.clientWidth,\n clientHeight: el.clientHeight,\n });\n }\n\n refresh(): void {\n this.updateBars();\n }\n\n scrollTop(value: number): void {\n const el = this.contentRef()?.nativeElement;\n if (!el) return;\n const max = Math.max(el.scrollHeight - el.clientHeight, 0);\n el.scrollTop = Math.min(Math.max(value, 0), max);\n }\n\n scrollLeft(value: number): void {\n const el = this.contentRef()?.nativeElement;\n if (!el) return;\n const max = Math.max(el.scrollWidth - el.clientWidth, 0);\n el.scrollLeft = Math.min(Math.max(value, 0), max);\n }\n\n onContentScroll(event: Event): void {\n const el = event.target as HTMLElement;\n const scrollLeft = el.scrollLeft;\n const scrollTop = el.scrollTop;\n\n if (scrollLeft !== this._scrollLeft()) {\n this._scrollLeft.set(scrollLeft);\n this.onScrollXChange.emit(scrollLeft);\n }\n if (scrollTop !== this._scrollTop()) {\n this._scrollTop.set(scrollTop);\n this.onScrollYChange.emit(scrollTop);\n }\n\n this.updateBars();\n this.onScroll.emit({ originalEvent: event, scrollTop, scrollLeft });\n }\n\n onBarPointerDown(event: PointerEvent, axis: 'x' | 'y'): void {\n event.preventDefault();\n const bar = event.currentTarget as HTMLElement;\n const content = this.contentRef()?.nativeElement;\n if (!content) return;\n\n const startPos = axis === 'x' ? event.clientX : event.clientY;\n const startScroll = axis === 'x' ? content.scrollLeft : content.scrollTop;\n const ratio = axis === 'x' ? this.xRatio() : this.yRatio();\n\n this.draggingAxisSignal.set(axis);\n\n const onMove = (e: PointerEvent) => {\n const delta = ((axis === 'x' ? e.clientX : e.clientY) - startPos) / (ratio || 1);\n if (axis === 'x') content.scrollLeft = startScroll + delta;\n else content.scrollTop = startScroll + delta;\n };\n const stop = () => {\n bar.removeEventListener('pointermove', onMove);\n bar.removeEventListener('pointerup', stop);\n bar.removeEventListener('pointercancel', stop);\n this.draggingAxisSignal.set(null);\n };\n\n bar.setPointerCapture(event.pointerId);\n bar.addEventListener('pointermove', onMove);\n bar.addEventListener('pointerup', stop);\n bar.addEventListener('pointercancel', stop);\n }\n\n onBarKeyDown(event: KeyboardEvent, axis: 'x' | 'y'): void {\n const content = this.contentRef()?.nativeElement;\n if (!content) return;\n\n let handled = true;\n if (axis === 'y') {\n if (event.key === 'ArrowDown') content.scrollTop += this.step();\n else if (event.key === 'ArrowUp') content.scrollTop -= this.step();\n else handled = false;\n } else {\n if (event.key === 'ArrowRight') content.scrollLeft += this.step();\n else if (event.key === 'ArrowLeft') content.scrollLeft -= this.step();\n else handled = false;\n }\n\n if (handled) event.preventDefault();\n }\n}\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, input, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TreeNode } from '../../interfaces/tree-node';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport type OrgChartSelectionMode = 'single' | 'multiple' | null;\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!node.key) node.key = `oc_${_uidCounter++}`;\n return node.key;\n}\n\n@Component({\n selector: 'f-organizationchart',\n imports: [NgTemplateOutlet, UiIconComponent],\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\" role=\"treeitem\" [attr.aria-expanded]=\"hasChildren(node) ? isExpanded(node) : null\" [attr.aria-selected]=\"selectionMode() ? isSelected(node) : null\">\n <div\n class=\"f-orgchart-node inline-block border rounded-lg shadow-sm text-sm font-medium text-(--f-text-color) px-4 py-2.5 transition-colors\"\n [class]=\"nodeClass(node)\"\n [style]=\"nodeStyle(node)\"\n (click)=\"onNodeClick($event, node)\"\n >\n @if (nodeTemplateFor(node); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else if (contentTpl()) {\n <ng-container [ngTemplateOutlet]=\"contentTpl()\" [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else {\n {{ node.label }}\n }\n\n @if (collapsible() && hasChildren(node)) {\n <button\n type=\"button\"\n class=\"absolute -bottom-3 left-1/2 -translate-x-1/2 w-5 h-5 rounded-full border border-(--f-content-border-color) bg-(--f-content-background) flex items-center justify-center shadow-sm hover:bg-(--f-content-hover-background) cursor-pointer z-10\"\n [attr.aria-label]=\"isExpanded(node) ? 'Collapse' : 'Expand'\"\n (click)=\"toggleNode($event, node)\"\n >\n @if (togglerIconTpl()) {\n <ng-container [ngTemplateOutlet]=\"togglerIconTpl()\" [ngTemplateOutletContext]=\"{ $implicit: isExpanded(node) }\" />\n } @else {\n <ui-icon [name]=\"isExpanded(node) ? 'chevron-up' : 'chevron-down'\" class=\"text-[10px]\"></ui-icon>\n }\n </button>\n }\n </div>\n\n @if (hasChildren(node) && (!collapsible() || isExpanded(node))) {\n <div class=\"f-orgchart-children\">\n @for (child of node.children; track childKey(child)) {\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]=\"containerClass()\" [style]=\"style()\">\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 if (value()) {\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: value() }\" />\n } @else {\n <div class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">{{ emptyMessage() }}</div>\n }\n </div>\n `,\n})\nexport class OrganizationChartComponent {\n readonly value = input<TreeNode | null>(null);\n readonly selectionMode = input<OrgChartSelectionMode>(null);\n readonly collapsible = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No data');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly selectionChange = output<TreeNode | TreeNode[] | null>();\n readonly nodeSelect = output<TreeNode>();\n readonly nodeUnselect = output<TreeNode>();\n readonly nodeExpand = output<TreeNode>();\n readonly nodeCollapse = output<TreeNode>();\n\n readonly contentTpl = contentChild(TemplateRef);\n readonly togglerIconRef = contentChild<TemplateRef<unknown>>('togglericon');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly togglerIconTpl = computed<TemplateRef<unknown> | null>(() =>\n this.togglerIconRef() ?? this.fTemplates().find(t => t.fTemplate() === 'togglericon')?.templateRef ?? null,\n );\n\n private readonly _selectedKeys = signal<Set<string>>(new Set());\n private readonly _expandedOverrides = signal<Map<string, boolean>>(new Map());\n\n readonly containerClass = computed(() => `flex justify-center min-w-max p-4 ${this.styleClass()}`);\n\n childKey(node: TreeNode): string { return assignKey(node); }\n\n hasChildren(node: TreeNode): boolean { return !!node.children?.length; }\n\n nodeTemplateFor(node: TreeNode): TemplateRef<unknown> | null {\n if (!node.type) return null;\n return this.fTemplates().find(t => t.fTemplate() === node.type)?.templateRef ?? null;\n }\n\n isExpanded(node: TreeNode): boolean {\n const key = assignKey(node);\n const override = this._expandedOverrides().get(key);\n return override !== undefined ? override : node.expanded !== false;\n }\n\n toggleNode(e: Event, node: TreeNode): void {\n e.stopPropagation();\n if (this.disabled()) return;\n const key = assignKey(node);\n const next = !this.isExpanded(node);\n this._expandedOverrides.update(m => {\n const copy = new Map(m);\n copy.set(key, next);\n return copy;\n });\n next ? this.nodeExpand.emit(node) : this.nodeCollapse.emit(node);\n }\n\n isSelected(node: TreeNode): boolean {\n return this._selectedKeys().has(assignKey(node));\n }\n\n nodeClass(node: TreeNode): string {\n const parts = ['border-(--f-content-border-color)', 'bg-(--f-content-background)'];\n if (this.selectionMode() && node.selectable !== false && !this.disabled()) parts.push('cursor-pointer');\n if (this.isSelected(node)) parts.push('ring-2 ring-primary border-primary');\n if (this.disabled() || node.selectable === false) parts.push('opacity-70');\n if (node.styleClass) parts.push(node.styleClass);\n return parts.join(' ');\n }\n\n nodeStyle(node: TreeNode): Record<string, string> | null {\n return ((node as Record<string, unknown>)['style'] as Record<string, string>) ?? null;\n }\n\n onNodeClick(e: Event, node: TreeNode): void {\n const mode = this.selectionMode();\n if (!mode || this.disabled() || node.selectable === false) return;\n e.stopPropagation();\n const key = assignKey(node);\n const wasSelected = this._selectedKeys().has(key);\n if (mode === 'single') {\n this._selectedKeys.set(wasSelected ? new Set() : new Set([key]));\n } else {\n this._selectedKeys.update(s => {\n const next = new Set(s);\n wasSelected ? next.delete(key) : next.add(key);\n return next;\n });\n }\n wasSelected ? this.nodeUnselect.emit(node) : this.nodeSelect.emit(node);\n this.emitSelection();\n }\n\n private findByKey(node: TreeNode | null, key: string): TreeNode | null {\n if (!node) return null;\n if (assignKey(node) === key) return node;\n for (const child of node.children ?? []) {\n const found = this.findByKey(child, key);\n if (found) return found;\n }\n return null;\n }\n\n private emitSelection(): void {\n const root = this.value();\n const keys = this._selectedKeys();\n const nodes = [...keys].map(k => this.findByKey(root, k)).filter((n): n is TreeNode => !!n);\n const mode = this.selectionMode();\n this.selectionChange.emit(mode === 'single' ? (nodes[0] ?? null) : nodes);\n }\n}\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, input, model, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\ntype PickListZone = 'source' | 'target';\ntype PickListDropPosition = 'before' | 'after';\n\n@Component({\n selector: 'f-picklist',\n imports: [UiIconComponent, NgTemplateOutlet, ButtonComponent],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"containerClass()\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (sourceHeaderTpl()) {\n <div class=\"px-3 py-2 bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"sourceHeaderTpl()\" />\n </div>\n } @else 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 @if (filter()) {\n <div class=\"flex items-center gap-2 px-2 py-1.5 m-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 [disabled]=\"disabled()\" [placeholder]=\"sourceFilterPlaceholder()\" [value]=\"sourceFilterText()\" (input)=\"onSourceFilterInput($event)\" />\n </div>\n }\n <ul [class]=\"listClass()\" (dragover)=\"onZoneDragOver($event, 'source')\" (drop)=\"onZoneDrop($event, 'source')\">\n @for (item of filteredSource(); track $index; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"sourceSelected().has(item)\"\n [attr.tabindex]=\"sourceFocusedIndex() === i ? 0 : -1\"\n [attr.draggable]=\"dragdrop() && !disabled() ? true : null\"\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors outline-none focus-visible:ring-focus\"\n [class]=\"itemClass('source', item)\"\n (click)=\"onItemClick('source', item, i)\"\n (keydown)=\"onKeyDown($event, 'source', item, i)\"\n (dragstart)=\"onDragStart($event, item, 'source')\"\n (dragover)=\"onDragOver($event, item, 'source')\"\n (dragleave)=\"onDragLeave($event, item)\"\n (drop)=\"onDrop($event, item, 'source')\"\n (dragend)=\"onDragEnd()\"\n >\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i, selected: sourceSelected().has(item) }\" />\n } @else {\n {{ item }}\n }\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color) list-none\">{{ sourceFilterText() ? emptyFilterMessage() : sourceEmptyMessage() }}</li>\n }\n </ul>\n </div>\n\n <div class=\"flex md:flex-col gap-1.5\">\n <f-button icon=\"chevron-right\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !sourceSelected().size\" (onClick)=\"moveToTarget()\"></f-button>\n <f-button icon=\"chevrons-right\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !source().length\" (onClick)=\"moveAllToTarget()\"></f-button>\n <f-button icon=\"chevron-left\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !targetSelected().size\" (onClick)=\"moveToSource()\"></f-button>\n <f-button icon=\"chevrons-left\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !target().length\" (onClick)=\"moveAllToSource()\"></f-button>\n </div>\n\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (targetHeaderTpl()) {\n <div class=\"px-3 py-2 bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"targetHeaderTpl()\" />\n </div>\n } @else 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 @if (filter()) {\n <div class=\"flex items-center gap-2 px-2 py-1.5 m-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 [disabled]=\"disabled()\" [placeholder]=\"targetFilterPlaceholder()\" [value]=\"targetFilterText()\" (input)=\"onTargetFilterInput($event)\" />\n </div>\n }\n <ul [class]=\"listClass()\" (dragover)=\"onZoneDragOver($event, 'target')\" (drop)=\"onZoneDrop($event, 'target')\">\n @for (item of filteredTarget(); track $index; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"targetSelected().has(item)\"\n [attr.tabindex]=\"targetFocusedIndex() === i ? 0 : -1\"\n [attr.draggable]=\"dragdrop() && !disabled() ? true : null\"\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors outline-none focus-visible:ring-focus\"\n [class]=\"itemClass('target', item)\"\n (click)=\"onItemClick('target', item, i)\"\n (keydown)=\"onKeyDown($event, 'target', item, i)\"\n (dragstart)=\"onDragStart($event, item, 'target')\"\n (dragover)=\"onDragOver($event, item, 'target')\"\n (dragleave)=\"onDragLeave($event, item)\"\n (drop)=\"onDrop($event, item, 'target')\"\n (dragend)=\"onDragEnd()\"\n >\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i, selected: targetSelected().has(item) }\" />\n } @else {\n {{ item }}\n }\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color) list-none\">{{ targetFilterText() ? emptyFilterMessage() : targetEmptyMessage() }}</li>\n }\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 readonly filter = input(false, { transform: booleanAttribute });\n readonly filterBy = input<string>('');\n readonly sourceFilterPlaceholder = input<string>('Search...');\n readonly targetFilterPlaceholder = input<string>('Search...');\n readonly dragdrop = input(false, { transform: booleanAttribute });\n readonly stripedRows = input(false, { transform: booleanAttribute });\n readonly responsive = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly sourceEmptyMessage = input<string>('No records found');\n readonly targetEmptyMessage = input<string>('No records found');\n readonly emptyFilterMessage = input<string>('No results found');\n readonly styleClass = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n readonly sourceHeaderRef = contentChild<TemplateRef<unknown>>('sourceHeader');\n readonly targetHeaderRef = contentChild<TemplateRef<unknown>>('targetHeader');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly sourceHeaderTpl = computed<TemplateRef<unknown> | null>(() => this.sourceHeaderRef() ?? this.namedTemplate('sourceheader'));\n readonly targetHeaderTpl = computed<TemplateRef<unknown> | null>(() => this.targetHeaderRef() ?? this.namedTemplate('targetheader'));\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\n private readonly _sourceFilterText = signal('');\n readonly sourceFilterText = this._sourceFilterText.asReadonly();\n private readonly _targetFilterText = signal('');\n readonly targetFilterText = this._targetFilterText.asReadonly();\n\n private readonly _sourceFocusedIndex = signal(0);\n readonly sourceFocusedIndex = this._sourceFocusedIndex.asReadonly();\n private readonly _targetFocusedIndex = signal(0);\n readonly targetFocusedIndex = this._targetFocusedIndex.asReadonly();\n\n readonly onMoveToTarget = output<T[]>();\n readonly onMoveToSource = output<T[]>();\n readonly onSourceReorder = output<T[]>();\n readonly onTargetReorder = output<T[]>();\n\n readonly containerClass = computed(() => {\n const base = this.responsive() ? 'flex flex-col md:flex-row items-stretch md:items-center gap-3' : 'flex items-center gap-3';\n return `${base} ${this.styleClass()}`;\n });\n\n readonly listClass = computed(() => {\n const base = 'max-h-72 overflow-auto py-1 min-h-8';\n return this.stripedRows() ? `${base} [&>li:nth-child(even)]:bg-(--f-content-hover-background)` : base;\n });\n\n private matchesFilter(item: T, query: string): boolean {\n const fields = this.filterBy().split(',').map(f => f.trim()).filter(Boolean);\n if (!fields.length) return String(item ?? '').toLowerCase().includes(query);\n if (item === null || typeof item !== 'object') return String(item ?? '').toLowerCase().includes(query);\n const rec = item as Record<string, unknown>;\n return fields.some(f => String(rec[f] ?? '').toLowerCase().includes(query));\n }\n\n readonly filteredSource = computed(() => {\n const q = this.sourceFilterText().trim().toLowerCase();\n return q ? this.source().filter(i => this.matchesFilter(i, q)) : this.source();\n });\n\n readonly filteredTarget = computed(() => {\n const q = this.targetFilterText().trim().toLowerCase();\n return q ? this.target().filter(i => this.matchesFilter(i, q)) : this.target();\n });\n\n private zoneModel(zone: PickListZone) { return zone === 'source' ? this.source : this.target; }\n private zoneSelectedSig(zone: PickListZone) { return zone === 'source' ? this._sourceSelected : this._targetSelected; }\n private zoneFiltered(zone: PickListZone) { return zone === 'source' ? this.filteredSource() : this.filteredTarget(); }\n\n itemClass(zone: PickListZone, item: T): string {\n const parts: string[] = [];\n const selected = this.zoneSelectedSig(zone)().has(item);\n parts.push(selected ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)');\n if (this._dropTarget() === item) {\n parts.push(this._dropPosition() === 'before' ? 'border-t-2 border-primary' : 'border-b-2 border-primary');\n }\n return parts.join(' ');\n }\n\n onSourceFilterInput(e: Event): void { this._sourceFilterText.set((e.target as HTMLInputElement).value); }\n onTargetFilterInput(e: Event): void { this._targetFilterText.set((e.target as HTMLInputElement).value); }\n\n onItemClick(zone: PickListZone, item: T, index: number): void {\n if (this.disabled()) return;\n if (zone === 'source') this._sourceFocusedIndex.set(index); else this._targetFocusedIndex.set(index);\n this.toggleSelect(zone, item);\n }\n\n private toggleSelect(zone: PickListZone, item: T): void {\n this.zoneSelectedSig(zone).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('source', item); }\n toggleTargetSelect(item: T): void { this.toggleSelect('target', 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 if (!moving.length) return;\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 if (!moving.length) return;\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 onKeyDown(e: KeyboardEvent, zone: PickListZone, item: T, index: number): void {\n if (this.disabled()) return;\n const len = this.zoneFiltered(zone).length;\n const focusedSig = zone === 'source' ? this._sourceFocusedIndex : this._targetFocusedIndex;\n\n if (e.altKey && e.key === 'ArrowRight' && zone === 'source') {\n e.preventDefault();\n if (!this.sourceSelected().has(item)) this.toggleSelect('source', item);\n this.moveToTarget();\n return;\n }\n if (e.altKey && e.key === 'ArrowLeft' && zone === 'target') {\n e.preventDefault();\n if (!this.targetSelected().has(item)) this.toggleSelect('target', item);\n this.moveToSource();\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n focusedSig.set(Math.min(index + 1, len - 1));\n break;\n case 'ArrowUp':\n e.preventDefault();\n focusedSig.set(Math.max(index - 1, 0));\n break;\n case 'Home':\n e.preventDefault();\n focusedSig.set(0);\n break;\n case 'End':\n e.preventDefault();\n focusedSig.set(len - 1);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.toggleSelect(zone, item);\n break;\n }\n }\n\n private readonly _dragItem = signal<T | null>(null);\n private readonly _dragZone = signal<PickListZone | null>(null);\n private readonly _dropTarget = signal<T | null>(null);\n private readonly _dropZone = signal<PickListZone | null>(null);\n private readonly _dropPosition = signal<PickListDropPosition | null>(null);\n\n onDragStart(e: DragEvent, item: T, zone: PickListZone): void {\n if (!this.dragdrop() || this.disabled()) { e.preventDefault(); return; }\n e.dataTransfer?.setData('text/plain', '');\n this._dragItem.set(item);\n this._dragZone.set(zone);\n }\n\n onDragOver(e: DragEvent, item: T, zone: PickListZone): void {\n if (!this.dragdrop() || !this._dragItem()) return;\n e.preventDefault();\n e.stopPropagation();\n if (this._dragItem() === item) return;\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const position: PickListDropPosition = e.clientY - rect.top < rect.height / 2 ? 'before' : 'after';\n this._dropTarget.set(item);\n this._dropZone.set(zone);\n this._dropPosition.set(position);\n }\n\n onDragLeave(_e: DragEvent, item: T): void {\n if (this._dropTarget() === item) {\n this._dropTarget.set(null);\n this._dropZone.set(null);\n this._dropPosition.set(null);\n }\n }\n\n onDrop(e: DragEvent, item: T, zone: PickListZone): void {\n e.preventDefault();\n e.stopPropagation();\n const dragItem = this._dragItem();\n const dragZone = this._dragZone();\n const position = this._dropPosition();\n if (dragItem && dragZone && position && this._dropTarget() === item && this._dropZone() === zone) {\n this.performDrop(dragItem, dragZone, item, zone, position);\n }\n this.clearDragState();\n }\n\n onZoneDragOver(e: DragEvent, zone: PickListZone): void {\n if (!this.dragdrop() || !this._dragItem()) return;\n e.preventDefault();\n this._dropTarget.set(null);\n this._dropZone.set(zone);\n this._dropPosition.set('after');\n }\n\n onZoneDrop(e: DragEvent, zone: PickListZone): void {\n e.preventDefault();\n const dragItem = this._dragItem();\n const dragZone = this._dragZone();\n if (dragItem && dragZone && this._dropTarget() === null && this._dropZone() === zone) {\n this.performAppend(dragItem, dragZone, zone);\n }\n this.clearDragState();\n }\n\n onDragEnd(): void { this.clearDragState(); }\n\n private clearDragState(): void {\n this._dragItem.set(null);\n this._dragZone.set(null);\n this._dropTarget.set(null);\n this._dropZone.set(null);\n this._dropPosition.set(null);\n }\n\n private performDrop(dragItem: T, dragZone: PickListZone, dropItem: T, dropZone: PickListZone, position: PickListDropPosition): void {\n if (dragZone === dropZone) {\n const model = this.zoneModel(dragZone);\n const list = [...model()];\n const from = list.indexOf(dragItem);\n if (from === -1) return;\n list.splice(from, 1);\n let to = list.indexOf(dropItem);\n if (position === 'after') to += 1;\n list.splice(Math.max(to, 0), 0, dragItem);\n model.set(list);\n dragZone === 'source' ? this.onSourceReorder.emit(list) : this.onTargetReorder.emit(list);\n return;\n }\n this.transferItem(dragItem, dragZone, dropZone, dropItem, position);\n }\n\n private performAppend(dragItem: T, dragZone: PickListZone, dropZone: PickListZone): void {\n if (dragZone === dropZone) return;\n this.transferItem(dragItem, dragZone, dropZone, null, 'after');\n }\n\n private transferItem(dragItem: T, dragZone: PickListZone, dropZone: PickListZone, dropItem: T | null, position: PickListDropPosition): void {\n const fromModel = this.zoneModel(dragZone);\n const toModel = this.zoneModel(dropZone);\n const fromList = fromModel().filter(i => i !== dragItem);\n fromModel.set(fromList);\n const toList = [...toModel()];\n if (dropItem === null) {\n toList.push(dragItem);\n } else {\n let to = toList.indexOf(dropItem);\n if (position === 'after') to += 1;\n toList.splice(Math.max(to, 0), 0, dragItem);\n }\n toModel.set(toList);\n this._sourceSelected.update(s => { const n = new Set(s); n.delete(dragItem); return n; });\n this._targetSelected.update(s => { const n = new Set(s); n.delete(dragItem); return n; });\n dropZone === 'target' ? this.onMoveToTarget.emit([dragItem]) : this.onMoveToSource.emit([dragItem]);\n }\n}\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, input, model, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\nexport type OrderListDropPosition = 'before' | 'after';\n\n@Component({\n selector: 'f-orderlist',\n imports: [UiIconComponent, NgTemplateOutlet, ButtonComponent],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"containerClass()\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (headerTpl()) {\n <div class=\"px-3 py-2 bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">\n <ng-container [ngTemplateOutlet]=\"headerTpl()\" />\n </div>\n } @else 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\n @if (filter()) {\n <div class=\"flex items-center gap-2 px-2 py-1.5 m-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 [disabled]=\"disabled()\" [placeholder]=\"filterPlaceholder()\" [value]=\"filterText()\" (input)=\"onFilterInput($event)\" />\n @if (filterText()) {\n <button type=\"button\" class=\"inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color) cursor-pointer\" (click)=\"clearFilter()\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\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 </div>\n } @else {\n <ul [class]=\"listClass()\">\n @for (item of filteredValue(); track $index; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item)\"\n [attr.tabindex]=\"focusedIndex() === i ? 0 : -1\"\n [attr.draggable]=\"dragdrop() && !disabled() ? true : null\"\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors outline-none focus-visible:ring-focus\"\n [class]=\"itemClass(item, i)\"\n (click)=\"onItemClick($event, item, i)\"\n (keydown)=\"onKeyDown($event, item, i)\"\n (dragstart)=\"onDragStart($event, item)\"\n (dragover)=\"onDragOver($event, item)\"\n (dragleave)=\"onDragLeave($event, item)\"\n (drop)=\"onDrop($event, item)\"\n (dragend)=\"onDragEnd()\"\n >\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i, selected: isSelected(item) }\" />\n } @else {\n {{ item }}\n }\n </li>\n }\n @empty {\n @if (emptyTpl()) {\n <ng-container [ngTemplateOutlet]=\"emptyTpl()\" />\n } @else {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color) list-none\">{{ filterText() ? emptyFilterMessage() : emptyMessage() }}</li>\n }\n }\n </ul>\n }\n </div>\n\n <div class=\"flex flex-col gap-1.5 justify-center\">\n <f-button icon=\"chevron-up\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !hasSelection()\" (onClick)=\"moveUp()\"></f-button>\n <f-button icon=\"chevron-down\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !hasSelection()\" (onClick)=\"moveDown()\"></f-button>\n <f-button icon=\"chevrons-up\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !hasSelection()\" (onClick)=\"moveTop()\"></f-button>\n <f-button icon=\"chevrons-down\" severity=\"secondary\" variant=\"outlined\" styleClass=\"w-8 h-8\" [disabled]=\"disabled() || !hasSelection()\" (onClick)=\"moveBottom()\"></f-button>\n </div>\n </div>\n `,\n})\nexport class OrderListComponent<T = unknown> {\n readonly value = model<T[]>([]);\n readonly header = input<string>('');\n readonly filter = input(false, { transform: booleanAttribute });\n readonly filterBy = input<string>('');\n readonly filterPlaceholder = input<string>('Search...');\n readonly multiple = input(true, { transform: booleanAttribute });\n readonly dragdrop = input(false, { transform: booleanAttribute });\n readonly stripedRows = input(false, { transform: booleanAttribute });\n readonly responsive = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No records found');\n readonly emptyFilterMessage = input<string>('No results found');\n readonly styleClass = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n readonly headerRef = contentChild<TemplateRef<unknown>>('header');\n readonly emptyRef = contentChild<TemplateRef<unknown>>('empty');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n private namedTemplate(name: string): TemplateRef<unknown> | null {\n return this.fTemplates().find(t => t.fTemplate() === name)?.templateRef ?? null;\n }\n\n readonly headerTpl = computed<TemplateRef<unknown> | null>(() => this.headerRef() ?? this.namedTemplate('header'));\n readonly emptyTpl = computed<TemplateRef<unknown> | null>(() => this.emptyRef() ?? this.namedTemplate('empty'));\n\n readonly selected = model<T | null>(null);\n readonly onReorder = output<T[]>();\n readonly onSelectionChange = output<T[]>();\n\n private readonly _selectedSet = signal<Set<T>>(new Set());\n readonly selectedItems = computed(() => [...this._selectedSet()]);\n readonly hasSelection = computed(() => this._selectedSet().size > 0);\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _focusedIndex = signal(0);\n readonly focusedIndex = this._focusedIndex.asReadonly();\n\n private readonly _dragItem = signal<T | null>(null);\n private readonly _dropTarget = signal<T | null>(null);\n private readonly _dropPosition = signal<OrderListDropPosition | null>(null);\n\n readonly containerClass = computed(() => {\n const base = this.responsive() ? 'flex flex-col md:flex-row gap-2' : 'flex gap-2';\n return `${base} ${this.styleClass()}`;\n });\n\n readonly listClass = computed(() => {\n const base = 'max-h-72 overflow-auto py-1';\n return this.stripedRows() ? `${base} [&>li:nth-child(even)]:bg-(--f-content-hover-background)` : base;\n });\n\n private matchesFilter(item: T, query: string): boolean {\n const fields = this.filterBy().split(',').map(f => f.trim()).filter(Boolean);\n if (!fields.length) return String(item ?? '').toLowerCase().includes(query);\n if (item === null || typeof item !== 'object') return String(item ?? '').toLowerCase().includes(query);\n const rec = item as Record<string, unknown>;\n return fields.some(f => String(rec[f] ?? '').toLowerCase().includes(query));\n }\n\n readonly filteredValue = computed(() => {\n const q = this.filterText().trim().toLowerCase();\n if (!q) return this.value();\n return this.value().filter(item => this.matchesFilter(item, q));\n });\n\n isSelected(item: T): boolean { return this._selectedSet().has(item); }\n\n itemClass(item: T, index: number): string {\n const parts: string[] = [];\n if (this.isSelected(item)) parts.push('bg-(--f-highlight-background) text-(--f-highlight-color)');\n else parts.push('text-(--f-text-color) hover:bg-(--f-content-hover-background)');\n if (this._dropTarget() === item) {\n parts.push(this._dropPosition() === 'before' ? 'border-t-2 border-primary' : 'border-b-2 border-primary');\n }\n void index;\n return parts.join(' ');\n }\n\n onFilterInput(e: Event): void { this._filterText.set((e.target as HTMLInputElement).value); }\n clearFilter(): void { this._filterText.set(''); }\n\n onItemClick(e: MouseEvent, item: T, index: number): void {\n if (this.disabled()) return;\n this._focusedIndex.set(index);\n this.selectItem(item);\n void e;\n }\n\n private selectItem(item: T): void {\n if (this.multiple()) {\n this._selectedSet.update(s => {\n const next = new Set(s);\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n } else {\n this._selectedSet.set(new Set([item]));\n }\n this.selected.set(item);\n this.onSelectionChange.emit(this.selectedItems());\n }\n\n private selectedSorted(): T[] {\n const list = this.value();\n return this.selectedItems()\n .filter(i => list.includes(i))\n .sort((a, b) => list.indexOf(a) - list.indexOf(b));\n }\n\n private commit(list: T[]): void {\n this.value.set(list);\n this.onReorder.emit(list);\n }\n\n moveUp(): void {\n const list = [...this.value()];\n for (const item of this.selectedSorted()) {\n const i = list.indexOf(item);\n if (i > 0) [list[i], list[i - 1]] = [list[i - 1], list[i]];\n }\n this.commit(list);\n }\n\n moveDown(): void {\n const list = [...this.value()];\n for (const item of [...this.selectedSorted()].reverse()) {\n const i = list.indexOf(item);\n if (i >= 0 && i < list.length - 1) [list[i], list[i + 1]] = [list[i + 1], list[i]];\n }\n this.commit(list);\n }\n\n moveTop(): void {\n const list = [...this.value()];\n for (const item of [...this.selectedSorted()].reverse()) {\n const i = list.indexOf(item);\n if (i > 0) {\n list.splice(i, 1);\n list.unshift(item);\n }\n }\n this.commit(list);\n }\n\n moveBottom(): void {\n const list = [...this.value()];\n for (const item of this.selectedSorted()) {\n const i = list.indexOf(item);\n if (i >= 0 && i < list.length - 1) {\n list.splice(i, 1);\n list.push(item);\n }\n }\n this.commit(list);\n }\n\n onKeyDown(e: KeyboardEvent, item: T, index: number): void {\n if (this.disabled()) return;\n const len = this.filteredValue().length;\n if (e.altKey && e.key === 'ArrowUp') {\n e.preventDefault();\n if (!this.isSelected(item)) this.selectItem(item);\n this.moveUp();\n return;\n }\n if (e.altKey && e.key === 'ArrowDown') {\n e.preventDefault();\n if (!this.isSelected(item)) this.selectItem(item);\n this.moveDown();\n return;\n }\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n this._focusedIndex.set(Math.min(index + 1, len - 1));\n break;\n case 'ArrowUp':\n e.preventDefault();\n this._focusedIndex.set(Math.max(index - 1, 0));\n break;\n case 'Home':\n e.preventDefault();\n this._focusedIndex.set(0);\n break;\n case 'End':\n e.preventDefault();\n this._focusedIndex.set(len - 1);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n this.selectItem(item);\n break;\n }\n }\n\n onDragStart(e: DragEvent, item: T): void {\n if (!this.dragdrop() || this.disabled()) { e.preventDefault(); return; }\n e.dataTransfer?.setData('text/plain', '');\n this._dragItem.set(item);\n }\n\n onDragOver(e: DragEvent, item: T): void {\n const dragItem = this._dragItem();\n if (!this.dragdrop() || !dragItem || dragItem === item) return;\n e.preventDefault();\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const position: OrderListDropPosition = e.clientY - rect.top < rect.height / 2 ? 'before' : 'after';\n this._dropTarget.set(item);\n this._dropPosition.set(position);\n }\n\n onDragLeave(_e: DragEvent, item: T): void {\n if (this._dropTarget() === item) {\n this._dropTarget.set(null);\n this._dropPosition.set(null);\n }\n }\n\n onDrop(e: DragEvent, item: T): void {\n e.preventDefault();\n const dragItem = this._dragItem();\n const position = this._dropPosition();\n if (dragItem && position && this._dropTarget() === item) {\n const list = [...this.value()];\n const from = list.indexOf(dragItem);\n if (from !== -1) {\n list.splice(from, 1);\n let to = list.indexOf(item);\n if (position === 'after') to += 1;\n list.splice(Math.max(to, 0), 0, dragItem);\n this.commit(list);\n }\n }\n this.clearDragState();\n }\n\n onDragEnd(): void { this.clearDragState(); }\n\n private clearDragState(): void {\n this._dragItem.set(null);\n this._dropTarget.set(null);\n this._dropPosition.set(null);\n }\n}\n","import { booleanAttribute, Component, computed, contentChildren, DestroyRef, effect, ElementRef, inject, input, model, viewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { DialogComponent } from '../dialog/dialog.component';\n\nexport interface GalleriaItem {\n itemImageSrc: string;\n thumbnailImageSrc?: string;\n alt?: string;\n}\n\nexport type GalleriaThumbnailsPosition = 'bottom' | 'top' | 'left' | 'right';\n\n@Component({\n selector: 'f-galleria',\n imports: [UiIconComponent, NgTemplateOutlet, DialogComponent],\n host: { '[class]': 'hostClass()' },\n template: `\n @if (value().length) {\n @if (fullScreen()) {\n @if (visible()) {\n <f-dialog\n [(visible)]=\"visible\"\n [modal]=\"true\"\n [closable]=\"true\"\n styleClass=\"!w-[95vw] !max-w-[95vw] !h-[90vh] bg-black\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" />\n </f-dialog>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentTpl\" />\n }\n }\n\n <ng-template #contentTpl>\n <div role=\"region\" aria-roledescription=\"carousel\" tabindex=\"0\" (keydown)=\"onKeydown($event)\">\n <div class=\"flex gap-2\" [class]=\"containerFlexClass()\">\n <div class=\"relative bg-black/90 rounded-lg overflow-hidden flex-1 min-w-0\" [style.height]=\"height()\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()!\" [ngTemplateOutletContext]=\"{ $implicit: activeItem() }\" />\n } @else if (activeItem()) {\n <img [src]=\"activeItem()!.itemImageSrc\" [alt]=\"activeItem()!.alt ?? ''\" class=\"w-full h-full object-contain\" />\n }\n\n @if (showItemNavigators() && value().length > 1) {\n <button type=\"button\" aria-label=\"Previous\"\n 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 disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\"\n [disabled]=\"isBackwardDisabled()\"\n (click)=\"prev()\"\n ><ui-icon name=\"chevron-left\" class=\"text-sm\"></ui-icon></button>\n <button type=\"button\" aria-label=\"Next\"\n 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 disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\"\n [disabled]=\"isForwardDisabled()\"\n (click)=\"next()\"\n ><ui-icon name=\"chevron-right\" class=\"text-sm\"></ui-icon></button>\n }\n\n @if (showIndicators() && value().length > 1) {\n <div class=\"absolute bottom-2 left-0 right-0 flex justify-center gap-1.5\">\n @for (i of indices(); track i) {\n <button type=\"button\"\n [attr.aria-label]=\"'Page ' + (i + 1)\"\n [attr.aria-selected]=\"i === activeIndex()\"\n class=\"w-2 h-2 rounded-full transition-colors cursor-pointer\"\n [class]=\"i === activeIndex() ? 'bg-white' : 'bg-white/40'\"\n (click)=\"selectIndex(i)\"\n ></button>\n }\n </div>\n }\n\n @if (captionTpl() && activeItem()) {\n <div class=\"absolute bottom-0 left-0 right-0 bg-black/60 text-white p-3\">\n <ng-container [ngTemplateOutlet]=\"captionTpl()!\" [ngTemplateOutletContext]=\"{ $implicit: activeItem() }\" />\n </div>\n }\n </div>\n\n @if (showThumbnails() && value().length > 1) {\n <div class=\"flex items-center gap-2\" [class.flex-col]=\"isThumbVertical()\">\n @if (showThumbnailNavigators()) {\n <button type=\"button\" aria-label=\"Previous thumbnails\"\n class=\"w-7 h-7 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer transition-colors\"\n (click)=\"scrollThumbnails(-1)\"\n ><ui-icon [name]=\"isThumbVertical() ? 'chevron-up' : 'chevron-left'\" class=\"text-xs\"></ui-icon></button>\n }\n\n <div #thumbStrip class=\"flex gap-2 overflow-auto py-1 scroll-smooth\" [class.flex-col]=\"isThumbVertical()\" [style.max-height]=\"isThumbVertical() ? height() : null\">\n @for (item of value(); track $index) {\n <button type=\"button\"\n class=\"shrink-0 rounded-md overflow-hidden border-2 transition-colors cursor-pointer\"\n [style.width]=\"isThumbVertical() ? '4rem' : 'calc(' + (100 / numVisible()) + '% - 0.5rem)'\"\n style=\"height: 4rem;\"\n [class]=\"$index === activeIndex() ? 'border-primary' : 'border-transparent opacity-70 hover:opacity-100'\"\n [attr.aria-current]=\"$index === activeIndex() ? 'true' : null\"\n (click)=\"selectIndex($index)\"\n >\n @if (thumbnailTpl()) {\n <ng-container [ngTemplateOutlet]=\"thumbnailTpl()!\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <img [src]=\"item.thumbnailImageSrc ?? item.itemImageSrc\" [alt]=\"item.alt ?? ''\" class=\"w-full h-full object-cover\" />\n }\n </button>\n }\n </div>\n\n @if (showThumbnailNavigators()) {\n <button type=\"button\" aria-label=\"Next thumbnails\"\n class=\"w-7 h-7 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer transition-colors\"\n (click)=\"scrollThumbnails(1)\"\n ><ui-icon [name]=\"isThumbVertical() ? 'chevron-down' : 'chevron-right'\" class=\"text-xs\"></ui-icon></button>\n }\n </div>\n }\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class GalleriaComponent {\n readonly value = input<GalleriaItem[]>([]);\n readonly numVisible = input<number>(5);\n readonly circular = input(false, { transform: booleanAttribute });\n readonly autoPlay = input(false, { transform: booleanAttribute });\n readonly transitionInterval = input<number>(4000);\n readonly fullScreen = input(false, { transform: booleanAttribute });\n readonly showThumbnails = input(true, { transform: booleanAttribute });\n readonly showThumbnailNavigators = input(true, { transform: booleanAttribute });\n readonly showItemNavigators = input(true, { transform: booleanAttribute });\n readonly showIndicators = input(false, { transform: booleanAttribute });\n readonly thumbnailsPosition = input<GalleriaThumbnailsPosition>('bottom');\n readonly height = input<string>('24rem');\n readonly styleClass = input<string>('');\n\n readonly visible = model<boolean>(false);\n readonly activeIndex = model<number>(0);\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`.trim());\n readonly isThumbVertical = computed(() => this.thumbnailsPosition() === 'left' || this.thumbnailsPosition() === 'right');\n readonly containerFlexClass = computed(() => {\n if (this.isThumbVertical()) return this.thumbnailsPosition() === 'left' ? 'flex-row' : 'flex-row-reverse';\n return this.thumbnailsPosition() === 'top' ? 'flex-col-reverse' : 'flex-col';\n });\n\n readonly activeItem = computed<GalleriaItem | null>(() => this.value()[this.activeIndex()] ?? null);\n readonly indices = computed(() => Array.from({ length: this.value().length }, (_, i) => i));\n\n readonly isForwardDisabled = computed(() => this.value().length === 0 || (!this.circular() && this.activeIndex() >= this.value().length - 1));\n readonly isBackwardDisabled = computed(() => this.value().length === 0 || (!this.circular() && this.activeIndex() <= 0));\n\n private readonly fTemplates = contentChildren(FTemplateDirective);\n readonly itemTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'item')?.templateRef ?? null);\n readonly thumbnailTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'thumbnail')?.templateRef ?? null);\n readonly captionTpl = computed(() => this.fTemplates().find(t => t.fTemplate() === 'caption')?.templateRef ?? null);\n\n private readonly thumbStrip = viewChild<ElementRef<HTMLDivElement>>('thumbStrip');\n\n private readonly destroyRef = inject(DestroyRef);\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => this.stopAutoplay());\n\n effect(() => {\n this.autoPlay();\n this.transitionInterval();\n this.startAutoplay();\n });\n\n effect(() => {\n const index = this.activeIndex();\n const strip = this.thumbStrip()?.nativeElement;\n if (!strip) return;\n const active = strip.children.item(index) as HTMLElement | null;\n active?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n });\n }\n\n private setIndex(i: number): void {\n if (i === this.activeIndex()) return;\n this.activeIndex.set(i);\n }\n\n next(): void {\n const len = this.value().length;\n if (len === 0) return;\n const cur = this.activeIndex();\n if (cur < len - 1) this.setIndex(cur + 1);\n else if (this.circular()) this.setIndex(0);\n }\n\n prev(): void {\n const len = this.value().length;\n if (len === 0) return;\n const cur = this.activeIndex();\n if (cur > 0) this.setIndex(cur - 1);\n else if (this.circular()) this.setIndex(len - 1);\n }\n\n selectIndex(i: number): void { this.setIndex(i); }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.next();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.prev();\n }\n }\n\n scrollThumbnails(dir: number): void {\n const strip = this.thumbStrip()?.nativeElement;\n if (!strip) return;\n if (this.isThumbVertical()) {\n strip.scrollBy({ top: dir * strip.clientHeight, behavior: 'smooth' });\n } else {\n strip.scrollBy({ left: dir * strip.clientWidth, behavior: 'smooth' });\n }\n }\n\n private startAutoplay(): void {\n this.stopAutoplay();\n if (this.autoPlay() && this.value().length > 1) {\n this.autoplayTimer = setInterval(() => this.next(), this.transitionInterval());\n }\n }\n\n private stopAutoplay(): void {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n SecurityContext,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } 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\nexport interface EditorTextChangeEvent {\n htmlValue: string | null;\n textValue: string;\n source: 'user' | 'api';\n}\n\nexport interface EditorSelectionChangeEvent {\n isCollapsed: boolean;\n text: string;\n source: 'user' | 'api';\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, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true }],\n host: { '[class]': 'hostClass()', '[style]': 'style()' },\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 @if (toolbarTemplate()) {\n <ng-container [ngTemplateOutlet]=\"toolbarTemplate()\"></ng-container>\n } @else {\n @for (btn of visibleToolbar(); track btn.cmd) {\n <button\n type=\"button\"\n [attr.title]=\"btn.label\"\n [disabled]=\"isReadonly()\"\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 disabled:opacity-50 disabled:pointer-events-none\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(btn)\"\n >\n <ui-icon [name]=\"btn.icon\" class=\"text-sm\"></ui-icon>\n </button>\n }\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 [attr.contenteditable]=\"isReadonly() ? null : true\"\n [attr.data-placeholder]=\"placeholder()\"\n (input)=\"onInput()\"\n (blur)=\"onTouched()\"\n (keyup)=\"emitSelectionChange('user')\"\n (mouseup)=\"emitSelectionChange('user')\"\n ></div>\n @if (showCount()) {\n <div class=\"flex justify-end gap-3 px-3 py-1.5 text-xs text-(--f-text-muted-color) border-t border-(--f-content-border-color)\">\n <span>{{ wordCount() }} words</span>\n <span>{{ characterCount() }} characters</span>\n </div>\n }\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\n readonly placeholder = input<string>('');\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly formats = input<string[] | null>(null);\n readonly showCount = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly onTextChange = output<EditorTextChangeEvent>();\n readonly onSelectionChange = output<EditorSelectionChangeEvent>();\n\n readonly toolbarTemplate = contentChild<TemplateRef<unknown>>('toolbar');\n\n readonly visibleToolbar = computed(() => {\n const allow = this.formats();\n return allow?.length ? TOOLBAR.filter((btn) => allow.includes(btn.cmd)) : TOOLBAR;\n });\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n private readonly _formDisabled = signal(false);\n readonly isReadonly = computed(() => this.readonly() || this._formDisabled());\n\n private readonly _text = signal('');\n readonly characterCount = computed(() => this._text().length);\n readonly wordCount = computed(() => {\n const trimmed = this._text().trim();\n return trimmed ? trimmed.split(/\\s+/).length : 0;\n });\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n exec(btn: EditorCommand): void {\n if (this.isReadonly()) return;\n this._document.execCommand(btn.cmd, false, btn.value);\n this.editable().nativeElement.focus();\n this.onInput();\n }\n\n onInput(): void {\n const el = this.editable().nativeElement;\n const html = el.innerHTML;\n const text = el.textContent ?? '';\n this._text.set(text);\n this._onChange(html);\n this.onTextChange.emit({\n htmlValue: html === '<br>' ? null : html,\n textValue: text.trim(),\n source: 'user',\n });\n }\n\n emitSelectionChange(source: 'user' | 'api'): void {\n const sel = this._document.getSelection();\n if (!sel) return;\n this.onSelectionChange.emit({ isCollapsed: sel.isCollapsed, text: sel.toString(), source });\n }\n\n onTouched(): void {\n this._onTouched();\n }\n\n writeValue(v: string): void {\n const el = this.editable().nativeElement;\n const html = this._sanitizer.sanitize(SecurityContext.HTML, v ?? '') ?? '';\n el.innerHTML = html;\n this._text.set(el.textContent ?? '');\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._formDisabled.set(isDisabled);\n }\n}\n","import { Component, computed, effect, ElementRef, input, output, signal, viewChild } 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 #scrollContainer [class]=\"containerClass()\" [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 (keydown.arrowup)=\"recallPrevious($event)\"\n (keydown.arrowdown)=\"recallNext($event)\"\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 readonly styleClass = input<string>('');\n\n readonly onCommand = output<TerminalCommandEvent>();\n\n private readonly scrollContainer = viewChild<ElementRef<HTMLDivElement>>('scrollContainer');\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 private readonly _commandHistory = signal<string[]>([]);\n private historyIndex = -1;\n\n readonly containerClass = computed(\n () => `bg-surface-950 text-surface-0 rounded-lg font-mono text-sm p-3 overflow-y-auto ${this.styleClass()}`,\n );\n\n constructor() {\n effect(() => {\n this.history();\n const el = this.scrollContainer()?.nativeElement;\n if (el) el.scrollTop = el.scrollHeight;\n });\n }\n\n onCurrentInput(v: string): void {\n this._current.set(v);\n }\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._commandHistory.update(h => [...h, command]);\n this.historyIndex = this._commandHistory().length;\n this.onCommand.emit({ command });\n this._current.set('');\n }\n\n recallPrevious(event: Event): void {\n const cmds = this._commandHistory();\n if (!cmds.length) return;\n event.preventDefault();\n this.historyIndex = Math.max(0, this.historyIndex - 1);\n this._current.set(cmds[this.historyIndex] ?? '');\n }\n\n recallNext(event: Event): void {\n const cmds = this._commandHistory();\n if (!cmds.length) return;\n event.preventDefault();\n this.historyIndex = Math.min(cmds.length, this.historyIndex + 1);\n this._current.set(this.historyIndex >= cmds.length ? '' : cmds[this.historyIndex]);\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, computed, DestroyRef, ElementRef, inject, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nconst KEYBOARD_STEP = 2;\n\n@Component({\n selector: 'f-imagecompare',\n imports: [UiIconComponent],\n host: { '[class]': 'hostClass()' },\n template: `\n <div\n class=\"relative w-full overflow-hidden rounded-lg select-none cursor-ew-resize\"\n [style]=\"style()\"\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\n class=\"absolute top-0 bottom-0 w-0.5 bg-white shadow-lg\"\n [style.left.%]=\"position()\"\n >\n <div\n #handle\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel() || 'Image comparison slider'\"\n aria-orientation=\"horizontal\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"Math.round(position())\"\n 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 cursor-ew-resize focus-visible:outline-none focus-visible:ring-focus\"\n (keydown)=\"onKeydown($event)\"\n (mousedown)=\"$event.stopPropagation(); onDown($event)\"\n (touchstart)=\"$event.stopPropagation(); onTouchDown($event)\"\n >\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 protected readonly Math = Math;\n\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 readonly ariaLabel = input<string>('');\n readonly styleClass = input<string>('');\n readonly style = input<Record<string, string> | null>(null);\n\n readonly hostClass = computed(() => `block ${this.styleClass()}`.trim());\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 onKeydown(event: KeyboardEvent): void {\n let handled = true;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowDown':\n this._position.update(p => Math.max(0, p - KEYBOARD_STEP));\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n this._position.update(p => Math.min(100, p + KEYBOARD_STEP));\n break;\n case 'Home':\n this._position.set(0);\n break;\n case 'End':\n this._position.set(100);\n break;\n default:\n handled = false;\n }\n if (handled) event.preventDefault();\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 { booleanAttribute, Directive, effect, ElementRef, inject, input, OnDestroy, PLATFORM_ID } from '@angular/core';\n\n@Directive({ selector: '[fAnimateOnScroll]' })\nexport class AnimateOnScrollDirective implements 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 readonly rootMargin = input<string>('0px');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private _observer?: IntersectionObserver;\n\n constructor() {\n effect(() => {\n if (this.disabled()) {\n this._observer?.disconnect();\n this._observer = undefined;\n return;\n }\n if (!isPlatformBrowser(this._platformId) || this._observer) return;\n this._observe();\n });\n }\n\n private _observe(): void {\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()) {\n this._observer?.unobserve(el);\n this._observer = undefined;\n }\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(), rootMargin: this.rootMargin() },\n );\n this._observer.observe(el);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, effect, ElementRef, inject, input, PLATFORM_ID } from '@angular/core';\n\n@Directive({ selector: '[fAutoFocus]' })\nexport class AutoFocusDirective {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _platformId = inject(PLATFORM_ID);\n\n readonly fAutoFocus = input(true, { transform: booleanAttribute });\n\n constructor() {\n // effect() (not ngAfterViewInit) so an element that starts hidden\n // (e.g. behind an @if) still gets focused once fAutoFocus becomes true.\n effect(() => {\n if (this.fAutoFocus() && isPlatformBrowser(this._platformId)) {\n queueMicrotask(() => this._el.nativeElement.focus());\n }\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\n\ninterface PendingRipple {\n span: HTMLSpanElement;\n timeoutId: ReturnType<typeof setTimeout>;\n}\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 private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _pending: PendingRipple[] = [];\n\n constructor() {\n this._destroyRef.onDestroy(() => {\n for (const { span, timeoutId } of this._pending) {\n clearTimeout(timeoutId);\n span.remove();\n }\n this._pending.length = 0;\n });\n }\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.setAttribute('aria-hidden', 'true');\n span.setAttribute('role', 'presentation');\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\n const pending: PendingRipple = {\n span,\n timeoutId: setTimeout(() => {\n span.remove();\n const idx = this._pending.indexOf(pending);\n if (idx !== -1) this._pending.splice(idx, 1);\n }, 600),\n };\n this._pending.push(pending);\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 type { DialogPosition } from './components/dialog/dialog.component';\nexport { DrawerComponent } from './components/drawer/drawer.component';\nexport type { DrawerPosition } 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":["FOCUSABLE_SELECTOR","CLOSE_ANIMATION_MS","_uidCounter","assignKey","SUBMENU_ESTIMATED_WIDTH","i1.InputTextDirective","PRESETS"],"mappings":"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,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA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AA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EA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"}
|