nath-angular-ui 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"nath-angular-ui.mjs","sources":["../../../projects/nath-angular-ui/src/lib/autocomplete/autocomplete.ts","../../../projects/nath-angular-ui/src/lib/autocomplete/autocomplete.html","../../../projects/nath-angular-ui/src/lib/boolean-control/boolean-control.ts","../../../projects/nath-angular-ui/src/lib/boolean-control/boolean-control.html","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumb.service.ts","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumbs.ts","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumbs.html","../../../projects/nath-angular-ui/src/lib/code-viewer/code-file-tab-name-pipe.ts","../../../projects/nath-angular-ui/src/lib/code-viewer/code-viewer.ts","../../../projects/nath-angular-ui/src/lib/code-viewer/code-viewer.html","../../../projects/nath-angular-ui/src/lib/datepicker/datepicker.ts","../../../projects/nath-angular-ui/src/lib/datepicker/datepicker.html","../../../projects/nath-angular-ui/src/lib/dialog/dialog-ref.ts","../../../projects/nath-angular-ui/src/lib/dialog/dialog-container.ts","../../../projects/nath-angular-ui/src/lib/dialog/dialog.service.ts","../../../projects/nath-angular-ui/src/lib/dialog/confirmation-dialog.ts","../../../projects/nath-angular-ui/src/lib/dialog/confirmation.service.ts","../../../projects/nath-angular-ui/src/lib/drawer/drawer.ts","../../../projects/nath-angular-ui/src/lib/file-upload/file-upload.ts","../../../projects/nath-angular-ui/src/lib/utilities/form.util.ts","../../../projects/nath-angular-ui/src/lib/floating-label/floating-label.ts","../../../projects/nath-angular-ui/src/lib/show-errors/show-errors.ts","../../../projects/nath-angular-ui/src/lib/form-field/form-field.ts","../../../projects/nath-angular-ui/src/lib/image-preview/image-preview.ts","../../../projects/nath-angular-ui/src/lib/menu/menu-list.ts","../../../projects/nath-angular-ui/src/lib/menu/menu-list.html","../../../projects/nath-angular-ui/src/lib/menu/menu.ts","../../../projects/nath-angular-ui/src/lib/menu/menu.html","../../../projects/nath-angular-ui/src/lib/multiselect/multiselect.ts","../../../projects/nath-angular-ui/src/lib/paginator/paginator.ts","../../../projects/nath-angular-ui/src/lib/paginated-view/paginated-view.ts","../../../projects/nath-angular-ui/src/lib/panel/panel.ts","../../../projects/nath-angular-ui/src/lib/pick-list/pick-list.ts","../../../projects/nath-angular-ui/src/lib/progress-bar/progress-bar.ts","../../../projects/nath-angular-ui/src/lib/progress-circle/progress-circle.ts","../../../projects/nath-angular-ui/src/lib/radio-button-group/radio-button-group.ts","../../../projects/nath-angular-ui/src/lib/rating/rating.constants.ts","../../../projects/nath-angular-ui/src/lib/rating/rating-heart/rating-heart.ts","../../../projects/nath-angular-ui/src/lib/rating/rating-input/rating-input.ts","../../../projects/nath-angular-ui/src/lib/select/select.ts","../../../projects/nath-angular-ui/src/lib/skeleton/skeleton.ts","../../../projects/nath-angular-ui/src/lib/slider/slider.ts","../../../projects/nath-angular-ui/src/lib/slider/slider.html","../../../projects/nath-angular-ui/src/lib/types/order.enum.ts","../../../projects/nath-angular-ui/src/lib/sort-icon/sort-icon.ts","../../../projects/nath-angular-ui/src/lib/split-button/split-button.ts","../../../projects/nath-angular-ui/src/lib/tabs/tab.directive.ts","../../../projects/nath-angular-ui/src/lib/tabs/tab-panel.directive.ts","../../../projects/nath-angular-ui/src/lib/tabs/tabs.ts","../../../projects/nath-angular-ui/src/lib/theme-switch/theme.service.ts","../../../projects/nath-angular-ui/src/lib/theme-switch/theme-switch.ts","../../../projects/nath-angular-ui/src/lib/toast/toast.service.ts","../../../projects/nath-angular-ui/src/lib/toast/toast-container.ts","../../../projects/nath-angular-ui/src/lib/toc/toc.ts","../../../projects/nath-angular-ui/src/lib/toc/toc.html","../../../projects/nath-angular-ui/src/lib/tooltip/tooltip-container.ts","../../../projects/nath-angular-ui/src/lib/tooltip/tooltip.directive.ts","../../../projects/nath-angular-ui/src/lib/utilities/dom.util.ts","../../../projects/nath-angular-ui/src/lib/utilities/isTruthy.ts","../../../projects/nath-angular-ui/src/lib/utilities/rangeMinMax.ts","../../../projects/nath-angular-ui/src/lib/utilities/rangeNotMinMax.ts","../../../projects/nath-angular-ui/src/lib/utilities/isSortOrderValid.ts","../../../projects/nath-angular-ui/src/public-api.ts","../../../projects/nath-angular-ui/src/nath-angular-ui.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { LucideChevronDown, LucideX } from '@lucide/angular';\nimport { FormValueControl } from '@angular/forms/signals';\n\n@Component({\n selector: 'nath-autocomplete',\n imports: [CommonModule, OverlayModule, LucideX, LucideChevronDown],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathAutocomplete implements FormValueControl<any> {\n protected readonly elementRef = inject(ElementRef);\n\n // value can be an object (Single) or an array of objects (Multiple)\n value = model<any>(null);\n\n items = input<any[]>([]);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n dropdown = input<boolean>(false);\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n disabled = input<boolean>(false);\n forceDisabled = input<boolean>(false);\n\n multiple = input<boolean>(false);\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n\n query = model<string>('');\n itemTemplate = contentChild<TemplateRef<any>>(TemplateRef);\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n isDisabled = computed(() => this.disabled() || this.forceDisabled());\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n selectedItems = computed<any[]>(() => {\n const val = this.value();\n if (!val) return [];\n if (this.multiple()) {\n return Array.isArray(val) ? val : [val];\n } else {\n return [val];\n }\n });\n\n showClearButton = computed<boolean>(\n () =>\n this.showClear() &&\n ((this.multiple() && !!this.selectedItems().length) || (!this.multiple() && !!this.value())),\n );\n\n constructor() {\n // Sync the search input text string dynamically\n effect(() => {\n const currentObj = this.value();\n if (!this.multiple() && currentObj) {\n this.inputValue.set(this.displayFn()(currentObj));\n } else if (this.multiple()) {\n // Clear text input upon external chip state resets\n this.inputValue.set(this.query());\n }\n });\n\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect((onCleanup) => {\n const currentQuery = this.query();\n // Start a 300ms timer before emitting the change event\n const timeoutId = setTimeout(() => {\n if (currentQuery?.length >= this.minQueryLength()) {\n this.debouncedQueryChange.emit(currentQuery);\n }\n }, this.delay());\n\n // CRITICAL: If the user types another character before 300ms is up,\n // this cleanup function runs automatically and kills the old timer.\n onCleanup(() => clearTimeout(timeoutId));\n });\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n if (!this.isOpen()) this.isOpen.set(true);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n if (this.isDisabled()) {\n return;\n }\n if (this.multiple()) {\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n // Prevent duplicates by checking structural IDs or exact references\n const alreadySelected = currentValues.some(\n (v: any) => JSON.stringify(v) === JSON.stringify(item),\n );\n\n if (!alreadySelected) {\n this.value.set([...currentValues, item]);\n }\n this.query.set(''); // Clear search query text upon selecting a chip\n } else {\n this.value.set(item);\n this.isOpen.set(false);\n }\n }\n\n removeItem(itemToRemove: any, event: MouseEvent) {\n if (this.isDisabled()) {\n return;\n }\n event.stopPropagation(); // Avoid triggering open dropdown directives\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n this.value.set(\n currentValues.filter((v: any) => JSON.stringify(v) !== JSON.stringify(itemToRemove)),\n );\n this.unselected.emit(itemToRemove);\n }\n\n onKeyDown(event: KeyboardEvent) {\n const currentItems = this.items();\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter') this.isOpen.set(true);\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.isOpen.set(false);\n this.inputField()?.nativeElement.blur();\n break;\n }\n }\n\n protected clear() {\n if (this.multiple()) {\n this.value.set([]);\n } else {\n this.value.set(null);\n }\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n\n public triggerSearch(text: string) {\n this.query.set(text);\n if (!this.isOpen()) this.isOpen.set(true);\n this.activeTrackedIndex.set(-1);\n }\n\n protected openDropdown() {\n this.debouncedQueryChange.emit(this.query());\n this.isOpen.set(true);\n }\n}\n","<div\r\n (click)=\"inputField?.focus()\"\r\n (keydown.enter)=\"inputField?.focus()\"\r\n class=\"input nath-autocomplete-theme ac-input-container\"\r\n [ngClass]=\"{\r\n 'ac-has-clear-btn': showClearButton(),\r\n 'ac-borderless-container': borderless(),\r\n 'ac-no-right-radius': dropdown()\r\n }\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n>\r\n @if (multiple()) {\r\n @for (item of selectedItems(); track $index) {\r\n <div class=\"ac-selected-tag\">\r\n <span [ngClass]=\"{'ac-tag-disabled': isDisabled()}\">\r\n {{ displayFn()(item) }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n (click)=\"removeItem(item, $event)\"\r\n class=\"ac-remove-tag-btn\"\r\n [disabled]=\"isDisabled()\"\r\n >\r\n <svg\r\n class=\"ac-svg-icon\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2.5\"\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n }\r\n\r\n <input\r\n #inputField\r\n type=\"text\"\r\n [id]=\"inputId()\"\r\n [placeholder]=\"selectedItems().length === 0 || !multiple() ? placeholder() : ''\"\r\n [value]=\"inputValue()\"\r\n [disabled]=\"isDisabled()\"\r\n (input)=\"onInputChange($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n class=\"ac-native-input inner-input\"\r\n [ngClass]=\"{ 'ac-borderless-input': borderless() }\"\r\n />\r\n\r\n @if (showClearButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"ac-clear-button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear()\"\r\n >\r\n <svg lucideX [size]=\"16\" />\r\n </button>\r\n }\r\n</div>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen() && items().length > 0\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPanelClass]=\"'nath-autocomplete-theme'\"\r\n (backdropClick)=\"isOpen.set(false)\"\r\n>\r\n <div\r\n class=\"ac-dropdown-overlay\"\r\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\r\n >\r\n @for (item of items(); track $index) {\r\n <div\r\n (click)=\"selectItem(item)\"\r\n (keydown.enter)=\"selectItem(item)\"\r\n class=\"ac-dropdown-item\"\r\n [class.is-active]=\"activeTrackedIndex() === $index\"\r\n >\r\n @if (!itemTemplate()) {\r\n {{ displayFn()(item) }}\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (items().length === 0) {\r\n <div class=\"ac-dropdown-item\">\r\n {{ emptyMessage() }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n@if (dropdown()) {\r\n <button\r\n type=\"button\"\r\n class=\"button-secondary ac-dropdown-trigger-btn\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <svg lucideChevronDown [size]=\"16\" />\r\n </button>\r\n}\r\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { isLucideIconComponent, LucideDynamicIcon, LucideIcon } from '@lucide/angular';\n\nexport type BooleanDisplayMode = 'checkbox' | 'toggle' | 'switch';\nexport type TristateValue = boolean | null;\n\n@Component({\n selector: 'nath-boolean-control',\n imports: [CommonModule, LucideDynamicIcon],\n templateUrl: './boolean-control.html',\n styleUrls: ['./boolean-control.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathBooleanControl implements FormValueControl<TristateValue> {\n // Inputs & Configuration\n mode = input<BooleanDisplayMode>('checkbox');\n label = input<string>('');\n allowIndeterminate = input<boolean>(false);\n inputId = input<string | null>(null);\n styleClass = input<string>('');\n yesLabel = input<string>('Yes');\n noLabel = input<string>('No');\n indeterminateLabel = input<string>('?');\n icon = input<LucideIcon | string | undefined>();\n\n toggled = output<TristateValue>();\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n // Two-way tri-state signal binding\n value = model<TristateValue>(null);\n disabled = model<boolean>(false);\n\n // Read template slot for the switch handle icon\n // Grab a reference to the native checkbox input for setting DOM properties\n checkboxRef = viewChild<ElementRef<HTMLInputElement>>('checkboxElement');\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n toggleButtonClasses = computed((): Record<string, boolean> => {\n const val: TristateValue = this.value();\n return {\n 'nath-boolean-toggle-null': val === null,\n 'nath-boolean-toggle-on': val === true,\n 'nath-boolean-toggle-off': val === false,\n 'nath-boolean-disabled': this.disabled(),\n };\n });\n\n fallbackButtonLabel = computed((): string => {\n const val = this.value();\n if (val) return this.yesLabel();\n if (val !== null && !val) return this.noLabel();\n return this.indeterminateLabel();\n });\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n // 1. Sync the local signal value with the native DOM 'indeterminate' property\n effect(() => {\n const el = this.checkboxRef()?.nativeElement;\n if (el) {\n el.indeterminate = this.allowIndeterminate() && this.value() === null;\n }\n });\n }\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n toggle(): void {\n if (this.disabled()) return;\n\n this.value.update((current) => {\n if (this.allowIndeterminate()) {\n if (current === null) return true;\n if (current) return false;\n return null;\n } else {\n return !current;\n }\n });\n this.toggled.emit(this.value());\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","@if (mode() === 'checkbox') {\r\n <div class=\"nath-boolean-checkbox-container\">\r\n <label\r\n class=\"nath-boolean-checkbox-label\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n [class]=\"styleClass()\"\r\n >\r\n <input\r\n #checkboxElement\r\n type=\"checkbox\"\r\n [checked]=\"value() === true\"\r\n (change)=\"toggle()\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n </div>\r\n}\r\n\r\n@if (mode() === 'switch') {\r\n <label\r\n class=\"nath-boolean-switch-label\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n [class]=\"styleClass()\"\r\n >\r\n <div class=\"nath-boolean-switch-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value() === true\"\r\n (change)=\"toggle()\"\r\n class=\"nath-boolean-switch-input\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <div\r\n class=\"nath-boolean-switch-track\"\r\n [class.is-null]=\"value() === null\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n >\r\n @if (icon()) {\r\n <div\r\n class=\"nath-boolean-switch-handle-content\"\r\n [class.is-off]=\"value() === false\"\r\n [class.is-null]=\"value() === null\"\r\n [class.is-on]=\"value() === true\"\r\n >\r\n @if (isLucideIconComponent(icon()!)) {\r\n <svg [lucideIcon]=\"icon()!\" />\r\n } @else {\r\n <i [ngClass]=\"[icon()!]\"></i>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n}\r\n\r\n@if (mode() === 'toggle') {\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"nath-boolean-toggle-button\"\r\n [class]=\"styleClass()\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"nath-boolean-toggle-content\" [ngClass]=\"toggleButtonClasses()\">\r\n @if (icon()) {\r\n @if (isLucideIconComponent(icon()!)) {\r\n <svg [lucideIcon]=\"icon()!\" />\r\n } @else {\r\n <i [ngClass]=\"[icon()!]\"></i>\r\n }\r\n }\r\n {{ label() || fallbackButtonLabel() }}\r\n </span>\r\n </button>\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { Breadcrumb } from './breadcrumb.model';\n\n@Injectable({\n providedIn: 'root', // Shared instance across the app\n})\nexport class BreadcrumbService {\n // A private writable signal holding the home item which will always be visible, if any\n private readonly _home = signal<Breadcrumb | null>(null);\n // A private writable signal holding the current breadcrumbs array\n private readonly _breadcrumbs = signal<Breadcrumb[]>([]);\n\n // Expose as a read-only signals so components can only read, not mutate directly\n home = this._home.asReadonly();\n breadcrumbs = this._breadcrumbs.asReadonly();\n\n /**\n * Set the home item\n * @param crumb The home item\n */\n setHome(crumb: Breadcrumb | null): void {\n this._home.set(crumb);\n }\n\n /**\n * Set the breadcrumbs for the current view.\n * @param crumbs Array of breadcrumbs items\n */\n set(crumbs: Breadcrumb[]): void {\n this._breadcrumbs.set(crumbs);\n }\n\n add(crumb: Breadcrumb): void {\n this._breadcrumbs.update((v) => [...v, crumb]);\n }\n\n /**\n * Clears the breadcrumbs when leaving a page.\n */\n clear(): void {\n this._breadcrumbs.set([]);\n }\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { LucideHouse } from '@lucide/angular';\r\n\r\n@Component({\r\n selector: 'nath-breadcrumbs',\r\n imports: [RouterModule, LucideHouse],\r\n templateUrl: './breadcrumbs.html',\r\n styleUrls: ['./breadcrumbs.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathBreadcrumbs {\r\n private readonly breadcrumbService = inject(BreadcrumbService);\r\n\r\n // Directly expose the read-only signal to the template\r\n protected readonly home = this.breadcrumbService.home;\r\n protected readonly breadcrumbs = this.breadcrumbService.breadcrumbs;\r\n}\r\n","@if (home() || breadcrumbs().length > 0) {\n <nav aria-label=\"breadcrumb\" class=\"nath-breadcrumb-container\">\n <ol class=\"nath-breadcrumb-list\">\n @let h = home();\n @if (h) {\n <li class=\"nath-breadcrumb-item\">\n @if (h.routerLink) {\n <a\n class=\"nath-breadcrumb-link\"\n [routerLink]=\"h.routerLink\"\n [queryParams]=\"h.queryParams\"\n [routerLinkActive]=\"h.routerLinkActive ?? []\"\n [routerLinkActiveOptions]=\"h.routerLinkActiveOptions ?? { exact: false }\"\n ><svg lucideHouse [size]=\"16\"\n /></a>\n } @else {\n <span class=\"nath-breadcrumb--current\" aria-current=\"page\"\n ><svg lucideHouse [size]=\"16\"\n /></span>\n }\n </li>\n }\n @for (crumb of breadcrumbs(); track crumb.label; let last = $last) {\n <li class=\"nath-breadcrumb-item\" [class.is-active]=\"last\">\n @if (crumb.routerLink && !last && !crumb.disabled) {\n <a\n class=\"nath-breadcrumb-link\"\n [routerLink]=\"crumb.routerLink\"\n [queryParams]=\"crumb.queryParams\"\n [routerLinkActive]=\"crumb.routerLinkActive ?? []\"\n [routerLinkActiveOptions]=\"crumb.routerLinkActiveOptions ?? { exact: false }\"\n >{{ crumb.label }}</a\n >\n } @else {\n <span\n [class.nath-breadcrumb--current]=\"!crumb.disabled\"\n [class.nath-breadcrumb--disabled]=\"crumb.disabled\"\n aria-current=\"page\"\n >{{ crumb.label }}</span\n >\n }\n </li>\n }\n </ol>\n </nav>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nathCodeFileTabName',\n})\nexport class CodeFileTabNamePipe implements PipeTransform {\n transform(value: string, showFullPath: boolean): string {\n return showFullPath ? value : (value.split('/').at(-1) ?? '');\n }\n}\n","import { Component, computed, input, signal } from '@angular/core';\nimport { CodeFile } from './code-file';\nimport { CodeFileTabNamePipe } from './code-file-tab-name-pipe';\n\n@Component({\n selector: 'nath-code-viewer',\n host: {\n class: 'docs-code-container',\n '[class.has-copied]': 'copied()',\n },\n templateUrl: './code-viewer.html',\n styleUrls: ['./code-viewer.css'],\n imports: [CodeFileTabNamePipe],\n})\nexport class NathCodeViewer {\n // Signal inputs\n readonly files = input.required<CodeFile[]>();\n readonly showLineNumbers = input<boolean>(true);\n // If true, show the full path instead of just the file name\n readonly showFullPaths = input<boolean>(false);\n\n // Active tab track index state\n protected readonly activeIndex = signal<number>(0);\n protected readonly copied = signal<boolean>(false);\n\n // Derived state for the currently active file\n protected readonly activeFile = computed<CodeFile | undefined>(() => {\n const list = this.files();\n const index = this.activeIndex();\n return list[index] ?? list[0];\n });\n\n // Derived state to split the active file's code into individual lines\n protected readonly lines = computed<string[]>(() => {\n const file = this.activeFile();\n if (!file?.content) return [];\n return file.content.split('\\n');\n });\n\n protected selectTab(index: number): void {\n this.activeIndex.set(index);\n }\n\n protected copyToClipboard(): void {\n const file = this.activeFile();\n if (!file) return;\n\n navigator.clipboard\n .writeText(file.content)\n .then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n })\n .catch((err) => {\n console.error('Failed to copy code: ', err);\n });\n }\n}\n","<div class=\"code-header\">\n <div class=\"tabs-list\" role=\"tablist\" aria-label=\"File selections\">\n @for (file of files(); track file.name) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"tab-button\"\n [class.active]=\"activeIndex() === $index\"\n [attr.aria-selected]=\"activeIndex() === $index\"\n [attr.aria-controls]=\"'panel-' + $index\"\n [attr.id]=\"'tab-' + $index\"\n (click)=\"selectTab($index)\"\n >\n {{ file.name | nathCodeFileTabName: showFullPaths() }}\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"copy-button\"\n [attr.aria-label]=\"copied() ? 'Copied code to clipboard' : 'Copy code to clipboard'\"\n (click)=\"copyToClipboard()\"\n >\n {{ copied() ? 'Copied!' : 'Copy' }}\n </button>\n</div>\n\n<div\n class=\"code-body\"\n role=\"tabpanel\"\n [attr.id]=\"'panel-' + activeIndex()\"\n [attr.aria-labelledby]=\"'tab-' + activeIndex()\"\n>\n @if (showLineNumbers()) {\n <div class=\"line-numbers\" aria-hidden=\"true\">\n @for (line of lines(); track $index) {\n <span>{{ $index + 1 }}</span>\n }\n </div>\n }\n\n <pre><code>@for (line of lines(); track $index) {<span class=\"code-line\">{{ line || '\\n' }}</span>}</code></pre>\n</div>\n","import { Component, effect, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'nath-datepicker',\n imports: [CommonModule, OverlayModule, FormsModule],\n templateUrl: './datepicker.html',\n styleUrls: ['./datepicker.css'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-datepicker-host',\n },\n})\nexport class NathDatepicker implements FormValueControl<Date | null> {\n // --- I/O ---\n withTime = input<boolean>(false);\n placeholder = input<string>('dd/mm/yyyy');\n inputId = input<string | null>(null);\n language = input<string>('en');\n disabled = input<boolean>(false);\n touched = model<boolean>(false);\n dirty = model<boolean>(false);\n\n // --- Internal State Signals ---\n value = model<Date | null>(null);\n dateInputValue = model<string | null>(null);\n dateTimeInputValue = model<string | null>(null);\n\n constructor() {\n effect(() => {\n const value = this.value();\n const dateInputValue = this.dateInputValue();\n const dateTimeInputValue = this.dateTimeInputValue();\n if (this.withTime()) {\n const dateToCompare = dateTimeInputValue ? new Date(dateTimeInputValue) : null;\n if (dateToCompare?.getTime() !== value?.getTime()) {\n this.dateTimeInputValue.set(this.toLocaleISOString(value) ?? null);\n }\n } else {\n const dateToCompare = dateInputValue ? new Date(dateInputValue) : null;\n if (dateToCompare?.getTime() !== value?.getTime()) {\n this.dateInputValue.set(this.toLocaleDateISOString(value) ?? null);\n }\n }\n });\n }\n\n private toLocaleISOString(date: Date | null) {\n return (\n date?.toLocaleString('sv', {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }) ?? null\n );\n }\n private toLocaleDateISOString(date: Date | null) {\n return (\n date?.toLocaleDateString('sv', {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }) ?? null\n );\n }\n\n protected onDateTimeInputChange(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n if (target.value) {\n this.value.set(new Date(target.value));\n } else {\n this.value.set(null);\n }\n }\n\n protected onDateInputChange(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n if (target.value) {\n this.value.set(new Date(target.value + ' 00:00:00'));\n } else {\n this.value.set(null);\n }\n }\n}\n","@if (withTime()) {\n <input\n type=\"datetime-local\"\n [(ngModel)]=\"dateTimeInputValue\"\n [attr.id]=\"inputId() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n class=\"nath-datepicker-datetime-input\"\n (input)=\"onDateTimeInputChange($event)\"\n />\n} @else {\n <input\n type=\"date\"\n [(ngModel)]=\"dateInputValue\"\n [attr.id]=\"inputId() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n class=\"nath-datepicker-date-input\"\n [lang]=\"language()\"\n (input)=\"onDateInputChange($event)\"\n />\n}\n","import { InjectionToken, Injector, signal, TemplateRef } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Observable } from 'rxjs';\n\nexport const DIALOG_DATA = new InjectionToken<any>('DIALOG_DATA');\n\nexport interface NathDialogConfig<D = any> {\n data?: D;\n header?: string | TemplateRef<any>;\n width?: string;\n}\n\nexport class NathDialogRef<R = any> {\n private readonly _afterClosed = signal<R | undefined>(undefined);\n readonly afterClosedSignal = this._afterClosed.asReadonly();\n readonly afterClosed$: Observable<R | undefined>;\n\n // Track the maximized state as a readonly signal for the UI\n private readonly _maximized = signal<boolean>(false);\n readonly maximized = this._maximized.asReadonly();\n\n private readonly closeCallback?: (result?: R) => void;\n\n constructor(init: { onClose: (result?: R) => void; injector: Injector }) {\n this.closeCallback = init.onClose;\n this.afterClosed$ = toObservable(this._afterClosed, {\n injector: init.injector,\n });\n }\n\n /** Toggles or sets the maximized state of the dialog */\n maximize(state?: boolean): void {\n this._maximized.set(state ?? !this._maximized());\n }\n\n close(result?: R): void {\n this._afterClosed.set(result);\n if (this.closeCallback) this.closeCallback(result);\n }\n}\n","import {\n Component,\n EmbeddedViewRef,\n inject,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NathDialogRef } from './dialog-ref';\nimport { LucideDynamicIcon, LucideMaximize2, LucideMinimize2, LucideX } from '@lucide/angular';\n\n@Component({\n selector: 'nath-dialog-container',\n standalone: true,\n imports: [CdkPortalOutlet, DragDropModule, NgTemplateOutlet, LucideX, LucideDynamicIcon],\n template: `\n <div class=\"nath-dialog-theme nath-dialog-mask\" (click)=\"onMaskClick($event)\">\n <div\n #dialogWindow\n cdkDrag\n cdkDragBoundary=\"body\"\n [style.width]=\"width() || '450px'\"\n class=\"nath-dialog-window\"\n [class.dialog-maximized]=\"dialogRef.maximized()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div cdkDragHandle class=\"nath-dialog-header\">\n <div>\n @if (isTemplateRef(header())) {\n <ng-container [ngTemplateOutlet]=\"headerAsTemplate()\" />\n } @else if (header()) {\n <h2 class=\"nath-dialog-title\">\n {{ header() }}\n </h2>\n }\n </div>\n\n <div class=\"nath-dialog-header-actions\">\n <button type=\"button\" class=\"nath-dialog-action-btn\" (click)=\"dialogRef.maximize()\">\n <svg\n [lucideIcon]=\"dialogRef.maximized() ? LucideMinimize2 : LucideMaximize2\"\n [size]=\"24\"\n />\n </button>\n <button type=\"button\" class=\"nath-dialog-action-btn\" (click)=\"dialogRef.close()\">\n <svg lucideX [size]=\"24\" />\n </button>\n </div>\n </div>\n\n <div class=\"nath-dialog-body\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n </div>\n </div>\n `,\n styleUrl: './dialog.css',\n encapsulation: ViewEncapsulation.None,\n host: {},\n})\nexport class NathDialogContainer extends BasePortalOutlet {\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n protected readonly dialogRef = inject(NathDialogRef);\n\n // Exposed updatable signals\n readonly header = signal<string | TemplateRef<any> | undefined>(undefined);\n readonly width = signal<string | undefined>(undefined);\n\n override attachComponentPortal<T>(portal: ComponentPortal<T>) {\n return this.portalOutlet().attachComponentPortal(portal);\n }\n\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n onMaskClick(event: MouseEvent): void {\n this.dialogRef.close();\n }\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n protected headerAsTemplate(): TemplateRef<any> {\n return this.header() as TemplateRef<any>;\n }\n\n protected readonly LucideMinimize2 = LucideMinimize2;\n protected readonly LucideMaximize2 = LucideMaximize2;\n}\n","import {\n ApplicationRef,\n createComponent,\n createEnvironmentInjector,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n} from '@angular/core';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport { DIALOG_DATA, NathDialogConfig, NathDialogRef } from './dialog-ref';\nimport { NathDialogContainer } from './dialog-container';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NathDialogService {\n private readonly injector = inject(Injector);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n private readonly router = inject(Router);\n\n private readonly openDialogs = new Set<NathDialogRef<any>>();\n\n constructor() {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => this.closeAll());\n }\n\n open<T, D = any, R = any>(\n content: ComponentType<T> | TemplateRef<any>,\n config: NathDialogConfig<D>,\n ): NathDialogRef<R> {\n const dialogRef = new NathDialogRef<R>({\n injector: this.injector,\n onClose: () => this.destroyDialog(containerRef, bodyElement),\n });\n\n const customInjector = Injector.create({\n providers: [\n { provide: NathDialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n parent: this.injector,\n });\n\n const environmentInjector = createEnvironmentInjector([], this.environmentInjector);\n const containerRef = createComponent(NathDialogContainer, {\n environmentInjector,\n elementInjector: customInjector,\n });\n\n // Register the view with Angular's global change detection loop\n this.appRef.attachView(containerRef.hostView);\n\n const bodyElement = document.body;\n bodyElement.appendChild(containerRef.location.nativeElement);\n\n if (content instanceof TemplateRef) {\n const templatePortal = new TemplatePortal(\n content,\n null!, // viewContainerRef is optional if you pass a custom injector tree\n config.data, // This becomes the implicit $implicit context inside the template\n customInjector,\n );\n containerRef.instance.attachTemplatePortal(templatePortal);\n } else {\n const componentPortal = new ComponentPortal(content, null, customInjector);\n containerRef.instance.attachComponentPortal(componentPortal);\n }\n\n containerRef.instance.header.set(config.header);\n containerRef.instance.width.set(config.width);\n\n containerRef.changeDetectorRef.detectChanges();\n\n return dialogRef;\n }\n\n /**\n * Closes all currently open dialogs (e.g., when routing away).\n */\n closeAll(): void {\n // Clone the set to avoid modification issues while iterating and deleting items\n const dialogsToClose = Array.from(this.openDialogs);\n dialogsToClose.forEach((dialog) => dialog.close());\n }\n\n private destroyDialog(containerRef: any, bodyElement: HTMLElement): void {\n if (containerRef) {\n // Detach from the global ApplicationRef change detection loop first\n this.appRef.detachView(containerRef.hostView);\n\n // Safely remove the element from the DOM using standard native check\n const element = containerRef.location.nativeElement;\n if (element?.parentNode === bodyElement) {\n element.remove();\n }\n\n // Let Angular destroy the component context and finish structural cleanup\n containerRef.destroy();\n }\n }\n}\n","import { Component, inject, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DIALOG_DATA, NathDialogRef } from './dialog-ref';\nimport { NathConfirmationConfig } from './confirmation-types';\n\n@Component({\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div class=\"nath-dialog-theme nath-confirmation-dialog\">\n <div class=\"nath-dialog-content-text\">\n @if (isTemplateRef(config.content)) {\n <ng-container [ngTemplateOutlet]=\"contentAsTemplate()\" />\n } @else {\n <p class=\"leading-relaxed whitespace-pre-wrap\">\n {{ config.content }}\n </p>\n }\n </div>\n\n <div class=\"nath-dialog-footer\">\n @for (btn of buttons; track btn.label) {\n <button\n type=\"button\"\n class=\"nath-dialog-btn\"\n [class]=\"btn.customClass\"\n [class.nath-dialog-btn--default]=\"!btn.customClass\"\n (click)=\"handleButtonClick(btn)\"\n >\n {{ btn.label }}\n </button>\n }\n </div>\n </div>\n `,\n styleUrl: './dialog.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathConfirmationDialog {\n protected readonly dialogRef = inject(NathDialogRef);\n protected readonly config = inject<NathConfirmationConfig>(DIALOG_DATA);\n\n // Fallback default buttons if none are provided\n protected get buttons() {\n if (this.config.buttons && this.config.buttons.length > 0) {\n return this.config.buttons;\n }\n\n // Default system fallback: Yes / No\n return [\n {\n label: 'No',\n customClass: this.config.rejectButtonStyleClass ?? 'button-secondary',\n action: () => {\n this.config.reject?.();\n },\n },\n {\n label: 'Yes',\n customClass: this.config.acceptButtonStyleClass ?? 'button-primary',\n action: () => {\n this.config.accept?.();\n },\n },\n ];\n }\n\n async handleButtonClick(btn: any) {\n // 1. Run the button callback (supports async/promises if needed)\n if (btn.action) {\n await btn.action();\n }\n\n // 2. Conditional closing mechanism based on preventClose parameter\n if (!btn.preventClose) {\n this.dialogRef.close(btn.label);\n }\n }\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n protected contentAsTemplate(): TemplateRef<any> {\n return this.config.content as TemplateRef<any>;\n }\n}\n","import { inject, Service } from '@angular/core';\nimport { NathDialogService } from './dialog.service';\nimport { NathConfirmationConfig } from './confirmation-types';\nimport { NathConfirmationDialog } from './confirmation-dialog';\nimport { NathDialogRef } from './dialog-ref';\n\n@Service()\nexport class NathConfirmationService {\n private readonly dialogService = inject(NathDialogService);\n\n /** Spawns a type-safe confirmation window */\n confirm(config: NathConfirmationConfig): NathDialogRef<string> {\n return this.dialogService.open<NathConfirmationDialog, NathConfirmationConfig, string>(\n NathConfirmationDialog,\n {\n header: config.header,\n width: config.width || '450px',\n data: config,\n },\n );\n }\n}\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT, NgStyle } from '@angular/common';\nimport { LucideX } from '@lucide/angular';\n\n@Component({\n selector: 'nath-drawer',\n exportAs: 'drawer',\n imports: [LucideX, NgStyle],\n template: `\n <div #container class=\"nath-drawer-theme nath-drawer-container\" [ngStyle]=\"drawerStyles()\">\n <div class=\"nath-drawer-header\">\n <div class=\"nath-drawer-header-content\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n <button type=\"button\" class=\"button-text-primary\" (click)=\"close()\">\n <svg lucideX [size]=\"24\" />\n </button>\n </div>\n <div class=\"nath-drawer-body\">\n <ng-content />\n </div>\n </div>\n <div\n class=\"nath-drawer-mask\"\n [class.nath-drawer-mask--hidden]=\"!visible()\"\n (click)=\"close()\"\n ></div>\n `,\n styleUrl: './drawer.css',\n encapsulation: ViewEncapsulation.None,\n host: {},\n})\nexport class NathDrawer implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly document = inject(DOCUMENT);\n\n visible = model<boolean>(false);\n position = input<'left' | 'right'>('right');\n transitionDuration = input<string>('300ms');\n\n closed = output();\n opened = output();\n\n drawerStyles = computed(() => {\n const isVisible = this.visible();\n return {\n width: `var(--nath-drawer-width)`,\n [this.position()]: isVisible ? '0' : `calc(-1 * var(--nath-drawer-width))`,\n 'transition-duration': this.transitionDuration(),\n visibility: isVisible ? 'visible' : 'hidden',\n 'pointer-events': isVisible ? 'auto' : 'none',\n };\n });\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this.opened.emit();\n }\n });\n }\n\n ngOnInit() {\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.elementRef.nativeElement.remove();\n }\n\n protected close() {\n this.visible.set(false);\n this.closed.emit();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { Field } from '@angular/forms/signals';\n\n@Component({\n selector: 'nath-file-upload',\n template: `\n <div class=\"inputgroup\">\n <div>\n <input\n #input\n type=\"file\"\n id=\"{{ inputId() }}\"\n class=\"input-file\"\n accept=\"accept\"\n (change)=\"onFileChange($event)\"\n />\n <label for=\"{{ inputId() }}\">{{ buttonLabel() }}</label>\n <span class=\"mx-2\">{{ selectedFileName }}</span>\n </div>\n @if (formField()().value()) {\n <button class=\"button-secondary\" type=\"button\" (click)=\"clearFile()\">\n <span>Annuler</span>\n </button>\n }\n </div>\n `,\n styles: `\n .input-file {\n width: 0.1px;\n height: 0.1px;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n z-index: -1;\n }\n .input-file + label {\n display: inline-block;\n background-color: #7b95a3;\n color: white;\n padding: 0.429em 1em;\n cursor: pointer;\n vertical-align: middle;\n }\n .input-file:focus + label {\n outline: 1px dotted #000;\n outline: -webkit-focus-ring-color auto 5px;\n }\n .input-file + label * {\n pointer-events: none;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [],\n})\nexport class NathFileUpload {\n input = viewChild<HTMLInputElement>('input');\n inputRef = viewChild<ElementRef>('input');\n changeEvent = output();\n readonly inputId = input('file');\n readonly buttonLabel = input('Choisir un fichier');\n readonly accept = input('*');\n readonly formField = input.required<Field<any>>();\n readonly controlName = input.required<string>();\n\n selectedFileName = '';\n\n onFileChange(event: any) {\n if (this.input()?.files?.length) {\n this.selectedFileName = (this.input()?.dataset['multipleCaption'] || '').replace(\n '{count}',\n this.input()?.files?.length.toString() ?? '',\n );\n } else {\n this.selectedFileName = event.target.value.split('\\\\').pop();\n }\n this.changeEvent.emit(event);\n\n const files: FileList = event.target.files;\n if (files?.length) {\n const fieldVal = files[0].name;\n if (fieldVal !== undefined || fieldVal !== '') {\n const update: any = {};\n update[this.controlName()] = files[0];\n this.formField()().value.set(update);\n } else {\n this.clearFile();\n }\n }\n }\n\n clearFile() {\n const inputRef = this.inputRef();\n if (inputRef) inputRef.nativeElement.value = '';\n this.selectedFileName = '';\n }\n}\n","import {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { FieldState } from '@angular/forms/signals';\n\nexport const validateAllFormFields = (formGroup: FormGroup) => {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n control.updateValueAndValidity();\n } else if (control instanceof FormGroup) {\n validateAllFormFields(control);\n }\n });\n};\n\nexport function hasRequiredValidator(control: AbstractControl | null): boolean {\n if (!control) {\n return false;\n }\n return control.hasValidator(Validators.required);\n}\n\nexport function isRequired(fieldState: FieldState<any, any> | null): boolean {\n if (!fieldState) {\n return false;\n }\n return fieldState.required();\n}\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\r\nimport { isRequired } from '../utilities/form.util';\r\nimport { FieldState } from '@angular/forms/signals';\r\n\r\n@Component({\r\n selector: 'nath-floating-label',\r\n imports: [],\r\n template: `\r\n <div [class]=\"contentClass()\">\r\n <ng-content />\r\n </div>\r\n <label [for]=\"inputId()\" class=\"nath-floating-label-text\" [class]=\"labelClass()\">\r\n {{ label() }}\r\n @if (required() || isFieldRequired()) {\r\n <span class=\"nath-floating-label-required-star\">*</span>\r\n }\r\n </label>\r\n `,\r\n styleUrl: './floating-label.css',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'nath-floating-label-theme input',\r\n },\r\n})\r\nexport class NathFloatingLabel {\r\n label = input.required<string>();\r\n inputId = input.required<string>();\r\n labelClass = input<string>('');\r\n contentClass = input<string>('');\r\n required = input<boolean>(false);\r\n signalField = input<FieldState<any, any>>();\r\n\r\n /**\r\n * Evaluates the programmatically linked signal field form state requirement status reactively.\r\n */\r\n protected readonly isFieldRequired = computed(() => {\r\n const fieldState = this.signalField();\r\n return !!fieldState && isRequired(fieldState);\r\n });\r\n}\r\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { FieldState } from '@angular/forms/signals';\nimport { AbstractControl } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\n\n@Component({\n selector: 'nath-show-errors',\n imports: [],\n template: `\n @if (shouldShowErrors()) {\n <div class=\"nath-show-errors-container\">\n @if (signalField()) {\n @for (error of signalField()!.errors(); track error.kind) {\n <div class=\"nath-show-errors-item\">{{ error.message }}</div>\n }\n }\n @if (control()) {\n @for (error of controlErrors(); track error.message) {\n <div class=\"nath-show-errors-item\">{{ error.message }}</div>\n }\n }\n </div>\n }\n `,\n styleUrl: './show-errors.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathShowErrors {\n private static readonly errorMessages = {\n required: () => 'This field is required',\n minlength: (params: { requiredLength: string }) =>\n 'Must be at least ' + params.requiredLength + ' characters',\n maxlength: (params: { requiredLength: string }) =>\n 'Cannot exceed ' + params.requiredLength + ' characters',\n pattern: (params: { requiredPattern: string }) =>\n 'The required pattern is: ' + params.requiredPattern,\n range: (message: string) => message,\n minValue: (message: string) => message,\n maxValue: (message: string) => message,\n integer: () => `Must be an integer`,\n };\n\n readonly signalField = input<FieldState<any, any>>();\n readonly control = input<AbstractControl>();\n\n controlValue = toSignal(this.control()?.valueChanges ?? of(null));\n\n controlErrors = computed(() => {\n this.controlValue();\n return this.listOfErrors();\n });\n\n public static getMessage(type: string, params: any) {\n return NathShowErrors.errorMessages[type as keyof typeof NathShowErrors.errorMessages](params);\n }\n\n shouldShowErrors(): boolean {\n const fieldState = this.signalField();\n const control = this.control();\n return (\n (!!fieldState && !!fieldState.errors() && (fieldState.dirty() || fieldState.touched())) ||\n (!!control && !!control.errors && (control.dirty || control.touched))\n );\n }\n\n listOfErrors(): any[] {\n const result: { kind: string; message: string }[] = [];\n const control = this.control();\n if (control?.errors) {\n for (const errorsKey in control.errors) {\n result.push({\n kind: errorsKey,\n message: NathShowErrors.getMessage(errorsKey, control?.errors?.[errorsKey]),\n });\n }\n }\n return result;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { hasRequiredValidator, isRequired } from '../utilities/form.util';\nimport { FieldState } from '@angular/forms/signals';\nimport { NathShowErrors } from '../show-errors/show-errors';\n\n@Component({\n selector: 'nath-form-field',\n standalone: true,\n imports: [ReactiveFormsModule, NathShowErrors, NgClass],\n template: `\n <div\n class=\"nath-form-field-theme nath-form-field-container\"\n [class.has-error]=\"!!signalField()?.invalid()\"\n >\n <label [for]=\"inputId()\" class=\"nath-form-field-label\" [ngClass]=\"labelClasses()\">\n <ng-content select=\"label\"></ng-content>\n </label>\n <ng-content></ng-content>\n\n @if (signalField()) {\n <nath-show-errors [signalField]=\"signalField()!\" />\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './form-field.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathFormField {\n inputId = input<string | null>(null);\n control = input<AbstractControl | null>(null);\n signalField = input<FieldState<any, any>>();\n required = input<boolean>(false);\n labelClass = input<string>('');\n\n labelClasses = computed(() => {\n let fieldState = this.signalField();\n let control = this.control();\n const classes: Record<string, boolean> = {\n [this.labelClass()]: true,\n 'nath-form-field-label--required':\n (!!fieldState && isRequired(fieldState)) || (!!control && hasRequiredValidator(control)),\n };\n return classes;\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n isLucideIconComponent,\n LucideDynamicIcon,\n LucideEye,\n LucideIcon,\n LucideLoaderCircle,\n LucideX,\n} from '@lucide/angular';\n\n@Component({\n selector: 'nath-image-preview',\n imports: [LucideEye, LucideDynamicIcon, LucideLoaderCircle, LucideX],\n template: `\n @if (!displayedImage()) {\n <div class=\"nath-image-preview-no-image\">\n @if (fallbackIcon() && !loading()) {\n @if (isLucideIconComponent(fallbackIcon())) {\n <svg\n [lucideIcon]=\"fallbackIcon()\"\n [size]=\"64\"\n class=\"nath-image-preview-text-muted\"\n ></svg>\n } @else {\n <span class=\"{{ fallbackIcon() }} nath-image-preview-text-muted\"></span>\n }\n }\n @if (loading()) {\n <svg\n lucideLoaderCircle\n [size]=\"32\"\n class=\"nath-image-preview-animate-spin nath-image-preview-text-muted\"\n />\n }\n </div>\n }\n @if (displayedImage()) {\n <img\n [src]=\"displayedImage()\"\n [alt]=\"text() ?? ''\"\n loading=\"lazy\"\n (click)=\"onClick()\"\n class=\"nath-image-preview-thumbnail\"\n />\n }\n @if (displayedImage() && !preview()) {\n <div class=\"nath-image-preview-hover-trigger\" (click)=\"onClick()\">\n <svg lucideEye class=\"nath-image-preview-eye-icon\" />\n </div>\n }\n\n @if (isModalOpen() && image()) {\n <div class=\"nath-image-preview-modal\" (click)=\"closeModal()\">\n <button\n class=\"nath-image-preview-close-btn\"\n (click)=\"closeModal(); $event.stopPropagation()\"\n aria-label=\"Close preview\"\n >\n <svg lucideX [size]=\"24\" />\n </button>\n\n <div class=\"nath-image-preview-modal-content\" (click)=\"$event.stopPropagation()\">\n <img [src]=\"image()\" [alt]=\"text() ?? ''\" class=\"nath-image-preview-full-image\" />\n </div>\n </div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './image-preview.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {},\n})\nexport class NathImagePreview {\n readonly image = input.required<string | undefined>();\n readonly thumbnail = input<string>('');\n readonly text = input.required<string | null>();\n readonly fallbackIcon = input.required<string | LucideIcon>();\n readonly loading = input(false);\n readonly preview = input(true);\n\n imageClick = output();\n\n displayedImage = signal<string>('');\n isModalOpen = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n // On load, display provided thumbnail or fall back to image\n this.displayedImage.set((this.thumbnail() || this.image()) ?? '');\n });\n }\n\n onClick() {\n if (this.preview()) {\n // Show image() in full size in a modal overlay\n if (this.image()) {\n this.isModalOpen.set(true);\n }\n }\n this.imageClick.emit();\n }\n\n closeModal() {\n this.isModalOpen.set(false);\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n output,\n SecurityContext,\n signal,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { MenuItem } from './menu-item.model';\nimport { isLucideIconComponent, LucideDynamicIcon } from '@lucide/angular';\n\nconst SUBMENU_ALIGNMENT_CONFIG = {\n ESTIMATED_INITIAL_WIDTH_PX: 200,\n VIEWPORT_COLLISION_PADDING_PX: 8,\n};\n\n@Component({\n selector: 'nath-menu-list',\n imports: [RouterLink, RouterLinkActive, LucideDynamicIcon],\n templateUrl: './menu-list.html',\n styleUrls: ['./menu-list.css'],\n host: {},\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMenuList {\n // ────────────────────────────────────────────────────────────────────────────────\n // INJECTIONS\n // ────────────────────────────────────────────────────────────────────────────────\n private readonly sanitizer = inject(DomSanitizer);\n // ────────────────────────────────────────────────────────────────────────────────\n // I/O\n // ────────────────────────────────────────────────────────────────────────────────\n items = input<MenuItem[]>([]);\n direction = input<'left' | 'right'>('right');\n flat = input<boolean>(false);\n\n whenCommand = output<{ item: MenuItem; index?: number; event?: Event }>();\n // ────────────────────────────────────────────────────────────────────────────────\n // MODEL\n // ────────────────────────────────────────────────────────────────────────────────\n private readonly submenuContainers = viewChildren<ElementRef<HTMLElement>>('submenuContainer');\n\n protected readonly activeItem = signal<MenuItem | null>(null);\n\n // Note: these will map directly to VIEWPORT coordinates via position: fixed\n protected readonly submenuTop = signal<number>(0);\n protected readonly submenuLeft = signal<number>(0);\n protected readonly nextSubmenuDirection = signal<'left' | 'right'>('right');\n\n // ────────────────────────────────────────────────────────────────────────────────\n // METHODS\n // ────────────────────────────────────────────────────────────────────────────────\n\n protected getMenuLabel(item: MenuItem): string | SafeHtml {\n if (!item.label) return '';\n return item.escape === false\n ? (this.sanitizer.sanitize(SecurityContext.HTML, item.label) ?? '')\n : item.label;\n }\n\n protected onItemHover(item: MenuItem, event: Event) {\n this.activeItem.set(item);\n\n const targetLi = event.currentTarget as HTMLElement;\n if (!targetLi) return;\n\n // Grab the exact viewport coordinates of the row being hovered\n const liRect = targetLi.getBoundingClientRect();\n let currentDir: 'left' | 'right' = this.direction();\n\n // Align vertical matching perfectly with the top edge of the current row item\n this.submenuTop.set(liRect.top);\n\n // Provide a tentative baseline for horizontal estimation measurements\n if (currentDir === 'left') {\n this.submenuLeft.set(liRect.left - SUBMENU_ALIGNMENT_CONFIG.ESTIMATED_INITIAL_WIDTH_PX);\n } else {\n this.submenuLeft.set(liRect.right);\n }\n\n this.nextSubmenuDirection.set(currentDir);\n\n // Measure live dimensions once instantiated in the next frame\n setTimeout(() => {\n const subContainer = this.submenuContainers()[0]?.nativeElement;\n if (!subContainer) return;\n\n const subRect = subContainer.getBoundingClientRect();\n const dynamicMenuWidth = subRect.width;\n\n // Check if trending right spills off screen boundary\n if (currentDir === 'right' && liRect.right + dynamicMenuWidth > window.innerWidth) {\n currentDir = 'left';\n }\n\n // Shift horizontal layout flush using viewport targets\n if (currentDir === 'left') {\n this.submenuLeft.set(liRect.left - dynamicMenuWidth);\n } else {\n this.submenuLeft.set(liRect.right);\n }\n\n this.nextSubmenuDirection.set(currentDir);\n\n // Fluid vertical overflow protection\n if (subRect.bottom > window.innerHeight) {\n const overflowDistance = subRect.bottom - window.innerHeight;\n // Shift up smoothly based on screen collision\n this.submenuTop.set(\n liRect.top - overflowDistance - SUBMENU_ALIGNMENT_CONFIG.VIEWPORT_COLLISION_PADDING_PX,\n );\n }\n\n // Reveal once calculations are complete\n subContainer.classList.remove('invisible');\n });\n }\n\n private executeItem(item: MenuItem, index?: number, event?: Event) {\n if (item.items && item.items.length > 0) return;\n this.whenCommand.emit({ item, index, event });\n }\n\n protected onItemClick(item: any, $index: number, $event: Event) {\n if (!item.disabled) {\n $event.stopPropagation();\n this.executeItem(item, $index, $event);\n }\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","<ul class=\"nath-menu-list-theme nath-menu-list nath-menu-custom-scrollbar\">\r\n @for (item of items(); track item.label) {\r\n <li\r\n class=\"nath-menu-item\"\r\n [class.nath-menu-item--enabled]=\"!item.disabled\"\r\n [class.nath-menu-item--disabled]=\"item.disabled\"\r\n [class.nath-menu-item--padded]=\"!item.separator\"\r\n [class.nath-menu-item--separator]=\"item.separator\"\r\n [class.nath-menu-item--clickable]=\"item.routerLink || item.command || item.url\"\r\n [class.nath-menu-item--header]=\"!item.routerLink && !item.command && !item.url\"\r\n [class.nath-menu-item--interactive]=\"\r\n !item.disabled &&\r\n (item.routerLink || item.command || item.url || (item.items?.length && !flat()))\r\n \"\r\n [routerLink]=\"item.routerLink\"\r\n [queryParams]=\"item.queryParams\"\r\n routerLinkActive=\"bg-primary-800 text-white!\"\r\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions || { exact: false }\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.title]=\"item.title\"\r\n (mouseenter)=\"!item.disabled && onItemHover(item, $event)\"\r\n (click)=\"onItemClick(item, $index, $event)\"\r\n (keydown.enter)=\"onItemClick(item, $index, $event)\"\r\n >\r\n @if (!item.separator) {\r\n <span class=\"nath-menu-item-content\">\r\n @if (item.icon) {\r\n @if (isLucideIconComponent(item.icon)) {\r\n <svg [lucideIcon]=\"item.icon\" />\r\n } @else {\r\n <i [class]=\"item.icon\"></i>\r\n }\r\n }\r\n @if (item.escape === false) {\r\n <span [innerHTML]=\"getMenuLabel(item)\"></span>\r\n } @else {\r\n <span class=\"nath-menu-item-text-truncate\">{{ item.label }}</span>\r\n }\r\n </span>\r\n\r\n @if (item.items && item.items.length > 0 && !flat()) {\r\n <span class=\"nath-menu-item-arrow\">›</span>\r\n }\r\n }\r\n </li>\r\n\r\n @if (flat() && item.items) {\r\n <nath-menu-list [items]=\"item.items\" (whenCommand)=\"whenCommand.emit($event)\" />\r\n }\r\n } @empty {\r\n <li class=\"nath-menu-item nath-menu-item--padded nath-menu-item--disabled\">\r\n No actions available\r\n </li>\r\n }\r\n</ul>\r\n\r\n@if (!flat()) {\r\n @if (activeItem() && activeItem()!.items && activeItem()!.items!.length > 0) {\r\n <div\r\n #submenuContainer\r\n class=\"nath-menu-list-theme nath-menu-submenu-panel\"\r\n [style.left.px]=\"submenuLeft()\"\r\n [style.top.px]=\"submenuTop()\"\r\n >\r\n <nath-menu-list\r\n [items]=\"activeItem()!.items!\"\r\n [direction]=\"nextSubmenuDirection()\"\r\n (whenCommand)=\"whenCommand.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MenuItem } from './menu-item.model';\nimport { DOCUMENT } from '@angular/common';\nimport { NathMenuList } from './menu-list';\nimport { NathMenuPositionX, NathMenuPositionY } from './menu.types';\n\nconst TIERED_MENU_LAYOUT_CONFIG = {\n VIEWPORT_PADDING_PX: 8,\n};\n\n@Component({\n selector: 'nath-menu',\n imports: [NathMenuList],\n templateUrl: './menu.html',\n styleUrls: ['./menu.css'],\n host: {\n '[class]': `styleClass()`,\n '(document:click)': `hide();`,\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMenu implements AfterContentInit, OnDestroy {\n private readonly document = inject(DOCUMENT);\n\n model = model<MenuItem[]>([]);\n styleClass = model<string | null | undefined>('');\n positionX = input<NathMenuPositionX>('auto');\n positionY = input<NathMenuPositionY>('auto');\n inline = input<boolean>(false);\n flat = input<boolean>(false);\n\n whenHide = output();\n rootMenuElement = viewChild<ElementRef<HTMLElement>>('rootMenu');\n\n isVisible = signal<boolean>(false);\n rawPosition = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n adjustedPosition = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n\n ngAfterContentInit() {\n if (this.inline()) {\n this.isVisible.set(true);\n }\n }\n\n /**\n * Show menu in popup mode\n */\n show(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n let x = event.clientX;\n let y = event.clientY;\n\n const positionX = this.positionX();\n const positionY = this.positionY();\n const target = event.currentTarget as HTMLElement;\n\n const targetRect = target.getBoundingClientRect();\n if (positionX !== 'auto' && target) {\n if (positionX === 'left') {\n x = targetRect.left;\n } else if (positionX === 'right') {\n x = targetRect.right;\n }\n }\n if (positionY !== 'auto' && target) {\n if (positionY === 'top') {\n y = targetRect.top;\n } else {\n y = targetRect.bottom;\n }\n }\n\n this.rawPosition.set({ x, y });\n this.adjustedPosition.set({ x, y });\n this.isVisible.set(true);\n\n // Calculate viewport collision and append to body on next execution frame\n setTimeout(() => {\n const rootMenuElement = this.rootMenuElement();\n if (!rootMenuElement) return;\n const el = rootMenuElement.nativeElement;\n\n // ──────────────────────────────────────────────────────────────────────────────\n // BODY PROJECTION LAYER STRATEGY\n // ──────────────────────────────────────────────────────────────────────────────\n // If popup mode is active, relocate the DOM element directly into document.body\n if (!this.inline() && el.parentElement !== this.document.body) {\n this.document.body.appendChild(el);\n }\n\n const rect = el.getBoundingClientRect();\n let adjustedX = x;\n let adjustedY = y;\n\n if (positionX === 'right') {\n adjustedX = x - rect.width;\n }\n if (positionY === 'top') {\n adjustedY = y - rect.height;\n }\n\n // Check horizontal boundary clipping\n if (adjustedX + rect.width > window.innerWidth) {\n adjustedX = window.innerWidth - rect.width - TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n if (adjustedX < TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX) {\n adjustedX = TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n // Check vertical boundary clipping\n if (adjustedY + rect.height > window.innerHeight) {\n adjustedY =\n window.innerHeight - rect.height - TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n this.adjustedPosition.set({ x: adjustedX, y: adjustedY });\n el.classList.remove('nath-menu-panel--invisible');\n });\n }\n\n hide() {\n if (this.isVisible() && !this.inline()) {\n this.isVisible.set(false);\n this.whenHide.emit();\n\n // Clean up the moved element from the body when hidden\n const el = this.rootMenuElement()?.nativeElement;\n if (el?.parentElement === this.document.body) {\n el.remove();\n }\n }\n }\n\n toggle(event: MouseEvent) {\n if (this.isVisible()) this.hide();\n else this.show(event);\n }\n\n handleCommand(payload: { item: MenuItem; index?: number; event?: Event }) {\n if (payload.item.command) {\n payload.item.command({\n originalEvent: payload.event,\n item: payload.item,\n index: payload.index,\n });\n }\n this.hide();\n }\n\n ngOnDestroy() {\n // Fail-safe cleanup to guarantee no leftover detached elements remain in body context\n const el = this.rootMenuElement()?.nativeElement;\n if (el?.parentElement === this.document.body) {\n el.remove();\n }\n }\n}\n","@if (isVisible()) {\n <div\n #rootMenu\n class=\"nath-menu-theme nath-menu-panel\"\n [class.nath-menu-panel--inline]=\"inline()\"\n [class.nath-menu-panel--invisible]=\"!inline()\"\n [style.left.px]=\"adjustedPosition().x\"\n [style.top.px]=\"adjustedPosition().y\"\n (click)=\"$event.stopPropagation()\"\n (keydown.enter)=\"$event.stopPropagation()\"\n >\n <nath-menu-list [items]=\"model()\" [flat]=\"flat()\" (whenCommand)=\"handleCommand($event)\" />\n </div>\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideChevronDown, LucideSquare, LucideSquareCheck, LucideX } from '@lucide/angular';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n@Component({\n selector: 'nath-multiselect',\n imports: [\n CommonModule,\n OverlayModule,\n ScrollingModule,\n LucideX,\n LucideChevronDown,\n LucideSquare,\n LucideSquareCheck,\n ],\n template: `\n <div\n class=\"nath-multiselect-combobox {{ comboboxClass() }}\"\n [class.nath-multiselect-combobox--has-clear]=\"showClearButton()\"\n [class.nath-multiselect-combobox--borderless]=\"borderless()\"\n [class.nath-multiselect-combobox--disabled]=\"isDisabled()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"isDisabled()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n #container\n (click)=\"toggle()\"\n >\n @if (hasNoSelection()) {\n <div class=\"nath-multiselect-placeholder\">\n {{ placeholder() }}\n </div>\n } @else {\n @for (item of selectedItems(); track $index) {\n <div class=\"nath-multiselect-tag\">\n <span [class.opacity-50]=\"disabled()\">\n {{ displayFn()(item) }}\n </span>\n\n <button\n type=\"button\"\n (click)=\"removeItem(item, $event)\"\n class=\"nath-multiselect-tag-remove\"\n [disabled]=\"disabled()\"\n >\n <svg class=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2.5\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n }\n }\n\n @if (showClearButton()) {\n <button\n type=\"button\"\n class=\"nath-multiselect-clear-btn\"\n aria-label=\"Clear selection\"\n (click)=\"$event.stopPropagation(); clear()\"\n >\n <svg lucideX [size]=\"16\" />\n </button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen() && options().length > 0\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"nath-multiselect-backdrop\"\n cdkConnectedOverlayPanelClass=\"nath-multiselect-theme\"\n (backdropClick)=\"hideDropdown()\"\n >\n <div\n class=\"nath-multiselect-overlay nath-multiselect-theme\"\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\n >\n @if (filter()) {\n <div class=\"nath-multiselect-search-container\">\n <input\n #inputField\n type=\"text\"\n [id]=\"inputId() || controlId() + '-search'\"\n [value]=\"inputValue()\"\n (input)=\"onInputChange($event)\"\n aria-label=\"Filter options\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n class=\"nath-multiselect-search-input\"\n />\n </div>\n }\n\n <div\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-multiselectable]=\"true\"\n class=\"nath-multiselect-options-list\"\n >\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport [itemSize]=\"virtualScrollItemSize()\" class=\"h-[240px]\">\n <div\n *cdkVirtualFor=\"let item of filteredOptions(); let idx = index\"\n [id]=\"optionIdPrefix() + idx\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item)\"\n (click)=\"selectItem(item)\"\n [class.nath-multiselect-option--active]=\"activeTrackedIndex() === idx\"\n [style.height.px]=\"virtualScrollItemSize()\"\n class=\"nath-multiselect-option\"\n >\n <span class=\"nath-multiselect-option-check\">\n @if (isSelected(item)) {\n <svg lucideSquareCheck [size]=\"18\" />\n } @else {\n <svg lucideSquare [size]=\"18\" class=\"nath-multiselect-option-check-empty\" />\n }\n </span>\n\n <div class=\"nath-multiselect-option-text\">\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (item of filteredOptions(); track $index) {\n <div\n [id]=\"optionIdPrefix() + $index\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item)\"\n (click)=\"selectItem(item)\"\n [class.nath-multiselect-option--active]=\"activeTrackedIndex() === $index\"\n class=\"nath-multiselect-option\"\n >\n <span class=\"nath-multiselect-option-check\">\n @if (isSelected(item)) {\n <svg lucideSquareCheck [size]=\"18\" />\n } @else {\n <svg lucideSquare [size]=\"18\" class=\"nath-multiselect-option-check-empty\" />\n }\n </span>\n\n <div class=\"nath-multiselect-option-text\">\n @if (!itemTemplate()) {\n {{ displayFn()(item) }}\n } @else {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\n />\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (options().length === 0) {\n <div role=\"status\" class=\"nath-multiselect-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </ng-template>\n\n <button\n type=\"button\"\n class=\"button-secondary nath-multiselect-dropdown-btn\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>\n `,\n styleUrl: './multiselect.css',\n host: {\n '(keydown)': 'onHostKeyDown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMultiselect implements FormValueControl<any[]> {\n protected readonly elementRef = inject(ElementRef);\n private readonly uniqueId = nextId++;\n\n value = model<any[]>([]);\n\n options = input<any[]>([]);\n forceDisabled = input<boolean>(false);\n disabled = input<boolean>(false);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n dataKey = input<string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n filter = input<boolean>(false);\n virtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(44);\n comboboxClass = input<string>('');\n ariaLabelledBy = input<string>('');\n selectionLimit = input<number | null>(null);\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n\n query = signal<string>('');\n itemTemplate = contentChild<TemplateRef<any>>('item');\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n container = viewChild<ElementRef<HTMLDivElement>>('container');\n viewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n private watchKeydownSubscription?: Subscription;\n\n controlId = computed(() => this.inputId() || `app-multiselect-${this.uniqueId}`);\n listboxId = computed(() => `${this.controlId()}-listbox`);\n optionIdPrefix = computed(() => `${this.controlId()}-opt-`);\n\n isDisabled = computed(() => this.forceDisabled() || this.disabled());\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n selectedItems = computed(() => {\n const values = this.value() || [];\n const options = this.options();\n const valFn = this.valueFn();\n\n return options.filter((option) => {\n if (this.dataKey()) {\n return values.some((val) => val[this.dataKey()] === option[this.dataKey()]);\n }\n const optionVal = valFn(option);\n return values.includes(optionVal);\n });\n });\n\n hasNoSelection = computed(() => {\n const val = this.value();\n return !val || val.length === 0;\n });\n\n filteredOptions = computed<any[]>(() => {\n if (!this.filter()) return this.options();\n return this.options().filter((item) => {\n const displayValue = this.displayFn()(item);\n return displayValue.toLowerCase().includes(this.query().toLowerCase());\n });\n });\n\n showClearButton = computed<boolean>(\n () => this.showClear() && !this.hasNoSelection() && !this.isDisabled(),\n );\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect(() => {\n const index = this.activeTrackedIndex();\n const vp = this.viewport();\n if (this.virtualScroll() && vp && index >= 0) {\n vp.scrollToIndex(index, 'smooth');\n }\n });\n\n this.watchKeydown();\n }\n\n private watchKeydown() {\n this.watchKeydownSubscription = fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe(($event) => this.onKeyDown($event));\n }\n\n isSelected(item: any): boolean {\n const itemVal = this.valueFn()(item);\n const currentValues = this.value() || [];\n return currentValues.includes(itemVal);\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n if (this.isDisabled()) return;\n const selectionLimit = this.selectionLimit();\n if (selectionLimit && this.value().length >= selectionLimit) {\n return;\n }\n\n const itemVal = this.valueFn()(item);\n const currentValues = [...(this.value() || [])];\n const index = currentValues.indexOf(itemVal);\n\n if (index > -1) {\n currentValues.splice(index, 1);\n this.unselected.emit(item);\n } else {\n currentValues.push(itemVal);\n }\n\n this.value.set(currentValues);\n }\n\n hideDropdown() {\n this.isOpen.set(false);\n this.resetFilter();\n this.inputField()?.nativeElement.blur();\n this.container()?.nativeElement.focus();\n }\n\n resetFilter() {\n this.query.set('');\n }\n\n toggle() {\n if (this.isDisabled()) return;\n this.isOpen.update((prev) => !prev);\n if (this.isOpen()) {\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n\n onHostKeyDown(event: KeyboardEvent) {\n if (this.isDisabled()) return;\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.isOpen.set(true);\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (!this.isOpen() || this.isDisabled()) return;\n\n const currentItems = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.hideDropdown();\n break;\n }\n }\n\n removeItem(itemToRemove: any, event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n event.stopPropagation(); // Avoid triggering open dropdown directives\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n this.value.set(\n currentValues.filter((v: any) => {\n const currentValue = this.valueFn()(v);\n const valueToRemove = this.valueFn()(itemToRemove);\n return JSON.stringify(currentValue) !== JSON.stringify(valueToRemove);\n }),\n );\n this.unselected.emit(itemToRemove);\n }\n\n clear() {\n if (this.isDisabled()) return;\n this.value.set([]);\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n}\n","import { Component, computed, input, model, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface PageItem {\n label: string;\n num: number;\n isEllipsis: boolean;\n}\n\nexport interface PaginatorChangeEvent {\n page: number;\n pageSize: number;\n}\n\n@Component({\n selector: 'nath-paginator',\n imports: [FormsModule],\n template: `\n <div class=\"nath-paginator-container\">\n <div class=\"nath-paginator-info\">{{ page() }} / {{ totalPages() }}</div>\n <button\n (click)=\"goToPage(1)\"\n [disabled]=\"disabled() || page() === 1\"\n class=\"nath-paginator-btn\"\n title=\"First Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5\"\n />\n </svg>\n </button>\n\n <button\n (click)=\"goToPage(page() - 1)\"\n [disabled]=\"disabled() || page() === 1\"\n class=\"nath-paginator-btn\"\n title=\"Previous Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" />\n </svg>\n </button>\n\n @for (p of pages(); track $index) {\n @if (p.isEllipsis) {\n <span class=\"nath-paginator-ellipsis\">...</span>\n } @else {\n <button\n (click)=\"goToPage(p.num)\"\n [disabled]=\"disabled()\"\n class=\"nath-paginator-page-btn\"\n [class.is-active]=\"page() === p.num\"\n >\n {{ p.label }}\n </button>\n }\n }\n\n <button\n (click)=\"goToPage(page() + 1)\"\n [disabled]=\"disabled() || page() === totalPages()\"\n class=\"nath-paginator-btn\"\n title=\"Next Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n </svg>\n </button>\n\n <button\n (click)=\"goToPage(totalPages())\"\n [disabled]=\"disabled() || page() === totalPages()\"\n class=\"nath-paginator-btn\"\n title=\"Last Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M5.25 4.5l7.5 7.5-7.5 7.5m6-15l7.5 7.5-7.5 7.5\"\n />\n </svg>\n </button>\n </div>\n\n <div class=\"nath-paginator-page-size-container\">\n <label for=\"pageSize\" class=\"nath-paginator-select-label\">Items per page</label>\n <select\n id=\"pageSize\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n [disabled]=\"disabled()\"\n class=\"nath-paginator-select\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n `,\n styleUrl: './paginator.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-paginator-host',\n },\n})\nexport class NathPaginator {\n // Two-way Model Signals\n page = model<number>(1);\n pageSize = model<number>(10);\n\n // Inputs\n totalItems = input.required<number>();\n pageSizeOptions = input<number[]>([10, 20, 50, 100]);\n disabled = input<boolean>(false);\n\n paginatorChange = output<PaginatorChangeEvent>();\n\n // Computed total pages based on inputs\n totalPages = computed(() => {\n const total = Math.ceil(this.totalItems() / this.pageSize());\n return total > 0 ? total : 1;\n });\n\n // Strongly typed view layout mapping\n pages = computed<PageItem[]>(() => {\n const total = this.totalPages();\n const current = this.page();\n\n let rawPages: (number | string)[] = [];\n\n if (total <= 7) {\n rawPages = Array.from({ length: total }, (_, i) => i + 1);\n } else if (current <= 4) {\n rawPages = [1, 2, 3, 4, 5, '...', total];\n } else if (current >= total - 3) {\n rawPages = [1, '...', total - 4, total - 3, total - 2, total - 1, total];\n } else {\n rawPages = [1, '...', current - 1, current, current + 1, '...', total];\n }\n\n // Map the raw values to precise PageItem structures so the template does zero math\n return rawPages.map((p) => {\n if (p === '...') {\n const pageItem: PageItem = { label: '...', num: -1, isEllipsis: true };\n return pageItem;\n }\n const pageItem: PageItem = {\n label: p.toString(),\n num: p as number, // Pre-calculate 1-indexed page coordinate\n isEllipsis: false,\n };\n return pageItem;\n });\n });\n\n goToPage(pageNumber: number): void {\n if (this.disabled() || pageNumber < 1 || pageNumber > this.totalPages()) return;\n this.page.set(pageNumber);\n this.paginatorChange.emit({ page: pageNumber, pageSize: this.pageSize() });\n }\n\n onPageSizeChange(newSize: number): void {\n this.pageSize.set(newSize);\n const maxPage = this.totalPages();\n if (this.page() > maxPage) {\n this.goToPage(maxPage);\n }\n this.paginatorChange.emit({ page: this.page(), pageSize: this.pageSize() });\n }\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n input,\n model,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LucideInbox, LucideLoaderCircle } from '@lucide/angular';\nimport { NathPaginator, PaginatorChangeEvent } from '../paginator/paginator';\n\nexport type TrackByFnOrKey = string | ((item: any) => any);\n\n@Component({\n selector: 'nath-paginated-view',\n imports: [NathPaginator, NgTemplateOutlet, LucideInbox, LucideLoaderCircle],\n template: `\n <ng-template #paginatorTpl let-position=\"position\">\n <div\n class=\"nath-paginated-view-paginator-container\"\n [class.is-top]=\"position === 'top'\"\n [class.is-bottom]=\"position === 'bottom'\"\n >\n @if (paginatorLeftTpl()) {\n <ng-container *ngTemplateOutlet=\"paginatorLeftTpl()!\" />\n } @else {\n <span></span>\n }\n <nath-paginator\n [(page)]=\"page\"\n [(pageSize)]=\"pageSize\"\n [totalItems]=\"resolvedTotalItems()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [disabled]=\"disabled()\"\n (paginatorChange)=\"paginatorChange.emit($event)\"\n />\n </div>\n </ng-template>\n\n @if (items().length) {\n <ng-container *ngTemplateOutlet=\"paginatorTpl; context: { position: 'top' }\" />\n\n @if (contentTpl()) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTpl();\n context: {\n $implicit: viewableItems(),\n selection: selectionContext(),\n expansion: expansionContext(),\n }\n \"\n />\n }\n\n @if (showBottomPaginator()) {\n <ng-container *ngTemplateOutlet=\"paginatorTpl; context: { position: 'bottom' }\" />\n }\n } @else {\n <div class=\"nath-paginated-view-empty\">\n <svg lucideInbox [size]=\"16\" />\n <span>{{ emptyMessage() }}</span>\n </div>\n }\n @if (loading()) {\n <div class=\"nath-paginated-view-loading-overlay\">\n <svg lucideLoaderCircle class=\"animate-spin nath-paginated-view-loader\" />\n </div>\n }\n `,\n styleUrl: './paginated-view.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-paginated-view-host',\n },\n})\nexport class NathPaginatedView {\n // Two-way Model Signals\n /**\n * Page number (required)\n * Indexed from 1\n */\n page = model.required<number>();\n /**\n * Number of items per page\n * @default 10\n */\n pageSize = model<number>(10);\n /**\n * Model of selected items (also available in the let-selection=\"selection\" context)\n * @default []\n */\n selectedItems = model<any[]>([]);\n\n // Inputs\n /**\n * Mode for pagination (client or server)\n * @default 'client'\n */\n mode = input<'client' | 'server'>('client');\n /**\n * Array of items to display\n * @required\n */\n items = input.required<any[]>();\n /**\n * Total number of items\n * @default null\n */\n totalItems = input<number | null>(null);\n /**\n * Array of options for the page size\n * @default [10, 20, 50, 100]\n */\n pageSizeOptions = input<number[]>([10, 20, 50, 100]);\n /**\n * Whether to disable the paginator\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Whether to show the bottom paginator\n * @default true\n */\n showBottomPaginator = input<boolean>(true);\n /**\n * Message to display when no results are found\n * @default 'No results found'\n */\n emptyMessage = input<string>('No results found');\n /**\n * Whether to show a loading overlay\n * @default false\n */\n loading = input<boolean>(false);\n\n /**\n * Whether to persist selection across page changes\n * @default false\n */\n persistSelection = input<boolean>(false);\n /**\n * Function or key to track items by\n * @default 'id'\n */\n trackBy = input<TrackByFnOrKey>('id');\n\n /**\n * Paginator change event\n */\n paginatorChange = output<PaginatorChangeEvent>();\n\n /**\n * Expanded items (also available in the let-expansion=\"expansion\" context)\n * @default []\n */\n expandedItems = signal<any[]>([]);\n\n constructor() {\n // Guardrail check: Warn if trying to use persistence in server mode\n effect(() => {\n if (this.mode() === 'server' && this.persistSelection()) {\n console.warn(\n 'PaginatedViewComponent: \"persistSelection\" is set to true, but is not supported in \"server\" mode. Falling back to non-persistent selection.',\n );\n }\n });\n\n // Reset selection on page changes IF persistence is disabled\n // Reset expanded items on page changes\n effect(() => {\n // Track page and pageSize adjustments\n this.page();\n this.pageSize();\n\n untracked(() => {\n if (!this.isPersistenceEnabled()) {\n this.selectedItems.set([]);\n }\n this.expandedItems.set([]);\n });\n });\n }\n\n // Determine if persistence is actually valid and active\n\n private readonly isPersistenceEnabled = computed(() => {\n return this.persistSelection() && this.mode() === 'client';\n });\n // Computed helper to extract identity from an item based on trackBy rule\n\n private readonly getItemId = (item: any): any => {\n const strategy = this.trackBy();\n if (typeof strategy === 'function') {\n return strategy(item);\n }\n return item ? item[strategy] : undefined;\n };\n // Computed total items depending on pagination strategy\n\n resolvedTotalItems = computed(() => {\n if (this.mode() === 'server') {\n return this.totalItems() ?? this.items().length;\n }\n return this.items().length;\n });\n // Computed items passed to the content template\n\n viewableItems = computed(() => {\n if (this.mode() === 'server') {\n return this.items();\n }\n const start = (this.page() - 1) * this.pageSize();\n const end = start + this.pageSize();\n return this.items().slice(start, end);\n });\n // Export control APIs & state to the child template context via signals\n\n selectionContext = computed(() => {\n const currentViewItems = this.viewableItems();\n const selected = this.selectedItems();\n\n // Create a quick lookup map of selected IDs for lightning-fast lookups\n const selectedIds = new Set(selected.map((item) => this.getItemId(item)));\n\n // Determine target pool of items for \"Select All\" actions\n const selectablePool = this.isPersistenceEnabled() ? this.items() : currentViewItems;\n\n const isAllSelected =\n selectablePool.length > 0 &&\n selectablePool.every((item) => selectedIds.has(this.getItemId(item)));\n\n const isSomeSelected =\n !isAllSelected && selectablePool.some((item) => selectedIds.has(this.getItemId(item)));\n\n return {\n isSelected: (item: any) => selectedIds.has(this.getItemId(item)),\n isAllSelected,\n isSomeSelected,\n toggle: (item: any) => this.toggleSelection(item),\n toggleAll: () =>\n isAllSelected\n ? this.toggleAllSelectionWhenAllSelected(selectablePool)\n : this.toggleAllSelectionWhenNotAllSelected(selectablePool),\n };\n });\n expansionContext = computed(() => {\n const currentViewItems = this.viewableItems();\n const expanded = this.expandedItems();\n\n // Create a quick lookup map of expanded IDs for lightning-fast lookups\n const expandedIds = new Set(expanded.map((item) => this.getItemId(item)));\n\n // Determine target pool of items for \"Expand All\" actions\n const expandablePool = this.isPersistenceEnabled() ? this.items() : currentViewItems;\n\n const isAllExpanded =\n expandablePool.length > 0 &&\n expandablePool.every((item) => expandedIds.has(this.getItemId(item)));\n\n const isSomeExpanded =\n !isAllExpanded && expandablePool.some((item) => expandedIds.has(this.getItemId(item)));\n\n return {\n isExpanded: (item: any) => expandedIds.has(this.getItemId(item)),\n isAllExpanded,\n isSomeExpanded,\n toggle: (item: any) => this.toggleExpansion(item),\n toggleAll: () =>\n isAllExpanded\n ? this.toggleAllExpansionWhenAllExpanded(expandablePool)\n : this.toggleAllExpansionWhenNotAllExpanded(expandablePool),\n };\n });\n\n contentTpl =\n contentChild<TemplateRef<{ $implicit: any[]; selection: any; expansion: any }>>(TemplateRef);\n\n paginatorLeftTpl = contentChild<TemplateRef<any>>('paginatorLeft');\n\n private toggleSelection(item: any): void {\n const currentSelected = [...this.selectedItems()];\n const targetId = this.getItemId(item);\n const index = currentSelected.findIndex((selected) => this.getItemId(selected) === targetId);\n\n if (index > -1) {\n currentSelected.splice(index, 1);\n } else {\n currentSelected.push(item);\n }\n this.selectedItems.set(currentSelected);\n }\n\n private toggleAllSelectionWhenAllSelected(pool: any[]): void {\n if (this.isPersistenceEnabled()) {\n this.selectedItems.set([]);\n } else {\n // Remove only the current pool's matching items from a potentially larger array\n const poolIds = new Set(pool.map((item) => this.getItemId(item)));\n this.selectedItems.set(\n this.selectedItems().filter((selected) => !poolIds.has(this.getItemId(selected))),\n );\n }\n }\n private toggleAllSelectionWhenNotAllSelected(pool: any[]) {\n if (this.isPersistenceEnabled()) {\n this.selectedItems.set([...pool]);\n } else {\n // Union pool items with existing selection without doubling up\n const currentSelected = [...this.selectedItems()];\n const selectedIds = new Set(currentSelected.map((item) => this.getItemId(item)));\n\n pool.forEach((item) => {\n if (!selectedIds.has(this.getItemId(item))) {\n currentSelected.push(item);\n }\n });\n this.selectedItems.set(currentSelected);\n }\n }\n\n private toggleExpansion(item: any): void {\n const currentExpanded = [...this.expandedItems()];\n const targetId = this.getItemId(item);\n const index = currentExpanded.findIndex((expanded) => this.getItemId(expanded) === targetId);\n\n if (index > -1) {\n currentExpanded.splice(index, 1);\n } else {\n currentExpanded.push(item);\n }\n this.expandedItems.set(currentExpanded);\n }\n\n private toggleAllExpansionWhenAllExpanded(pool: any[]): void {\n if (this.isPersistenceEnabled()) {\n this.expandedItems.set([]);\n } else {\n // Remove only the current pool's matching items from a potentially larger array\n const poolIds = new Set(pool.map((item) => this.getItemId(item)));\n this.expandedItems.set(\n this.expandedItems().filter((expanded) => !poolIds.has(this.getItemId(expanded))),\n );\n }\n }\n private toggleAllExpansionWhenNotAllExpanded(pool: any[]) {\n if (this.isPersistenceEnabled()) {\n this.expandedItems.set([...pool]);\n } else {\n // Union pool items with existing expansion without doubling up\n const currentExpanded = [...this.expandedItems()];\n const expandedIds = new Set(currentExpanded.map((item) => this.getItemId(item)));\n\n pool.forEach((item) => {\n if (!expandedIds.has(this.getItemId(item))) {\n currentExpanded.push(item);\n }\n });\n this.expandedItems.set(currentExpanded);\n }\n }\n}\n","import { Component, input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-panel',\r\n imports: [],\r\n template: `\r\n <!-- Header -->\r\n <div class=\"nath-panel-header\">\r\n @if (header()) {\r\n {{ header() }}\r\n } @else {\r\n <ng-content select=\"[header]\"></ng-content>\r\n }\r\n </div>\r\n <!-- Content-->\r\n <div class=\"nath-panel-content\">\r\n <ng-content />\r\n </div>\r\n `,\r\n styleUrl: './panel.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathPanel {\r\n header = input<string>('');\r\n}\r\n","import {\n Component,\n computed,\n contentChild,\n input,\n model,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n LucideChevronLeft,\n LucideChevronRight,\n LucideChevronsLeft,\n LucideChevronsRight,\n} from '@lucide/angular';\n\n@Component({\n selector: 'nath-pick-list',\n imports: [\n CommonModule,\n LucideChevronRight,\n LucideChevronsRight,\n LucideChevronLeft,\n LucideChevronsLeft,\n ],\n template: `\n <div class=\"nath-pick-list-container\">\n <div\n class=\"nath-pick-list-pool\"\n (dragover)=\"allowDragOver($event)\"\n (drop)=\"onDrop($event, 'source')\"\n >\n <div class=\"nath-pick-list-header\">\n {{ sourceHeader() }}\n </div>\n\n @if (filter()) {\n <div class=\"nath-pick-list-filter\">\n <input\n type=\"text\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"sourceQuery()\"\n (input)=\"sourceQuery.set($any($event.target).value)\"\n class=\"nath-pick-list-filter-input\"\n />\n </div>\n }\n\n <div class=\"nath-pick-list-items\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of filteredSource(); track trackByFn($index, item)) {\n <div\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, item, 'source')\"\n (click)=\"toggleSelection($event, item, 'source')\"\n (dblclick)=\"moveItems([item], 'target')\"\n [ngClass]=\"{\n 'nath-pick-list-item--selected': isItemSelected(item, 'source'),\n 'nath-pick-list-item--dragging': isDragging(item, 'source'),\n }\"\n class=\"nath-pick-list-item\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n } @empty {\n <div class=\"nath-pick-list-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </div>\n\n <div class=\"nath-pick-list-controls\">\n <button\n type=\"button\"\n (click)=\"moveSelectedToTarget()\"\n [disabled]=\"selectedSource().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move selected to target\"\n >\n <svg lucideChevronRight class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveAllToTarget()\"\n [disabled]=\"source().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move all to target\"\n >\n <svg lucideChevronsRight class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveSelectedToSource()\"\n [disabled]=\"selectedTarget().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move selected to source\"\n >\n <svg lucideChevronLeft class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveAllToSource()\"\n [disabled]=\"target().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move all to source\"\n >\n <svg lucideChevronsLeft class=\"nath-pick-list-btn-icon\" />\n </button>\n </div>\n\n <div\n class=\"nath-pick-list-pool\"\n (dragover)=\"allowDragOver($event)\"\n (drop)=\"onDrop($event, 'target')\"\n >\n <div class=\"nath-pick-list-header\">\n {{ targetHeader() }}\n </div>\n\n @if (filter()) {\n <div class=\"nath-pick-list-filter\">\n <input\n type=\"text\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"targetQuery()\"\n (input)=\"targetQuery.set($any($event.target).value)\"\n class=\"nath-pick-list-filter-input\"\n />\n </div>\n }\n\n <div class=\"nath-pick-list-items\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of filteredTarget(); track trackByFn($index, item)) {\n <div\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, item, 'target')\"\n (click)=\"toggleSelection($event, item, 'target')\"\n (dblclick)=\"moveItems([item], 'source')\"\n [ngClass]=\"{\n 'nath-pick-list-item--selected': isItemSelected(item, 'target'),\n 'nath-pick-list-item--dragging': isDragging(item, 'target'),\n }\"\n class=\"nath-pick-list-item\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n } @empty {\n <div class=\"nath-pick-list-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </div>\n </div>\n `,\n styleUrl: './pick-list.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathPickList {\n source = model<any[]>([]);\n target = model<any[]>([]);\n\n sourceHeader = input<string>('Available');\n targetHeader = input<string>('Selected');\n filter = input<boolean>(false);\n filterPlaceholder = input<string>('Search...');\n emptyMessage = input<string>('No items');\n\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n\n itemTemplate = contentChild<TemplateRef<any>>('item');\n\n sourceQuery = signal<string>('');\n targetQuery = signal<string>('');\n\n selectedSource = signal<any[]>([]);\n selectedTarget = signal<any[]>([]);\n\n // Track the item currently being dragged explicitly\n draggedItem = signal<any>(null);\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? item[config] : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item;\n };\n });\n\n filteredSource = computed(() => {\n const query = this.sourceQuery().toLowerCase();\n if (!query) return this.source();\n return this.source().filter((item) => this.displayFn()(item).toLowerCase().includes(query));\n });\n\n filteredTarget = computed(() => {\n const query = this.targetQuery().toLowerCase();\n if (!query) return this.target();\n return this.target().filter((item) => this.displayFn()(item).toLowerCase().includes(query));\n });\n\n // Drag & Drop Functionality\n onDragStart(event: DragEvent, item: any, pool: 'source' | 'target') {\n this.draggedItem.set(item);\n\n // Pass string token to standard dataTransfer for strict spec adherence\n event.dataTransfer?.setData('text/plain', pool);\n\n // If dragging an item that isn't selected, clear selection and select it\n if (!this.isItemSelected(item, pool)) {\n const activeSelection = pool === 'source' ? this.selectedSource : this.selectedTarget;\n activeSelection.set([item]);\n }\n }\n\n allowDragOver(event: DragEvent) {\n event.preventDefault(); // Necessary to allow drop target zone interception\n }\n\n onDrop(event: DragEvent, dropPool: 'source' | 'target') {\n event.preventDefault();\n const originPool = event.dataTransfer?.getData('text/plain');\n\n // Prevent dragging items into their own list\n if (originPool === dropPool || !originPool) {\n this.draggedItem.set(null);\n return;\n }\n\n // Determine the array of items to transfer\n const itemsToMove = originPool === 'source' ? this.selectedSource() : this.selectedTarget();\n\n this.moveItems(itemsToMove, dropPool);\n this.draggedItem.set(null);\n }\n\n isDragging(item: any, pool: 'source' | 'target'): boolean {\n const activeDrag = this.draggedItem();\n if (!activeDrag) return false;\n\n // If the active item is part of a selection, dim the entire selection group\n if (this.isItemSelected(item, pool) && this.isItemSelected(activeDrag, pool)) {\n return true;\n }\n return this.valueFn()(activeDrag) === this.valueFn()(item);\n }\n\n // Selection Matrix Strategy\n toggleSelection(event: MouseEvent, item: any, pool: 'source' | 'target') {\n const activeSelection = pool === 'source' ? this.selectedSource : this.selectedTarget;\n const current = [...activeSelection()];\n const itemValue = this.valueFn()(item);\n\n const index = current.findIndex((i) => this.valueFn()(i) === itemValue);\n\n if (event.ctrlKey || event.metaKey) {\n if (index > -1) current.splice(index, 1);\n else current.push(item);\n } else if (index > -1 && current.length === 1) {\n current.splice(index, 1);\n } else {\n current.splice(0, current.length, item);\n }\n activeSelection.set(current);\n }\n\n isItemSelected(item: any, pool: 'source' | 'target'): boolean {\n const list = pool === 'source' ? this.selectedSource() : this.selectedTarget();\n const targetValue = this.valueFn()(item);\n return list.some((i) => this.valueFn()(i) === targetValue);\n }\n\n // Core Mutation Handling\n moveItems(itemsToMove: any[], destination: 'source' | 'target') {\n if (!itemsToMove.length) return;\n\n const valuesToMove = new Set(itemsToMove.map((i) => this.valueFn()(i)));\n\n if (destination === 'target') {\n this.source.update((prev) => prev.filter((i) => !valuesToMove.has(this.valueFn()(i))));\n this.target.update((prev) => [...prev, ...itemsToMove]);\n this.selectedSource.set([]);\n } else {\n this.target.update((prev) => prev.filter((i) => !valuesToMove.has(this.valueFn()(i))));\n this.source.update((prev) => [...prev, ...itemsToMove]);\n this.selectedTarget.set([]);\n }\n }\n\n moveSelectedToTarget() {\n this.moveItems(this.selectedSource(), 'target');\n }\n moveSelectedToSource() {\n this.moveItems(this.selectedTarget(), 'source');\n }\n moveAllToTarget() {\n this.moveItems(this.filteredSource(), 'target');\n }\n moveAllToSource() {\n this.moveItems(this.filteredTarget(), 'source');\n }\n\n trackByFn(index: number, item: any) {\n return this.valueFn()(item) ?? index;\n }\n}\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-progress-bar',\r\n imports: [],\r\n template: `\r\n <div\r\n class=\"nath-progress-bar-fill\"\r\n [class.nath-progress-bar-fill--indeterminate]=\"mode() === 'indeterminate'\"\r\n [class]=\"barClass()\"\r\n [style.width.%]=\"barWidthPercent()\"\r\n >\r\n @if (showValue()) {\r\n <span class=\"nath-progress-bar-value\" [class]=\"valueClass()\">\r\n {{ value() }}\r\n </span>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './progress-bar.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathProgressBar {\r\n value = input<number>(0);\r\n maxValue = input<number>(100);\r\n showValue = input<boolean>(false);\r\n barClass = input<string>('');\r\n valueClass = input<string>('');\r\n mode = input<'indeterminate' | 'default'>('default');\r\n\r\n barWidthPercent = computed<number>(() => {\r\n if (this.mode() === 'indeterminate') {\r\n return 100;\r\n }\r\n return (this.value() / this.maxValue()) * 100;\r\n });\r\n}\r\n","import { Component, computed, input, model } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'nath-progress-circle',\r\n imports: [NgStyle],\r\n template: `\r\n <svg\r\n class=\"progress-circle__svg\"\r\n [attr.width]=\"size()\"\r\n [attr.height]=\"size()\"\r\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle\r\n [attr.r]=\"0.45 * size()\"\r\n [attr.cx]=\"size() / 2\"\r\n [attr.cy]=\"size() / 2\"\r\n fill=\"transparent\"\r\n [attr.stroke-dasharray]=\"strikeDashArrayRatio * size()\"\r\n stroke-dashoffset=\"0\"\r\n ></circle>\r\n <circle\r\n class=\"progress-circle__bar\"\r\n [attr.r]=\"0.45 * size()\"\r\n [attr.cx]=\"size() / 2\"\r\n [attr.cy]=\"size() / 2\"\r\n fill=\"transparent\"\r\n [attr.stroke-dasharray]=\"strikeDashArrayRatio * size()\"\r\n stroke-dashoffset=\"0\"\r\n [ngStyle]=\"{ 'stroke-dashoffset': barStrokeDashOffset() + 'px' }\"\r\n ></circle>\r\n </svg>\r\n `,\r\n styles: `\r\n :host {\r\n --progress-circle-size: 50;\r\n /*These two properties can be overriden, e.g.:\r\n <nath-progress-circle style=\"--progress-circle-bar-color: blue\"></app-progress-circle>*/\r\n --progress-circle-default-color: #ececec;\r\n --progress-circle-bar-color: #0d5eab;\r\n\r\n display: block;\r\n height: calc(var(--progress-circle-size) * 1px);\r\n width: calc(var(--progress-circle-size) * 1px);\r\n border-radius: 100%;\r\n position: relative;\r\n }\r\n\r\n :host::after {\r\n position: absolute;\r\n display: block;\r\n height: 100%;\r\n width: 100%;\r\n left: 0;\r\n top: 0;\r\n content: attr(data-text);\r\n border-radius: 100%;\r\n line-height: calc(var(--progress-circle-size) * 1px);\r\n text-align: center;\r\n }\r\n\r\n .progress-circle__svg {\r\n transform: rotate(-90deg);\r\n }\r\n\r\n .progress-circle__svg circle {\r\n stroke-dashoffset: 0;\r\n transition: stroke-dashoffset 0.2s linear;\r\n stroke: var(--progress-circle-default-color);\r\n stroke-width: calc(0.1 * var(--progress-circle-size) * 1px);\r\n }\r\n\r\n .progress-circle__svg .progress-circle__bar {\r\n stroke: var(--progress-circle-bar-color);\r\n }\r\n `,\r\n host: {\r\n '[attr.data-text]': `showText() ? percentText() : ''`,\r\n '[style.--progress-circle-size]': `size()`,\r\n },\r\n})\r\nexport class NathProgressCircle {\r\n readonly percent = model(0);\r\n readonly size = input(50);\r\n readonly showText = input(true);\r\n\r\n public readonly strikeDashArrayRatio = 2.8274;\r\n\r\n readonly barStrokeDashOffset = computed(() => {\r\n let percent = this.percent();\r\n if (Number.isNaN(percent)) {\r\n percent = 100;\r\n }\r\n const r: number = 0.45 * this.size();\r\n const c: number = Math.PI * (r * 2);\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n return ((100 - percent) / 100) * c;\r\n });\r\n\r\n readonly percentText = computed(() => {\r\n let percent = this.percent();\r\n if (Number.isNaN(percent)) {\r\n percent = 100;\r\n }\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n return Math.trunc(percent) + '%';\r\n });\r\n}\r\n","import { Component, computed, input, model, Signal, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\n\nexport interface RadioOption {\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'nath-radio-button-group',\n host: {\n '[class.flex-row]': `stack() === 'horizontal'`,\n '[class.flex-col]': `stack() === 'vertical'`,\n role: 'radiogroup',\n },\n imports: [NgClass],\n template: `\n @for (option of formattedOptions(); track option.value) {\n @let isSelected = value() === option.value;\n\n <button\n type=\"button\"\n [disabled]=\"disabled()\"\n [aria-checked]=\"isSelected\"\n [class.checked]=\"isSelected\"\n role=\"radio\"\n (click)=\"selectOption(option.value)\"\n class=\"nath-radio-group-item\"\n [ngClass]=\"layoutClass()\"\n >\n <span class=\"nath-radio-group-label\">{{ option.label }}</span>\n </button>\n }\n `,\n styleUrl: './radio-button-group.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathRadioButtonGroup implements FormValueControl<any> {\n // --- Modern Signal Inputs ---\n options = input.required<any[]>();\n stack = input<'horizontal' | 'vertical'>('horizontal');\n deselectable = input<boolean>(false);\n fill = input<boolean>(false);\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n disabled = input<boolean>(false);\n\n // --- Internal State Signals ---\n readonly value = model<any>(null);\n\n // --- Computed Signals ---\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n formattedOptions: Signal<RadioOption[]> = computed(() => {\n const options = this.options();\n const firstOption = options[0];\n if (!firstOption) {\n return [];\n }\n if (['string', 'number'].includes(typeof firstOption)) {\n return options.map((option) => ({\n value: option,\n label: option,\n }));\n }\n if ('value' in firstOption && 'label' in firstOption) {\n return options;\n }\n return options.map((option) => ({\n value: this.valueFn()(option),\n label: this.displayFn()(option),\n }));\n });\n\n // Computes layout dynamic sizing classes\n readonly layoutClass = computed(() => {\n if (this.fill()) {\n return this.stack() === 'horizontal' ? 'flex-1' : 'w-full';\n }\n return '';\n });\n\n selectOption(selectedValue: any): void {\n if (this.disabled()) return;\n\n if (this.deselectable() && this.value() === selectedValue) {\n this.value.set(null);\n } else {\n this.value.set(selectedValue);\n }\n }\n}\n","export const RATING_MAP = [\n { value: 0, colorVar: 'var(--color-gray-500, oklch(0.554 0.046 257.417))' },\n { value: 10, colorVar: 'var(--color-red-600, oklch(0.577 0.245 27.325))' },\n { value: 20, colorVar: 'var(--color-orange-600, oklch(0.646 0.222 41.116))' },\n { value: 30, colorVar: 'var(--color-orange-400, oklch(0.75 0.183 55.934))' },\n { value: 40, colorVar: 'var(--color-amber-500, oklch(0.769 0.188 70.08))' },\n { value: 50, colorVar: 'var(--color-purple-400, oklch(0.714 0.203 305.504))' },\n { value: 60, colorVar: 'var(--color-sky-400, oklch(0.746 0.16 232.661))' },\n { value: 70, colorVar: 'var(--color-blue-400, oklch(0.707 0.165 254.624))' },\n { value: 80, colorVar: 'var(--color-sky-400, oklch(0.746 0.16 232.661))' },\n { value: 90, colorVar: 'var(--color-emerald-400, oklch(0.765 0.177 163.223))' },\n { value: 100, colorVar: 'var(--color-emerald-500, oklch(0.696 0.17 162.48))' },\n];\n\n/**\n * @param percent Rating on 100 basis\n */\nexport function getRatingColor(percent: number): string | null {\n if (percent < 1) {\n return null;\n }\n const nearestLowerTen = Math.floor(percent / 10) * 10;\n const color = RATING_MAP.find((item) => item.value === nearestLowerTen)?.colorVar;\n return color ? `${color}` : null;\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { getRatingColor } from '../rating.constants';\n\n@Component({\n selector: 'nath-rating-heart',\n template: `\n <!-- Background Heart -->\n <div class=\"progress-heart__bg\"></div>\n <!-- Progress Fill Heart -->\n <div class=\"progress-heart__fill\" [style.background]=\"fillGradient()\"></div>\n <!-- Border Heart -->\n @if (borderColor()) {\n <svg class=\"progress-heart__border\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.042 8.345c0 0-2-4.262-6.5-4.262-4.917 0-7.5 4.167-7.5 8.333 0 6.917 14 15.5 14 15.5s13.916-8.5 13.916-15.5c0-4.25-2.666-8.333-7.416-8.333s-6.5 4.262-6.5 4.262z\"\n fill=\"none\"\n [attr.stroke]=\"borderColor()\"\n stroke-width=\"3\"\n vector-effect=\"non-scaling-stroke\"\n ></path>\n </svg>\n }\n `,\n styles: `\n :host {\n --progress-heart-size: 50px;\n --progress-heart-default-color: #cccccc;\n --progress-heart-bar-color: var(--color-blue-500, oklch(62.3% 0.214 259.815));\n\n display: block;\n height: var(--progress-heart-size);\n width: var(--progress-heart-size);\n position: relative;\n /* The heart shape path as a mask */\n --heart-path: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"> <path d=\"M16.042 8.345c0 0-2-4.262-6.5-4.262-4.917 0-7.5 4.167-7.5 8.333 0 6.917 14 15.5 14 15.5s13.916-8.5 13.916-15.5c0-4.25-2.666-8.333-7.416-8.333s-6.5 4.262-6.5 4.262z\"></path> </svg>');\n }\n\n .progress-heart__bg,\n .progress-heart__fill,\n .progress-heart__border {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n .progress-heart__bg,\n .progress-heart__fill {\n -webkit-mask-image: var(--heart-path);\n mask-image: var(--heart-path);\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n }\n\n .progress-heart__bg {\n background-color: var(--progress-heart-default-color);\n }\n\n .progress-heart__border {\n pointer-events: none;\n z-index: 2;\n }\n\n :host::after {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n content: attr(data-text);\n line-height: calc(var(--progress-heart-size) * 0.85);\n text-align: center;\n font-size: calc(var(--progress-heart-size) * 0.28);\n font-weight: bold;\n color: #000;\n pointer-events: none;\n z-index: 1;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.data-text]': `showText() ? percentText() : ''`,\n '[style.--progress-heart-size]': `size() + 'px'`,\n '[style.--progress-heart-bar-color]': `barColor()`,\n '[style.width.px]': `size()`,\n '[style.height.px]': `size()`,\n },\n})\nexport class NathRatingHeart {\n readonly percent = model(0);\n readonly size = input(50);\n readonly showText = input(true);\n readonly borderColor = input<string>();\n readonly ratingColorFn = input<(percent: number) => string | null>(getRatingColor);\n\n readonly barColor = computed(() => {\n const p = this.percent();\n return this.ratingColorFn()(p) || null;\n });\n\n readonly fillGradient = computed(() => {\n let p = this.percent();\n if (Number.isNaN(p)) p = 0;\n p = Math.max(0, Math.min(100, p));\n // Conic gradient starting from top (0deg)\n return `conic-gradient(var(--progress-heart-bar-color) 0% ${p}%, transparent ${p}% 100%)`;\n });\n\n readonly percentText = computed(() => {\n let p = this.percent();\n if (Number.isNaN(p)) p = 0;\n p = Math.max(0, Math.min(100, p));\n return Math.trunc(p) + '%';\n });\n}\n","import {\n Component,\n computed,\n contentChild,\n input,\n model,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { LucideCircle } from '@lucide/angular';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { getRatingColor } from '../rating.constants';\n\n@Component({\n selector: 'nath-rating-input',\n imports: [NgTemplateOutlet, LucideCircle],\n template: `\n <div\n class=\"nath-rating-container\"\n [class.disabled]=\"disabled()\"\n [class.readonly]=\"readonly()\"\n [style.--active-color]=\"activeColor()\"\n (mouseleave)=\"clearPreview()\"\n >\n @for (star of starsArray(); track star) {\n <button\n type=\"button\"\n class=\"nath-rating-star-btn\"\n [disabled]=\"disabled() || readonly()\"\n (mouseenter)=\"setPreview(star)\"\n (click)=\"selectValue(star)\"\n [attr.aria-label]=\"'Rate ' + star + ' out of ' + max()\"\n [attr.aria-pressed]=\"star <= (value() ?? 0)\"\n >\n @if (customTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { $implicit: star, active: star <= displayValue() }\n \"\n />\n } @else {\n <svg\n lucideCircle\n [size]=\"24\"\n class=\"nath-rating-star-icon\"\n [class.active]=\"star <= displayValue()\"\n ></svg>\n }\n </button>\n }\n </div>\n `,\n styleUrl: './rating-input.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathRatingInput implements FormValueControl<number | null> {\n // --- FormValueControl Contract ---\n readonly value = model<number | null>(null);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly touched = model<boolean>(false);\n readonly max = input<number | undefined>(5);\n readonly ratingColorFn = input<(percent: number) => string | null>(getRatingColor);\n\n // --- Content Queries ---\n // Captures <ng-template ratingIcon let-star let-active=\"active\"> from host usage\n readonly customTemplate =\n contentChild<TemplateRef<{ $implicit: number; active: boolean }>>('ratingIcon');\n\n // --- Local Component State ---\n private readonly hoverValue = signal<number | null>(null);\n\n // --- Derived State (Signals) ---\n protected readonly starsArray = computed(() =>\n Array.from({ length: this.max() ?? 0 }, (_, i) => i + 1),\n );\n\n protected readonly displayValue = computed(() => {\n const hover = this.hoverValue();\n return hover ?? this.value() ?? 0;\n });\n\n activeColor = computed((): string | null => {\n const rating = this.displayValue() ?? -1;\n const percent = (rating / (this.max() ?? 1)) * 100;\n return this.ratingColorFn()(percent) || null;\n });\n\n // --- Methods ---\n protected setPreview(star: number): void {\n if (!this.disabled() && !this.readonly()) {\n this.hoverValue.set(star);\n }\n }\n\n protected clearPreview(): void {\n this.hoverValue.set(null);\n }\n\n protected selectValue(star: number): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(star);\n this.touched.set(true);\n }\n }\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideChevronDown, LucideX } from '@lucide/angular';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\n\n// Simple counter to generate fallback unique IDs\nlet nextId = 0;\n\n@Component({\n selector: 'nath-select',\n imports: [CommonModule, OverlayModule, ScrollingModule, LucideX, LucideChevronDown],\n template: ` <div\n class=\"input select-combobox {{ comboboxClass() }}\"\n [class.select-combobox--has-clear-btn]=\"showClearButton()\"\n [class.select-combobox--borderless]=\"borderless()\"\n tabindex=\"0\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n #container\n (click)=\"toggle()\"\n (keydown)=\"onHostKeyDown($event)\"\n >\n <div class=\"select-combobox__display-wrapper\">\n @if (value() === null) {\n <span class=\"select-combobox__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"select-combobox__text\">\n @if (selectedItemTemplate(); as selectedItemTpl) {\n <ng-container\n *ngTemplateOutlet=\"selectedItemTpl; context: { $implicit: selectedItem() }\"\n />\n } @else {\n {{ selectedItemDisplay() }}\n }\n </span>\n }\n </div>\n\n @if (showClearButton()) {\n <button\n type=\"button\"\n class=\"icon-button select-clear-btn\"\n aria-label=\"Clear selection\"\n (click)=\"$event.stopPropagation(); clear()\"\n >\n <svg lucideX [size]=\"16\" />\n </button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen() && options().length > 0\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPanelClass]=\"'nath-select-theme'\"\n (backdropClick)=\"hideDropdown()\"\n >\n <div\n class=\"select-dropdown-overlay\"\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\n >\n @if (filter()) {\n <div class=\"select-item\">\n <input\n #inputField\n type=\"text\"\n class=\"nath-select-input\"\n [id]=\"inputId() || controlId() + '-search'\"\n [value]=\"inputValue()\"\n (input)=\"onInputChange($event)\"\n aria-label=\"Filter options\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n />\n </div>\n }\n\n <div\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n class=\"select-listbox\"\n [class.select-listbox--scrollable]=\"!virtualScroll()\"\n >\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"select-listbox__viewport\"\n >\n <div\n *cdkVirtualFor=\"let item of filteredOptions(); let idx = index\"\n [id]=\"optionIdPrefix() + idx\"\n role=\"option\"\n [attr.aria-selected]=\"activeTrackedIndex() === idx\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n [class.select-item--active]=\"activeTrackedIndex() === idx\"\n [style.height.px]=\"virtualScrollItemSize()\"\n class=\"select-item select-item--virtual\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (item of filteredOptions(); track $index) {\n <div\n [id]=\"optionIdPrefix() + $index\"\n role=\"option\"\n [attr.aria-selected]=\"activeTrackedIndex() === $index\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n [class.select-item--active]=\"activeTrackedIndex() === $index\"\n class=\"select-item\"\n >\n @if (!itemTemplate()) {\n {{ displayFn()(item) }}\n } @else {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\n ></ng-container>\n }\n </div>\n }\n }\n </div>\n\n @if (options().length === 0) {\n <div role=\"status\" class=\"select-item select-item--status\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </ng-template>\n\n <button\n type=\"button\"\n class=\"button-secondary select-trigger-btn-addon\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n (click)=\"toggle()\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>`,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './select.css',\n})\nexport class NathSelect implements FormValueControl<any> {\n protected readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = nextId++;\n\n value = model<any>(null);\n\n options = input<any[]>([]);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n filter = input<boolean>(false);\n virtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(44);\n comboboxClass = input<string>('');\n\n // Added aria-labelled-by support input\n ariaLabelledBy = input<string>('');\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n\n query = signal<string>('');\n itemTemplate = contentChild<TemplateRef<any>>('item');\n selectedItemTemplate = contentChild<TemplateRef<any>>('selectedItem');\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n container = viewChild<ElementRef<HTMLDivElement>>('container');\n viewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n private watchKeydownSubscription?: Subscription;\n\n // Auto IDs for accessibility relations\n controlId = computed(() => this.inputId() || `app-select-${this.uniqueId}`);\n listboxId = computed(() => `${this.controlId()}-listbox`);\n optionIdPrefix = computed(() => `${this.controlId()}-opt-`);\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n selectedItem = computed(() => {\n const value = this.value();\n const options = this.options();\n const firstOption = options[0];\n const config = this.valueWith();\n if (typeof config === 'function') {\n return options.find((item) => config(item) === value);\n }\n if (typeof config === 'string' && config.length > 0) {\n return options.find(\n (item) => (item && typeof item === 'object' ? (item[config] ?? null) : null) === value,\n );\n }\n if (\n firstOption &&\n typeof firstOption === 'object' &&\n 'value' in firstOption &&\n 'label' in firstOption\n ) {\n return options.find((option) => option.value === value);\n }\n return value;\n });\n\n selectedItemDisplay = computed(() => {\n return this.displayFn()(this.selectedItem());\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n filteredOptions = computed<any[]>(() => {\n if (!this.filter()) return this.options();\n return this.options().filter((item) => {\n const displayValue = this.displayFn()(item);\n return displayValue.toLowerCase().includes(this.query().toLowerCase());\n });\n });\n showClearButton = computed<boolean>(() => this.showClear() && !!this.value());\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect(() => {\n const index = this.activeTrackedIndex();\n const vp = this.viewport();\n if (this.virtualScroll() && vp && index >= 0) {\n vp.scrollToIndex(index, 'smooth');\n }\n });\n\n this.watchKeydown();\n }\n\n private watchKeydown() {\n this.watchKeydownSubscription = fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe(($event) => this.onKeyDown($event));\n }\n\n private stopWatchKeydown() {\n this.watchKeydownSubscription?.unsubscribe();\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n this.value.set(this.valueFn()(item));\n this.hideDropdown();\n }\n\n hideDropdown() {\n this.isOpen.set(false);\n this.resetFilter();\n this.inputField()?.nativeElement.blur();\n this.container()?.nativeElement.focus();\n }\n\n resetFilter() {\n this.query.set('');\n }\n\n toggle() {\n this.isOpen.update((prev) => !prev);\n if (this.isOpen()) {\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n\n // 1. Handles keydowns when the dropdown is closed, but the host element is focused\n onHostKeyDown(event: KeyboardEvent) {\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.isOpen.set(true);\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n }\n\n // 2. Updated global document listener logic\n onKeyDown(event: KeyboardEvent) {\n // Crucial Guard: If it's closed, ignore all global page keydowns completely!\n if (!this.isOpen()) {\n return;\n }\n\n const currentItems = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.hideDropdown();\n break;\n }\n }\n\n clear() {\n this.value.set(null);\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-skeleton',\r\n imports: [],\r\n template: ``,\r\n styleUrl: './skeleton.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathSkeleton {}\r\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n input,\n model,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\n\nexport type SliderValue = number | [number, number];\n\n@Component({\n selector: 'nath-slider',\n imports: [NgStyle],\n templateUrl: './slider.html',\n styleUrl: './slider.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': 'onTrackClick($event)',\n '(touchstart)': 'onTrackClick($event)',\n '[style.--nath-slider-range-bg]': 'rangeBackground()',\n },\n})\nexport class NathSlider implements FormValueControl<number | number[] | null> {\n @ViewChild('track') trackElement!: ElementRef<HTMLDivElement>;\n\n mode = input<'single' | 'range'>('single');\n minValue = input(0);\n maxValue = input(100);\n step = input(1);\n rangeBackground = input<string | null>(null);\n ariaLabel = input<string>('');\n\n value = model<number | number[] | null>(null);\n\n // Internal Signals dynamically derived to match any min/max boundary context safely\n protected value1 = signal<number>(0);\n protected value2 = signal<number>(100);\n protected activeHandle = signal<'thumb1' | 'thumb2' | null>(null);\n protected isDisabled = signal<boolean>(false);\n\n constructor() {\n // Sync external model updates (from FormValueControl) back into internal tracking thumbs\n effect(() => {\n const current = this.value();\n if (current === null || current === undefined) {\n // Fallback default setups matching negative boundaries perfectly\n this.value1.set(this.minValue());\n this.value2.set(this.maxValue());\n return;\n }\n\n if (this.mode() === 'range' && Array.isArray(current)) {\n this.value1.set(this.clamp(current[0]));\n this.value2.set(this.clamp(current[1]));\n } else if (this.mode() === 'single' && typeof current === 'number') {\n this.value1.set(this.clamp(current));\n }\n });\n }\n\n // Computed percentages for Tailwind styles\n protected percent1 = computed(() => this.getPercent(this.value1()));\n protected percent2 = computed(() => this.getPercent(this.value2()));\n\n protected trackSelectionStyle = computed(() => {\n if (this.mode() === 'single') {\n return { left: '0%', width: `${this.percent1()}%` };\n }\n const start = Math.min(this.percent1(), this.percent2());\n const end = Math.max(this.percent1(), this.percent2());\n return { left: `${start}%`, width: `${end - start}%` };\n });\n\n // Keep writeValue for standard compatibility layers if invoked by framework engines\n writeValue(value: SliderValue): void {\n if (value === null || value === undefined) return;\n\n if (this.mode() === 'range' && Array.isArray(value)) {\n this.value1.set(this.clamp(value[0]));\n this.value2.set(this.clamp(value[1]));\n } else if (this.mode() === 'single' && typeof value === 'number') {\n this.value1.set(this.clamp(value));\n }\n }\n\n // --- Interaction Logic ---\n protected startDrag(event: MouseEvent | TouchEvent, thumb: 'thumb1' | 'thumb2') {\n if (this.isDisabled()) return;\n event.stopPropagation();\n this.activeHandle.set(thumb);\n }\n\n @HostListener('window:mousemove', ['$event'])\n @HostListener('window:touchmove', ['$event'])\n protected onMove(event: MouseEvent | TouchEvent) {\n const handle = this.activeHandle();\n if (!handle || this.isDisabled()) return;\n\n const clientX = 'touches' in event ? event.touches[0].clientX : event.clientX;\n const newValue = this.getValueFromX(clientX);\n\n if (handle === 'thumb1') {\n this.value1.set(newValue);\n } else {\n this.value2.set(newValue);\n }\n this.setValue();\n }\n\n @HostListener('window:mouseup')\n @HostListener('window:touchend')\n protected endDrag() {\n this.activeHandle.set(null);\n this.reorderValues();\n }\n\n protected onTrackClick(event: MouseEvent | TouchEvent) {\n if (this.isDisabled()) return;\n const clientX = 'touches' in event ? event.touches[0].clientX : event.clientX;\n const clickedValue = this.getValueFromX(clientX);\n\n if (this.mode() === 'single') {\n this.value1.set(clickedValue);\n } else {\n const dist1 = Math.abs(this.value1() - clickedValue);\n const dist2 = Math.abs(this.value2() - clickedValue);\n if (dist1 <= dist2) {\n this.value1.set(clickedValue);\n } else {\n this.value2.set(clickedValue);\n }\n }\n this.setValue();\n }\n\n // --- Keyboard Accessibility ---\n protected onKeyDown(event: KeyboardEvent, thumb: 'thumb1' | 'thumb2') {\n if (this.isDisabled()) return;\n\n let change = 0;\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') change = this.step();\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') change = -this.step();\n if (event.key === 'PageUp') change = this.step() * 10;\n if (event.key === 'PageDown') change = -this.step() * 10;\n if (event.key === 'Home')\n change = this.minValue() - (thumb === 'thumb1' ? this.value1() : this.value2());\n if (event.key === 'End')\n change = this.maxValue() - (thumb === 'thumb1' ? this.value1() : this.value2());\n\n if (change !== 0) {\n event.preventDefault();\n if (thumb === 'thumb1') {\n this.value1.update((v) => this.clamp(v + change));\n } else {\n this.value2.update((v) => this.clamp(v + change));\n }\n this.setValue();\n }\n }\n\n // --- Helpers ---\n private clamp(val: number): number {\n // Math handles negative values properly when subtracting or adding offset steps\n const stepped =\n Math.round((val - this.minValue()) / this.step()) * this.step() + this.minValue();\n return Math.max(this.minValue(), Math.min(this.maxValue(), stepped));\n }\n\n private getPercent(val: number): number {\n const range = this.maxValue() - this.minValue();\n if (range === 0) return 0;\n // (value - (-50)) correctly translates to a positive displacement scalar width\n return ((val - this.minValue()) / range) * 100;\n }\n\n private getValueFromX(clientX: number): number {\n const rect = this.trackElement.nativeElement.getBoundingClientRect();\n const pct = (clientX - rect.left) / rect.width;\n return this.clamp(pct * (this.maxValue() - this.minValue()) + this.minValue());\n }\n\n private setValue() {\n if (this.mode() === 'range') {\n this.value.set([this.value1(), this.value2()]);\n } else {\n this.value.set(this.value1());\n }\n }\n\n private reorderValues(): void {\n if (this.value1() > this.value2()) {\n const temp = this.value1();\n this.value1.set(this.value2());\n this.value2.set(temp);\n this.setValue();\n }\n }\n}\n","<div #track class=\"nath-slider-track\" [class.nath-slider-track--disabled]=\"isDisabled()\">\r\n <div class=\"nath-slider-range\" [ngStyle]=\"trackSelectionStyle()\"></div>\r\n\r\n <input\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"minValue()\"\r\n [attr.aria-valuemax]=\"maxValue()\"\r\n [attr.aria-valuenow]=\"value1()\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n (keydown)=\"onKeyDown($event, 'thumb1')\"\r\n (mousedown)=\"startDrag($event, 'thumb1')\"\r\n (touchstart)=\"startDrag($event, 'thumb1')\"\r\n [style.left.%]=\"percent1()\"\r\n class=\"nath-slider-thumb\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n />\r\n\r\n @if (mode() === 'range') {\r\n <input\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"minValue()\"\r\n [attr.aria-valuemax]=\"maxValue()\"\r\n [attr.aria-valuenow]=\"value2()\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n (keydown)=\"onKeyDown($event, 'thumb2')\"\r\n (mousedown)=\"startDrag($event, 'thumb2')\"\r\n (touchstart)=\"startDrag($event, 'thumb2')\"\r\n [style.left.%]=\"percent2()\"\r\n class=\"nath-slider-thumb\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n />\r\n }\r\n</div>\r\n","export enum ORDER {\n ASC = 'asc',\n DESC = 'desc',\n}\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport {\n LucideArrowDown,\n LucideArrowDown01,\n LucideArrowDownAZ,\n LucideArrowUp,\n LucideArrowUp01,\n LucideArrowUpAZ,\n LucideDynamicIcon,\n LucideIcon,\n} from '@lucide/angular';\nimport { ORDER } from '../types/order.enum';\n\n@Component({\n selector: 'nath-sort-icon',\n template: ` <svg [lucideIcon]=\"icon()\"></svg> `,\n styles: ``,\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true,\n imports: [LucideDynamicIcon],\n})\nexport class NathSortIcon {\n readonly field = input.required<string>();\n readonly sortField = input.required<string>();\n readonly sortOrder = input.required<ORDER>();\n readonly sortType = input<'alpha' | 'numeric' | 'boolean' | 'any'>('alpha');\n\n icon = computed<LucideIcon | null>(() => {\n if (this.field() === this.sortField()) {\n switch (this.sortType()) {\n case 'alpha':\n return this.sortOrder() === ORDER.ASC ? LucideArrowUpAZ : LucideArrowDownAZ;\n case 'numeric':\n return this.sortOrder() === ORDER.ASC ? LucideArrowUp01 : LucideArrowDown01;\n default:\n return this.sortOrder() === ORDER.ASC ? LucideArrowUp : LucideArrowDown;\n }\n } else {\n return null;\n }\n });\n}\n","import { Component, input, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\nimport { NathMenu } from '../menu/menu';\nimport { MenuItem } from '../menu/menu-item.model';\nimport { NathMenuPositionX, NathMenuPositionY } from '../menu/menu.types';\n\n@Component({\n selector: 'nath-split-button',\n imports: [LucideChevronDown, NathMenu],\n template: `\n <div class=\"nath-split-button-container\">\n <button\n type=\"button\"\n class=\"nath-split-button-main\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n (click)=\"buttonClick.emit($event)\"\n >\n <ng-content />\n </button>\n <button\n type=\"button\"\n class=\"nath-split-button-trigger\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n (click)=\"openMenu($event)\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>\n </div>\n <nath-menu [model]=\"menu()\" [positionX]=\"positionX()\" [positionY]=\"positionY()\" />\n `,\n styleUrl: './split-button.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathSplitButton {\n menu = input.required<MenuItem[]>();\n buttonClass = input<string>('');\n disabled = input<boolean>(false);\n positionX = input<NathMenuPositionX>('auto');\n positionY = input<NathMenuPositionY>('auto');\n\n buttonClick = output<MouseEvent>();\n\n tieredMenuComponent = viewChild(NathMenu);\n\n protected openMenu(event: PointerEvent) {\n this.tieredMenuComponent()?.show(event);\n }\n}\n","import { booleanAttribute, Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[nathTab]',\n})\nexport class TabDirective {\n public readonly templateRef = inject(TemplateRef);\n\n tabTitle = input.required<string>({ alias: 'nathTab' });\n disabled = input<boolean>(false, { transform: booleanAttribute });\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[nathTabPanel]',\n})\nexport class TabPanelDirective {\n public readonly templateRef = inject(TemplateRef);\n\n tabTitle = input.required<string>({ alias: 'nathTabPanel' });\n}\n","import {\n Component,\n computed,\n contentChildren,\n input,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';\nimport { TabDirective } from './tab.directive';\nimport { TabPanelDirective } from './tab-panel.directive';\n\n@Component({\n selector: 'nath-tabs',\n imports: [CommonModule, Tabs, TabList, Tab, TabPanel, TabContent],\n template: `\n <div\n ngTabs\n [attr.aria-orientation]=\"orientation()\"\n class=\"nath-tabs-container\"\n [class.vertical]=\"orientation() === 'vertical'\"\n [class.horizontal]=\"orientation() === 'horizontal'\"\n [style.--total-tabs]=\"totalTabs()\"\n >\n <div ngTabList [(selectedTab)]=\"activeTab\" class=\"nath-tabs-list\">\n @for (tab of tabs(); track $index) {\n <div\n ngTab\n [value]=\"tab.tabTitle()\"\n [disabled]=\"tab.disabled()\"\n class=\"nath-tabs-tab\"\n [class]=\"tabClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\" />\n </div>\n }\n </div>\n\n <div\n class=\"nath-tabs-sliding-window\"\n [class]=\"slidingWindowClass()\"\n [style.--active-index]=\"activeTabIndex()\"\n >\n @if (tabPanels().length) {\n @for (tabPanel of tabPanels(); track $index) {\n <div\n ngTabPanel\n [preserveContent]=\"true\"\n [value]=\"tabPanel.tabTitle()\"\n class=\"nath-tabs-panel\"\n [class]=\"tabPanelClass()\"\n >\n <ng-template ngTabContent>\n <ng-container [ngTemplateOutlet]=\"tabPanel.templateRef\" />\n </ng-template>\n </div>\n }\n } @else {\n @for (tab of tabs(); track $index) {\n <div\n ngTabPanel\n [preserveContent]=\"true\"\n [value]=\"tab.tabTitle()\"\n class=\"nath-tabs-panel\"\n [class]=\"tabPanelClass()\"\n >\n <ng-template ngTabContent></ng-template>\n </div>\n }\n }\n </div>\n </div>\n `,\n styleUrl: './tabs.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathTabs {\n activeTab = model.required<string>();\n\n orientation = input<'horizontal' | 'vertical'>('horizontal');\n tabClass = input<string>('');\n tabPanelClass = input<string>('');\n slidingWindowClass = input<string>('');\n\n tabs = contentChildren<TabDirective>(TabDirective);\n tabPanels = contentChildren<TabPanelDirective>(TabPanelDirective);\n\n activeTabIndex = computed<number>(() => {\n return this.tabs().findIndex((tab) => tab.tabTitle() === this.activeTab());\n });\n totalTabs = computed<number>(() => this.tabs().length);\n}\n","import { inject, Injectable, InjectionToken, signal, StaticProvider } from '@angular/core';\n\nexport const DARK_THEME_CLASS = 'dark';\nexport interface ThemeConfig {\n localStorageThemeKey: string;\n}\nexport const THEME_CONFIG = new InjectionToken<ThemeConfig>('THEME_CONFIG');\n\nexport function provideThemeConfig(config: ThemeConfig): StaticProvider {\n return {\n provide: THEME_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n config = inject(THEME_CONFIG);\n\n isDarkMode = signal(false);\n\n constructor() {\n this.loadTheme();\n this.watchFocus();\n }\n\n private get isSystemDarkTheme() {\n return globalThis.matchMedia?.('(prefers-color-scheme: dark)').matches;\n }\n\n private watchFocus() {\n globalThis.addEventListener('visibilitychange', (event: Event) => {\n if ((<Document>event.target).visibilityState === 'visible') {\n this.loadTheme();\n }\n });\n }\n\n loadTheme() {\n const localTheme = localStorage.getItem(this.config.localStorageThemeKey);\n this.isDarkMode.set(localTheme === 'dark' || (!localTheme && this.isSystemDarkTheme));\n const element: HTMLHtmlElement | null = document.querySelector('html');\n if (!element) return;\n if (this.isDarkMode()) {\n element.classList.add(DARK_THEME_CLASS);\n } else {\n element.classList.remove(DARK_THEME_CLASS);\n }\n }\n\n setTheme(theme: string) {\n const element: HTMLHtmlElement | null = document.querySelector('html');\n if (!element) return;\n this.isDarkMode.set(theme === 'dark' || (theme === 'system' && this.isSystemDarkTheme));\n if (this.isDarkMode()) {\n element.classList.add(DARK_THEME_CLASS);\n } else {\n element.classList.remove(DARK_THEME_CLASS);\n }\n if (theme === 'system') {\n localStorage.removeItem(this.config.localStorageThemeKey);\n } else {\n localStorage.setItem(this.config.localStorageThemeKey, theme);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MenuItem } from '../menu/menu-item.model';\nimport { NathMenu } from '../menu/menu';\n\nimport { LucideDynamicIcon, LucideMoon, LucideSun } from '@lucide/angular';\nimport { THEME_CONFIG, ThemeService } from './theme.service';\n\n@Component({\n selector: 'nath-theme-switch',\n imports: [NathMenu, LucideDynamicIcon],\n template: `\n <button\n class=\"button button-text-success\"\n [title]=\"switchTooltip()\"\n (click)=\"themeMenu.show($event)\"\n >\n <svg [lucideIcon]=\"themeService.isDarkMode() ? LucideMoon : LucideSun\"></svg>\n </button>\n <nath-menu #themeMenu [model]=\"themes\" positionX=\"left\" positionY=\"bottom\" />\n `,\n styles: `\n app-theme-switch {\n display: inline-block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathThemeSwitch {\n protected readonly themeService = inject(ThemeService);\n protected readonly config = inject(THEME_CONFIG);\n\n lightText = input<string>('Light');\n darkText = input<string>('Dark');\n systemText = input<string>('System');\n switchTooltip = input<string>('Switch Theme');\n\n themes: MenuItem[] = [\n {\n label: this.lightText(),\n command: () => this.themeService.setTheme('light'),\n },\n {\n label: this.darkText(),\n command: () => this.themeService.setTheme('dark'),\n },\n {\n label: this.systemText(),\n command: () => this.themeService.setTheme('system'),\n },\n ];\n protected readonly LucideMoon = LucideMoon;\n protected readonly LucideSun = LucideSun;\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type NathToastType = 'success' | 'error' | 'info' | 'warning';\nexport type NathToastPosition =\n 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';\n\nexport interface Toast {\n id: string;\n message: string;\n type: NathToastType;\n duration?: number; // in milliseconds\n position?: NathToastPosition;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n // Read-only public signal, private writeable signal\n private readonly toastsSignal = signal<Toast[]>([]);\n toasts = this.toastsSignal.asReadonly();\n\n show(\n message: string,\n type: NathToastType = 'info',\n duration = 4000,\n position?: NathToastPosition,\n ) {\n const id = crypto.randomUUID();\n const newToast: Toast = { id, message, type, duration, position };\n\n // Add new toast to the array\n this.toastsSignal.update((current) => [...current, newToast]);\n\n // Setup auto-dismiss\n if (duration > 0) {\n setTimeout(() => {\n this.dismiss(id);\n }, duration);\n }\n }\n\n dismiss(id: string) {\n this.toastsSignal.update((current) => current.filter((t) => t.id !== id));\n }\n}\n","import {\n Component,\n computed,\n inject,\n input,\n SecurityContext,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NathToastPosition, NathToastType, ToastService } from './toast.service';\nimport { KeyValuePipe } from '@angular/common';\nimport {\n LucideCircleAlert,\n LucideCircleCheck,\n LucideInfo,\n LucideTriangleAlert,\n LucideX,\n} from '@lucide/angular';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'nath-toast-container',\n imports: [\n LucideX,\n LucideCircleCheck,\n LucideCircleAlert,\n LucideInfo,\n LucideTriangleAlert,\n KeyValuePipe,\n ],\n template: `\n @for (group of groupedToasts() | keyvalue; track group.key) {\n <div class=\"nath-toast-container\" [class]=\"getContainerClasses(group.key)\">\n @for (toast of group.value; track toast.id) {\n <div class=\"nath-toast-item\" [class]=\"getToastClasses(toast.type)\" role=\"alert\">\n <div class=\"nath-toast-icon\">\n @switch (toast.type) {\n @case ('success') {\n <svg lucideCircleCheck [size]=\"20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"20\"></svg>\n }\n @case ('warning') {\n <svg lucideTriangleAlert [size]=\"20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"20\"></svg>\n }\n }\n </div>\n\n <span class=\"nath-toast-message\" [innerHtml]=\"formatUrl(toast.message)\"></span>\n\n <button\n (click)=\"toastService.dismiss(toast.id)\"\n class=\"nath-toast-close\"\n aria-label=\"Close\"\n >\n <svg lucideX class=\"nath-toast-close-icon\" [size]=\"16\"></svg>\n </button>\n </div>\n }\n </div>\n }\n `,\n styleUrl: './toast-container.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathToastContainer {\n toastService = inject(ToastService);\n sanitizer = inject(DomSanitizer);\n\n position = input<NathToastPosition>('bottom-center');\n\n groupedToasts = computed(() => {\n const toasts = this.toastService.toasts();\n const defaultPosition = this.position();\n\n return toasts.reduce(\n (acc, toast) => {\n const pos = toast.position || defaultPosition;\n if (!acc[pos]) {\n acc[pos] = [];\n }\n acc[pos].push(toast);\n return acc;\n },\n {} as Record<string, typeof toasts>,\n );\n });\n\n getContainerClasses(position: string | number): string {\n return `nath-toast-container--${position}`;\n }\n\n getToastClasses(type: NathToastType): string {\n return `nath-toast-item--${type}`;\n }\n\n /**\n * Insert line break opportunities into a URL\n */\n formatUrl(url: string) {\n // Split the URL into an array to distinguish double slashes from single slashes\n const doubleSlash = url.split('//');\n\n // Format the strings on either side of double slashes separately\n const formatted = doubleSlash\n .map(\n (str: string) =>\n // Insert a word break opportunity after a colon\n str\n .replace(/(?<after>:)/giu, '$<after><wbr>')\n // Before a single slash, tilde, period, comma, hyphen, underline, question mark, number sign, or percent symbol\n .replace(/(?<before>[/~.,\\-_?#%])/giu, '<wbr>$<before>')\n // Before and after an equals sign or ampersand\n .replace(/(?<beforeAndAfter>[=&])/giu, '<wbr>$<beforeAndAfter><wbr>'),\n // Reconnect the strings with word break opportunities after double slashes\n )\n .join('//<wbr>');\n\n return this.sanitizer.sanitize(SecurityContext.HTML, formatted);\n }\n}\n","import {\n Component,\n computed,\n effect,\n input,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'nath-toc',\n imports: [],\n templateUrl: './toc.html',\n styleUrl: './toc.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathToc {\n public readonly level = input<number>(2);\n public readonly container = input<HTMLDivElement | undefined>();\n public readonly containerSelector = input<string>('');\n public readonly scrollContainerSelector = input<string>('');\n public readonly offset = input<number>(0);\n\n protected readonly tocSections = signal<{ id: string; label: string }[]>([]);\n\n scrollContainer: Signal<Element | typeof globalThis> = computed(() =>\n this.scrollContainerSelector()\n ? (document.querySelector(this.scrollContainerSelector()) ?? globalThis)\n : globalThis,\n );\n\n constructor() {\n effect(() => {\n let containerEl = this.container();\n const containerSelector = this.containerSelector();\n if (containerSelector) {\n containerEl = document.querySelector(containerSelector) as HTMLDivElement | undefined;\n }\n if (containerEl) {\n const headings = containerEl.querySelectorAll(`h${this.level()}[id]`);\n const sections = Array.from(headings).map((heading) => ({\n id: heading.id,\n label: heading.textContent || '',\n }));\n if (sections.length === 0) {\n console.error(`No headings of level ${this.level()} found`);\n }\n this.tocSections.set(sections);\n } else {\n console.error('Container not found');\n this.tocSections.set([]);\n }\n });\n }\n\n scrollToSection(id: string) {\n const element = document.getElementById(id);\n const scrollContainer = this.scrollContainer();\n if (element) {\n const offset = this.offset();\n const scrollY =\n scrollContainer instanceof Element ? scrollContainer.scrollTop : scrollContainer.scrollY;\n const elementPosition = element.getBoundingClientRect().top + scrollY;\n scrollContainer.scrollTo({\n top: elementPosition - offset,\n behavior: 'smooth',\n });\n }\n }\n}\n","<aside class=\"nath-toc-aside\">\n <nav class=\"nath-toc-nav\">\n <h3 class=\"nath-toc-title\">Table of Contents</h3>\n <ul class=\"nath-toc-list\">\n @for (section of tocSections(); track section.id) {\n <li>\n <button type=\"button\" (click)=\"scrollToSection(section.id)\" class=\"nath-toc-button\">\n {{ section.label }}\n </button>\n </li>\n }\n </ul>\n </nav>\n</aside>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n SecurityContext,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nexport type NathTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\ninterface NathTooltipCoordinates {\n top: number;\n left: number;\n finalPosition: NathTooltipPosition;\n}\n\n@Component({\n imports: [NgTemplateOutlet],\n template: `\n <div\n class=\"nath-tooltip-container nath-tooltip-container-theme\"\n [class]=\"arrowClass()\"\n [style]=\"positionStyles()\"\n >\n <div class=\"nath-tooltip-content\">\n @if (isTemplate(content())) {\n <ng-container [ngTemplateOutlet]=\"$any(content())\"></ng-container>\n } @else {\n <div [innerHTML]=\"sanitizedHtml()\"></div>\n }\n </div>\n </div>\n `,\n styleUrl: './tooltip-container.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathTooltipContainer {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>); // Inject host reference directly\n\n content = input<string | TemplateRef<any> | null>(null);\n positionStyles = signal<Record<string, string>>({ opacity: '0' });\n arrowClass = signal<string>('arrow-top');\n\n protected sanitizedHtml(): SafeHtml {\n const raw = this.content();\n if (typeof raw === 'string') {\n return this.sanitizer.sanitize(SecurityContext.HTML, raw) || '';\n }\n return '';\n }\n\n protected isTemplate(value: any): boolean {\n return value && typeof value !== 'string';\n }\n\n updatePosition(hostRect: DOMRect, preferredPosition: NathTooltipPosition) {\n const tooltipContainer = this.hostRef.nativeElement.querySelector('.nath-tooltip-container');\n if (!tooltipContainer) {\n console.error('Tooltip container not found');\n return;\n }\n const tooltipWidth = tooltipContainer.offsetWidth;\n const tooltipHeight = tooltipContainer.offsetHeight;\n const spacing = 12;\n\n // Determine baseline coordinates and potential flip strategy\n const coords = this.calculateInitialPosition(\n hostRect,\n tooltipWidth,\n tooltipHeight,\n preferredPosition,\n spacing,\n );\n\n // Prevent edge bleeding along the cross-axis bounds\n const cleanCoords = this.constrainToViewport(\n coords.left,\n coords.top,\n tooltipWidth,\n tooltipHeight,\n preferredPosition,\n );\n\n this.arrowClass.set(`arrow-${coords.finalPosition}`);\n\n this.positionStyles.set({\n transform: `translate3d(${cleanCoords.left}px, ${cleanCoords.top}px, 0)`,\n opacity: '1',\n });\n }\n\n /**\n * Calculates structural baseline layout alignments and performs flipping checks.\n */\n private calculateInitialPosition(\n hostRect: DOMRect,\n w: number,\n h: number,\n pos: NathTooltipPosition,\n space: number,\n ): NathTooltipCoordinates {\n if (pos === 'top') return this.getTopCoords(hostRect, w, h, space);\n if (pos === 'bottom') return this.getBottomCoords(hostRect, w, h, space);\n if (pos === 'left') return this.getLeftCoords(hostRect, w, h, space);\n return this.getRightCoords(hostRect, w, h, space);\n }\n\n private getTopCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const top = hostRect.top - h - space;\n const isOverflow = top < 0;\n return {\n top: isOverflow ? hostRect.bottom + space : top,\n left: hostRect.left + (hostRect.width - w) / 2,\n finalPosition: isOverflow ? 'bottom' : 'top',\n };\n }\n\n private getBottomCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const top = hostRect.bottom + space;\n const isOverflow = top + h > window.innerHeight;\n return {\n top: isOverflow ? hostRect.top - h - space : top,\n left: hostRect.left + (hostRect.width - w) / 2,\n finalPosition: isOverflow ? 'top' : 'bottom',\n };\n }\n\n private getLeftCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const left = hostRect.left - w - space;\n const isOverflow = left < 0;\n return {\n top: hostRect.top + (hostRect.height - h) / 2,\n left: isOverflow ? hostRect.right + space : left,\n finalPosition: isOverflow ? 'right' : 'left',\n };\n }\n\n private getRightCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const left = hostRect.right + space;\n const isOverflow = left + w > window.innerWidth;\n return {\n top: hostRect.top + (hostRect.height - h) / 2,\n left: isOverflow ? hostRect.left - w - space : left,\n finalPosition: isOverflow ? 'left' : 'right',\n };\n }\n\n /**\n * Adjusts calculated coordinates to keep them confined within visible screen padding bounds.\n */\n private constrainToViewport(\n left: number,\n top: number,\n w: number,\n h: number,\n pos: NathTooltipPosition,\n ): { left: number; top: number } {\n let cleanLeft = left;\n let cleanTop = top;\n const boundaryPadding = 8;\n\n if (pos === 'top' || pos === 'bottom') {\n if (cleanLeft < 0) cleanLeft = boundaryPadding;\n if (cleanLeft + w > window.innerWidth) {\n cleanLeft = window.innerWidth - w - boundaryPadding;\n }\n } else {\n if (cleanTop < 0) cleanTop = boundaryPadding;\n if (cleanTop + h > window.innerHeight) {\n cleanTop = window.innerHeight - h - boundaryPadding;\n }\n }\n\n return { left: cleanLeft, top: cleanTop };\n }\n\n hide() {\n this.positionStyles.update((styles) => ({ ...styles, opacity: '0' }));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { NathTooltipContainer, NathTooltipPosition } from './tooltip-container';\n\n@Directive({\n selector: '[nathTooltip]',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(focusin)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focusout)': 'onMouseLeave()',\n },\n})\nexport class NathTooltipDirective implements OnDestroy {\n tooltipContent = input<string | TemplateRef<any> | null>(null, {\n alias: 'nathTooltip',\n });\n tooltipPosition = input<NathTooltipPosition>('top');\n showDelay = input<number>(200);\n hideDelay = input<number>(100);\n\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly document = inject(DOCUMENT);\n\n private componentRef: ComponentRef<NathTooltipContainer> | null = null;\n private showTimeout: any;\n private hideTimeout: any;\n\n onMouseEnter() {\n clearTimeout(this.hideTimeout);\n if (!this.componentRef) {\n this.showTimeout = setTimeout(() => this.showTooltip(), this.showDelay());\n }\n }\n\n onMouseLeave() {\n clearTimeout(this.showTimeout);\n if (this.componentRef) {\n this.hideTimeout = setTimeout(() => this.destroyTooltip(), this.hideDelay());\n }\n }\n\n private showTooltip() {\n if (this.componentRef || !this.tooltipContent()) return;\n\n this.componentRef = this.viewContainerRef.createComponent(NathTooltipContainer);\n this.componentRef.setInput('content', this.tooltipContent());\n\n const domElem = (this.componentRef.hostView as any).rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n this.componentRef.changeDetectorRef.detectChanges();\n\n const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n this.componentRef.instance.updatePosition(hostRect, this.tooltipPosition());\n\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n private destroyTooltip() {\n if (this.componentRef) {\n this.componentRef.instance.hide();\n\n const refToDestroy = this.componentRef;\n this.componentRef = null;\n\n // Keep this at a fixed 200ms to allow the Tailwind opacity transition to complete\n setTimeout(() => {\n refToDestroy.destroy();\n }, 200);\n }\n }\n\n ngOnDestroy() {\n clearTimeout(this.showTimeout);\n clearTimeout(this.hideTimeout);\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n}\n","export function next(el: Element, selector?: string) {\r\n const nextEl = el.nextElementSibling;\r\n if (!selector || (nextEl && nextEl.matches(selector))) {\r\n return nextEl;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const isTruthy = <T>(x: T | undefined | null): x is T => !!x;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const rangeMinMax = (\n range: number[] | undefined,\n min: number | undefined,\n max: number | undefined,\n): boolean =>\n min !== undefined &&\n max !== undefined &&\n !!range?.length &&\n range[0] === min &&\n range[1] === max;\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const rangeNotMinMax = (\r\n range: number[] | undefined,\r\n min: number | undefined,\r\n max: number | undefined,\r\n): boolean =>\r\n !!range?.length &&\r\n (min === undefined ||\r\n (min === 0 && max === 0) ||\r\n (!!max && (range[0] > min || range[1] < max)));\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export function isSortOrderValid(order: string) {\r\n return ['asc', 'desc'].indexOf(order) > -1;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/*\r\n * Public API Surface of nath-angular-ui\r\n */\r\n\r\nexport * from './lib/autocomplete/autocomplete';\r\nexport * from './lib/boolean-control/boolean-control';\r\nexport * from './lib/breadcrumbs/breadcrumbs';\r\nexport * from './lib/breadcrumbs/breadcrumb.service';\r\nexport * from './lib/breadcrumbs/breadcrumb.model';\r\nexport * from './lib/code-viewer/code-file';\r\nexport * from './lib/code-viewer/code-viewer';\r\nexport * from './lib/datepicker/datepicker';\r\nexport * from './lib/dialog/confirmation.service';\r\nexport * from './lib/dialog/confirmation-dialog';\r\nexport * from './lib/dialog/confirmation-types';\r\nexport * from './lib/dialog/dialog-ref';\r\nexport * from './lib/dialog/dialog.service';\r\nexport * from './lib/dialog/dialog-container';\r\nexport * from './lib/drawer/drawer';\r\nexport * from './lib/file-upload/file-upload';\r\nexport * from './lib/floating-label/floating-label';\r\nexport * from './lib/form-field/form-field';\r\nexport * from './lib/image-preview/image-preview';\r\nexport * from './lib/menu/menu';\r\nexport * from './lib/menu/menu.types';\r\nexport * from './lib/menu/menu-item.model';\r\nexport * from './lib/menu/menu-list';\r\nexport * from './lib/multiselect/multiselect';\r\nexport * from './lib/paginated-view/paginated-view';\r\nexport * from './lib/paginator/paginator';\r\nexport * from './lib/panel/panel';\r\nexport * from './lib/pick-list/pick-list';\r\nexport * from './lib/progress-bar/progress-bar';\r\nexport * from './lib/progress-circle/progress-circle';\r\nexport * from './lib/radio-button-group/radio-button-group';\r\nexport * from './lib/rating/rating.constants';\r\nexport * from './lib/rating/rating-heart/rating-heart';\r\nexport * from './lib/rating/rating-input/rating-input';\r\nexport * from './lib/select/select';\r\nexport * from './lib/skeleton/skeleton';\r\nexport * from './lib/slider/slider';\r\nexport * from './lib/show-errors/show-errors';\r\nexport * from './lib/sort-icon/sort-icon';\r\nexport * from './lib/split-button/split-button';\r\nexport * from './lib/tabs/tab.directive';\r\nexport * from './lib/tabs/tab-panel.directive';\r\nexport * from './lib/tabs/tabs';\r\nexport * from './lib/theme-switch/theme.service';\r\nexport * from './lib/theme-switch/theme-switch';\r\nexport * from './lib/toast/toast.service';\r\nexport * from './lib/toast/toast-container';\r\nexport * from './lib/toc/toc';\r\nexport * from './lib/tooltip/tooltip.directive';\r\nexport * from './lib/tooltip/tooltip-container';\r\nexport * from './lib/types/select-item';\r\nexport * from './lib/types/order.enum';\r\nexport * from './lib/utilities/form.util';\r\nexport * from './lib/utilities/dom.util';\r\nexport * from './lib/utilities/isTruthy';\r\nexport * from './lib/utilities/rangeMinMax';\r\nexport * from './lib/utilities/rangeNotMinMax';\r\nexport * from './lib/utilities/isSortOrderValid';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","nextId"],"mappings":"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"}
1
+ {"version":3,"file":"nath-angular-ui.mjs","sources":["../../../projects/nath-angular-ui/src/lib/autocomplete/autocomplete.ts","../../../projects/nath-angular-ui/src/lib/autocomplete/autocomplete.html","../../../projects/nath-angular-ui/src/lib/boolean-control/boolean-control.ts","../../../projects/nath-angular-ui/src/lib/boolean-control/boolean-control.html","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumb.service.ts","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumbs.ts","../../../projects/nath-angular-ui/src/lib/breadcrumbs/breadcrumbs.html","../../../projects/nath-angular-ui/src/lib/code-viewer/code-file-tab-name-pipe.ts","../../../projects/nath-angular-ui/src/lib/code-viewer/code-viewer.ts","../../../projects/nath-angular-ui/src/lib/code-viewer/code-viewer.html","../../../projects/nath-angular-ui/src/lib/datepicker/datepicker.ts","../../../projects/nath-angular-ui/src/lib/datepicker/datepicker.html","../../../projects/nath-angular-ui/src/lib/dialog/dialog-ref.ts","../../../projects/nath-angular-ui/src/lib/dialog/dialog-container.ts","../../../projects/nath-angular-ui/src/lib/dialog/dialog.service.ts","../../../projects/nath-angular-ui/src/lib/dialog/confirmation-dialog.ts","../../../projects/nath-angular-ui/src/lib/dialog/confirmation.service.ts","../../../projects/nath-angular-ui/src/lib/drawer/drawer.ts","../../../projects/nath-angular-ui/src/lib/file-upload/file-upload.ts","../../../projects/nath-angular-ui/src/lib/utilities/form.util.ts","../../../projects/nath-angular-ui/src/lib/floating-label/floating-label.ts","../../../projects/nath-angular-ui/src/lib/show-errors/show-errors.ts","../../../projects/nath-angular-ui/src/lib/form-field/form-field.ts","../../../projects/nath-angular-ui/src/lib/image-preview/image-preview.ts","../../../projects/nath-angular-ui/src/lib/menu/menu-list.ts","../../../projects/nath-angular-ui/src/lib/menu/menu-list.html","../../../projects/nath-angular-ui/src/lib/menu/menu.ts","../../../projects/nath-angular-ui/src/lib/menu/menu.html","../../../projects/nath-angular-ui/src/lib/multiselect/multiselect.ts","../../../projects/nath-angular-ui/src/lib/paginator/paginator.ts","../../../projects/nath-angular-ui/src/lib/paginated-view/paginated-view.ts","../../../projects/nath-angular-ui/src/lib/panel/panel.ts","../../../projects/nath-angular-ui/src/lib/pick-list/pick-list.ts","../../../projects/nath-angular-ui/src/lib/progress-bar/progress-bar.ts","../../../projects/nath-angular-ui/src/lib/progress-circle/progress-circle.ts","../../../projects/nath-angular-ui/src/lib/radio-button-group/radio-button-group.ts","../../../projects/nath-angular-ui/src/lib/rating/rating.constants.ts","../../../projects/nath-angular-ui/src/lib/rating/rating-heart/rating-heart.ts","../../../projects/nath-angular-ui/src/lib/rating/rating-input/rating-input.ts","../../../projects/nath-angular-ui/src/lib/select/select.ts","../../../projects/nath-angular-ui/src/lib/skeleton/skeleton.ts","../../../projects/nath-angular-ui/src/lib/slider/slider.ts","../../../projects/nath-angular-ui/src/lib/slider/slider.html","../../../projects/nath-angular-ui/src/lib/types/order.enum.ts","../../../projects/nath-angular-ui/src/lib/sort-icon/sort-icon.ts","../../../projects/nath-angular-ui/src/lib/split-button/split-button.ts","../../../projects/nath-angular-ui/src/lib/tabs/tab.directive.ts","../../../projects/nath-angular-ui/src/lib/tabs/tab-panel.directive.ts","../../../projects/nath-angular-ui/src/lib/tabs/tabs.ts","../../../projects/nath-angular-ui/src/lib/theme-switch/theme.service.ts","../../../projects/nath-angular-ui/src/lib/theme-switch/theme-switch.ts","../../../projects/nath-angular-ui/src/lib/toast/toast.service.ts","../../../projects/nath-angular-ui/src/lib/toast/toast-container.ts","../../../projects/nath-angular-ui/src/lib/toc/toc.ts","../../../projects/nath-angular-ui/src/lib/toc/toc.html","../../../projects/nath-angular-ui/src/lib/tooltip/tooltip-container.ts","../../../projects/nath-angular-ui/src/lib/tooltip/tooltip.directive.ts","../../../projects/nath-angular-ui/src/lib/utilities/dom.util.ts","../../../projects/nath-angular-ui/src/lib/utilities/isTruthy.ts","../../../projects/nath-angular-ui/src/lib/utilities/rangeMinMax.ts","../../../projects/nath-angular-ui/src/lib/utilities/rangeNotMinMax.ts","../../../projects/nath-angular-ui/src/lib/utilities/isSortOrderValid.ts","../../../projects/nath-angular-ui/src/public-api.ts","../../../projects/nath-angular-ui/src/nath-angular-ui.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { LucideChevronDown, LucideX } from '@lucide/angular';\nimport { FormValueControl } from '@angular/forms/signals';\n\n@Component({\n selector: 'nath-autocomplete',\n imports: [CommonModule, OverlayModule, LucideX, LucideChevronDown],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathAutocomplete implements FormValueControl<any> {\n protected readonly elementRef = inject(ElementRef);\n\n // value can be an object (Single) or an array of objects (Multiple)\n value = model<any>(null);\n\n items = input<any[]>([]);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n dropdown = input<boolean>(false);\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n disabled = input<boolean>(false);\n forceDisabled = input<boolean>(false);\n\n multiple = input<boolean>(false);\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n\n query = model<string>('');\n itemTemplate = contentChild<TemplateRef<any>>(TemplateRef);\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n isDisabled = computed(() => this.disabled() || this.forceDisabled());\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n selectedItems = computed<any[]>(() => {\n const val = this.value();\n if (!val) return [];\n if (this.multiple()) {\n return Array.isArray(val) ? val : [val];\n } else {\n return [val];\n }\n });\n\n showClearButton = computed<boolean>(\n () =>\n this.showClear() &&\n ((this.multiple() && !!this.selectedItems().length) || (!this.multiple() && !!this.value())),\n );\n\n constructor() {\n // Sync the search input text string dynamically\n effect(() => {\n const currentObj = this.value();\n if (!this.multiple() && currentObj) {\n this.inputValue.set(this.displayFn()(currentObj));\n } else if (this.multiple()) {\n // Clear text input upon external chip state resets\n this.inputValue.set(this.query());\n }\n });\n\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect((onCleanup) => {\n const currentQuery = this.query();\n // Start a 300ms timer before emitting the change event\n const timeoutId = setTimeout(() => {\n if (currentQuery?.length >= this.minQueryLength()) {\n this.debouncedQueryChange.emit(currentQuery);\n }\n }, this.delay());\n\n // CRITICAL: If the user types another character before 300ms is up,\n // this cleanup function runs automatically and kills the old timer.\n onCleanup(() => clearTimeout(timeoutId));\n });\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n if (!this.isOpen()) this.isOpen.set(true);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n if (this.isDisabled()) {\n return;\n }\n if (this.multiple()) {\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n // Prevent duplicates by checking structural IDs or exact references\n const alreadySelected = currentValues.some(\n (v: any) => JSON.stringify(v) === JSON.stringify(item),\n );\n\n if (!alreadySelected) {\n this.value.set([...currentValues, item]);\n }\n this.query.set(''); // Clear search query text upon selecting a chip\n } else {\n this.value.set(item);\n this.isOpen.set(false);\n }\n }\n\n removeItem(itemToRemove: any, event: MouseEvent) {\n if (this.isDisabled()) {\n return;\n }\n event.stopPropagation(); // Avoid triggering open dropdown directives\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n this.value.set(\n currentValues.filter((v: any) => JSON.stringify(v) !== JSON.stringify(itemToRemove)),\n );\n this.unselected.emit(itemToRemove);\n }\n\n onKeyDown(event: KeyboardEvent) {\n const currentItems = this.items();\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter') this.isOpen.set(true);\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.isOpen.set(false);\n this.inputField()?.nativeElement.blur();\n break;\n }\n }\n\n protected clear() {\n if (this.multiple()) {\n this.value.set([]);\n } else {\n this.value.set(null);\n }\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n\n public triggerSearch(text: string) {\n this.query.set(text);\n if (!this.isOpen()) this.isOpen.set(true);\n this.activeTrackedIndex.set(-1);\n }\n\n protected openDropdown() {\n this.debouncedQueryChange.emit(this.query());\n this.isOpen.set(true);\n }\n}\n","<div\r\n (click)=\"inputField?.focus()\"\r\n (keydown.enter)=\"inputField?.focus()\"\r\n class=\"input nath-autocomplete-theme ac-input-container\"\r\n [ngClass]=\"{\r\n 'ac-has-clear-btn': showClearButton(),\r\n 'ac-borderless-container': borderless(),\r\n 'ac-no-right-radius': dropdown()\r\n }\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n>\r\n @if (multiple()) {\r\n @for (item of selectedItems(); track $index) {\r\n <div class=\"ac-selected-tag\">\r\n <span [ngClass]=\"{'ac-tag-disabled': isDisabled()}\">\r\n {{ displayFn()(item) }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n (click)=\"removeItem(item, $event)\"\r\n class=\"ac-remove-tag-btn\"\r\n [disabled]=\"isDisabled()\"\r\n >\r\n <svg\r\n class=\"ac-svg-icon\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2.5\"\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n }\r\n\r\n <input\r\n #inputField\r\n type=\"text\"\r\n [id]=\"inputId()\"\r\n [placeholder]=\"selectedItems().length === 0 || !multiple() ? placeholder() : ''\"\r\n [value]=\"inputValue()\"\r\n [disabled]=\"isDisabled()\"\r\n (input)=\"onInputChange($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n class=\"ac-native-input inner-input\"\r\n [ngClass]=\"{ 'ac-borderless-input': borderless() }\"\r\n />\r\n\r\n @if (showClearButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"ac-clear-button\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear()\"\r\n >\r\n <svg lucideX [size]=\"16\" />\r\n </button>\r\n }\r\n</div>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen() && items().length > 0\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayPanelClass]=\"'nath-autocomplete-theme'\"\r\n (backdropClick)=\"isOpen.set(false)\"\r\n>\r\n <div\r\n class=\"ac-dropdown-overlay\"\r\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\r\n >\r\n @for (item of items(); track $index) {\r\n <div\r\n (click)=\"selectItem(item)\"\r\n (keydown.enter)=\"selectItem(item)\"\r\n class=\"ac-dropdown-item\"\r\n [class.is-active]=\"activeTrackedIndex() === $index\"\r\n >\r\n @if (!itemTemplate()) {\r\n {{ displayFn()(item) }}\r\n } @else {\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (items().length === 0) {\r\n <div class=\"ac-dropdown-item\">\r\n {{ emptyMessage() }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n@if (dropdown()) {\r\n <button\r\n type=\"button\"\r\n class=\"button-secondary ac-dropdown-trigger-btn\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"openDropdown()\"\r\n >\r\n <svg lucideChevronDown [size]=\"16\" />\r\n </button>\r\n}\r\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { isLucideIconComponent, LucideDynamicIcon, LucideIcon } from '@lucide/angular';\n\nexport type BooleanDisplayMode = 'checkbox' | 'toggle' | 'switch';\nexport type TristateValue = boolean | null;\n\n@Component({\n selector: 'nath-boolean-control',\n imports: [CommonModule, LucideDynamicIcon],\n templateUrl: './boolean-control.html',\n styleUrls: ['./boolean-control.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathBooleanControl implements FormValueControl<TristateValue> {\n // Inputs & Configuration\n mode = input<BooleanDisplayMode>('checkbox');\n label = input<string>('');\n allowIndeterminate = input<boolean>(false);\n inputId = input<string | null>(null);\n styleClass = input<string>('');\n yesLabel = input<string>('Yes');\n noLabel = input<string>('No');\n indeterminateLabel = input<string>('?');\n icon = input<LucideIcon | string | undefined>();\n\n toggled = output<TristateValue>();\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n // Two-way tri-state signal binding\n value = model<TristateValue>(null);\n disabled = model<boolean>(false);\n\n // Read template slot for the switch handle icon\n // Grab a reference to the native checkbox input for setting DOM properties\n checkboxRef = viewChild<ElementRef<HTMLInputElement>>('checkboxElement');\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n toggleButtonClasses = computed((): Record<string, boolean> => {\n const val: TristateValue = this.value();\n return {\n 'nath-boolean-toggle-null': val === null,\n 'nath-boolean-toggle-on': val === true,\n 'nath-boolean-toggle-off': val === false,\n 'nath-boolean-disabled': this.disabled(),\n };\n });\n\n fallbackButtonLabel = computed((): string => {\n const val = this.value();\n if (val) return this.yesLabel();\n if (val !== null && !val) return this.noLabel();\n return this.indeterminateLabel();\n });\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n // 1. Sync the local signal value with the native DOM 'indeterminate' property\n effect(() => {\n const el = this.checkboxRef()?.nativeElement;\n if (el) {\n el.indeterminate = this.allowIndeterminate() && this.value() === null;\n }\n });\n }\n\n // ────────────────────────────────────────────────────────────────────────────────\n\n toggle(): void {\n if (this.disabled()) return;\n\n this.value.update((current) => {\n if (this.allowIndeterminate()) {\n if (current === null) return true;\n if (current) return false;\n return null;\n } else {\n return !current;\n }\n });\n this.toggled.emit(this.value());\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","@if (mode() === 'checkbox') {\r\n <div class=\"nath-boolean-checkbox-container\">\r\n <label\r\n class=\"nath-boolean-checkbox-label\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n [class]=\"styleClass()\"\r\n >\r\n <input\r\n #checkboxElement\r\n type=\"checkbox\"\r\n [checked]=\"value() === true\"\r\n (change)=\"toggle()\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n </div>\r\n}\r\n\r\n@if (mode() === 'switch') {\r\n <label\r\n class=\"nath-boolean-switch-label\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n [class]=\"styleClass()\"\r\n >\r\n <div class=\"nath-boolean-switch-wrapper\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value() === true\"\r\n (change)=\"toggle()\"\r\n class=\"nath-boolean-switch-input\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <div\r\n class=\"nath-boolean-switch-track\"\r\n [class.is-null]=\"value() === null\"\r\n [class.nath-boolean-disabled]=\"disabled()\"\r\n >\r\n @if (icon()) {\r\n <div\r\n class=\"nath-boolean-switch-handle-content\"\r\n [class.is-off]=\"value() === false\"\r\n [class.is-null]=\"value() === null\"\r\n [class.is-on]=\"value() === true\"\r\n >\r\n @if (isLucideIconComponent(icon()!)) {\r\n <svg [lucideIcon]=\"icon()!\" />\r\n } @else {\r\n <i [ngClass]=\"[icon()!]\"></i>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (label()) {\r\n <span>\r\n {{ label() }}\r\n </span>\r\n }\r\n </label>\r\n}\r\n\r\n@if (mode() === 'toggle') {\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"nath-boolean-toggle-button\"\r\n [class]=\"styleClass()\"\r\n [id]=\"inputId()\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"nath-boolean-toggle-content\" [ngClass]=\"toggleButtonClasses()\">\r\n @if (icon()) {\r\n @if (isLucideIconComponent(icon()!)) {\r\n <svg [lucideIcon]=\"icon()!\" />\r\n } @else {\r\n <i [ngClass]=\"[icon()!]\"></i>\r\n }\r\n }\r\n {{ label() || fallbackButtonLabel() }}\r\n </span>\r\n </button>\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { Breadcrumb } from './breadcrumb.model';\n\n@Injectable({\n providedIn: 'root', // Shared instance across the app\n})\nexport class BreadcrumbService {\n // A private writable signal holding the home item which will always be visible, if any\n private readonly _home = signal<Breadcrumb | null>(null);\n // A private writable signal holding the current breadcrumbs array\n private readonly _breadcrumbs = signal<Breadcrumb[]>([]);\n\n // Expose as a read-only signals so components can only read, not mutate directly\n home = this._home.asReadonly();\n breadcrumbs = this._breadcrumbs.asReadonly();\n\n /**\n * Set the home item\n * @param crumb The home item\n */\n setHome(crumb: Breadcrumb | null): void {\n this._home.set(crumb);\n }\n\n /**\n * Set the breadcrumbs for the current view.\n * @param crumbs Array of breadcrumbs items\n */\n set(crumbs: Breadcrumb[]): void {\n this._breadcrumbs.set(crumbs);\n }\n\n add(crumb: Breadcrumb): void {\n this._breadcrumbs.update((v) => [...v, crumb]);\n }\n\n /**\n * Clears the breadcrumbs when leaving a page.\n */\n clear(): void {\n this._breadcrumbs.set([]);\n }\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { LucideHouse } from '@lucide/angular';\r\n\r\n@Component({\r\n selector: 'nath-breadcrumbs',\r\n imports: [RouterModule, LucideHouse],\r\n templateUrl: './breadcrumbs.html',\r\n styleUrls: ['./breadcrumbs.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathBreadcrumbs {\r\n private readonly breadcrumbService = inject(BreadcrumbService);\r\n\r\n // Directly expose the read-only signal to the template\r\n protected readonly home = this.breadcrumbService.home;\r\n protected readonly breadcrumbs = this.breadcrumbService.breadcrumbs;\r\n}\r\n","@if (home() || breadcrumbs().length > 0) {\n <nav aria-label=\"breadcrumb\" class=\"nath-breadcrumb-container\">\n <ol class=\"nath-breadcrumb-list\">\n @let h = home();\n @if (h) {\n <li class=\"nath-breadcrumb-item\">\n @if (h.routerLink) {\n <a\n class=\"nath-breadcrumb-link\"\n [routerLink]=\"h.routerLink\"\n [queryParams]=\"h.queryParams\"\n [routerLinkActive]=\"h.routerLinkActive ?? []\"\n [routerLinkActiveOptions]=\"h.routerLinkActiveOptions ?? { exact: false }\"\n ><svg lucideHouse [size]=\"16\"\n /></a>\n } @else {\n <span class=\"nath-breadcrumb--current\" aria-current=\"page\"\n ><svg lucideHouse [size]=\"16\"\n /></span>\n }\n </li>\n }\n @for (crumb of breadcrumbs(); track crumb.label; let last = $last) {\n <li class=\"nath-breadcrumb-item\" [class.is-active]=\"last\">\n @if (crumb.routerLink && !last && !crumb.disabled) {\n <a\n class=\"nath-breadcrumb-link\"\n [routerLink]=\"crumb.routerLink\"\n [queryParams]=\"crumb.queryParams\"\n [routerLinkActive]=\"crumb.routerLinkActive ?? []\"\n [routerLinkActiveOptions]=\"crumb.routerLinkActiveOptions ?? { exact: false }\"\n >{{ crumb.label }}</a\n >\n } @else {\n <span\n [class.nath-breadcrumb--current]=\"!crumb.disabled\"\n [class.nath-breadcrumb--disabled]=\"crumb.disabled\"\n aria-current=\"page\"\n >{{ crumb.label }}</span\n >\n }\n </li>\n }\n </ol>\n </nav>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nathCodeFileTabName',\n})\nexport class CodeFileTabNamePipe implements PipeTransform {\n transform(value: string, showFullPath: boolean): string {\n return showFullPath ? value : (value.split('/').at(-1) ?? '');\n }\n}\n","import { Component, computed, input, signal } from '@angular/core';\nimport { CodeFile } from './code-file';\nimport { CodeFileTabNamePipe } from './code-file-tab-name-pipe';\n\n@Component({\n selector: 'nath-code-viewer',\n host: {\n class: 'docs-code-container',\n '[class.has-copied]': 'copied()',\n },\n templateUrl: './code-viewer.html',\n styleUrls: ['./code-viewer.css'],\n imports: [CodeFileTabNamePipe],\n})\nexport class NathCodeViewer {\n // Signal inputs\n readonly files = input.required<CodeFile[]>();\n readonly showLineNumbers = input<boolean>(true);\n // If true, show the full path instead of just the file name\n readonly showFullPaths = input<boolean>(false);\n\n // Active tab track index state\n protected readonly activeIndex = signal<number>(0);\n protected readonly copied = signal<boolean>(false);\n\n // Derived state for the currently active file\n protected readonly activeFile = computed<CodeFile | undefined>(() => {\n const list = this.files();\n const index = this.activeIndex();\n return list[index] ?? list[0];\n });\n\n // Derived state to split the active file's code into individual lines\n protected readonly lines = computed<string[]>(() => {\n const file = this.activeFile();\n if (!file?.content) return [];\n return file.content.split('\\n');\n });\n\n protected selectTab(index: number): void {\n this.activeIndex.set(index);\n }\n\n protected copyToClipboard(): void {\n const file = this.activeFile();\n if (!file) return;\n\n navigator.clipboard\n .writeText(file.content)\n .then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n })\n .catch((err) => {\n console.error('Failed to copy code: ', err);\n });\n }\n}\n","<div class=\"code-header\">\n <div class=\"tabs-list\" role=\"tablist\" aria-label=\"File selections\">\n @for (file of files(); track file.name) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"tab-button\"\n [class.active]=\"activeIndex() === $index\"\n [attr.aria-selected]=\"activeIndex() === $index\"\n [attr.aria-controls]=\"'panel-' + $index\"\n [attr.id]=\"'tab-' + $index\"\n (click)=\"selectTab($index)\"\n >\n {{ file.name | nathCodeFileTabName: showFullPaths() }}\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"copy-button\"\n [attr.aria-label]=\"copied() ? 'Copied code to clipboard' : 'Copy code to clipboard'\"\n (click)=\"copyToClipboard()\"\n >\n {{ copied() ? 'Copied!' : 'Copy' }}\n </button>\n</div>\n\n<div\n class=\"code-body\"\n role=\"tabpanel\"\n [attr.id]=\"'panel-' + activeIndex()\"\n [attr.aria-labelledby]=\"'tab-' + activeIndex()\"\n>\n @if (showLineNumbers()) {\n <div class=\"line-numbers\" aria-hidden=\"true\">\n @for (line of lines(); track $index) {\n <span>{{ $index + 1 }}</span>\n }\n </div>\n }\n\n <pre><code>@for (line of lines(); track $index) {<span class=\"code-line\">{{ line || '\\n' }}</span>}</code></pre>\n</div>\n","import { Component, effect, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'nath-datepicker',\n imports: [CommonModule, OverlayModule, FormsModule],\n templateUrl: './datepicker.html',\n styleUrls: ['./datepicker.css'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-datepicker-host',\n },\n})\nexport class NathDatepicker implements FormValueControl<Date | null> {\n // --- I/O ---\n withTime = input<boolean>(false);\n placeholder = input<string>('dd/mm/yyyy');\n inputId = input<string | null>(null);\n language = input<string>('en');\n disabled = input<boolean>(false);\n touched = model<boolean>(false);\n dirty = model<boolean>(false);\n\n // --- Internal State Signals ---\n value = model<Date | null>(null);\n dateInputValue = model<string | null>(null);\n dateTimeInputValue = model<string | null>(null);\n\n constructor() {\n effect(() => {\n const value = this.value();\n const dateInputValue = this.dateInputValue();\n const dateTimeInputValue = this.dateTimeInputValue();\n if (this.withTime()) {\n const dateToCompare = dateTimeInputValue ? new Date(dateTimeInputValue) : null;\n if (dateToCompare?.getTime() !== value?.getTime()) {\n this.dateTimeInputValue.set(this.toLocaleISOString(value) ?? null);\n }\n } else {\n const dateToCompare = dateInputValue ? new Date(dateInputValue) : null;\n if (dateToCompare?.getTime() !== value?.getTime()) {\n this.dateInputValue.set(this.toLocaleDateISOString(value) ?? null);\n }\n }\n });\n }\n\n private toLocaleISOString(date: Date | null) {\n return (\n date?.toLocaleString('sv', {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }) ?? null\n );\n }\n private toLocaleDateISOString(date: Date | null) {\n return (\n date?.toLocaleDateString('sv', {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n }) ?? null\n );\n }\n\n protected onDateTimeInputChange(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n if (target.value) {\n this.value.set(new Date(target.value));\n } else {\n this.value.set(null);\n }\n }\n\n protected onDateInputChange(event: InputEvent) {\n const target = event.target as HTMLInputElement;\n if (target.value) {\n this.value.set(new Date(target.value + ' 00:00:00'));\n } else {\n this.value.set(null);\n }\n }\n}\n","@if (withTime()) {\n <input\n type=\"datetime-local\"\n [(ngModel)]=\"dateTimeInputValue\"\n [attr.id]=\"inputId() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n class=\"nath-datepicker-datetime-input\"\n (input)=\"onDateTimeInputChange($event)\"\n />\n} @else {\n <input\n type=\"date\"\n [(ngModel)]=\"dateInputValue\"\n [attr.id]=\"inputId() || null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n class=\"nath-datepicker-date-input\"\n [lang]=\"language()\"\n (input)=\"onDateInputChange($event)\"\n />\n}\n","import { InjectionToken, Injector, signal, TemplateRef } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Observable } from 'rxjs';\n\nexport const DIALOG_DATA = new InjectionToken<any>('DIALOG_DATA');\n\nexport interface NathDialogConfig<D = any> {\n data?: D;\n header?: string | TemplateRef<any>;\n width?: string;\n}\n\nexport class NathDialogRef<R = any> {\n private readonly _afterClosed = signal<R | undefined>(undefined);\n readonly afterClosedSignal = this._afterClosed.asReadonly();\n readonly afterClosed$: Observable<R | undefined>;\n\n // Track the maximized state as a readonly signal for the UI\n private readonly _maximized = signal<boolean>(false);\n readonly maximized = this._maximized.asReadonly();\n\n private readonly closeCallback?: (result?: R) => void;\n\n constructor(init: { onClose: (result?: R) => void; injector: Injector }) {\n this.closeCallback = init.onClose;\n this.afterClosed$ = toObservable(this._afterClosed, {\n injector: init.injector,\n });\n }\n\n /** Toggles or sets the maximized state of the dialog */\n maximize(state?: boolean): void {\n this._maximized.set(state ?? !this._maximized());\n }\n\n close(result?: R): void {\n this._afterClosed.set(result);\n if (this.closeCallback) this.closeCallback(result);\n }\n}\n","import {\n Component,\n EmbeddedViewRef,\n inject,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NathDialogRef } from './dialog-ref';\nimport { LucideDynamicIcon, LucideMaximize2, LucideMinimize2, LucideX } from '@lucide/angular';\n\n@Component({\n selector: 'nath-dialog-container',\n standalone: true,\n imports: [CdkPortalOutlet, DragDropModule, NgTemplateOutlet, LucideX, LucideDynamicIcon],\n template: `\n <div class=\"nath-dialog-theme nath-dialog-mask\" (click)=\"onMaskClick($event)\">\n <div\n #dialogWindow\n cdkDrag\n cdkDragBoundary=\"body\"\n [style.width]=\"width() || '450px'\"\n class=\"nath-dialog-window\"\n [class.dialog-maximized]=\"dialogRef.maximized()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div cdkDragHandle class=\"nath-dialog-header\">\n <div>\n @if (isTemplateRef(header())) {\n <ng-container [ngTemplateOutlet]=\"headerAsTemplate()\" />\n } @else if (header()) {\n <h2 class=\"nath-dialog-title\">\n {{ header() }}\n </h2>\n }\n </div>\n\n <div class=\"nath-dialog-header-actions\">\n <button type=\"button\" class=\"nath-dialog-action-btn\" (click)=\"dialogRef.maximize()\">\n <svg\n [lucideIcon]=\"dialogRef.maximized() ? LucideMinimize2 : LucideMaximize2\"\n [size]=\"24\"\n />\n </button>\n <button type=\"button\" class=\"nath-dialog-action-btn\" (click)=\"dialogRef.close()\">\n <svg lucideX [size]=\"24\" />\n </button>\n </div>\n </div>\n\n <div class=\"nath-dialog-body\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n </div>\n </div>\n `,\n styleUrl: './dialog.css',\n encapsulation: ViewEncapsulation.None,\n host: {},\n})\nexport class NathDialogContainer extends BasePortalOutlet {\n readonly portalOutlet = viewChild.required(CdkPortalOutlet);\n protected readonly dialogRef = inject(NathDialogRef);\n\n // Exposed updatable signals\n readonly header = signal<string | TemplateRef<any> | undefined>(undefined);\n readonly width = signal<string | undefined>(undefined);\n\n override attachComponentPortal<T>(portal: ComponentPortal<T>) {\n return this.portalOutlet().attachComponentPortal(portal);\n }\n\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n return this.portalOutlet().attachTemplatePortal(portal);\n }\n\n onMaskClick(event: MouseEvent): void {\n this.dialogRef.close();\n }\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n protected headerAsTemplate(): TemplateRef<any> {\n return this.header() as TemplateRef<any>;\n }\n\n protected readonly LucideMinimize2 = LucideMinimize2;\n protected readonly LucideMaximize2 = LucideMaximize2;\n}\n","import {\n ApplicationRef,\n createComponent,\n createEnvironmentInjector,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n} from '@angular/core';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\nimport { DIALOG_DATA, NathDialogConfig, NathDialogRef } from './dialog-ref';\nimport { NathDialogContainer } from './dialog-container';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NathDialogService {\n private readonly injector = inject(Injector);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n private readonly router = inject(Router);\n\n private readonly openDialogs = new Set<NathDialogRef<any>>();\n\n constructor() {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe(() => this.closeAll());\n }\n\n open<T, D = any, R = any>(\n content: ComponentType<T> | TemplateRef<any>,\n config: NathDialogConfig<D>,\n ): NathDialogRef<R> {\n const dialogRef = new NathDialogRef<R>({\n injector: this.injector,\n onClose: () => this.destroyDialog(containerRef, bodyElement),\n });\n\n const customInjector = Injector.create({\n providers: [\n { provide: NathDialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n parent: this.injector,\n });\n\n const environmentInjector = createEnvironmentInjector([], this.environmentInjector);\n const containerRef = createComponent(NathDialogContainer, {\n environmentInjector,\n elementInjector: customInjector,\n });\n\n // Register the view with Angular's global change detection loop\n this.appRef.attachView(containerRef.hostView);\n\n const bodyElement = document.body;\n bodyElement.appendChild(containerRef.location.nativeElement);\n\n if (content instanceof TemplateRef) {\n const templatePortal = new TemplatePortal(\n content,\n null!, // viewContainerRef is optional if you pass a custom injector tree\n config.data, // This becomes the implicit $implicit context inside the template\n customInjector,\n );\n containerRef.instance.attachTemplatePortal(templatePortal);\n } else {\n const componentPortal = new ComponentPortal(content, null, customInjector);\n containerRef.instance.attachComponentPortal(componentPortal);\n }\n\n containerRef.instance.header.set(config.header);\n containerRef.instance.width.set(config.width);\n\n containerRef.changeDetectorRef.detectChanges();\n\n return dialogRef;\n }\n\n /**\n * Closes all currently open dialogs (e.g., when routing away).\n */\n closeAll(): void {\n // Clone the set to avoid modification issues while iterating and deleting items\n const dialogsToClose = Array.from(this.openDialogs);\n dialogsToClose.forEach((dialog) => dialog.close());\n }\n\n private destroyDialog(containerRef: any, bodyElement: HTMLElement): void {\n if (containerRef) {\n // Detach from the global ApplicationRef change detection loop first\n this.appRef.detachView(containerRef.hostView);\n\n // Safely remove the element from the DOM using standard native check\n const element = containerRef.location.nativeElement;\n if (element?.parentNode === bodyElement) {\n element.remove();\n }\n\n // Let Angular destroy the component context and finish structural cleanup\n containerRef.destroy();\n }\n }\n}\n","import { Component, inject, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DIALOG_DATA, NathDialogRef } from './dialog-ref';\nimport { NathConfirmationConfig } from './confirmation-types';\n\n@Component({\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <div class=\"nath-dialog-theme nath-confirmation-dialog\">\n <div class=\"nath-dialog-content-text\">\n @if (isTemplateRef(config.content)) {\n <ng-container [ngTemplateOutlet]=\"contentAsTemplate()\" />\n } @else {\n <p class=\"leading-relaxed whitespace-pre-wrap\">\n {{ config.content }}\n </p>\n }\n </div>\n\n <div class=\"nath-dialog-footer\">\n @for (btn of buttons; track btn.label) {\n <button\n type=\"button\"\n class=\"nath-dialog-btn\"\n [class]=\"btn.customClass\"\n [class.nath-dialog-btn--default]=\"!btn.customClass\"\n (click)=\"handleButtonClick(btn)\"\n >\n {{ btn.label }}\n </button>\n }\n </div>\n </div>\n `,\n styleUrl: './dialog.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathConfirmationDialog {\n protected readonly dialogRef = inject(NathDialogRef);\n protected readonly config = inject<NathConfirmationConfig>(DIALOG_DATA);\n\n // Fallback default buttons if none are provided\n protected get buttons() {\n if (this.config.buttons && this.config.buttons.length > 0) {\n return this.config.buttons;\n }\n\n // Default system fallback: Yes / No\n return [\n {\n label: 'No',\n customClass: this.config.rejectButtonStyleClass ?? 'button-secondary',\n action: () => {\n this.config.reject?.();\n },\n },\n {\n label: 'Yes',\n customClass: this.config.acceptButtonStyleClass ?? 'button-primary',\n action: () => {\n this.config.accept?.();\n },\n },\n ];\n }\n\n async handleButtonClick(btn: any) {\n // 1. Run the button callback (supports async/promises if needed)\n if (btn.action) {\n await btn.action();\n }\n\n // 2. Conditional closing mechanism based on preventClose parameter\n if (!btn.preventClose) {\n this.dialogRef.close(btn.label);\n }\n }\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n\n protected contentAsTemplate(): TemplateRef<any> {\n return this.config.content as TemplateRef<any>;\n }\n}\n","import { inject, Service } from '@angular/core';\nimport { NathDialogService } from './dialog.service';\nimport { NathConfirmationConfig } from './confirmation-types';\nimport { NathConfirmationDialog } from './confirmation-dialog';\nimport { NathDialogRef } from './dialog-ref';\n\n@Service()\nexport class NathConfirmationService {\n private readonly dialogService = inject(NathDialogService);\n\n /** Spawns a type-safe confirmation window */\n confirm(config: NathConfirmationConfig): NathDialogRef<string> {\n return this.dialogService.open<NathConfirmationDialog, NathConfirmationConfig, string>(\n NathConfirmationDialog,\n {\n header: config.header,\n width: config.width || '450px',\n data: config,\n },\n );\n }\n}\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT, NgStyle } from '@angular/common';\nimport { LucideX } from '@lucide/angular';\n\n@Component({\n selector: 'nath-drawer',\n exportAs: 'drawer',\n imports: [LucideX, NgStyle],\n template: `\n <div #container class=\"nath-drawer-theme nath-drawer-container\" [ngStyle]=\"drawerStyles()\">\n <div class=\"nath-drawer-header\">\n <div class=\"nath-drawer-header-content\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n <button type=\"button\" class=\"button-text-primary\" (click)=\"close()\">\n <svg lucideX [size]=\"24\" />\n </button>\n </div>\n <div class=\"nath-drawer-body\">\n <ng-content />\n </div>\n </div>\n <div\n class=\"nath-drawer-mask\"\n [class.nath-drawer-mask--hidden]=\"!visible()\"\n (click)=\"close()\"\n ></div>\n `,\n styleUrl: './drawer.css',\n encapsulation: ViewEncapsulation.None,\n host: {},\n})\nexport class NathDrawer implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly document = inject(DOCUMENT);\n\n visible = model<boolean>(false);\n position = input<'left' | 'right'>('right');\n transitionDuration = input<string>('300ms');\n\n closed = output();\n opened = output();\n\n drawerStyles = computed(() => {\n const isVisible = this.visible();\n return {\n width: `var(--nath-drawer-width)`,\n [this.position()]: isVisible ? '0' : `calc(-1 * var(--nath-drawer-width))`,\n 'transition-duration': this.transitionDuration(),\n visibility: isVisible ? 'visible' : 'hidden',\n 'pointer-events': isVisible ? 'auto' : 'none',\n };\n });\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this.opened.emit();\n }\n });\n }\n\n ngOnInit() {\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.elementRef.nativeElement.remove();\n }\n\n protected close() {\n this.visible.set(false);\n this.closed.emit();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { Field } from '@angular/forms/signals';\n\n@Component({\n selector: 'nath-file-upload',\n template: `\n <div class=\"inputgroup\">\n <div>\n <input\n #input\n type=\"file\"\n id=\"{{ inputId() }}\"\n class=\"input-file\"\n accept=\"accept\"\n (change)=\"onFileChange($event)\"\n />\n <label for=\"{{ inputId() }}\">{{ buttonLabel() }}</label>\n <span class=\"mx-2\">{{ selectedFileName }}</span>\n </div>\n @if (formField()().value()) {\n <button class=\"button-secondary\" type=\"button\" (click)=\"clearFile()\">\n <span>Annuler</span>\n </button>\n }\n </div>\n `,\n styles: `\n .input-file {\n width: 0.1px;\n height: 0.1px;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n z-index: -1;\n }\n .input-file + label {\n display: inline-block;\n background-color: #7b95a3;\n color: white;\n padding: 0.429em 1em;\n cursor: pointer;\n vertical-align: middle;\n }\n .input-file:focus + label {\n outline: 1px dotted #000;\n outline: -webkit-focus-ring-color auto 5px;\n }\n .input-file + label * {\n pointer-events: none;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [],\n})\nexport class NathFileUpload {\n input = viewChild<HTMLInputElement>('input');\n inputRef = viewChild<ElementRef>('input');\n changeEvent = output();\n readonly inputId = input('file');\n readonly buttonLabel = input('Choisir un fichier');\n readonly accept = input('*');\n readonly formField = input.required<Field<any>>();\n readonly controlName = input.required<string>();\n\n selectedFileName = '';\n\n onFileChange(event: any) {\n if (this.input()?.files?.length) {\n this.selectedFileName = (this.input()?.dataset['multipleCaption'] || '').replace(\n '{count}',\n this.input()?.files?.length.toString() ?? '',\n );\n } else {\n this.selectedFileName = event.target.value.split('\\\\').pop();\n }\n this.changeEvent.emit(event);\n\n const files: FileList = event.target.files;\n if (files?.length) {\n const fieldVal = files[0].name;\n if (fieldVal !== undefined || fieldVal !== '') {\n const update: any = {};\n update[this.controlName()] = files[0];\n this.formField()().value.set(update);\n } else {\n this.clearFile();\n }\n }\n }\n\n clearFile() {\n const inputRef = this.inputRef();\n if (inputRef) inputRef.nativeElement.value = '';\n this.selectedFileName = '';\n }\n}\n","import {\n AbstractControl,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { FieldState } from '@angular/forms/signals';\n\nexport const validateAllFormFields = (formGroup: FormGroup) => {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n control.updateValueAndValidity();\n } else if (control instanceof FormGroup) {\n validateAllFormFields(control);\n }\n });\n};\n\nexport function hasRequiredValidator(control: AbstractControl | null): boolean {\n if (!control) {\n return false;\n }\n return control.hasValidator(Validators.required);\n}\n\nexport function isRequired(fieldState: FieldState<any, any> | null): boolean {\n if (!fieldState) {\n return false;\n }\n return fieldState.required();\n}\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\r\nimport { isRequired } from '../utilities/form.util';\r\nimport { FieldState } from '@angular/forms/signals';\r\n\r\n@Component({\r\n selector: 'nath-floating-label',\r\n imports: [],\r\n template: `\r\n <div [class]=\"contentClass()\">\r\n <ng-content />\r\n </div>\r\n <label [for]=\"inputId()\" class=\"nath-floating-label-text\" [class]=\"labelClass()\">\r\n {{ label() }}\r\n @if (required() || isFieldRequired()) {\r\n <span class=\"nath-floating-label-required-star\">*</span>\r\n }\r\n </label>\r\n `,\r\n styleUrl: './floating-label.css',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'nath-floating-label-theme input',\r\n },\r\n})\r\nexport class NathFloatingLabel {\r\n label = input.required<string>();\r\n inputId = input.required<string>();\r\n labelClass = input<string>('');\r\n contentClass = input<string>('');\r\n required = input<boolean>(false);\r\n signalField = input<FieldState<any, any>>();\r\n\r\n /**\r\n * Evaluates the programmatically linked signal field form state requirement status reactively.\r\n */\r\n protected readonly isFieldRequired = computed(() => {\r\n const fieldState = this.signalField();\r\n return !!fieldState && isRequired(fieldState);\r\n });\r\n}\r\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { FieldState } from '@angular/forms/signals';\nimport { AbstractControl } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\n\n@Component({\n selector: 'nath-show-errors',\n imports: [],\n template: `\n @if (shouldShowErrors()) {\n <div class=\"nath-show-errors-container\">\n @if (signalField()) {\n @for (error of signalField()!.errors(); track error.kind) {\n <div class=\"nath-show-errors-item\">{{ error.message }}</div>\n }\n }\n @if (control()) {\n @for (error of controlErrors(); track error.message) {\n <div class=\"nath-show-errors-item\">{{ error.message }}</div>\n }\n }\n </div>\n }\n `,\n styleUrl: './show-errors.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathShowErrors {\n private static readonly errorMessages = {\n required: () => 'This field is required',\n minlength: (params: { requiredLength: string }) =>\n 'Must be at least ' + params.requiredLength + ' characters',\n maxlength: (params: { requiredLength: string }) =>\n 'Cannot exceed ' + params.requiredLength + ' characters',\n pattern: (params: { requiredPattern: string }) =>\n 'The required pattern is: ' + params.requiredPattern,\n range: (message: string) => message,\n minValue: (message: string) => message,\n maxValue: (message: string) => message,\n integer: () => `Must be an integer`,\n };\n\n readonly signalField = input<FieldState<any, any>>();\n readonly control = input<AbstractControl>();\n\n controlValue = toSignal(this.control()?.valueChanges ?? of(null));\n\n controlErrors = computed(() => {\n this.controlValue();\n return this.listOfErrors();\n });\n\n public static getMessage(type: string, params: any) {\n return NathShowErrors.errorMessages[type as keyof typeof NathShowErrors.errorMessages](params);\n }\n\n shouldShowErrors(): boolean {\n const fieldState = this.signalField();\n const control = this.control();\n return (\n (!!fieldState && !!fieldState.errors() && (fieldState.dirty() || fieldState.touched())) ||\n (!!control && !!control.errors && (control.dirty || control.touched))\n );\n }\n\n listOfErrors(): any[] {\n const result: { kind: string; message: string }[] = [];\n const control = this.control();\n if (control?.errors) {\n for (const errorsKey in control.errors) {\n result.push({\n kind: errorsKey,\n message: NathShowErrors.getMessage(errorsKey, control?.errors?.[errorsKey]),\n });\n }\n }\n return result;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { hasRequiredValidator, isRequired } from '../utilities/form.util';\nimport { FieldState } from '@angular/forms/signals';\nimport { NathShowErrors } from '../show-errors/show-errors';\n\n@Component({\n selector: 'nath-form-field',\n standalone: true,\n imports: [ReactiveFormsModule, NathShowErrors, NgClass],\n template: `\n <div\n class=\"nath-form-field-theme nath-form-field-container\"\n [class.has-error]=\"!!signalField()?.invalid()\"\n >\n <label [for]=\"inputId()\" class=\"nath-form-field-label\" [ngClass]=\"labelClasses()\">\n <ng-content select=\"label\"></ng-content>\n </label>\n <ng-content></ng-content>\n\n @if (signalField()) {\n <nath-show-errors [signalField]=\"signalField()!\" />\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './form-field.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathFormField {\n inputId = input<string | null>(null);\n control = input<AbstractControl | null>(null);\n signalField = input<FieldState<any, any>>();\n required = input<boolean>(false);\n labelClass = input<string>('');\n\n labelClasses = computed(() => {\n let fieldState = this.signalField();\n let control = this.control();\n const classes: Record<string, boolean> = {\n [this.labelClass()]: true,\n 'nath-form-field-label--required':\n (!!fieldState && isRequired(fieldState)) || (!!control && hasRequiredValidator(control)),\n };\n return classes;\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n isLucideIconComponent,\n LucideDynamicIcon,\n LucideEye,\n LucideIcon,\n LucideLoaderCircle,\n LucideX,\n} from '@lucide/angular';\n\n@Component({\n selector: 'nath-image-preview',\n imports: [LucideEye, LucideDynamicIcon, LucideLoaderCircle, LucideX],\n template: `\n @if (!displayedImage()) {\n <div class=\"nath-image-preview-no-image\">\n @if (fallbackIcon() && !loading()) {\n @if (isLucideIconComponent(fallbackIcon())) {\n <svg\n [lucideIcon]=\"fallbackIcon()\"\n [size]=\"64\"\n class=\"nath-image-preview-text-muted\"\n ></svg>\n } @else {\n <span class=\"{{ fallbackIcon() }} nath-image-preview-text-muted\"></span>\n }\n }\n @if (loading()) {\n <svg\n lucideLoaderCircle\n [size]=\"32\"\n class=\"nath-image-preview-animate-spin nath-image-preview-text-muted\"\n />\n }\n </div>\n }\n @if (displayedImage()) {\n <img\n [src]=\"displayedImage()\"\n [alt]=\"text() ?? ''\"\n loading=\"lazy\"\n (click)=\"onClick()\"\n class=\"nath-image-preview-thumbnail\"\n />\n }\n @if (displayedImage() && !preview()) {\n <div class=\"nath-image-preview-hover-trigger\" (click)=\"onClick()\">\n <svg lucideEye class=\"nath-image-preview-eye-icon\" />\n </div>\n }\n\n @if (isModalOpen() && image()) {\n <div class=\"nath-image-preview-modal\" (click)=\"closeModal()\">\n <button\n class=\"nath-image-preview-close-btn\"\n (click)=\"closeModal(); $event.stopPropagation()\"\n aria-label=\"Close preview\"\n >\n <svg lucideX [size]=\"24\" />\n </button>\n\n <div class=\"nath-image-preview-modal-content\" (click)=\"$event.stopPropagation()\">\n <img [src]=\"image()\" [alt]=\"text() ?? ''\" class=\"nath-image-preview-full-image\" />\n </div>\n </div>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './image-preview.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {},\n})\nexport class NathImagePreview {\n readonly image = input.required<string | undefined>();\n readonly thumbnail = input<string>('');\n readonly text = input.required<string | null>();\n readonly fallbackIcon = input.required<string | LucideIcon>();\n readonly loading = input(false);\n readonly preview = input(true);\n\n imageClick = output();\n\n displayedImage = signal<string>('');\n isModalOpen = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n // On load, display provided thumbnail or fall back to image\n this.displayedImage.set((this.thumbnail() || this.image()) ?? '');\n });\n }\n\n onClick() {\n if (this.preview()) {\n // Show image() in full size in a modal overlay\n if (this.image()) {\n this.isModalOpen.set(true);\n }\n }\n this.imageClick.emit();\n }\n\n closeModal() {\n this.isModalOpen.set(false);\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n output,\n SecurityContext,\n signal,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { MenuItem } from './menu-item.model';\nimport { isLucideIconComponent, LucideDynamicIcon } from '@lucide/angular';\n\nconst SUBMENU_ALIGNMENT_CONFIG = {\n ESTIMATED_INITIAL_WIDTH_PX: 200,\n VIEWPORT_COLLISION_PADDING_PX: 8,\n};\n\n@Component({\n selector: 'nath-menu-list',\n imports: [RouterLink, RouterLinkActive, LucideDynamicIcon],\n templateUrl: './menu-list.html',\n styleUrls: ['./menu-list.css'],\n host: {},\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMenuList {\n // ────────────────────────────────────────────────────────────────────────────────\n // INJECTIONS\n // ────────────────────────────────────────────────────────────────────────────────\n private readonly sanitizer = inject(DomSanitizer);\n // ────────────────────────────────────────────────────────────────────────────────\n // I/O\n // ────────────────────────────────────────────────────────────────────────────────\n items = input<MenuItem[]>([]);\n direction = input<'left' | 'right'>('right');\n flat = input<boolean>(false);\n\n whenCommand = output<{ item: MenuItem; index?: number; event?: Event }>();\n // ────────────────────────────────────────────────────────────────────────────────\n // MODEL\n // ────────────────────────────────────────────────────────────────────────────────\n private readonly submenuContainers = viewChildren<ElementRef<HTMLElement>>('submenuContainer');\n\n protected readonly activeItem = signal<MenuItem | null>(null);\n\n // Note: these will map directly to VIEWPORT coordinates via position: fixed\n protected readonly submenuTop = signal<number>(0);\n protected readonly submenuLeft = signal<number>(0);\n protected readonly nextSubmenuDirection = signal<'left' | 'right'>('right');\n\n // ────────────────────────────────────────────────────────────────────────────────\n // METHODS\n // ────────────────────────────────────────────────────────────────────────────────\n\n protected getMenuLabel(item: MenuItem): string | SafeHtml {\n if (!item.label) return '';\n return item.escape === false\n ? (this.sanitizer.sanitize(SecurityContext.HTML, item.label) ?? '')\n : item.label;\n }\n\n protected onItemHover(item: MenuItem, event: Event) {\n this.activeItem.set(item);\n\n const targetLi = event.currentTarget as HTMLElement;\n if (!targetLi) return;\n\n // Grab the exact viewport coordinates of the row being hovered\n const liRect = targetLi.getBoundingClientRect();\n let currentDir: 'left' | 'right' = this.direction();\n\n // Align vertical matching perfectly with the top edge of the current row item\n this.submenuTop.set(liRect.top);\n\n // Provide a tentative baseline for horizontal estimation measurements\n if (currentDir === 'left') {\n this.submenuLeft.set(liRect.left - SUBMENU_ALIGNMENT_CONFIG.ESTIMATED_INITIAL_WIDTH_PX);\n } else {\n this.submenuLeft.set(liRect.right);\n }\n\n this.nextSubmenuDirection.set(currentDir);\n\n // Measure live dimensions once instantiated in the next frame\n setTimeout(() => {\n const subContainer = this.submenuContainers()[0]?.nativeElement;\n if (!subContainer) return;\n\n const subRect = subContainer.getBoundingClientRect();\n const dynamicMenuWidth = subRect.width;\n\n // Check if trending right spills off screen boundary\n if (currentDir === 'right' && liRect.right + dynamicMenuWidth > window.innerWidth) {\n currentDir = 'left';\n }\n\n // Shift horizontal layout flush using viewport targets\n if (currentDir === 'left') {\n this.submenuLeft.set(liRect.left - dynamicMenuWidth);\n } else {\n this.submenuLeft.set(liRect.right);\n }\n\n this.nextSubmenuDirection.set(currentDir);\n\n // Fluid vertical overflow protection\n if (subRect.bottom > window.innerHeight) {\n const overflowDistance = subRect.bottom - window.innerHeight;\n // Shift up smoothly based on screen collision\n this.submenuTop.set(\n liRect.top - overflowDistance - SUBMENU_ALIGNMENT_CONFIG.VIEWPORT_COLLISION_PADDING_PX,\n );\n }\n\n // Reveal once calculations are complete\n subContainer.classList.remove('invisible');\n });\n }\n\n private executeItem(item: MenuItem, index?: number, event?: Event) {\n if (item.items && item.items.length > 0) return;\n this.whenCommand.emit({ item, index, event });\n }\n\n protected onItemClick(item: any, $index: number, $event: Event) {\n if (!item.disabled) {\n $event.stopPropagation();\n this.executeItem(item, $index, $event);\n }\n }\n\n protected readonly isLucideIconComponent = isLucideIconComponent;\n}\n","<ul class=\"nath-menu-list-theme nath-menu-list nath-menu-custom-scrollbar\">\r\n @for (item of items(); track item.label) {\r\n <li\r\n class=\"nath-menu-item\"\r\n [class.nath-menu-item--enabled]=\"!item.disabled\"\r\n [class.nath-menu-item--disabled]=\"item.disabled\"\r\n [class.nath-menu-item--padded]=\"!item.separator\"\r\n [class.nath-menu-item--separator]=\"item.separator\"\r\n [class.nath-menu-item--clickable]=\"item.routerLink || item.command || item.url\"\r\n [class.nath-menu-item--header]=\"!item.routerLink && !item.command && !item.url\"\r\n [class.nath-menu-item--interactive]=\"\r\n !item.disabled &&\r\n (item.routerLink || item.command || item.url || (item.items?.length && !flat()))\r\n \"\r\n [routerLink]=\"item.routerLink\"\r\n [queryParams]=\"item.queryParams\"\r\n routerLinkActive=\"bg-primary-800 text-white!\"\r\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions || { exact: false }\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.title]=\"item.title\"\r\n (mouseenter)=\"!item.disabled && onItemHover(item, $event)\"\r\n (click)=\"onItemClick(item, $index, $event)\"\r\n (keydown.enter)=\"onItemClick(item, $index, $event)\"\r\n >\r\n @if (!item.separator) {\r\n <span class=\"nath-menu-item-content\">\r\n @if (item.icon) {\r\n @if (isLucideIconComponent(item.icon)) {\r\n <svg [lucideIcon]=\"item.icon\" />\r\n } @else {\r\n <i [class]=\"item.icon\"></i>\r\n }\r\n }\r\n @if (item.escape === false) {\r\n <span [innerHTML]=\"getMenuLabel(item)\"></span>\r\n } @else {\r\n <span class=\"nath-menu-item-text-truncate\">{{ item.label }}</span>\r\n }\r\n </span>\r\n\r\n @if (item.items && item.items.length > 0 && !flat()) {\r\n <span class=\"nath-menu-item-arrow\">›</span>\r\n }\r\n }\r\n </li>\r\n\r\n @if (flat() && item.items) {\r\n <nath-menu-list [items]=\"item.items\" (whenCommand)=\"whenCommand.emit($event)\" />\r\n }\r\n } @empty {\r\n <li class=\"nath-menu-item nath-menu-item--padded nath-menu-item--disabled\">\r\n No actions available\r\n </li>\r\n }\r\n</ul>\r\n\r\n@if (!flat()) {\r\n @if (activeItem() && activeItem()!.items && activeItem()!.items!.length > 0) {\r\n <div\r\n #submenuContainer\r\n class=\"nath-menu-list-theme nath-menu-submenu-panel\"\r\n [style.left.px]=\"submenuLeft()\"\r\n [style.top.px]=\"submenuTop()\"\r\n >\r\n <nath-menu-list\r\n [items]=\"activeItem()!.items!\"\r\n [direction]=\"nextSubmenuDirection()\"\r\n (whenCommand)=\"whenCommand.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MenuItem } from './menu-item.model';\nimport { DOCUMENT } from '@angular/common';\nimport { NathMenuList } from './menu-list';\nimport { NathMenuPositionX, NathMenuPositionY } from './menu.types';\n\nconst TIERED_MENU_LAYOUT_CONFIG = {\n VIEWPORT_PADDING_PX: 8,\n};\n\n@Component({\n selector: 'nath-menu',\n imports: [NathMenuList],\n templateUrl: './menu.html',\n styleUrls: ['./menu.css'],\n host: {\n '[class]': `styleClass()`,\n '(document:click)': `hide();`,\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMenu implements AfterContentInit, OnDestroy {\n private readonly document = inject(DOCUMENT);\n\n model = model<MenuItem[]>([]);\n styleClass = model<string | null | undefined>('');\n positionX = input<NathMenuPositionX>('auto');\n positionY = input<NathMenuPositionY>('auto');\n inline = input<boolean>(false);\n flat = input<boolean>(false);\n\n whenHide = output();\n rootMenuElement = viewChild<ElementRef<HTMLElement>>('rootMenu');\n\n isVisible = signal<boolean>(false);\n rawPosition = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n adjustedPosition = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n\n ngAfterContentInit() {\n if (this.inline()) {\n this.isVisible.set(true);\n }\n }\n\n /**\n * Show menu in popup mode\n */\n show(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n let x = event.clientX;\n let y = event.clientY;\n\n const positionX = this.positionX();\n const positionY = this.positionY();\n const target = event.currentTarget as HTMLElement;\n\n const targetRect = target.getBoundingClientRect();\n if (positionX !== 'auto' && target) {\n if (positionX === 'left') {\n x = targetRect.left;\n } else if (positionX === 'right') {\n x = targetRect.right;\n }\n }\n if (positionY !== 'auto' && target) {\n if (positionY === 'top') {\n y = targetRect.top;\n } else {\n y = targetRect.bottom;\n }\n }\n\n this.rawPosition.set({ x, y });\n this.adjustedPosition.set({ x, y });\n this.isVisible.set(true);\n\n // Calculate viewport collision and append to body on next execution frame\n setTimeout(() => {\n const rootMenuElement = this.rootMenuElement();\n if (!rootMenuElement) return;\n const el = rootMenuElement.nativeElement;\n\n // ──────────────────────────────────────────────────────────────────────────────\n // BODY PROJECTION LAYER STRATEGY\n // ──────────────────────────────────────────────────────────────────────────────\n // If popup mode is active, relocate the DOM element directly into document.body\n if (!this.inline() && el.parentElement !== this.document.body) {\n this.document.body.appendChild(el);\n }\n\n const rect = el.getBoundingClientRect();\n let adjustedX = x;\n let adjustedY = y;\n\n if (positionX === 'right') {\n adjustedX = x - rect.width;\n }\n if (positionY === 'top') {\n adjustedY = y - rect.height;\n }\n\n // Check horizontal boundary clipping\n if (adjustedX + rect.width > window.innerWidth) {\n adjustedX = window.innerWidth - rect.width - TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n if (adjustedX < TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX) {\n adjustedX = TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n // Check vertical boundary clipping\n if (adjustedY + rect.height > window.innerHeight) {\n adjustedY =\n window.innerHeight - rect.height - TIERED_MENU_LAYOUT_CONFIG.VIEWPORT_PADDING_PX;\n }\n\n this.adjustedPosition.set({ x: adjustedX, y: adjustedY });\n el.classList.remove('nath-menu-panel--invisible');\n });\n }\n\n hide() {\n if (this.isVisible() && !this.inline()) {\n this.isVisible.set(false);\n this.whenHide.emit();\n\n // Clean up the moved element from the body when hidden\n const el = this.rootMenuElement()?.nativeElement;\n if (el?.parentElement === this.document.body) {\n el.remove();\n }\n }\n }\n\n toggle(event: MouseEvent) {\n if (this.isVisible()) this.hide();\n else this.show(event);\n }\n\n handleCommand(payload: { item: MenuItem; index?: number; event?: Event }) {\n if (payload.item.command) {\n payload.item.command({\n originalEvent: payload.event,\n item: payload.item,\n index: payload.index,\n });\n }\n this.hide();\n }\n\n ngOnDestroy() {\n // Fail-safe cleanup to guarantee no leftover detached elements remain in body context\n const el = this.rootMenuElement()?.nativeElement;\n if (el?.parentElement === this.document.body) {\n el.remove();\n }\n }\n}\n","@if (isVisible()) {\n <div\n #rootMenu\n class=\"nath-menu-theme nath-menu-panel\"\n [class.nath-menu-panel--inline]=\"inline()\"\n [class.nath-menu-panel--invisible]=\"!inline()\"\n [style.left.px]=\"adjustedPosition().x\"\n [style.top.px]=\"adjustedPosition().y\"\n (click)=\"$event.stopPropagation()\"\n (keydown.enter)=\"$event.stopPropagation()\"\n >\n <nath-menu-list [items]=\"model()\" [flat]=\"flat()\" (whenCommand)=\"handleCommand($event)\" />\n </div>\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideChevronDown, LucideSquare, LucideSquareCheck, LucideX } from '@lucide/angular';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\n\nlet nextId = 0;\n\n@Component({\n selector: 'nath-multiselect',\n imports: [\n CommonModule,\n OverlayModule,\n ScrollingModule,\n LucideX,\n LucideChevronDown,\n LucideSquare,\n LucideSquareCheck,\n ],\n template: `\n <div\n class=\"nath-multiselect-combobox {{ comboboxClass() }}\"\n [class.nath-multiselect-combobox--has-clear]=\"showClearButton()\"\n [class.nath-multiselect-combobox--borderless]=\"borderless()\"\n [class.nath-multiselect-combobox--disabled]=\"isDisabled()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"isDisabled()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n #container\n (click)=\"toggle()\"\n >\n @if (hasNoSelection()) {\n <div class=\"nath-multiselect-placeholder\">\n {{ placeholder() }}\n </div>\n } @else {\n @for (item of selectedItems(); track $index) {\n <div class=\"nath-multiselect-tag\">\n <span [class.opacity-50]=\"disabled()\">\n {{ displayFn()(item) }}\n </span>\n\n <button\n type=\"button\"\n (click)=\"removeItem(item, $event)\"\n class=\"nath-multiselect-tag-remove\"\n [disabled]=\"disabled()\"\n >\n <svg class=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2.5\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n }\n }\n\n @if (showClearButton()) {\n <button\n type=\"button\"\n class=\"nath-multiselect-clear-btn\"\n aria-label=\"Clear selection\"\n (click)=\"$event.stopPropagation(); clear()\"\n >\n <svg lucideX [size]=\"16\" />\n </button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen() && options().length > 0\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"nath-multiselect-backdrop\"\n cdkConnectedOverlayPanelClass=\"nath-multiselect-theme\"\n (backdropClick)=\"hideDropdown()\"\n >\n <div\n class=\"nath-multiselect-overlay nath-multiselect-theme\"\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\n >\n @if (filter()) {\n <div class=\"nath-multiselect-search-container\">\n <input\n #inputField\n type=\"text\"\n [id]=\"inputId() || controlId() + '-search'\"\n [value]=\"inputValue()\"\n (input)=\"onInputChange($event)\"\n aria-label=\"Filter options\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n class=\"nath-multiselect-search-input\"\n />\n </div>\n }\n\n <div\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-multiselectable]=\"true\"\n class=\"nath-multiselect-options-list\"\n >\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport [itemSize]=\"virtualScrollItemSize()\" class=\"h-[240px]\">\n <div\n *cdkVirtualFor=\"let item of filteredOptions(); let idx = index\"\n [id]=\"optionIdPrefix() + idx\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item)\"\n (click)=\"selectItem(item)\"\n [class.nath-multiselect-option--active]=\"activeTrackedIndex() === idx\"\n [style.height.px]=\"virtualScrollItemSize()\"\n class=\"nath-multiselect-option\"\n >\n <span class=\"nath-multiselect-option-check\">\n @if (isSelected(item)) {\n <svg lucideSquareCheck [size]=\"18\" />\n } @else {\n <svg lucideSquare [size]=\"18\" class=\"nath-multiselect-option-check-empty\" />\n }\n </span>\n\n <div class=\"nath-multiselect-option-text\">\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (item of filteredOptions(); track $index) {\n <div\n [id]=\"optionIdPrefix() + $index\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(item)\"\n (click)=\"selectItem(item)\"\n [class.nath-multiselect-option--active]=\"activeTrackedIndex() === $index\"\n class=\"nath-multiselect-option\"\n >\n <span class=\"nath-multiselect-option-check\">\n @if (isSelected(item)) {\n <svg lucideSquareCheck [size]=\"18\" />\n } @else {\n <svg lucideSquare [size]=\"18\" class=\"nath-multiselect-option-check-empty\" />\n }\n </span>\n\n <div class=\"nath-multiselect-option-text\">\n @if (!itemTemplate()) {\n {{ displayFn()(item) }}\n } @else {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\n />\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (options().length === 0) {\n <div role=\"status\" class=\"nath-multiselect-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </ng-template>\n\n <button\n type=\"button\"\n class=\"button-secondary nath-multiselect-dropdown-btn\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>\n `,\n styleUrl: './multiselect.css',\n host: {\n '(keydown)': 'onHostKeyDown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathMultiselect implements FormValueControl<any[]> {\n protected readonly elementRef = inject(ElementRef);\n private readonly uniqueId = nextId++;\n\n value = model<any[]>([]);\n\n options = input<any[]>([]);\n forceDisabled = input<boolean>(false);\n disabled = input<boolean>(false);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n dataKey = input<string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n filter = input<boolean>(false);\n virtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(44);\n comboboxClass = input<string>('');\n ariaLabelledBy = input<string>('');\n selectionLimit = input<number | null>(null);\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n\n query = signal<string>('');\n itemTemplate = contentChild<TemplateRef<any>>('item');\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n container = viewChild<ElementRef<HTMLDivElement>>('container');\n viewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n private watchKeydownSubscription?: Subscription;\n\n controlId = computed(() => this.inputId() || `app-multiselect-${this.uniqueId}`);\n listboxId = computed(() => `${this.controlId()}-listbox`);\n optionIdPrefix = computed(() => `${this.controlId()}-opt-`);\n\n isDisabled = computed(() => this.forceDisabled() || this.disabled());\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n selectedItems = computed(() => {\n const values = this.value() || [];\n const options = this.options();\n const valFn = this.valueFn();\n\n return options.filter((option) => {\n if (this.dataKey()) {\n return values.some((val) => val[this.dataKey()] === option[this.dataKey()]);\n }\n const optionVal = valFn(option);\n return values.includes(optionVal);\n });\n });\n\n hasNoSelection = computed(() => {\n const val = this.value();\n return !val || val.length === 0;\n });\n\n filteredOptions = computed<any[]>(() => {\n if (!this.filter()) return this.options();\n return this.options().filter((item) => {\n const displayValue = this.displayFn()(item);\n return displayValue.toLowerCase().includes(this.query().toLowerCase());\n });\n });\n\n showClearButton = computed<boolean>(\n () => this.showClear() && !this.hasNoSelection() && !this.isDisabled(),\n );\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect(() => {\n const index = this.activeTrackedIndex();\n const vp = this.viewport();\n if (this.virtualScroll() && vp && index >= 0) {\n vp.scrollToIndex(index, 'smooth');\n }\n });\n\n this.watchKeydown();\n }\n\n private watchKeydown() {\n this.watchKeydownSubscription = fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe(($event) => this.onKeyDown($event));\n }\n\n isSelected(item: any): boolean {\n const itemVal = this.valueFn()(item);\n const currentValues = this.value() || [];\n return currentValues.includes(itemVal);\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n if (this.isDisabled()) return;\n const selectionLimit = this.selectionLimit();\n if (selectionLimit && this.value().length >= selectionLimit) {\n return;\n }\n\n const itemVal = this.valueFn()(item);\n const currentValues = [...(this.value() || [])];\n const index = currentValues.indexOf(itemVal);\n\n if (index > -1) {\n currentValues.splice(index, 1);\n this.unselected.emit(item);\n } else {\n currentValues.push(itemVal);\n }\n\n this.value.set(currentValues);\n }\n\n hideDropdown() {\n this.isOpen.set(false);\n this.resetFilter();\n this.inputField()?.nativeElement.blur();\n this.container()?.nativeElement.focus();\n }\n\n resetFilter() {\n this.query.set('');\n }\n\n toggle() {\n if (this.isDisabled()) return;\n this.isOpen.update((prev) => !prev);\n if (this.isOpen()) {\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n\n onHostKeyDown(event: KeyboardEvent) {\n if (this.isDisabled()) return;\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.isOpen.set(true);\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (!this.isOpen() || this.isDisabled()) return;\n\n const currentItems = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.hideDropdown();\n break;\n }\n }\n\n removeItem(itemToRemove: any, event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n event.stopPropagation(); // Avoid triggering open dropdown directives\n const currentValues = Array.isArray(this.value()) ? this.value() : [];\n this.value.set(\n currentValues.filter((v: any) => {\n const currentValue = this.valueFn()(v);\n const valueToRemove = this.valueFn()(itemToRemove);\n return JSON.stringify(currentValue) !== JSON.stringify(valueToRemove);\n }),\n );\n this.unselected.emit(itemToRemove);\n }\n\n clear() {\n if (this.isDisabled()) return;\n this.value.set([]);\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n}\n","import { Component, computed, input, model, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface PageItem {\n label: string;\n num: number;\n isEllipsis: boolean;\n}\n\nexport interface PaginatorChangeEvent {\n page: number;\n pageSize: number;\n}\n\n@Component({\n selector: 'nath-paginator',\n imports: [FormsModule],\n template: `\n <div class=\"nath-paginator-container\">\n <div class=\"nath-paginator-info\">{{ page() }} / {{ totalPages() }}</div>\n <button\n (click)=\"goToPage(1)\"\n [disabled]=\"disabled() || page() === 1\"\n class=\"nath-paginator-btn\"\n title=\"First Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5\"\n />\n </svg>\n </button>\n\n <button\n (click)=\"goToPage(page() - 1)\"\n [disabled]=\"disabled() || page() === 1\"\n class=\"nath-paginator-btn\"\n title=\"Previous Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" />\n </svg>\n </button>\n\n @for (p of pages(); track $index) {\n @if (p.isEllipsis) {\n <span class=\"nath-paginator-ellipsis\">...</span>\n } @else {\n <button\n (click)=\"goToPage(p.num)\"\n [disabled]=\"disabled()\"\n class=\"nath-paginator-page-btn\"\n [class.is-active]=\"page() === p.num\"\n >\n {{ p.label }}\n </button>\n }\n }\n\n <button\n (click)=\"goToPage(page() + 1)\"\n [disabled]=\"disabled() || page() === totalPages()\"\n class=\"nath-paginator-btn\"\n title=\"Next Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n </svg>\n </button>\n\n <button\n (click)=\"goToPage(totalPages())\"\n [disabled]=\"disabled() || page() === totalPages()\"\n class=\"nath-paginator-btn\"\n title=\"Last Page\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"2\"\n stroke=\"currentColor\"\n style=\"width: 1rem; height: 1rem;\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M5.25 4.5l7.5 7.5-7.5 7.5m6-15l7.5 7.5-7.5 7.5\"\n />\n </svg>\n </button>\n </div>\n\n <div class=\"nath-paginator-page-size-container\">\n <label for=\"pageSize\" class=\"nath-paginator-select-label\">Items per page</label>\n <select\n id=\"pageSize\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n [disabled]=\"disabled()\"\n class=\"nath-paginator-select\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n `,\n styleUrl: './paginator.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-paginator-host',\n },\n})\nexport class NathPaginator {\n // Two-way Model Signals\n page = model<number>(1);\n pageSize = model<number>(10);\n\n // Inputs\n totalItems = input.required<number>();\n pageSizeOptions = input<number[]>([10, 20, 50, 100]);\n disabled = input<boolean>(false);\n\n paginatorChange = output<PaginatorChangeEvent>();\n\n // Computed total pages based on inputs\n totalPages = computed(() => {\n const total = Math.ceil(this.totalItems() / this.pageSize());\n return total > 0 ? total : 1;\n });\n\n // Strongly typed view layout mapping\n pages = computed<PageItem[]>(() => {\n const total = this.totalPages();\n const current = this.page();\n\n let rawPages: (number | string)[] = [];\n\n if (total <= 7) {\n rawPages = Array.from({ length: total }, (_, i) => i + 1);\n } else if (current <= 4) {\n rawPages = [1, 2, 3, 4, 5, '...', total];\n } else if (current >= total - 3) {\n rawPages = [1, '...', total - 4, total - 3, total - 2, total - 1, total];\n } else {\n rawPages = [1, '...', current - 1, current, current + 1, '...', total];\n }\n\n // Map the raw values to precise PageItem structures so the template does zero math\n return rawPages.map((p) => {\n if (p === '...') {\n const pageItem: PageItem = { label: '...', num: -1, isEllipsis: true };\n return pageItem;\n }\n const pageItem: PageItem = {\n label: p.toString(),\n num: p as number, // Pre-calculate 1-indexed page coordinate\n isEllipsis: false,\n };\n return pageItem;\n });\n });\n\n goToPage(pageNumber: number): void {\n if (this.disabled() || pageNumber < 1 || pageNumber > this.totalPages()) return;\n this.page.set(pageNumber);\n this.paginatorChange.emit({ page: pageNumber, pageSize: this.pageSize() });\n }\n\n onPageSizeChange(newSize: number): void {\n this.pageSize.set(newSize);\n const maxPage = this.totalPages();\n if (this.page() > maxPage) {\n this.goToPage(maxPage);\n }\n this.paginatorChange.emit({ page: this.page(), pageSize: this.pageSize() });\n }\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n input,\n model,\n output,\n signal,\n TemplateRef,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { LucideInbox, LucideLoaderCircle } from '@lucide/angular';\nimport { NathPaginator, PaginatorChangeEvent } from '../paginator/paginator';\n\nexport type TrackByFnOrKey = string | ((item: any) => any);\n\n@Component({\n selector: 'nath-paginated-view',\n imports: [NathPaginator, NgTemplateOutlet, LucideInbox, LucideLoaderCircle],\n template: `\n <ng-template #paginatorTpl let-position=\"position\">\n <div\n class=\"nath-paginated-view-paginator-container\"\n [class.is-top]=\"position === 'top'\"\n [class.is-bottom]=\"position === 'bottom'\"\n >\n @if (paginatorLeftTpl()) {\n <ng-container *ngTemplateOutlet=\"paginatorLeftTpl()!\" />\n } @else {\n <span></span>\n }\n <nath-paginator\n [(page)]=\"page\"\n [(pageSize)]=\"pageSize\"\n [totalItems]=\"resolvedTotalItems()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [disabled]=\"disabled()\"\n (paginatorChange)=\"paginatorChange.emit($event)\"\n />\n </div>\n </ng-template>\n\n @if (items().length) {\n <ng-container *ngTemplateOutlet=\"paginatorTpl; context: { position: 'top' }\" />\n\n @if (contentTpl()) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTpl();\n context: {\n $implicit: viewableItems(),\n selection: selectionContext(),\n expansion: expansionContext(),\n }\n \"\n />\n }\n\n @if (showBottomPaginator()) {\n <ng-container *ngTemplateOutlet=\"paginatorTpl; context: { position: 'bottom' }\" />\n }\n } @else {\n <div class=\"nath-paginated-view-empty\">\n <svg lucideInbox [size]=\"16\" />\n <span>{{ emptyMessage() }}</span>\n </div>\n }\n @if (loading()) {\n <div class=\"nath-paginated-view-loading-overlay\">\n <svg lucideLoaderCircle class=\"animate-spin nath-paginated-view-loader\" />\n </div>\n }\n `,\n styleUrl: './paginated-view.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'nath-paginated-view-host',\n },\n})\nexport class NathPaginatedView {\n // Two-way Model Signals\n /**\n * Page number (required)\n * Indexed from 1\n */\n page = model.required<number>();\n /**\n * Number of items per page\n * @default 10\n */\n pageSize = model<number>(10);\n /**\n * Model of selected items (also available in the let-selection=\"selection\" context)\n * @default []\n */\n selectedItems = model<any[]>([]);\n\n // Inputs\n /**\n * Mode for pagination (client or server)\n * @default 'client'\n */\n mode = input<'client' | 'server'>('client');\n /**\n * Array of items to display\n * @required\n */\n items = input.required<any[]>();\n /**\n * Total number of items\n * @default null\n */\n totalItems = input<number | null>(null);\n /**\n * Array of options for the page size\n * @default [10, 20, 50, 100]\n */\n pageSizeOptions = input<number[]>([10, 20, 50, 100]);\n /**\n * Whether to disable the paginator\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Whether to show the bottom paginator\n * @default true\n */\n showBottomPaginator = input<boolean>(true);\n /**\n * Message to display when no results are found\n * @default 'No results found'\n */\n emptyMessage = input<string>('No results found');\n /**\n * Whether to show a loading overlay\n * @default false\n */\n loading = input<boolean>(false);\n\n /**\n * Whether to persist selection across page changes\n * @default false\n */\n persistSelection = input<boolean>(false);\n /**\n * Function or key to track items by\n * @default 'id'\n */\n trackBy = input<TrackByFnOrKey>('id');\n\n /**\n * Paginator change event\n */\n paginatorChange = output<PaginatorChangeEvent>();\n\n /**\n * Expanded items (also available in the let-expansion=\"expansion\" context)\n * @default []\n */\n expandedItems = signal<any[]>([]);\n\n constructor() {\n // Guardrail check: Warn if trying to use persistence in server mode\n effect(() => {\n if (this.mode() === 'server' && this.persistSelection()) {\n console.warn(\n 'PaginatedViewComponent: \"persistSelection\" is set to true, but is not supported in \"server\" mode. Falling back to non-persistent selection.',\n );\n }\n });\n\n // Reset selection on page changes IF persistence is disabled\n // Reset expanded items on page changes\n effect(() => {\n // Track page and pageSize adjustments\n this.page();\n this.pageSize();\n\n untracked(() => {\n if (!this.isPersistenceEnabled()) {\n this.selectedItems.set([]);\n }\n this.expandedItems.set([]);\n });\n });\n }\n\n // Determine if persistence is actually valid and active\n\n private readonly isPersistenceEnabled = computed(() => {\n return this.persistSelection() && this.mode() === 'client';\n });\n // Computed helper to extract identity from an item based on trackBy rule\n\n private readonly getItemId = (item: any): any => {\n const strategy = this.trackBy();\n if (typeof strategy === 'function') {\n return strategy(item);\n }\n return item ? item[strategy] : undefined;\n };\n // Computed total items depending on pagination strategy\n\n resolvedTotalItems = computed(() => {\n if (this.mode() === 'server') {\n return this.totalItems() ?? this.items().length;\n }\n return this.items().length;\n });\n // Computed items passed to the content template\n\n viewableItems = computed(() => {\n if (this.mode() === 'server') {\n return this.items();\n }\n const start = (this.page() - 1) * this.pageSize();\n const end = start + this.pageSize();\n return this.items().slice(start, end);\n });\n // Export control APIs & state to the child template context via signals\n\n selectionContext = computed(() => {\n const currentViewItems = this.viewableItems();\n const selected = this.selectedItems();\n\n // Create a quick lookup map of selected IDs for lightning-fast lookups\n const selectedIds = new Set(selected.map((item) => this.getItemId(item)));\n\n // Determine target pool of items for \"Select All\" actions\n const selectablePool = this.isPersistenceEnabled() ? this.items() : currentViewItems;\n\n const isAllSelected =\n selectablePool.length > 0 &&\n selectablePool.every((item) => selectedIds.has(this.getItemId(item)));\n\n const isSomeSelected =\n !isAllSelected && selectablePool.some((item) => selectedIds.has(this.getItemId(item)));\n\n return {\n isSelected: (item: any) => selectedIds.has(this.getItemId(item)),\n isAllSelected,\n isSomeSelected,\n toggle: (item: any) => this.toggleSelection(item),\n toggleAll: () =>\n isAllSelected\n ? this.toggleAllSelectionWhenAllSelected(selectablePool)\n : this.toggleAllSelectionWhenNotAllSelected(selectablePool),\n };\n });\n expansionContext = computed(() => {\n const currentViewItems = this.viewableItems();\n const expanded = this.expandedItems();\n\n // Create a quick lookup map of expanded IDs for lightning-fast lookups\n const expandedIds = new Set(expanded.map((item) => this.getItemId(item)));\n\n // Determine target pool of items for \"Expand All\" actions\n const expandablePool = this.isPersistenceEnabled() ? this.items() : currentViewItems;\n\n const isAllExpanded =\n expandablePool.length > 0 &&\n expandablePool.every((item) => expandedIds.has(this.getItemId(item)));\n\n const isSomeExpanded =\n !isAllExpanded && expandablePool.some((item) => expandedIds.has(this.getItemId(item)));\n\n return {\n isExpanded: (item: any) => expandedIds.has(this.getItemId(item)),\n isAllExpanded,\n isSomeExpanded,\n toggle: (item: any) => this.toggleExpansion(item),\n toggleAll: () =>\n isAllExpanded\n ? this.toggleAllExpansionWhenAllExpanded(expandablePool)\n : this.toggleAllExpansionWhenNotAllExpanded(expandablePool),\n };\n });\n\n contentTpl =\n contentChild<TemplateRef<{ $implicit: any[]; selection: any; expansion: any }>>(TemplateRef);\n\n paginatorLeftTpl = contentChild<TemplateRef<any>>('paginatorLeft');\n\n private toggleSelection(item: any): void {\n const currentSelected = [...this.selectedItems()];\n const targetId = this.getItemId(item);\n const index = currentSelected.findIndex((selected) => this.getItemId(selected) === targetId);\n\n if (index > -1) {\n currentSelected.splice(index, 1);\n } else {\n currentSelected.push(item);\n }\n this.selectedItems.set(currentSelected);\n }\n\n private toggleAllSelectionWhenAllSelected(pool: any[]): void {\n if (this.isPersistenceEnabled()) {\n this.selectedItems.set([]);\n } else {\n // Remove only the current pool's matching items from a potentially larger array\n const poolIds = new Set(pool.map((item) => this.getItemId(item)));\n this.selectedItems.set(\n this.selectedItems().filter((selected) => !poolIds.has(this.getItemId(selected))),\n );\n }\n }\n private toggleAllSelectionWhenNotAllSelected(pool: any[]) {\n if (this.isPersistenceEnabled()) {\n this.selectedItems.set([...pool]);\n } else {\n // Union pool items with existing selection without doubling up\n const currentSelected = [...this.selectedItems()];\n const selectedIds = new Set(currentSelected.map((item) => this.getItemId(item)));\n\n pool.forEach((item) => {\n if (!selectedIds.has(this.getItemId(item))) {\n currentSelected.push(item);\n }\n });\n this.selectedItems.set(currentSelected);\n }\n }\n\n private toggleExpansion(item: any): void {\n const currentExpanded = [...this.expandedItems()];\n const targetId = this.getItemId(item);\n const index = currentExpanded.findIndex((expanded) => this.getItemId(expanded) === targetId);\n\n if (index > -1) {\n currentExpanded.splice(index, 1);\n } else {\n currentExpanded.push(item);\n }\n this.expandedItems.set(currentExpanded);\n }\n\n private toggleAllExpansionWhenAllExpanded(pool: any[]): void {\n if (this.isPersistenceEnabled()) {\n this.expandedItems.set([]);\n } else {\n // Remove only the current pool's matching items from a potentially larger array\n const poolIds = new Set(pool.map((item) => this.getItemId(item)));\n this.expandedItems.set(\n this.expandedItems().filter((expanded) => !poolIds.has(this.getItemId(expanded))),\n );\n }\n }\n private toggleAllExpansionWhenNotAllExpanded(pool: any[]) {\n if (this.isPersistenceEnabled()) {\n this.expandedItems.set([...pool]);\n } else {\n // Union pool items with existing expansion without doubling up\n const currentExpanded = [...this.expandedItems()];\n const expandedIds = new Set(currentExpanded.map((item) => this.getItemId(item)));\n\n pool.forEach((item) => {\n if (!expandedIds.has(this.getItemId(item))) {\n currentExpanded.push(item);\n }\n });\n this.expandedItems.set(currentExpanded);\n }\n }\n}\n","import { Component, input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-panel',\r\n imports: [],\r\n template: `\r\n <!-- Header -->\r\n <div class=\"nath-panel-header\">\r\n @if (header()) {\r\n {{ header() }}\r\n } @else {\r\n <ng-content select=\"[header]\"></ng-content>\r\n }\r\n </div>\r\n <!-- Content-->\r\n <div class=\"nath-panel-content\">\r\n <ng-content />\r\n </div>\r\n `,\r\n styleUrl: './panel.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathPanel {\r\n header = input<string>('');\r\n}\r\n","import {\n Component,\n computed,\n contentChild,\n input,\n model,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n LucideChevronLeft,\n LucideChevronRight,\n LucideChevronsLeft,\n LucideChevronsRight,\n} from '@lucide/angular';\n\n@Component({\n selector: 'nath-pick-list',\n imports: [\n CommonModule,\n LucideChevronRight,\n LucideChevronsRight,\n LucideChevronLeft,\n LucideChevronsLeft,\n ],\n template: `\n <div class=\"nath-pick-list-container\">\n <div\n class=\"nath-pick-list-pool\"\n (dragover)=\"allowDragOver($event)\"\n (drop)=\"onDrop($event, 'source')\"\n >\n <div class=\"nath-pick-list-header\">\n {{ sourceHeader() }}\n </div>\n\n @if (filter()) {\n <div class=\"nath-pick-list-filter\">\n <input\n type=\"text\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"sourceQuery()\"\n (input)=\"sourceQuery.set($any($event.target).value)\"\n class=\"nath-pick-list-filter-input\"\n />\n </div>\n }\n\n <div class=\"nath-pick-list-items\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of filteredSource(); track trackByFn($index, item)) {\n <div\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, item, 'source')\"\n (click)=\"toggleSelection($event, item, 'source')\"\n (dblclick)=\"moveItems([item], 'target')\"\n [ngClass]=\"{\n 'nath-pick-list-item--selected': isItemSelected(item, 'source'),\n 'nath-pick-list-item--dragging': isDragging(item, 'source'),\n }\"\n class=\"nath-pick-list-item\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n } @empty {\n <div class=\"nath-pick-list-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </div>\n\n <div class=\"nath-pick-list-controls\">\n <button\n type=\"button\"\n (click)=\"moveSelectedToTarget()\"\n [disabled]=\"selectedSource().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move selected to target\"\n >\n <svg lucideChevronRight class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveAllToTarget()\"\n [disabled]=\"source().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move all to target\"\n >\n <svg lucideChevronsRight class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveSelectedToSource()\"\n [disabled]=\"selectedTarget().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move selected to source\"\n >\n <svg lucideChevronLeft class=\"nath-pick-list-btn-icon\" />\n </button>\n <button\n type=\"button\"\n (click)=\"moveAllToSource()\"\n [disabled]=\"target().length === 0\"\n class=\"nath-pick-list-btn\"\n aria-label=\"Move all to source\"\n >\n <svg lucideChevronsLeft class=\"nath-pick-list-btn-icon\" />\n </button>\n </div>\n\n <div\n class=\"nath-pick-list-pool\"\n (dragover)=\"allowDragOver($event)\"\n (drop)=\"onDrop($event, 'target')\"\n >\n <div class=\"nath-pick-list-header\">\n {{ targetHeader() }}\n </div>\n\n @if (filter()) {\n <div class=\"nath-pick-list-filter\">\n <input\n type=\"text\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"targetQuery()\"\n (input)=\"targetQuery.set($any($event.target).value)\"\n class=\"nath-pick-list-filter-input\"\n />\n </div>\n }\n\n <div class=\"nath-pick-list-items\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (item of filteredTarget(); track trackByFn($index, item)) {\n <div\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, item, 'target')\"\n (click)=\"toggleSelection($event, item, 'target')\"\n (dblclick)=\"moveItems([item], 'source')\"\n [ngClass]=\"{\n 'nath-pick-list-item--selected': isItemSelected(item, 'target'),\n 'nath-pick-list-item--dragging': isDragging(item, 'target'),\n }\"\n class=\"nath-pick-list-item\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n } @empty {\n <div class=\"nath-pick-list-empty\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </div>\n </div>\n `,\n styleUrl: './pick-list.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathPickList {\n source = model<any[]>([]);\n target = model<any[]>([]);\n\n sourceHeader = input<string>('Available');\n targetHeader = input<string>('Selected');\n filter = input<boolean>(false);\n filterPlaceholder = input<string>('Search...');\n emptyMessage = input<string>('No items');\n\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n\n itemTemplate = contentChild<TemplateRef<any>>('item');\n\n sourceQuery = signal<string>('');\n targetQuery = signal<string>('');\n\n selectedSource = signal<any[]>([]);\n selectedTarget = signal<any[]>([]);\n\n // Track the item currently being dragged explicitly\n draggedItem = signal<any>(null);\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? item[config] : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item;\n };\n });\n\n filteredSource = computed(() => {\n const query = this.sourceQuery().toLowerCase();\n if (!query) return this.source();\n return this.source().filter((item) => this.displayFn()(item).toLowerCase().includes(query));\n });\n\n filteredTarget = computed(() => {\n const query = this.targetQuery().toLowerCase();\n if (!query) return this.target();\n return this.target().filter((item) => this.displayFn()(item).toLowerCase().includes(query));\n });\n\n // Drag & Drop Functionality\n onDragStart(event: DragEvent, item: any, pool: 'source' | 'target') {\n this.draggedItem.set(item);\n\n // Pass string token to standard dataTransfer for strict spec adherence\n event.dataTransfer?.setData('text/plain', pool);\n\n // If dragging an item that isn't selected, clear selection and select it\n if (!this.isItemSelected(item, pool)) {\n const activeSelection = pool === 'source' ? this.selectedSource : this.selectedTarget;\n activeSelection.set([item]);\n }\n }\n\n allowDragOver(event: DragEvent) {\n event.preventDefault(); // Necessary to allow drop target zone interception\n }\n\n onDrop(event: DragEvent, dropPool: 'source' | 'target') {\n event.preventDefault();\n const originPool = event.dataTransfer?.getData('text/plain');\n\n // Prevent dragging items into their own list\n if (originPool === dropPool || !originPool) {\n this.draggedItem.set(null);\n return;\n }\n\n // Determine the array of items to transfer\n const itemsToMove = originPool === 'source' ? this.selectedSource() : this.selectedTarget();\n\n this.moveItems(itemsToMove, dropPool);\n this.draggedItem.set(null);\n }\n\n isDragging(item: any, pool: 'source' | 'target'): boolean {\n const activeDrag = this.draggedItem();\n if (!activeDrag) return false;\n\n // If the active item is part of a selection, dim the entire selection group\n if (this.isItemSelected(item, pool) && this.isItemSelected(activeDrag, pool)) {\n return true;\n }\n return this.valueFn()(activeDrag) === this.valueFn()(item);\n }\n\n // Selection Matrix Strategy\n toggleSelection(event: MouseEvent, item: any, pool: 'source' | 'target') {\n const activeSelection = pool === 'source' ? this.selectedSource : this.selectedTarget;\n const current = [...activeSelection()];\n const itemValue = this.valueFn()(item);\n\n const index = current.findIndex((i) => this.valueFn()(i) === itemValue);\n\n if (event.ctrlKey || event.metaKey) {\n if (index > -1) current.splice(index, 1);\n else current.push(item);\n } else if (index > -1 && current.length === 1) {\n current.splice(index, 1);\n } else {\n current.splice(0, current.length, item);\n }\n activeSelection.set(current);\n }\n\n isItemSelected(item: any, pool: 'source' | 'target'): boolean {\n const list = pool === 'source' ? this.selectedSource() : this.selectedTarget();\n const targetValue = this.valueFn()(item);\n return list.some((i) => this.valueFn()(i) === targetValue);\n }\n\n // Core Mutation Handling\n moveItems(itemsToMove: any[], destination: 'source' | 'target') {\n if (!itemsToMove.length) return;\n\n const valuesToMove = new Set(itemsToMove.map((i) => this.valueFn()(i)));\n\n if (destination === 'target') {\n this.source.update((prev) => prev.filter((i) => !valuesToMove.has(this.valueFn()(i))));\n this.target.update((prev) => [...prev, ...itemsToMove]);\n this.selectedSource.set([]);\n } else {\n this.target.update((prev) => prev.filter((i) => !valuesToMove.has(this.valueFn()(i))));\n this.source.update((prev) => [...prev, ...itemsToMove]);\n this.selectedTarget.set([]);\n }\n }\n\n moveSelectedToTarget() {\n this.moveItems(this.selectedSource(), 'target');\n }\n moveSelectedToSource() {\n this.moveItems(this.selectedTarget(), 'source');\n }\n moveAllToTarget() {\n this.moveItems(this.filteredSource(), 'target');\n }\n moveAllToSource() {\n this.moveItems(this.filteredTarget(), 'source');\n }\n\n trackByFn(index: number, item: any) {\n return this.valueFn()(item) ?? index;\n }\n}\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-progress-bar',\r\n imports: [],\r\n template: `\r\n <div\r\n class=\"nath-progress-bar-fill\"\r\n [class.nath-progress-bar-fill--indeterminate]=\"mode() === 'indeterminate'\"\r\n [class]=\"barClass()\"\r\n [style.width.%]=\"barWidthPercent()\"\r\n >\r\n @if (showValue()) {\r\n <span class=\"nath-progress-bar-value\" [class]=\"valueClass()\">\r\n {{ value() }}\r\n </span>\r\n }\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n styleUrl: './progress-bar.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathProgressBar {\r\n value = input<number>(0);\r\n maxValue = input<number>(100);\r\n showValue = input<boolean>(false);\r\n barClass = input<string>('');\r\n valueClass = input<string>('');\r\n mode = input<'indeterminate' | 'default'>('default');\r\n\r\n barWidthPercent = computed<number>(() => {\r\n if (this.mode() === 'indeterminate') {\r\n return 100;\r\n }\r\n return (this.value() / this.maxValue()) * 100;\r\n });\r\n}\r\n","import { Component, computed, input, model } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'nath-progress-circle',\r\n imports: [NgStyle],\r\n template: `\r\n <svg\r\n class=\"progress-circle__svg\"\r\n [attr.width]=\"size()\"\r\n [attr.height]=\"size()\"\r\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle\r\n [attr.r]=\"0.45 * size()\"\r\n [attr.cx]=\"size() / 2\"\r\n [attr.cy]=\"size() / 2\"\r\n fill=\"transparent\"\r\n [attr.stroke-dasharray]=\"strikeDashArrayRatio * size()\"\r\n stroke-dashoffset=\"0\"\r\n ></circle>\r\n <circle\r\n class=\"progress-circle__bar\"\r\n [attr.r]=\"0.45 * size()\"\r\n [attr.cx]=\"size() / 2\"\r\n [attr.cy]=\"size() / 2\"\r\n fill=\"transparent\"\r\n [attr.stroke-dasharray]=\"strikeDashArrayRatio * size()\"\r\n stroke-dashoffset=\"0\"\r\n [ngStyle]=\"{ 'stroke-dashoffset': barStrokeDashOffset() + 'px' }\"\r\n ></circle>\r\n </svg>\r\n `,\r\n styles: `\r\n :host {\r\n --progress-circle-size: 50;\r\n /*These two properties can be overriden, e.g.:\r\n <nath-progress-circle style=\"--progress-circle-bar-color: blue\"></app-progress-circle>*/\r\n --progress-circle-default-color: #ececec;\r\n --progress-circle-bar-color: #0d5eab;\r\n\r\n display: block;\r\n height: calc(var(--progress-circle-size) * 1px);\r\n width: calc(var(--progress-circle-size) * 1px);\r\n border-radius: 100%;\r\n position: relative;\r\n }\r\n\r\n :host::after {\r\n position: absolute;\r\n display: block;\r\n height: 100%;\r\n width: 100%;\r\n left: 0;\r\n top: 0;\r\n content: attr(data-text);\r\n border-radius: 100%;\r\n line-height: calc(var(--progress-circle-size) * 1px);\r\n text-align: center;\r\n }\r\n\r\n .progress-circle__svg {\r\n transform: rotate(-90deg);\r\n }\r\n\r\n .progress-circle__svg circle {\r\n stroke-dashoffset: 0;\r\n transition: stroke-dashoffset 0.2s linear;\r\n stroke: var(--progress-circle-default-color);\r\n stroke-width: calc(0.1 * var(--progress-circle-size) * 1px);\r\n }\r\n\r\n .progress-circle__svg .progress-circle__bar {\r\n stroke: var(--progress-circle-bar-color);\r\n }\r\n `,\r\n host: {\r\n '[attr.data-text]': `showText() ? percentText() : ''`,\r\n '[style.--progress-circle-size]': `size()`,\r\n },\r\n})\r\nexport class NathProgressCircle {\r\n readonly percent = model(0);\r\n readonly size = input(50);\r\n readonly showText = input(true);\r\n\r\n public readonly strikeDashArrayRatio = 2.8274;\r\n\r\n readonly barStrokeDashOffset = computed(() => {\r\n let percent = this.percent();\r\n if (Number.isNaN(percent)) {\r\n percent = 100;\r\n }\r\n const r: number = 0.45 * this.size();\r\n const c: number = Math.PI * (r * 2);\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n return ((100 - percent) / 100) * c;\r\n });\r\n\r\n readonly percentText = computed(() => {\r\n let percent = this.percent();\r\n if (Number.isNaN(percent)) {\r\n percent = 100;\r\n }\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n return Math.trunc(percent) + '%';\r\n });\r\n}\r\n","import { Component, computed, input, model, Signal, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\n\nexport interface RadioOption {\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'nath-radio-button-group',\n host: {\n '[class.flex-row]': `stack() === 'horizontal'`,\n '[class.flex-col]': `stack() === 'vertical'`,\n role: 'radiogroup',\n },\n imports: [NgClass],\n template: `\n @for (option of formattedOptions(); track option.value) {\n @let isSelected = value() === option.value;\n\n <button\n type=\"button\"\n [disabled]=\"disabled()\"\n [aria-checked]=\"isSelected\"\n [class.checked]=\"isSelected\"\n role=\"radio\"\n (click)=\"selectOption(option.value)\"\n class=\"nath-radio-group-item\"\n [ngClass]=\"layoutClass()\"\n >\n <span class=\"nath-radio-group-label\">{{ option.label }}</span>\n </button>\n }\n `,\n styleUrl: './radio-button-group.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathRadioButtonGroup implements FormValueControl<any> {\n // --- Modern Signal Inputs ---\n options = input.required<any[]>();\n stack = input<'horizontal' | 'vertical'>('horizontal');\n deselectable = input<boolean>(false);\n fill = input<boolean>(false);\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n disabled = input<boolean>(false);\n\n // --- Internal State Signals ---\n readonly value = model<any>(null);\n\n // --- Computed Signals ---\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n formattedOptions: Signal<RadioOption[]> = computed(() => {\n const options = this.options();\n const firstOption = options[0];\n if (!firstOption) {\n return [];\n }\n if (['string', 'number'].includes(typeof firstOption)) {\n return options.map((option) => ({\n value: option,\n label: option,\n }));\n }\n if ('value' in firstOption && 'label' in firstOption) {\n return options;\n }\n return options.map((option) => ({\n value: this.valueFn()(option),\n label: this.displayFn()(option),\n }));\n });\n\n // Computes layout dynamic sizing classes\n readonly layoutClass = computed(() => {\n if (this.fill()) {\n return this.stack() === 'horizontal' ? 'flex-1' : 'w-full';\n }\n return '';\n });\n\n selectOption(selectedValue: any): void {\n if (this.disabled()) return;\n\n if (this.deselectable() && this.value() === selectedValue) {\n this.value.set(null);\n } else {\n this.value.set(selectedValue);\n }\n }\n}\n","export const RATING_MAP = [\n { value: 0, colorVar: 'var(--color-gray-500, oklch(0.554 0.046 257.417))' },\n { value: 10, colorVar: 'var(--color-red-600, oklch(0.577 0.245 27.325))' },\n { value: 20, colorVar: 'var(--color-orange-600, oklch(0.646 0.222 41.116))' },\n { value: 30, colorVar: 'var(--color-orange-400, oklch(0.75 0.183 55.934))' },\n { value: 40, colorVar: 'var(--color-amber-500, oklch(0.769 0.188 70.08))' },\n { value: 50, colorVar: 'var(--color-purple-400, oklch(0.714 0.203 305.504))' },\n { value: 60, colorVar: 'var(--color-sky-400, oklch(0.746 0.16 232.661))' },\n { value: 70, colorVar: 'var(--color-blue-400, oklch(0.707 0.165 254.624))' },\n { value: 80, colorVar: 'var(--color-sky-400, oklch(0.746 0.16 232.661))' },\n { value: 90, colorVar: 'var(--color-emerald-400, oklch(0.765 0.177 163.223))' },\n { value: 100, colorVar: 'var(--color-emerald-500, oklch(0.696 0.17 162.48))' },\n];\n\n/**\n * @param percent Rating on 100 basis\n */\nexport function getRatingColor(percent: number): string | null {\n if (percent < 1) {\n return null;\n }\n const nearestLowerTen = Math.floor(percent / 10) * 10;\n const color = RATING_MAP.find((item) => item.value === nearestLowerTen)?.colorVar;\n return color ? `${color}` : null;\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { getRatingColor } from '../rating.constants';\n\n@Component({\n selector: 'nath-rating-heart',\n template: `\n <!-- Background Heart -->\n <div class=\"progress-heart__bg\"></div>\n <!-- Progress Fill Heart -->\n <div class=\"progress-heart__fill\" [style.background]=\"fillGradient()\"></div>\n <!-- Border Heart -->\n @if (borderColor()) {\n <svg class=\"progress-heart__border\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.042 8.345c0 0-2-4.262-6.5-4.262-4.917 0-7.5 4.167-7.5 8.333 0 6.917 14 15.5 14 15.5s13.916-8.5 13.916-15.5c0-4.25-2.666-8.333-7.416-8.333s-6.5 4.262-6.5 4.262z\"\n fill=\"none\"\n [attr.stroke]=\"borderColor()\"\n stroke-width=\"3\"\n vector-effect=\"non-scaling-stroke\"\n ></path>\n </svg>\n }\n `,\n styles: `\n :host {\n --progress-heart-size: 50px;\n --progress-heart-default-color: #cccccc;\n --progress-heart-bar-color: var(--color-blue-500, oklch(62.3% 0.214 259.815));\n\n display: block;\n height: var(--progress-heart-size);\n width: var(--progress-heart-size);\n position: relative;\n /* The heart shape path as a mask */\n --heart-path: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"> <path d=\"M16.042 8.345c0 0-2-4.262-6.5-4.262-4.917 0-7.5 4.167-7.5 8.333 0 6.917 14 15.5 14 15.5s13.916-8.5 13.916-15.5c0-4.25-2.666-8.333-7.416-8.333s-6.5 4.262-6.5 4.262z\"></path> </svg>');\n }\n\n .progress-heart__bg,\n .progress-heart__fill,\n .progress-heart__border {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n .progress-heart__bg,\n .progress-heart__fill {\n -webkit-mask-image: var(--heart-path);\n mask-image: var(--heart-path);\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n }\n\n .progress-heart__bg {\n background-color: var(--progress-heart-default-color);\n }\n\n .progress-heart__border {\n pointer-events: none;\n z-index: 2;\n }\n\n :host::after {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n content: attr(data-text);\n line-height: calc(var(--progress-heart-size) * 0.85);\n text-align: center;\n font-size: calc(var(--progress-heart-size) * 0.28);\n font-weight: bold;\n color: #000;\n pointer-events: none;\n z-index: 1;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.data-text]': `showText() ? percentText() : ''`,\n '[style.--progress-heart-size]': `size() + 'px'`,\n '[style.--progress-heart-bar-color]': `barColor()`,\n '[style.width.px]': `size()`,\n '[style.height.px]': `size()`,\n },\n})\nexport class NathRatingHeart {\n readonly percent = model(0);\n readonly size = input(50);\n readonly showText = input(true);\n readonly borderColor = input<string>();\n readonly ratingColorFn = input<(percent: number) => string | null>(getRatingColor);\n\n readonly barColor = computed(() => {\n const p = this.percent();\n return this.ratingColorFn()(p) || null;\n });\n\n readonly fillGradient = computed(() => {\n let p = this.percent();\n if (Number.isNaN(p)) p = 0;\n p = Math.max(0, Math.min(100, p));\n // Conic gradient starting from top (0deg)\n return `conic-gradient(var(--progress-heart-bar-color) 0% ${p}%, transparent ${p}% 100%)`;\n });\n\n readonly percentText = computed(() => {\n let p = this.percent();\n if (Number.isNaN(p)) p = 0;\n p = Math.max(0, Math.min(100, p));\n return Math.trunc(p) + '%';\n });\n}\n","import {\n Component,\n computed,\n contentChild,\n input,\n model,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { LucideCircle } from '@lucide/angular';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { getRatingColor } from '../rating.constants';\n\n@Component({\n selector: 'nath-rating-input',\n imports: [NgTemplateOutlet, LucideCircle],\n template: `\n <div\n class=\"nath-rating-container\"\n [class.disabled]=\"disabled()\"\n [class.readonly]=\"readonly()\"\n [style.--active-color]=\"activeColor()\"\n (mouseleave)=\"clearPreview()\"\n >\n @for (star of starsArray(); track star) {\n <button\n type=\"button\"\n class=\"nath-rating-star-btn\"\n [disabled]=\"disabled() || readonly()\"\n (mouseenter)=\"setPreview(star)\"\n (click)=\"selectValue(star)\"\n [attr.aria-label]=\"'Rate ' + star + ' out of ' + max()\"\n [attr.aria-pressed]=\"star <= (value() ?? 0)\"\n >\n @if (customTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { $implicit: star, active: star <= displayValue() }\n \"\n />\n } @else {\n <svg\n lucideCircle\n [size]=\"24\"\n class=\"nath-rating-star-icon\"\n [class.active]=\"star <= displayValue()\"\n ></svg>\n }\n </button>\n }\n </div>\n `,\n styleUrl: './rating-input.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathRatingInput implements FormValueControl<number | null> {\n // --- FormValueControl Contract ---\n readonly value = model<number | null>(null);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly touched = model<boolean>(false);\n readonly max = input<number | undefined>(5);\n readonly ratingColorFn = input<(percent: number) => string | null>(getRatingColor);\n\n // --- Content Queries ---\n // Captures <ng-template ratingIcon let-star let-active=\"active\"> from host usage\n readonly customTemplate =\n contentChild<TemplateRef<{ $implicit: number; active: boolean }>>('ratingIcon');\n\n // --- Local Component State ---\n private readonly hoverValue = signal<number | null>(null);\n\n // --- Derived State (Signals) ---\n protected readonly starsArray = computed(() =>\n Array.from({ length: this.max() ?? 0 }, (_, i) => i + 1),\n );\n\n protected readonly displayValue = computed(() => {\n const hover = this.hoverValue();\n return hover ?? this.value() ?? 0;\n });\n\n activeColor = computed((): string | null => {\n const rating = this.displayValue() ?? -1;\n const percent = (rating / (this.max() ?? 1)) * 100;\n return this.ratingColorFn()(percent) || null;\n });\n\n // --- Methods ---\n protected setPreview(star: number): void {\n if (!this.disabled() && !this.readonly()) {\n this.hoverValue.set(star);\n }\n }\n\n protected clearPreview(): void {\n this.hoverValue.set(null);\n }\n\n protected selectValue(star: number): void {\n if (!this.disabled() && !this.readonly()) {\n this.value.set(star);\n this.touched.set(true);\n }\n }\n}\n","import {\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideChevronDown, LucideX } from '@lucide/angular';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormValueControl } from '@angular/forms/signals';\n\n// Simple counter to generate fallback unique IDs\nlet nextId = 0;\n\n@Component({\n selector: 'nath-select',\n imports: [CommonModule, OverlayModule, ScrollingModule, LucideX, LucideChevronDown],\n template: ` <div\n class=\"input select-combobox {{ comboboxClass() }}\"\n [class.select-combobox--has-clear-btn]=\"showClearButton()\"\n [class.select-combobox--borderless]=\"borderless()\"\n tabindex=\"0\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n #container\n (click)=\"toggle()\"\n (keydown)=\"onHostKeyDown($event)\"\n >\n <div class=\"select-combobox__display-wrapper\">\n @if (value() === null) {\n <span class=\"select-combobox__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"select-combobox__text\">\n @if (selectedItemTemplate(); as selectedItemTpl) {\n <ng-container\n *ngTemplateOutlet=\"selectedItemTpl; context: { $implicit: selectedItem() }\"\n />\n } @else {\n {{ selectedItemDisplay() }}\n }\n </span>\n }\n </div>\n\n @if (showClearButton()) {\n <button\n type=\"button\"\n class=\"icon-button select-clear-btn\"\n aria-label=\"Clear selection\"\n (click)=\"$event.stopPropagation(); clear()\"\n >\n <svg lucideX [size]=\"16\" />\n </button>\n }\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen() && options().length > 0\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPanelClass]=\"'nath-select-theme'\"\n (backdropClick)=\"hideDropdown()\"\n >\n <div\n class=\"select-dropdown-overlay\"\n [style.width.px]=\"elementRef.nativeElement?.getBoundingClientRect()?.width\"\n >\n @if (filter()) {\n <div class=\"select-item\">\n <input\n #inputField\n type=\"text\"\n class=\"nath-select-input\"\n [id]=\"inputId() || controlId() + '-search'\"\n [value]=\"inputValue()\"\n (input)=\"onInputChange($event)\"\n aria-label=\"Filter options\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"\n activeTrackedIndex() >= 0 ? optionIdPrefix() + activeTrackedIndex() : null\n \"\n />\n </div>\n }\n\n <div\n [id]=\"listboxId()\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n class=\"select-listbox\"\n [class.select-listbox--scrollable]=\"!virtualScroll()\"\n >\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"select-listbox__viewport\"\n >\n <div\n *cdkVirtualFor=\"let item of filteredOptions(); let idx = index\"\n [id]=\"optionIdPrefix() + idx\"\n role=\"option\"\n [attr.aria-selected]=\"activeTrackedIndex() === idx\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n [class.select-item--active]=\"activeTrackedIndex() === idx\"\n [style.height.px]=\"virtualScrollItemSize()\"\n class=\"select-item select-item--virtual\"\n >\n @if (itemTemplate(); as itemTpl) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\" />\n } @else {\n {{ displayFn()(item) }}\n }\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (item of filteredOptions(); track $index) {\n <div\n [id]=\"optionIdPrefix() + $index\"\n role=\"option\"\n [attr.aria-selected]=\"activeTrackedIndex() === $index\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n [class.select-item--active]=\"activeTrackedIndex() === $index\"\n class=\"select-item\"\n >\n @if (!itemTemplate()) {\n {{ displayFn()(item) }}\n } @else {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: { $implicit: item }\"\n ></ng-container>\n }\n </div>\n }\n }\n </div>\n\n @if (options().length === 0) {\n <div role=\"status\" class=\"select-item select-item--status\">\n {{ emptyMessage() }}\n </div>\n }\n </div>\n </ng-template>\n\n <button\n type=\"button\"\n class=\"button-secondary select-trigger-btn-addon\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n (click)=\"toggle()\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>`,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './select.css',\n})\nexport class NathSelect implements FormValueControl<any> {\n protected readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = nextId++;\n\n value = model<any>(null);\n\n options = input<any[]>([]);\n placeholder = input<string, string | undefined | null>('', {\n transform: (value) => value ?? '',\n });\n displayWith = input<((item: any) => string) | string>('');\n valueWith = input<((item: any) => any) | string>('');\n inputId = input<string>('');\n emptyMessage = input<string>('No results');\n showClear = input<boolean>(false);\n delay = input<number>(300);\n minQueryLength = input<number>(1);\n borderless = input<boolean>(false);\n filter = input<boolean>(false);\n virtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(44);\n comboboxClass = input<string>('');\n\n // Added aria-labelled-by support input\n ariaLabelledBy = input<string>('');\n\n debouncedQueryChange = output<string>();\n cleared = output();\n unselected = output<any>();\n selected = output<any>();\n\n query = signal<string>('');\n itemTemplate = contentChild<TemplateRef<any>>('item');\n selectedItemTemplate = contentChild<TemplateRef<any>>('selectedItem');\n inputField = viewChild<ElementRef<HTMLInputElement>>('inputField');\n container = viewChild<ElementRef<HTMLDivElement>>('container');\n viewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n inputValue = signal<string>('');\n isOpen = signal<boolean>(false);\n activeTrackedIndex = signal<number>(-1);\n\n private watchKeydownSubscription?: Subscription;\n\n // Auto IDs for accessibility relations\n controlId = computed(() => this.inputId() || `app-select-${this.uniqueId}`);\n listboxId = computed(() => `${this.controlId()}-listbox`);\n optionIdPrefix = computed(() => `${this.controlId()}-opt-`);\n\n displayFn = computed(() => {\n const config = this.displayWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? String(item[config] ?? '') : '');\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.label;\n }\n return item ? String(item) : '';\n };\n });\n\n selectedItem = computed(() => {\n const value = this.value();\n const options = this.options();\n const firstOption = options[0];\n const config = this.valueWith();\n if (typeof config === 'function') {\n return options.find((item) => config(item) === value);\n }\n if (typeof config === 'string' && config.length > 0) {\n return options.find(\n (item) => (item && typeof item === 'object' ? (item[config] ?? null) : null) === value,\n );\n }\n if (\n firstOption &&\n typeof firstOption === 'object' &&\n 'value' in firstOption &&\n 'label' in firstOption\n ) {\n return options.find((option) => option.value === value);\n }\n return value;\n });\n\n selectedItemDisplay = computed(() => {\n return this.displayFn()(this.selectedItem());\n });\n\n valueFn = computed(() => {\n const config = this.valueWith();\n if (typeof config === 'function') return config;\n if (typeof config === 'string' && config.length > 0) {\n return (item: any) => (item && typeof item === 'object' ? (item[config] ?? null) : null);\n }\n return (item: any) => {\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return item.value;\n }\n return item ?? '';\n };\n });\n\n filteredOptions = computed<any[]>(() => {\n if (!this.filter()) return this.options();\n return this.options().filter((item) => {\n const displayValue = this.displayFn()(item);\n return displayValue.toLowerCase().includes(this.query().toLowerCase());\n });\n });\n showClearButton = computed<boolean>(() => this.showClear() && !!this.value());\n\n constructor() {\n effect(() => {\n this.inputValue.set(this.query());\n });\n\n effect(() => {\n const index = this.activeTrackedIndex();\n const vp = this.viewport();\n if (this.virtualScroll() && vp && index >= 0) {\n vp.scrollToIndex(index, 'smooth');\n }\n });\n\n this.watchKeydown();\n }\n\n private watchKeydown() {\n this.watchKeydownSubscription = fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe(($event) => this.onKeyDown($event));\n }\n\n private stopWatchKeydown() {\n this.watchKeydownSubscription?.unsubscribe();\n }\n\n onInputChange(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n this.query.set(text);\n this.activeTrackedIndex.set(-1);\n }\n\n selectItem(item: any) {\n this.value.set(this.valueFn()(item));\n this.hideDropdown();\n this.selected.emit(item);\n }\n\n hideDropdown() {\n this.isOpen.set(false);\n this.resetFilter();\n this.inputField()?.nativeElement.blur();\n this.container()?.nativeElement.focus();\n }\n\n resetFilter() {\n this.query.set('');\n }\n\n toggle() {\n this.isOpen.update((prev) => !prev);\n if (this.isOpen()) {\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n\n // 1. Handles keydowns when the dropdown is closed, but the host element is focused\n onHostKeyDown(event: KeyboardEvent) {\n if (!this.isOpen()) {\n if (event.key === 'ArrowDown' || event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.isOpen.set(true);\n setTimeout(() => this.inputField()?.nativeElement.focus(), 100);\n }\n }\n }\n\n // 2. Updated global document listener logic\n onKeyDown(event: KeyboardEvent) {\n // Crucial Guard: If it's closed, ignore all global page keydowns completely!\n if (!this.isOpen()) {\n return;\n }\n\n const currentItems = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeTrackedIndex.update((idx) => (idx + 1) % currentItems.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeTrackedIndex.update(\n (idx) => (idx - 1 + currentItems.length) % currentItems.length,\n );\n break;\n case 'Enter':\n event.preventDefault();\n if (this.activeTrackedIndex() >= 0 && this.activeTrackedIndex() < currentItems.length) {\n this.selectItem(currentItems[this.activeTrackedIndex()]);\n }\n break;\n case 'Escape':\n this.hideDropdown();\n break;\n }\n }\n\n clear() {\n this.value.set(null);\n this.inputValue.set('');\n this.query.set('');\n this.cleared.emit();\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'nath-skeleton',\r\n imports: [],\r\n template: ``,\r\n styleUrl: './skeleton.css',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NathSkeleton {}\r\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n input,\n model,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\nimport { FormValueControl } from '@angular/forms/signals';\n\nexport type SliderValue = number | [number, number];\n\n@Component({\n selector: 'nath-slider',\n imports: [NgStyle],\n templateUrl: './slider.html',\n styleUrl: './slider.css',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': 'onTrackClick($event)',\n '(touchstart)': 'onTrackClick($event)',\n '[style.--nath-slider-range-bg]': 'rangeBackground()',\n },\n})\nexport class NathSlider implements FormValueControl<number | number[] | null> {\n @ViewChild('track') trackElement!: ElementRef<HTMLDivElement>;\n\n mode = input<'single' | 'range'>('single');\n minValue = input(0);\n maxValue = input(100);\n step = input(1);\n rangeBackground = input<string | null>(null);\n ariaLabel = input<string>('');\n\n value = model<number | number[] | null>(null);\n\n // Internal Signals dynamically derived to match any min/max boundary context safely\n protected value1 = signal<number>(0);\n protected value2 = signal<number>(100);\n protected activeHandle = signal<'thumb1' | 'thumb2' | null>(null);\n protected isDisabled = signal<boolean>(false);\n\n constructor() {\n // Sync external model updates (from FormValueControl) back into internal tracking thumbs\n effect(() => {\n const current = this.value();\n if (current === null || current === undefined) {\n // Fallback default setups matching negative boundaries perfectly\n this.value1.set(this.minValue());\n this.value2.set(this.maxValue());\n return;\n }\n\n if (this.mode() === 'range' && Array.isArray(current)) {\n this.value1.set(this.clamp(current[0]));\n this.value2.set(this.clamp(current[1]));\n } else if (this.mode() === 'single' && typeof current === 'number') {\n this.value1.set(this.clamp(current));\n }\n });\n }\n\n // Computed percentages for Tailwind styles\n protected percent1 = computed(() => this.getPercent(this.value1()));\n protected percent2 = computed(() => this.getPercent(this.value2()));\n\n protected trackSelectionStyle = computed(() => {\n if (this.mode() === 'single') {\n return { left: '0%', width: `${this.percent1()}%` };\n }\n const start = Math.min(this.percent1(), this.percent2());\n const end = Math.max(this.percent1(), this.percent2());\n return { left: `${start}%`, width: `${end - start}%` };\n });\n\n // Keep writeValue for standard compatibility layers if invoked by framework engines\n writeValue(value: SliderValue): void {\n if (value === null || value === undefined) return;\n\n if (this.mode() === 'range' && Array.isArray(value)) {\n this.value1.set(this.clamp(value[0]));\n this.value2.set(this.clamp(value[1]));\n } else if (this.mode() === 'single' && typeof value === 'number') {\n this.value1.set(this.clamp(value));\n }\n }\n\n // --- Interaction Logic ---\n protected startDrag(event: MouseEvent | TouchEvent, thumb: 'thumb1' | 'thumb2') {\n if (this.isDisabled()) return;\n event.stopPropagation();\n this.activeHandle.set(thumb);\n }\n\n @HostListener('window:mousemove', ['$event'])\n @HostListener('window:touchmove', ['$event'])\n protected onMove(event: MouseEvent | TouchEvent) {\n const handle = this.activeHandle();\n if (!handle || this.isDisabled()) return;\n\n const clientX = 'touches' in event ? event.touches[0].clientX : event.clientX;\n const newValue = this.getValueFromX(clientX);\n\n if (handle === 'thumb1') {\n this.value1.set(newValue);\n } else {\n this.value2.set(newValue);\n }\n this.setValue();\n }\n\n @HostListener('window:mouseup')\n @HostListener('window:touchend')\n protected endDrag() {\n this.activeHandle.set(null);\n this.reorderValues();\n }\n\n protected onTrackClick(event: MouseEvent | TouchEvent) {\n if (this.isDisabled()) return;\n const clientX = 'touches' in event ? event.touches[0].clientX : event.clientX;\n const clickedValue = this.getValueFromX(clientX);\n\n if (this.mode() === 'single') {\n this.value1.set(clickedValue);\n } else {\n const dist1 = Math.abs(this.value1() - clickedValue);\n const dist2 = Math.abs(this.value2() - clickedValue);\n if (dist1 <= dist2) {\n this.value1.set(clickedValue);\n } else {\n this.value2.set(clickedValue);\n }\n }\n this.setValue();\n }\n\n // --- Keyboard Accessibility ---\n protected onKeyDown(event: KeyboardEvent, thumb: 'thumb1' | 'thumb2') {\n if (this.isDisabled()) return;\n\n let change = 0;\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') change = this.step();\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') change = -this.step();\n if (event.key === 'PageUp') change = this.step() * 10;\n if (event.key === 'PageDown') change = -this.step() * 10;\n if (event.key === 'Home')\n change = this.minValue() - (thumb === 'thumb1' ? this.value1() : this.value2());\n if (event.key === 'End')\n change = this.maxValue() - (thumb === 'thumb1' ? this.value1() : this.value2());\n\n if (change !== 0) {\n event.preventDefault();\n if (thumb === 'thumb1') {\n this.value1.update((v) => this.clamp(v + change));\n } else {\n this.value2.update((v) => this.clamp(v + change));\n }\n this.setValue();\n }\n }\n\n // --- Helpers ---\n private clamp(val: number): number {\n // Math handles negative values properly when subtracting or adding offset steps\n const stepped =\n Math.round((val - this.minValue()) / this.step()) * this.step() + this.minValue();\n return Math.max(this.minValue(), Math.min(this.maxValue(), stepped));\n }\n\n private getPercent(val: number): number {\n const range = this.maxValue() - this.minValue();\n if (range === 0) return 0;\n // (value - (-50)) correctly translates to a positive displacement scalar width\n return ((val - this.minValue()) / range) * 100;\n }\n\n private getValueFromX(clientX: number): number {\n const rect = this.trackElement.nativeElement.getBoundingClientRect();\n const pct = (clientX - rect.left) / rect.width;\n return this.clamp(pct * (this.maxValue() - this.minValue()) + this.minValue());\n }\n\n private setValue() {\n if (this.mode() === 'range') {\n this.value.set([this.value1(), this.value2()]);\n } else {\n this.value.set(this.value1());\n }\n }\n\n private reorderValues(): void {\n if (this.value1() > this.value2()) {\n const temp = this.value1();\n this.value1.set(this.value2());\n this.value2.set(temp);\n this.setValue();\n }\n }\n}\n","<div #track class=\"nath-slider-track\" [class.nath-slider-track--disabled]=\"isDisabled()\">\r\n <div class=\"nath-slider-range\" [ngStyle]=\"trackSelectionStyle()\"></div>\r\n\r\n <input\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"minValue()\"\r\n [attr.aria-valuemax]=\"maxValue()\"\r\n [attr.aria-valuenow]=\"value1()\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n (keydown)=\"onKeyDown($event, 'thumb1')\"\r\n (mousedown)=\"startDrag($event, 'thumb1')\"\r\n (touchstart)=\"startDrag($event, 'thumb1')\"\r\n [style.left.%]=\"percent1()\"\r\n class=\"nath-slider-thumb\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n />\r\n\r\n @if (mode() === 'range') {\r\n <input\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"minValue()\"\r\n [attr.aria-valuemax]=\"maxValue()\"\r\n [attr.aria-valuenow]=\"value2()\"\r\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\r\n (keydown)=\"onKeyDown($event, 'thumb2')\"\r\n (mousedown)=\"startDrag($event, 'thumb2')\"\r\n (touchstart)=\"startDrag($event, 'thumb2')\"\r\n [style.left.%]=\"percent2()\"\r\n class=\"nath-slider-thumb\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n />\r\n }\r\n</div>\r\n","export enum ORDER {\n ASC = 'asc',\n DESC = 'desc',\n}\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport {\n LucideArrowDown,\n LucideArrowDown01,\n LucideArrowDownAZ,\n LucideArrowUp,\n LucideArrowUp01,\n LucideArrowUpAZ,\n LucideDynamicIcon,\n LucideIcon,\n} from '@lucide/angular';\nimport { ORDER } from '../types/order.enum';\n\n@Component({\n selector: 'nath-sort-icon',\n template: ` <svg [lucideIcon]=\"icon()\"></svg> `,\n styles: ``,\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true,\n imports: [LucideDynamicIcon],\n})\nexport class NathSortIcon {\n readonly field = input.required<string>();\n readonly sortField = input.required<string>();\n readonly sortOrder = input.required<ORDER>();\n readonly sortType = input<'alpha' | 'numeric' | 'boolean' | 'any'>('alpha');\n\n icon = computed<LucideIcon | null>(() => {\n if (this.field() === this.sortField()) {\n switch (this.sortType()) {\n case 'alpha':\n return this.sortOrder() === ORDER.ASC ? LucideArrowUpAZ : LucideArrowDownAZ;\n case 'numeric':\n return this.sortOrder() === ORDER.ASC ? LucideArrowUp01 : LucideArrowDown01;\n default:\n return this.sortOrder() === ORDER.ASC ? LucideArrowUp : LucideArrowDown;\n }\n } else {\n return null;\n }\n });\n}\n","import { Component, input, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\nimport { NathMenu } from '../menu/menu';\nimport { MenuItem } from '../menu/menu-item.model';\nimport { NathMenuPositionX, NathMenuPositionY } from '../menu/menu.types';\n\n@Component({\n selector: 'nath-split-button',\n imports: [LucideChevronDown, NathMenu],\n template: `\n <div class=\"nath-split-button-container\">\n <button\n type=\"button\"\n class=\"nath-split-button-main\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n (click)=\"buttonClick.emit($event)\"\n >\n <ng-content />\n </button>\n <button\n type=\"button\"\n class=\"nath-split-button-trigger\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n (click)=\"openMenu($event)\"\n >\n <svg lucideChevronDown [size]=\"16\" />\n </button>\n </div>\n <nath-menu [model]=\"menu()\" [positionX]=\"positionX()\" [positionY]=\"positionY()\" />\n `,\n styleUrl: './split-button.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathSplitButton {\n menu = input.required<MenuItem[]>();\n buttonClass = input<string>('');\n disabled = input<boolean>(false);\n positionX = input<NathMenuPositionX>('auto');\n positionY = input<NathMenuPositionY>('auto');\n\n buttonClick = output<MouseEvent>();\n\n tieredMenuComponent = viewChild(NathMenu);\n\n protected openMenu(event: PointerEvent) {\n this.tieredMenuComponent()?.show(event);\n }\n}\n","import { booleanAttribute, Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[nathTab]',\n})\nexport class TabDirective {\n public readonly templateRef = inject(TemplateRef);\n\n tabTitle = input.required<string>({ alias: 'nathTab' });\n disabled = input<boolean>(false, { transform: booleanAttribute });\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[nathTabPanel]',\n})\nexport class TabPanelDirective {\n public readonly templateRef = inject(TemplateRef);\n\n tabTitle = input.required<string>({ alias: 'nathTabPanel' });\n}\n","import {\n Component,\n computed,\n contentChildren,\n input,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';\nimport { TabDirective } from './tab.directive';\nimport { TabPanelDirective } from './tab-panel.directive';\n\n@Component({\n selector: 'nath-tabs',\n imports: [CommonModule, Tabs, TabList, Tab, TabPanel, TabContent],\n template: `\n <div\n ngTabs\n [attr.aria-orientation]=\"orientation()\"\n class=\"nath-tabs-container\"\n [class.vertical]=\"orientation() === 'vertical'\"\n [class.horizontal]=\"orientation() === 'horizontal'\"\n [style.--total-tabs]=\"totalTabs()\"\n >\n <div ngTabList [(selectedTab)]=\"activeTab\" class=\"nath-tabs-list\">\n @for (tab of tabs(); track $index) {\n <div\n ngTab\n [value]=\"tab.tabTitle()\"\n [disabled]=\"tab.disabled()\"\n class=\"nath-tabs-tab\"\n [class]=\"tabClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\" />\n </div>\n }\n </div>\n\n <div\n class=\"nath-tabs-sliding-window\"\n [class]=\"slidingWindowClass()\"\n [style.--active-index]=\"activeTabIndex()\"\n >\n @if (tabPanels().length) {\n @for (tabPanel of tabPanels(); track $index) {\n <div\n ngTabPanel\n [preserveContent]=\"true\"\n [value]=\"tabPanel.tabTitle()\"\n class=\"nath-tabs-panel\"\n [class]=\"tabPanelClass()\"\n >\n <ng-template ngTabContent>\n <ng-container [ngTemplateOutlet]=\"tabPanel.templateRef\" />\n </ng-template>\n </div>\n }\n } @else {\n @for (tab of tabs(); track $index) {\n <div\n ngTabPanel\n [preserveContent]=\"true\"\n [value]=\"tab.tabTitle()\"\n class=\"nath-tabs-panel\"\n [class]=\"tabPanelClass()\"\n >\n <ng-template ngTabContent></ng-template>\n </div>\n }\n }\n </div>\n </div>\n `,\n styleUrl: './tabs.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathTabs {\n activeTab = model.required<string>();\n\n orientation = input<'horizontal' | 'vertical'>('horizontal');\n tabClass = input<string>('');\n tabPanelClass = input<string>('');\n slidingWindowClass = input<string>('');\n\n tabs = contentChildren<TabDirective>(TabDirective);\n tabPanels = contentChildren<TabPanelDirective>(TabPanelDirective);\n\n activeTabIndex = computed<number>(() => {\n return this.tabs().findIndex((tab) => tab.tabTitle() === this.activeTab());\n });\n totalTabs = computed<number>(() => this.tabs().length);\n}\n","import { inject, Injectable, InjectionToken, signal, StaticProvider } from '@angular/core';\n\nexport const DARK_THEME_CLASS = 'dark';\nexport interface ThemeConfig {\n localStorageThemeKey: string;\n}\nexport const THEME_CONFIG = new InjectionToken<ThemeConfig>('THEME_CONFIG');\n\nexport function provideThemeConfig(config: ThemeConfig): StaticProvider {\n return {\n provide: THEME_CONFIG,\n useValue: config,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n config = inject(THEME_CONFIG);\n\n isDarkMode = signal(false);\n\n constructor() {\n this.loadTheme();\n this.watchFocus();\n }\n\n private get isSystemDarkTheme() {\n return globalThis.matchMedia?.('(prefers-color-scheme: dark)').matches;\n }\n\n private watchFocus() {\n globalThis.addEventListener('visibilitychange', (event: Event) => {\n if ((<Document>event.target).visibilityState === 'visible') {\n this.loadTheme();\n }\n });\n }\n\n loadTheme() {\n const localTheme = localStorage.getItem(this.config.localStorageThemeKey);\n this.isDarkMode.set(localTheme === 'dark' || (!localTheme && this.isSystemDarkTheme));\n const element: HTMLHtmlElement | null = document.querySelector('html');\n if (!element) return;\n if (this.isDarkMode()) {\n element.classList.add(DARK_THEME_CLASS);\n } else {\n element.classList.remove(DARK_THEME_CLASS);\n }\n }\n\n setTheme(theme: string) {\n const element: HTMLHtmlElement | null = document.querySelector('html');\n if (!element) return;\n this.isDarkMode.set(theme === 'dark' || (theme === 'system' && this.isSystemDarkTheme));\n if (this.isDarkMode()) {\n element.classList.add(DARK_THEME_CLASS);\n } else {\n element.classList.remove(DARK_THEME_CLASS);\n }\n if (theme === 'system') {\n localStorage.removeItem(this.config.localStorageThemeKey);\n } else {\n localStorage.setItem(this.config.localStorageThemeKey, theme);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MenuItem } from '../menu/menu-item.model';\nimport { NathMenu } from '../menu/menu';\n\nimport { LucideDynamicIcon, LucideMoon, LucideSun } from '@lucide/angular';\nimport { THEME_CONFIG, ThemeService } from './theme.service';\n\n@Component({\n selector: 'nath-theme-switch',\n imports: [NathMenu, LucideDynamicIcon],\n template: `\n <button\n class=\"button button-text-success\"\n [title]=\"switchTooltip()\"\n (click)=\"themeMenu.show($event)\"\n >\n <svg [lucideIcon]=\"themeService.isDarkMode() ? LucideMoon : LucideSun\"></svg>\n </button>\n <nath-menu #themeMenu [model]=\"themes\" positionX=\"left\" positionY=\"bottom\" />\n `,\n styles: `\n app-theme-switch {\n display: inline-block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathThemeSwitch {\n protected readonly themeService = inject(ThemeService);\n protected readonly config = inject(THEME_CONFIG);\n\n lightText = input<string>('Light');\n darkText = input<string>('Dark');\n systemText = input<string>('System');\n switchTooltip = input<string>('Switch Theme');\n\n themes: MenuItem[] = [\n {\n label: this.lightText(),\n command: () => this.themeService.setTheme('light'),\n },\n {\n label: this.darkText(),\n command: () => this.themeService.setTheme('dark'),\n },\n {\n label: this.systemText(),\n command: () => this.themeService.setTheme('system'),\n },\n ];\n protected readonly LucideMoon = LucideMoon;\n protected readonly LucideSun = LucideSun;\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type NathToastType = 'success' | 'error' | 'info' | 'warning';\nexport type NathToastPosition =\n 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';\n\nexport interface Toast {\n id: string;\n message: string;\n type: NathToastType;\n duration?: number; // in milliseconds\n position?: NathToastPosition;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n // Read-only public signal, private writeable signal\n private readonly toastsSignal = signal<Toast[]>([]);\n toasts = this.toastsSignal.asReadonly();\n\n show(\n message: string,\n type: NathToastType = 'info',\n duration = 4000,\n position?: NathToastPosition,\n ) {\n const id = crypto.randomUUID();\n const newToast: Toast = { id, message, type, duration, position };\n\n // Add new toast to the array\n this.toastsSignal.update((current) => [...current, newToast]);\n\n // Setup auto-dismiss\n if (duration > 0) {\n setTimeout(() => {\n this.dismiss(id);\n }, duration);\n }\n }\n\n dismiss(id: string) {\n this.toastsSignal.update((current) => current.filter((t) => t.id !== id));\n }\n}\n","import {\n Component,\n computed,\n inject,\n input,\n SecurityContext,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NathToastPosition, NathToastType, ToastService } from './toast.service';\nimport { KeyValuePipe } from '@angular/common';\nimport {\n LucideCircleAlert,\n LucideCircleCheck,\n LucideInfo,\n LucideTriangleAlert,\n LucideX,\n} from '@lucide/angular';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'nath-toast-container',\n imports: [\n LucideX,\n LucideCircleCheck,\n LucideCircleAlert,\n LucideInfo,\n LucideTriangleAlert,\n KeyValuePipe,\n ],\n template: `\n @for (group of groupedToasts() | keyvalue; track group.key) {\n <div class=\"nath-toast-container\" [class]=\"getContainerClasses(group.key)\">\n @for (toast of group.value; track toast.id) {\n <div class=\"nath-toast-item\" [class]=\"getToastClasses(toast.type)\" role=\"alert\">\n <div class=\"nath-toast-icon\">\n @switch (toast.type) {\n @case ('success') {\n <svg lucideCircleCheck [size]=\"20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"20\"></svg>\n }\n @case ('warning') {\n <svg lucideTriangleAlert [size]=\"20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"20\"></svg>\n }\n }\n </div>\n\n <span class=\"nath-toast-message\" [innerHtml]=\"formatUrl(toast.message)\"></span>\n\n <button\n (click)=\"toastService.dismiss(toast.id)\"\n class=\"nath-toast-close\"\n aria-label=\"Close\"\n >\n <svg lucideX class=\"nath-toast-close-icon\" [size]=\"16\"></svg>\n </button>\n </div>\n }\n </div>\n }\n `,\n styleUrl: './toast-container.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathToastContainer {\n toastService = inject(ToastService);\n sanitizer = inject(DomSanitizer);\n\n position = input<NathToastPosition>('bottom-center');\n\n groupedToasts = computed(() => {\n const toasts = this.toastService.toasts();\n const defaultPosition = this.position();\n\n return toasts.reduce(\n (acc, toast) => {\n const pos = toast.position || defaultPosition;\n if (!acc[pos]) {\n acc[pos] = [];\n }\n acc[pos].push(toast);\n return acc;\n },\n {} as Record<string, typeof toasts>,\n );\n });\n\n getContainerClasses(position: string | number): string {\n return `nath-toast-container--${position}`;\n }\n\n getToastClasses(type: NathToastType): string {\n return `nath-toast-item--${type}`;\n }\n\n /**\n * Insert line break opportunities into a URL\n */\n formatUrl(url: string) {\n // Split the URL into an array to distinguish double slashes from single slashes\n const doubleSlash = url.split('//');\n\n // Format the strings on either side of double slashes separately\n const formatted = doubleSlash\n .map(\n (str: string) =>\n // Insert a word break opportunity after a colon\n str\n .replace(/(?<after>:)/giu, '$<after><wbr>')\n // Before a single slash, tilde, period, comma, hyphen, underline, question mark, number sign, or percent symbol\n .replace(/(?<before>[/~.,\\-_?#%])/giu, '<wbr>$<before>')\n // Before and after an equals sign or ampersand\n .replace(/(?<beforeAndAfter>[=&])/giu, '<wbr>$<beforeAndAfter><wbr>'),\n // Reconnect the strings with word break opportunities after double slashes\n )\n .join('//<wbr>');\n\n return this.sanitizer.sanitize(SecurityContext.HTML, formatted);\n }\n}\n","import {\n Component,\n computed,\n effect,\n input,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'nath-toc',\n imports: [],\n templateUrl: './toc.html',\n styleUrl: './toc.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathToc {\n public readonly level = input<number>(2);\n public readonly container = input<HTMLDivElement | undefined>();\n public readonly containerSelector = input<string>('');\n public readonly scrollContainerSelector = input<string>('');\n public readonly offset = input<number>(0);\n\n protected readonly tocSections = signal<{ id: string; label: string }[]>([]);\n\n scrollContainer: Signal<Element | typeof globalThis> = computed(() =>\n this.scrollContainerSelector()\n ? (document.querySelector(this.scrollContainerSelector()) ?? globalThis)\n : globalThis,\n );\n\n constructor() {\n effect(() => {\n let containerEl = this.container();\n const containerSelector = this.containerSelector();\n if (containerSelector) {\n containerEl = document.querySelector(containerSelector) as HTMLDivElement | undefined;\n }\n if (containerEl) {\n const headings = containerEl.querySelectorAll(`h${this.level()}[id]`);\n const sections = Array.from(headings).map((heading) => ({\n id: heading.id,\n label: heading.textContent || '',\n }));\n if (sections.length === 0) {\n console.error(`No headings of level ${this.level()} found`);\n }\n this.tocSections.set(sections);\n } else {\n console.error('Container not found');\n this.tocSections.set([]);\n }\n });\n }\n\n scrollToSection(id: string) {\n const element = document.getElementById(id);\n const scrollContainer = this.scrollContainer();\n if (element) {\n const offset = this.offset();\n const scrollY =\n scrollContainer instanceof Element ? scrollContainer.scrollTop : scrollContainer.scrollY;\n const elementPosition = element.getBoundingClientRect().top + scrollY;\n scrollContainer.scrollTo({\n top: elementPosition - offset,\n behavior: 'smooth',\n });\n }\n }\n}\n","<aside class=\"nath-toc-aside\">\n <nav class=\"nath-toc-nav\">\n <h3 class=\"nath-toc-title\">Table of Contents</h3>\n <ul class=\"nath-toc-list\">\n @for (section of tocSections(); track section.id) {\n <li>\n <button type=\"button\" (click)=\"scrollToSection(section.id)\" class=\"nath-toc-button\">\n {{ section.label }}\n </button>\n </li>\n }\n </ul>\n </nav>\n</aside>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n SecurityContext,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nexport type NathTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\ninterface NathTooltipCoordinates {\n top: number;\n left: number;\n finalPosition: NathTooltipPosition;\n}\n\n@Component({\n imports: [NgTemplateOutlet],\n template: `\n <div\n class=\"nath-tooltip-container nath-tooltip-container-theme\"\n [class]=\"arrowClass()\"\n [style]=\"positionStyles()\"\n >\n <div class=\"nath-tooltip-content\">\n @if (isTemplate(content())) {\n <ng-container [ngTemplateOutlet]=\"$any(content())\"></ng-container>\n } @else {\n <div [innerHTML]=\"sanitizedHtml()\"></div>\n }\n </div>\n </div>\n `,\n styleUrl: './tooltip-container.css',\n encapsulation: ViewEncapsulation.None,\n})\nexport class NathTooltipContainer {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>); // Inject host reference directly\n\n content = input<string | TemplateRef<any> | null>(null);\n positionStyles = signal<Record<string, string>>({ opacity: '0' });\n arrowClass = signal<string>('arrow-top');\n\n protected sanitizedHtml(): SafeHtml {\n const raw = this.content();\n if (typeof raw === 'string') {\n return this.sanitizer.sanitize(SecurityContext.HTML, raw) || '';\n }\n return '';\n }\n\n protected isTemplate(value: any): boolean {\n return value && typeof value !== 'string';\n }\n\n updatePosition(hostRect: DOMRect, preferredPosition: NathTooltipPosition) {\n const tooltipContainer = this.hostRef.nativeElement.querySelector('.nath-tooltip-container');\n if (!tooltipContainer) {\n console.error('Tooltip container not found');\n return;\n }\n const tooltipWidth = tooltipContainer.offsetWidth;\n const tooltipHeight = tooltipContainer.offsetHeight;\n const spacing = 12;\n\n // Determine baseline coordinates and potential flip strategy\n const coords = this.calculateInitialPosition(\n hostRect,\n tooltipWidth,\n tooltipHeight,\n preferredPosition,\n spacing,\n );\n\n // Prevent edge bleeding along the cross-axis bounds\n const cleanCoords = this.constrainToViewport(\n coords.left,\n coords.top,\n tooltipWidth,\n tooltipHeight,\n preferredPosition,\n );\n\n this.arrowClass.set(`arrow-${coords.finalPosition}`);\n\n this.positionStyles.set({\n transform: `translate3d(${cleanCoords.left}px, ${cleanCoords.top}px, 0)`,\n opacity: '1',\n });\n }\n\n /**\n * Calculates structural baseline layout alignments and performs flipping checks.\n */\n private calculateInitialPosition(\n hostRect: DOMRect,\n w: number,\n h: number,\n pos: NathTooltipPosition,\n space: number,\n ): NathTooltipCoordinates {\n if (pos === 'top') return this.getTopCoords(hostRect, w, h, space);\n if (pos === 'bottom') return this.getBottomCoords(hostRect, w, h, space);\n if (pos === 'left') return this.getLeftCoords(hostRect, w, h, space);\n return this.getRightCoords(hostRect, w, h, space);\n }\n\n private getTopCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const top = hostRect.top - h - space;\n const isOverflow = top < 0;\n return {\n top: isOverflow ? hostRect.bottom + space : top,\n left: hostRect.left + (hostRect.width - w) / 2,\n finalPosition: isOverflow ? 'bottom' : 'top',\n };\n }\n\n private getBottomCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const top = hostRect.bottom + space;\n const isOverflow = top + h > window.innerHeight;\n return {\n top: isOverflow ? hostRect.top - h - space : top,\n left: hostRect.left + (hostRect.width - w) / 2,\n finalPosition: isOverflow ? 'top' : 'bottom',\n };\n }\n\n private getLeftCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const left = hostRect.left - w - space;\n const isOverflow = left < 0;\n return {\n top: hostRect.top + (hostRect.height - h) / 2,\n left: isOverflow ? hostRect.right + space : left,\n finalPosition: isOverflow ? 'right' : 'left',\n };\n }\n\n private getRightCoords(\n hostRect: DOMRect,\n w: number,\n h: number,\n space: number,\n ): NathTooltipCoordinates {\n const left = hostRect.right + space;\n const isOverflow = left + w > window.innerWidth;\n return {\n top: hostRect.top + (hostRect.height - h) / 2,\n left: isOverflow ? hostRect.left - w - space : left,\n finalPosition: isOverflow ? 'left' : 'right',\n };\n }\n\n /**\n * Adjusts calculated coordinates to keep them confined within visible screen padding bounds.\n */\n private constrainToViewport(\n left: number,\n top: number,\n w: number,\n h: number,\n pos: NathTooltipPosition,\n ): { left: number; top: number } {\n let cleanLeft = left;\n let cleanTop = top;\n const boundaryPadding = 8;\n\n if (pos === 'top' || pos === 'bottom') {\n if (cleanLeft < 0) cleanLeft = boundaryPadding;\n if (cleanLeft + w > window.innerWidth) {\n cleanLeft = window.innerWidth - w - boundaryPadding;\n }\n } else {\n if (cleanTop < 0) cleanTop = boundaryPadding;\n if (cleanTop + h > window.innerHeight) {\n cleanTop = window.innerHeight - h - boundaryPadding;\n }\n }\n\n return { left: cleanLeft, top: cleanTop };\n }\n\n hide() {\n this.positionStyles.update((styles) => ({ ...styles, opacity: '0' }));\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { NathTooltipContainer, NathTooltipPosition } from './tooltip-container';\n\n@Directive({\n selector: '[nathTooltip]',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(focusin)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focusout)': 'onMouseLeave()',\n },\n})\nexport class NathTooltipDirective implements OnDestroy {\n tooltipContent = input<string | TemplateRef<any> | null>(null, {\n alias: 'nathTooltip',\n });\n tooltipPosition = input<NathTooltipPosition>('top');\n showDelay = input<number>(200);\n hideDelay = input<number>(100);\n\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly document = inject(DOCUMENT);\n\n private componentRef: ComponentRef<NathTooltipContainer> | null = null;\n private showTimeout: any;\n private hideTimeout: any;\n\n onMouseEnter() {\n clearTimeout(this.hideTimeout);\n if (!this.componentRef) {\n this.showTimeout = setTimeout(() => this.showTooltip(), this.showDelay());\n }\n }\n\n onMouseLeave() {\n clearTimeout(this.showTimeout);\n if (this.componentRef) {\n this.hideTimeout = setTimeout(() => this.destroyTooltip(), this.hideDelay());\n }\n }\n\n private showTooltip() {\n if (this.componentRef || !this.tooltipContent()) return;\n\n this.componentRef = this.viewContainerRef.createComponent(NathTooltipContainer);\n this.componentRef.setInput('content', this.tooltipContent());\n\n const domElem = (this.componentRef.hostView as any).rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n this.componentRef.changeDetectorRef.detectChanges();\n\n const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n this.componentRef.instance.updatePosition(hostRect, this.tooltipPosition());\n\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n private destroyTooltip() {\n if (this.componentRef) {\n this.componentRef.instance.hide();\n\n const refToDestroy = this.componentRef;\n this.componentRef = null;\n\n // Keep this at a fixed 200ms to allow the Tailwind opacity transition to complete\n setTimeout(() => {\n refToDestroy.destroy();\n }, 200);\n }\n }\n\n ngOnDestroy() {\n clearTimeout(this.showTimeout);\n clearTimeout(this.hideTimeout);\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n}\n","export function next(el: Element, selector?: string) {\r\n const nextEl = el.nextElementSibling;\r\n if (!selector || (nextEl && nextEl.matches(selector))) {\r\n return nextEl;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const isTruthy = <T>(x: T | undefined | null): x is T => !!x;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const rangeMinMax = (\n range: number[] | undefined,\n min: number | undefined,\n max: number | undefined,\n): boolean =>\n min !== undefined &&\n max !== undefined &&\n !!range?.length &&\n range[0] === min &&\n range[1] === max;\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const rangeNotMinMax = (\r\n range: number[] | undefined,\r\n min: number | undefined,\r\n max: number | undefined,\r\n): boolean =>\r\n !!range?.length &&\r\n (min === undefined ||\r\n (min === 0 && max === 0) ||\r\n (!!max && (range[0] > min || range[1] < max)));\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export function isSortOrderValid(order: string) {\r\n return ['asc', 'desc'].indexOf(order) > -1;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/*\r\n * Public API Surface of nath-angular-ui\r\n */\r\n\r\nexport * from './lib/autocomplete/autocomplete';\r\nexport * from './lib/boolean-control/boolean-control';\r\nexport * from './lib/breadcrumbs/breadcrumbs';\r\nexport * from './lib/breadcrumbs/breadcrumb.service';\r\nexport * from './lib/breadcrumbs/breadcrumb.model';\r\nexport * from './lib/code-viewer/code-file';\r\nexport * from './lib/code-viewer/code-viewer';\r\nexport * from './lib/datepicker/datepicker';\r\nexport * from './lib/dialog/confirmation.service';\r\nexport * from './lib/dialog/confirmation-dialog';\r\nexport * from './lib/dialog/confirmation-types';\r\nexport * from './lib/dialog/dialog-ref';\r\nexport * from './lib/dialog/dialog.service';\r\nexport * from './lib/dialog/dialog-container';\r\nexport * from './lib/drawer/drawer';\r\nexport * from './lib/file-upload/file-upload';\r\nexport * from './lib/floating-label/floating-label';\r\nexport * from './lib/form-field/form-field';\r\nexport * from './lib/image-preview/image-preview';\r\nexport * from './lib/menu/menu';\r\nexport * from './lib/menu/menu.types';\r\nexport * from './lib/menu/menu-item.model';\r\nexport * from './lib/menu/menu-list';\r\nexport * from './lib/multiselect/multiselect';\r\nexport * from './lib/paginated-view/paginated-view';\r\nexport * from './lib/paginator/paginator';\r\nexport * from './lib/panel/panel';\r\nexport * from './lib/pick-list/pick-list';\r\nexport * from './lib/progress-bar/progress-bar';\r\nexport * from './lib/progress-circle/progress-circle';\r\nexport * from './lib/radio-button-group/radio-button-group';\r\nexport * from './lib/rating/rating.constants';\r\nexport * from './lib/rating/rating-heart/rating-heart';\r\nexport * from './lib/rating/rating-input/rating-input';\r\nexport * from './lib/select/select';\r\nexport * from './lib/skeleton/skeleton';\r\nexport * from './lib/slider/slider';\r\nexport * from './lib/show-errors/show-errors';\r\nexport * from './lib/sort-icon/sort-icon';\r\nexport * from './lib/split-button/split-button';\r\nexport * from './lib/tabs/tab.directive';\r\nexport * from './lib/tabs/tab-panel.directive';\r\nexport * from './lib/tabs/tabs';\r\nexport * from './lib/theme-switch/theme.service';\r\nexport * from './lib/theme-switch/theme-switch';\r\nexport * from './lib/toast/toast.service';\r\nexport * from './lib/toast/toast-container';\r\nexport * from './lib/toc/toc';\r\nexport * from './lib/tooltip/tooltip.directive';\r\nexport * from './lib/tooltip/tooltip-container';\r\nexport * from './lib/types/select-item';\r\nexport * from './lib/types/order.enum';\r\nexport * from './lib/utilities/form.util';\r\nexport * from './lib/utilities/dom.util';\r\nexport * from './lib/utilities/isTruthy';\r\nexport * from './lib/utilities/rangeMinMax';\r\nexport * from './lib/utilities/rangeNotMinMax';\r\nexport * from './lib/utilities/isSortOrderValid';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","nextId"],"mappings":"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"}