@neuravision/ng-construct 0.2.0 → 0.3.0
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":"neuravision-ng-construct.mjs","sources":["../../../projects/angular/src/lib/components/alert/alert.component.ts","../../../projects/angular/src/lib/components/accordion/accordion.component.ts","../../../projects/angular/src/lib/components/avatar/avatar.component.ts","../../../projects/angular/src/lib/components/button/button.component.ts","../../../projects/angular/src/lib/components/input/input.component.ts","../../../projects/angular/src/lib/components/select/select.component.ts","../../../projects/angular/src/lib/components/textarea/textarea.component.ts","../../../projects/angular/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular/src/lib/components/radio/radio.component.ts","../../../projects/angular/src/lib/components/switch/switch.component.ts","../../../projects/angular/src/lib/components/card/card.component.ts","../../../projects/angular/src/lib/components/data-table/cell-def.directive.ts","../../../projects/angular/src/lib/components/data-table/data-table.component.ts","../../../projects/angular/src/lib/components/data-table/data-table.component.html","../../../projects/angular/src/lib/utils/focus-trap.ts","../../../projects/angular/src/lib/components/modal/modal.component.ts","../../../projects/angular/src/lib/services/toast.service.ts","../../../projects/angular/src/lib/components/toast/toast.component.ts","../../../projects/angular/src/lib/components/tabs/tabs.component.ts","../../../projects/angular/src/lib/components/dropdown/dropdown.component.ts","../../../projects/angular/src/lib/components/pagination/pagination.component.ts","../../../projects/angular/src/lib/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/angular/src/lib/components/datepicker/datepicker.component.ts","../../../projects/angular/src/lib/components/chip-input/chip-input.component.ts","../../../projects/angular/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/angular/src/lib/components/badge/badge.component.ts","../../../projects/angular/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular/src/lib/components/spinner/spinner.component.ts","../../../projects/angular/src/lib/components/toggle-group/toggle-group.component.ts","../../../projects/angular/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular/src/lib/components/sidebar/sidebar.component.ts","../../../projects/angular/src/lib/components/icon/icon.component.ts","../../../projects/angular/src/lib/components/slider/slider.component.ts","../../../projects/angular/src/lib/components/drawer/drawer.component.ts","../../../projects/angular/src/lib/components/combobox/combobox.component.ts","../../../projects/angular/src/lib/components/file-upload/file-upload.component.ts","../../../projects/angular/src/lib/components/select-menu/select-menu.component.ts","../../../projects/angular/src/lib/components/navbar/navbar.component.ts","../../../projects/angular/src/lib/components/popover/popover.component.ts","../../../projects/angular/src/lib/components/banner/banner.component.ts","../../../projects/angular/src/lib/components/skip-link/skip-link.component.ts","../../../projects/angular/src/lib/components/empty-state/empty-state.component.ts","../../../projects/angular/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular/src/lib/components/divider/divider.component.ts","../../../projects/angular/src/lib/components/field/field.component.ts","../../../projects/angular/src/lib/components/table/table.component.ts","../../../projects/angular/src/lib/components/index.ts","../../../projects/angular/src/lib/pipes/format-label.pipe.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/neuravision-ng-construct.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n} from '@angular/core';\n\nexport type AfAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Alert component for displaying contextual feedback messages.\n *\n * Automatically assigns the appropriate ARIA role based on variant:\n * - `danger` / `warning` → `role=\"alert\"` (assertive announcement)\n * - `info` / `success` → `role=\"status\"` (polite announcement)\n *\n * @example\n * <af-alert variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismiss()\">\n * <span icon>⚠</span>\n * <span title>Action required</span>\n * Please review the pending changes before continuing.\n * <div actions>\n * <button class=\"ct-button ct-button--secondary ct-button--sm\">Review</button>\n * </div>\n * </af-alert>\n */\n@Component({\n selector: 'af-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (visible()) {\n <div\n [class]=\"alertClasses()\"\n [attr.data-variant]=\"variant()\"\n [attr.role]=\"alertRole()\">\n <span class=\"ct-alert__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\" />\n </span>\n <div class=\"ct-alert__content\">\n <div class=\"ct-alert__title\">\n <ng-content select=\"[title]\" />\n </div>\n <div class=\"ct-alert__description\">\n <ng-content />\n </div>\n <div class=\"ct-alert__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"af-alert__dismiss\"\n aria-label=\"Dismiss alert\"\n (click)=\"dismiss()\">\n ×\n </button>\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n\n .ct-alert--dismissible {\n position: relative;\n padding-right: 2.5rem;\n }\n\n .af-alert__dismiss {\n position: absolute;\n top: 0.625rem;\n right: 0.625rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: none;\n background: none;\n border-radius: var(--radius-sm, 0.25rem);\n color: var(--color-text-secondary);\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n }\n\n .af-alert__dismiss:hover {\n color: var(--color-text-primary);\n }\n\n .af-alert__dismiss:focus-visible {\n outline: 2px solid var(--ct-alert-accent, var(--color-brand-primary));\n outline-offset: 2px;\n }\n `,\n ],\n})\nexport class AfAlertComponent {\n /** Color variant determining the alert's visual style and ARIA role */\n variant = input<AfAlertVariant>('info');\n\n /** Whether the alert can be dismissed by the user */\n dismissible = input(false);\n\n /** Emits when the user dismisses the alert */\n dismissed = output<void>();\n\n /** Controls alert visibility */\n visible = signal(true);\n\n alertClasses = computed(() => {\n const classes = ['ct-alert'];\n if (this.dismissible()) {\n classes.push('ct-alert--dismissible');\n }\n return classes.join(' ');\n });\n\n /**\n * Maps variant to ARIA role:\n * - danger/warning → 'alert' (assertive, immediate announcement)\n * - info/success → 'status' (polite, non-intrusive announcement)\n */\n alertRole = computed(() => {\n const v = this.variant();\n return v === 'danger' || v === 'warning' ? 'alert' : 'status';\n });\n\n /** Hides the alert and emits the dismissed event */\n dismiss(): void {\n this.visible.set(false);\n this.dismissed.emit();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n booleanAttribute,\n input,\n model,\n computed,\n contentChildren,\n effect,\n ElementRef,\n viewChild,\n inject,\n forwardRef,\n} from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * Individual accordion item used within af-accordion.\n *\n * @example\n * <af-accordion-item heading=\"Section Title\">\n * <p>Content goes here</p>\n * </af-accordion-item>\n */\n@Component({\n selector: 'af-accordion-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <details\n #details\n class=\"ct-accordion__item\"\n [open]=\"expanded()\"\n (toggle)=\"onToggle($event)\">\n <summary\n class=\"ct-accordion__trigger\"\n [attr.id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onClick($event)\">\n <span class=\"ct-accordion__heading\">{{ heading() }}</span>\n <svg\n class=\"ct-accordion__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </summary>\n <div\n class=\"ct-accordion__content\"\n role=\"region\"\n [attr.id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\">\n <ng-content></ng-content>\n </div>\n </details>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfAccordionItemComponent {\n private itemId = nextId++;\n private accordion = inject(forwardRef(() => AfAccordionComponent), { optional: true });\n\n /** Heading text displayed in the accordion trigger. */\n heading = input.required<string>();\n\n /** Whether this item is expanded (supports two-way binding). */\n expanded = model(false);\n\n /** Whether this item is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n detailsRef = viewChild.required<ElementRef<HTMLDetailsElement>>('details');\n\n triggerId = computed(() => `af-accordion-trigger-${this.itemId}`);\n panelId = computed(() => `af-accordion-panel-${this.itemId}`);\n\n /** Sync signal when the native details state diverges (e.g. programmatic open). */\n onToggle(event: Event): void {\n const details = event.target as HTMLDetailsElement;\n if (details.open !== this.expanded()) {\n this.expanded.set(details.open);\n if (details.open) {\n this.accordion?.onItemExpanded(this);\n }\n }\n }\n\n /**\n * Prevent native details toggle and manage state via signals\n * so the expanded signal is always the source of truth.\n */\n onClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.disabled()) return;\n const willExpand = !this.expanded();\n this.expanded.set(willExpand);\n if (willExpand) {\n this.accordion?.onItemExpanded(this);\n }\n }\n\n /** Programmatically collapse this item. */\n collapse(): void {\n this.expanded.set(false);\n }\n\n /** Focus the trigger (summary) element. */\n focusTrigger(): void {\n this.detailsRef().nativeElement.querySelector('summary')?.focus();\n }\n}\n\n/**\n * Accordion container that manages expand/collapse behaviour of child items.\n *\n * @example\n * <af-accordion>\n * <af-accordion-item heading=\"Section 1\">Content 1</af-accordion-item>\n * <af-accordion-item heading=\"Section 2\">Content 2</af-accordion-item>\n * </af-accordion>\n *\n * @example Single-expand mode\n * <af-accordion [multi]=\"false\">\n * <af-accordion-item heading=\"Only one open\">Content</af-accordion-item>\n * </af-accordion>\n */\n@Component({\n selector: 'af-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'handleKeydown($event)',\n },\n template: `\n <div [class]=\"accordionClasses()\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfAccordionComponent {\n /** Allow multiple items to be open at the same time (default: true). */\n multi = input(true, { transform: booleanAttribute });\n\n /** Use the bordered variant. */\n bordered = input(false, { transform: booleanAttribute });\n\n items = contentChildren(AfAccordionItemComponent);\n\n accordionClasses = computed(() => {\n const classes = ['ct-accordion'];\n if (this.bordered()) {\n classes.push('ct-accordion--bordered');\n }\n return classes.join(' ');\n });\n\n /**\n * Enforce single-expand constraint when `multi` is false\n * and multiple items are initially expanded.\n */\n private enforceConstraint = effect(() => {\n if (this.multi()) return;\n const expanded = this.items().filter((i) => i.expanded());\n if (expanded.length > 1) {\n for (let i = 1; i < expanded.length; i++) {\n expanded[i].collapse();\n }\n }\n });\n\n /** Called by child items when they expand. */\n onItemExpanded(expandedItem: AfAccordionItemComponent): void {\n if (this.multi()) return;\n for (const item of this.items()) {\n if (item !== expandedItem && item.expanded()) {\n item.collapse();\n }\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const target = event.target as HTMLElement;\n if (target.tagName !== 'SUMMARY') return;\n\n const enabledItems = this.items().filter((i) => !i.disabled());\n if (enabledItems.length === 0) return;\n\n const currentIndex = enabledItems.findIndex(\n (item) => item.detailsRef().nativeElement.querySelector('summary') === target,\n );\n if (currentIndex === -1) return;\n\n const last = enabledItems.length - 1;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n enabledItems[(currentIndex + 1) % enabledItems.length].focusTrigger();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n enabledItems[(currentIndex - 1 + enabledItems.length) % enabledItems.length].focusTrigger();\n break;\n }\n case 'Home': {\n event.preventDefault();\n enabledItems[0].focusTrigger();\n break;\n }\n case 'End': {\n event.preventDefault();\n enabledItems[last].focusTrigger();\n break;\n }\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n} from '@angular/core';\n\nexport type AfAvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type AfAvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n/**\n * Avatar component displaying a user image with fallback to initials.\n *\n * When `src` is provided the component renders an `<img>`. If the image\n * fails to load or no `src` is given, initials derived from `name` are\n * shown instead.\n *\n * @example\n * <af-avatar src=\"/photo.jpg\" name=\"Jane Doe\" alt=\"Jane Doe\" size=\"lg\" />\n * <af-avatar name=\"John Smith\" status=\"online\" />\n */\n@Component({\n selector: 'af-avatar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"avatarClasses()\" role=\"img\" [attr.aria-label]=\"ariaLabel()\">\n @if (showImage()) {\n <img\n class=\"ct-avatar__image\"\n [src]=\"src()\"\n [alt]=\"alt() || name()\"\n (error)=\"onImageError()\" />\n } @else {\n <span class=\"ct-avatar__initials\" aria-hidden=\"true\">{{ initials() }}</span>\n }\n @if (status()) {\n <span\n class=\"ct-avatar__status\"\n [attr.data-status]=\"status()\"\n [attr.aria-label]=\"status() + ' status'\"\n role=\"img\">\n </span>\n }\n </span>\n `,\n styles: [\n `\n :host {\n display: inline-block;\n }\n `,\n ],\n})\nexport class AfAvatarComponent {\n /** Image URL. Falls back to initials when missing or on load error. */\n src = input('');\n\n /** Full name used to compute initials and as default alt text. */\n name = input('');\n\n /** Size variant. */\n size = input<AfAvatarSize>('md');\n\n /** Alt text for the avatar image. Defaults to `name` if not set. */\n alt = input('');\n\n /** Online status indicator. */\n status = input<AfAvatarStatus | undefined>(undefined);\n\n /** Tracks whether the image failed to load. */\n imageError = signal(false);\n\n /** Whether to render the `<img>` element. */\n showImage = computed(() => !!this.src() && !this.imageError());\n\n /** Initials derived from the first letter of each word in `name`. */\n initials = computed(() => {\n const parts = this.name().trim().split(/\\s+/);\n if (parts.length === 0 || parts[0] === '') return '';\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase();\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();\n });\n\n /** Accessible label for the avatar. */\n ariaLabel = computed(() => this.alt() || this.name() || 'Avatar');\n\n avatarClasses = computed(() => {\n const classes = ['ct-avatar'];\n if (this.size() !== 'md') {\n classes.push(`ct-avatar--${this.size()}`);\n }\n return classes.join(' ');\n });\n\n /** Handles image load failure by switching to initials fallback. */\n onImageError(): void {\n this.imageError.set(true);\n }\n}\n","import { Component, ChangeDetectionStrategy, booleanAttribute, input, output, computed } from '@angular/core';\n\nexport type AfButtonVariant = 'primary' | 'secondary' | 'ghost' | 'outline' | 'danger' | 'accent' | 'link';\nexport type AfButtonSize = 'sm' | 'md' | 'lg';\nexport type AfButtonType = 'button' | 'submit' | 'reset';\n\n/**\n * Button component from the Construct Design System\n *\n * @example\n * <af-button variant=\"primary\" (clicked)=\"handleClick()\">Click me</af-button>\n *\n * @example Icon-only button\n * <af-button variant=\"ghost\" size=\"sm\" iconOnly ariaLabel=\"Delete item\">\n * <af-icon name=\"delete\" />\n * </af-button>\n */\n@Component({\n selector: 'af-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [class]=\"buttonClasses()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.title]=\"title() || null\"\n (click)=\"handleClick($event)\">\n <ng-content></ng-content>\n </button>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfButtonComponent {\n /** Button variant/style */\n variant = input<AfButtonVariant>('primary');\n\n /** Button size */\n size = input<AfButtonSize>('md');\n\n /** Button type attribute */\n type = input<AfButtonType>('button');\n\n /** Whether button is disabled */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether this is an icon-only button (no visible text) */\n iconOnly = input(false, { transform: booleanAttribute });\n\n /** Accessible label for icon-only buttons */\n ariaLabel = input('');\n\n /** Tooltip text shown on hover */\n title = input('');\n\n /** Click event emitter */\n clicked = output<MouseEvent>();\n\n buttonClasses = computed(() => {\n const classes = ['ct-button'];\n\n if (this.variant() !== 'primary') {\n classes.push(`ct-button--${this.variant()}`);\n }\n\n if (this.size() !== 'md') {\n classes.push(`ct-button--${this.size()}`);\n }\n\n if (this.iconOnly()) {\n classes.push('ct-button--icon');\n }\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.clicked.emit(event);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type AfInputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';\n\n/**\n * Input field component with form control support\n *\n * @example\n * <af-input\n * label=\"Email\"\n * type=\"email\"\n * placeholder=\"name@company.com\"\n * [(ngModel)]=\"email\"\n * hint=\"We will not share this.\"\n * ></af-input>\n *\n * @example\n * <af-input\n * label=\"Name\"\n * [error]=\"nameError\"\n * required\n * ></af-input>\n */\n@Component({\n selector: 'af-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfInputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n @if (iconPosition()) {\n <div class=\"ct-input-wrap\">\n @if (iconPosition() === 'left') {\n <span class=\"ct-input__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n <input\n [id]=\"inputId()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [class]=\"inputClasses()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n @if (iconPosition() === 'right') {\n <span class=\"ct-input__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n </div>\n }\n\n @if (!iconPosition()) {\n <input\n [id]=\"inputId()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n class=\"ct-input\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n }\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Input label */\n label = input('');\n\n /** Input type */\n type = input<AfInputType>('text');\n\n /** Placeholder text */\n placeholder = input('');\n\n /** Hint text shown below input */\n hint = input('');\n\n /** Error message - shows error state and message */\n error = input('');\n\n /** Whether input is required */\n required = input(false);\n\n /** Whether input is disabled */\n disabled = model(false);\n\n /** Icon position (if icon content is projected) */\n iconPosition = input<'left' | 'right' | null>(null);\n\n /** Unique input ID */\n inputId = input(`af-input-${AfInputComponent.nextId++}`);\n\n value = '';\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.inputId()}-hint`);\n\n errorId = computed(() => `${this.inputId()}-error`);\n\n inputClasses = computed(() => {\n const classes = ['ct-input'];\n if (this.iconPosition()) {\n classes.push('ct-input--with-icon');\n }\n return classes.join(' ');\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: string): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfSelectOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Select dropdown component with form control support\n *\n * @example\n * <af-select\n * label=\"Role\"\n * [options]=\"roleOptions\"\n * [(ngModel)]=\"selectedRole\"\n * hint=\"Choose your primary role\"\n * ></af-select>\n */\n@Component({\n selector: 'af-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSelectComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"selectId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <select\n [id]=\"selectId()\"\n class=\"ct-select\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\"\n >\n @if (placeholder()) {\n <option value=\"\" [disabled]=\"true\" [selected]=\"isPlaceholderSelected\">\n {{ placeholder() }}\n </option>\n }\n @for (option of options(); track option.value) {\n <option\n [selected]=\"isOptionSelected(option)\"\n [disabled]=\"option.disabled || false\"\n >\n {{ option.label }}\n </option>\n }\n </select>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Select label */\n label = input('');\n\n /** Placeholder option */\n placeholder = input('');\n\n /** Options array */\n options = input<AfSelectOption[]>([]);\n\n /** Hint text shown below select */\n hint = input('');\n\n /** Error message */\n error = input('');\n\n /** Whether select is required */\n required = input(false);\n\n /** Whether select is disabled */\n disabled = model(false);\n\n /** Value comparison function (for object values) */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique select ID */\n selectId = input(`af-select-${AfSelectComponent.nextId++}`);\n\n value: unknown = null;\n onChangeCallback: (value: unknown) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.selectId()}-hint`);\n\n errorId = computed(() => `${this.selectId()}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n get isPlaceholderSelected(): boolean {\n if (!this.placeholder()) return false;\n if (this.value === null || this.value === undefined || this.value === '') return true;\n return !this.hasMatchingOption();\n }\n\n private hasMatchingOption(): boolean {\n return this.options().some(option => this.compareWith()(option.value, this.value));\n }\n\n isOptionSelected(option: AfSelectOption): boolean {\n if (this.isPlaceholderSelected) return false;\n return this.compareWith()(option.value, this.value);\n }\n\n onChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const index = target.selectedIndex;\n const offset = this.placeholder() ? 1 : 0;\n\n if (this.placeholder() && index === 0) {\n this.value = null;\n this.onChangeCallback(null);\n return;\n }\n\n const option = this.options()[index - offset];\n const nextValue = option ? option.value : null;\n this.value = nextValue;\n this.onChangeCallback(nextValue);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: unknown): void {\n this.value = value ?? null;\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Textarea component with form control support\n *\n * @example\n * <af-textarea\n * label=\"Notes\"\n * placeholder=\"Enter your notes...\"\n * [(ngModel)]=\"notes\"\n * [rows]=\"5\"\n * ></af-textarea>\n */\n@Component({\n selector: 'af-textarea',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfTextareaComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"textareaId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <textarea\n [id]=\"textareaId()\"\n class=\"ct-textarea\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n ></textarea>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfTextareaComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Textarea label */\n label = input('');\n\n /** Placeholder text */\n placeholder = input('');\n\n /** Hint text shown below textarea */\n hint = input('');\n\n /** Error message */\n error = input('');\n\n /** Whether textarea is required */\n required = input(false);\n\n /** Whether textarea is disabled */\n disabled = model(false);\n\n /** Number of visible rows */\n rows = input(3);\n\n /** Unique textarea ID */\n textareaId = input(`af-textarea-${AfTextareaComponent.nextId++}`);\n\n value = '';\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.textareaId()}-hint`);\n\n errorId = computed(() => `${this.textareaId()}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.onChange(this.value);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: string): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Checkbox component with form control support\n *\n * Supports both ControlValueAccessor (reactive forms / ngModel) and\n * standalone usage via [(checked)] bindings (two-way via model).\n *\n * @example Reactive Forms\n * <af-checkbox formControlName=\"rememberMe\">Remember me</af-checkbox>\n *\n * @example Standalone with indeterminate (e.g. \"select all\" in tables)\n * <af-checkbox\n * [(checked)]=\"allSelected\"\n * [indeterminate]=\"hasPartialSelection()\"\n * (checkedChange)=\"onToggleAll($event)\">\n * </af-checkbox>\n */\n@Component({\n selector: 'af-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfCheckboxComponent),\n multi: true\n }\n ],\n template: `\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span class=\"ct-check__label\">\n <ng-content></ng-content>\n </span>\n </label>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfCheckboxComponent implements ControlValueAccessor {\n /** Whether checkbox is disabled */\n disabled = model(false);\n\n /** Whether checkbox shows indeterminate state (partial selection) */\n indeterminate = model(false);\n\n /** Checked state - supports two-way binding via [(checked)] */\n checked = model(false);\n\n private onChangeCallback: (value: boolean) => void = () => {};\n onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.indeterminate.set(false);\n this.onChangeCallback(target.checked);\n }\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// ── Radio Button ─────────────────────────────────────────────────────────────\n\n/**\n * Individual radio button. Use inside `af-radio-group` for full\n * accessibility, or standalone with its own `ControlValueAccessor`.\n *\n * @example\n * <af-radio-group ariaLabel=\"Plan\" name=\"plan\" [(ngModel)]=\"plan\">\n * <af-radio value=\"standard\">Standard</af-radio>\n * <af-radio value=\"premium\">Premium</af-radio>\n * </af-radio-group>\n */\n@Component({\n selector: 'af-radio',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfRadioComponent),\n multi: true,\n },\n ],\n template: `\n <label class=\"ct-radio\">\n <input\n #inputEl\n class=\"ct-radio__input\"\n type=\"radio\"\n [name]=\"resolvedName()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n [attr.tabindex]=\"resolvedTabindex()\"\n (change)=\"onChangeEvent()\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n (keydown)=\"onKeydown($event)\" />\n <span class=\"ct-radio__label\">\n <ng-content />\n </span>\n </label>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfRadioComponent implements ControlValueAccessor {\n private group = inject(forwardRef(() => AfRadioGroupComponent), { optional: true });\n\n /** Radio group name (only used without `af-radio-group`). */\n name = input('');\n\n /** Radio value. */\n value = input<unknown>(undefined);\n\n /** Whether this radio is disabled. */\n disabled = model(false);\n\n inputRef = viewChild.required<ElementRef<HTMLInputElement>>('inputEl');\n\n modelValue = signal<unknown>(undefined);\n onChangeCallback: (value: unknown) => void = () => {};\n onTouched: () => void = () => {};\n\n resolvedName = computed(() => this.group?.name() || this.name());\n\n isChecked = computed(() => {\n const selected = this.group ? this.group.selectedValue() : this.modelValue();\n return selected === this.value();\n });\n\n isDisabled = computed(() => {\n if (this.group?.disabled()) return true;\n return this.disabled();\n });\n\n resolvedTabindex = computed(() => {\n if (!this.group) return null;\n return this.group.tabindexFor(this);\n });\n\n /** Focuses the native input element. */\n focus(): void {\n this.inputRef().nativeElement.focus();\n }\n\n onChangeEvent(): void {\n if (this.group) {\n this.group.selectRadio(this);\n } else {\n this.modelValue.set(this.value());\n this.onChangeCallback(this.value());\n }\n }\n\n onFocus(): void {\n this.group?.onRadioFocus(this);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.group) {\n this.group.onRadioKeydown(event, this);\n }\n }\n\n writeValue(value: unknown): void {\n this.modelValue.set(value);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n\n// ── Radio Group ──────────────────────────────────────────────────────────────\n\n/**\n * Groups `af-radio` components with `role=\"radiogroup\"`, ARIA labeling,\n * roving tabindex, and arrow-key navigation per WAI-ARIA Radio Group Pattern.\n *\n * Implements `ControlValueAccessor` so the group value can be bound via\n * `[(ngModel)]` or reactive forms.\n *\n * @example\n * <af-radio-group ariaLabel=\"Select plan\" name=\"plan\" [(ngModel)]=\"plan\">\n * <af-radio value=\"standard\">Standard</af-radio>\n * <af-radio value=\"premium\">Premium</af-radio>\n * </af-radio-group>\n */\n@Component({\n selector: 'af-radio-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfRadioGroupComponent),\n multi: true,\n },\n ],\n template: `\n <div\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-disabled]=\"disabled() || null\">\n <ng-content />\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfRadioGroupComponent implements ControlValueAccessor {\n /** Shared `name` attribute for all child radios. */\n name = input.required<string>();\n\n /** Accessible label for the radio group. */\n ariaLabel = input('');\n\n /** ID of an external element labeling this group. */\n ariaLabelledBy = input('');\n\n /** Disables all radios in the group. */\n disabled = model(false);\n\n radios = contentChildren(AfRadioComponent);\n\n selectedValue = signal<unknown>(undefined);\n private focusedIndex = signal(0);\n\n private onChangeCallback: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n private syncEffect = effect(() => {\n const radios = this.radios();\n const value = this.selectedValue();\n const checkedIdx = radios.findIndex((r) => r.value() === value);\n this.focusedIndex.set(checkedIdx >= 0 ? checkedIdx : 0);\n });\n\n /** Returns the tabindex a child radio should use for roving tabindex. */\n tabindexFor(radio: AfRadioComponent): number {\n const radios = this.enabledRadios();\n const idx = radios.indexOf(radio);\n if (idx === -1) return -1;\n return idx === this.focusedIndex() ? 0 : -1;\n }\n\n /** Selects a radio and propagates the value. */\n selectRadio(radio: AfRadioComponent): void {\n const value = radio.value();\n this.selectedValue.set(value);\n this.onChangeCallback(value);\n this.onTouchedCallback();\n }\n\n /** Called when a child radio receives focus. */\n onRadioFocus(radio: AfRadioComponent): void {\n const idx = this.enabledRadios().indexOf(radio);\n if (idx >= 0) {\n this.focusedIndex.set(idx);\n }\n }\n\n /** Handles keyboard navigation within the group. */\n onRadioKeydown(event: KeyboardEvent, _current: AfRadioComponent): void {\n const enabled = this.enabledRadios();\n if (enabled.length === 0) return;\n\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n nextIndex = (this.focusedIndex() + 1) % enabled.length;\n break;\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n nextIndex = (this.focusedIndex() - 1 + enabled.length) % enabled.length;\n break;\n case 'Home':\n event.preventDefault();\n nextIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n nextIndex = enabled.length - 1;\n break;\n case ' ':\n event.preventDefault();\n this.selectRadio(enabled[this.focusedIndex()]);\n return;\n }\n\n if (nextIndex !== null) {\n this.focusedIndex.set(nextIndex);\n const target = enabled[nextIndex];\n target.focus();\n this.selectRadio(target);\n }\n }\n\n writeValue(value: unknown): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private enabledRadios(): AfRadioComponent[] {\n return this.radios().filter((r) => !r.isDisabled());\n }\n}\n","import { Component, ChangeDetectionStrategy, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Switch/Toggle component with form control support\n *\n * @example\n * <af-switch [(ngModel)]=\"autoRenew\">\n * Auto renew\n * </af-switch>\n */\n@Component({\n selector: 'af-switch',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSwitchComponent),\n multi: true\n }\n ],\n template: `\n <label class=\"ct-switch\">\n <input\n class=\"ct-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\" />\n <span class=\"ct-switch__label\">\n <ng-content></ng-content>\n </span>\n </label>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSwitchComponent implements ControlValueAccessor {\n /** Accessible label for icon-only or unlabeled switches. */\n ariaLabel = input('');\n\n /** Whether switch is disabled. */\n disabled = model(false);\n\n /** Checked state - supports two-way binding via [(checked)] */\n checked = model(false);\n\n private onChangeCallback: (value: boolean) => void = () => {};\n onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.onChangeCallback(target.checked);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n computed,\n contentChild,\n} from '@angular/core';\n\nexport type AfCardElevation = 'none' | 'sm' | 'md' | 'lg';\nexport type AfCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * Card component for containing content.\n *\n * When `interactive` is set the card becomes keyboard-accessible with\n * `role=\"button\"`, roving `tabindex`, and Enter/Space activation.\n *\n * @example\n * <af-card elevation=\"md\" padding=\"lg\">\n * <div header><h3>Title</h3></div>\n * <div body><p>Card content</p></div>\n * </af-card>\n *\n * <af-card interactive ariaLabel=\"Open project\" (cardClick)=\"open()\">\n * <p body>Click me</p>\n * </af-card>\n */\n@Component({\n selector: 'af-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section\n [class]=\"cardClasses()\"\n [style]=\"cardStyles()\"\n [attr.role]=\"interactive() ? 'button' : null\"\n [attr.tabindex]=\"interactive() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"onCardClick()\"\n (keydown)=\"onCardKeydown($event)\">\n @if (hasHeader()) {\n <div class=\"ct-card__header\">\n <ng-content select=\"[header]\" />\n </div>\n }\n <div class=\"ct-card__body\">\n <ng-content select=\"[body]\" />\n <ng-content />\n </div>\n @if (hasFooter()) {\n <div class=\"ct-card__footer\">\n <ng-content select=\"[footer]\" />\n </div>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfCardComponent {\n /** Makes the card interactive (clickable, keyboard-accessible). */\n interactive = input(false);\n\n /** Shadow elevation level. */\n elevation = input<AfCardElevation | null>(null);\n\n /** Content padding level. */\n padding = input<AfCardPadding | null>(null);\n\n /** Accessible label for interactive cards. */\n ariaLabel = input('');\n\n /** Emitted when an interactive card is activated (click, Enter, or Space). */\n cardClick = output<void>();\n\n private headerRef = contentChild('[header]', { read: ElementRef });\n private footerRef = contentChild('[footer]', { read: ElementRef });\n hasHeader = computed(() => !!this.headerRef());\n hasFooter = computed(() => !!this.footerRef());\n\n private static readonly ELEVATION_MAP: Record<AfCardElevation, string> = {\n none: 'none',\n sm: '0 1px 3px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.08)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.12)',\n };\n\n private static readonly PADDING_MAP: Record<AfCardPadding, string> = {\n none: '0',\n sm: 'var(--space-3, 0.75rem)',\n md: 'var(--space-5, 1.25rem)',\n lg: 'var(--space-7, 2rem)',\n };\n\n cardClasses = computed(() => {\n const classes = ['ct-card'];\n if (this.interactive()) {\n classes.push('ct-card--interactive');\n }\n return classes.join(' ');\n });\n\n cardStyles = computed(() => {\n const styles: string[] = [];\n if (this.elevation() !== null) {\n styles.push(`box-shadow: ${AfCardComponent.ELEVATION_MAP[this.elevation()!]}`);\n }\n if (this.padding() !== null) {\n styles.push(`--ct-card-padding: ${AfCardComponent.PADDING_MAP[this.padding()!]}`);\n }\n return styles.join('; ');\n });\n\n onCardClick(): void {\n if (this.interactive()) {\n this.cardClick.emit();\n }\n }\n\n onCardKeydown(event: KeyboardEvent): void {\n if (!this.interactive()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClick.emit();\n }\n }\n}\n","import { Directive, TemplateRef, input, inject } from '@angular/core';\n\n/**\n * Directive for defining custom cell templates in AfDataTableComponent.\n *\n * @example\n * <af-data-table [data]=\"items\" [columns]=\"columns\">\n * <ng-template afCellDef=\"status\" let-row>\n * <af-badge [variant]=\"getVariant(row.status)\">{{ row.status }}</af-badge>\n * </ng-template>\n * <ng-template afCellDef=\"actions\" let-row>\n * <af-button variant=\"ghost\" iconOnly (clicked)=\"onEdit(row)\">\n * <af-icon name=\"edit\" />\n * </af-button>\n * </ng-template>\n * </af-data-table>\n */\n@Directive({\n selector: '[afCellDef]'\n})\nexport class AfCellDefDirective {\n /** Column key this template applies to */\n columnKey = input('', { alias: 'afCellDef' });\n\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import {\n Component,\n TemplateRef,\n input,\n output,\n computed,\n effect,\n contentChildren,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { AfCellDefDirective } from './cell-def.directive';\n\nexport interface AfColumn {\n key: string;\n header: string;\n sortable?: boolean;\n /** CSS class(es) for the cell */\n cellClass?: string;\n}\n\nexport interface AfDataTableConfig {\n striped?: boolean;\n compact?: boolean;\n /** Whether to show the selection checkbox column */\n selectable?: boolean;\n}\n\n/** Row type for the data table — uses `any` values to allow typed interfaces without index signatures. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AfDataRow = Record<string, any>;\n\nexport type AfSortDirection = 'asc' | 'desc';\n\nexport interface AfSortState {\n key: string;\n direction: AfSortDirection;\n}\n\n/**\n * Data table with sorting, selection, and custom cell templates.\n *\n * @example\n * <af-data-table\n * [data]=\"items()\"\n * [columns]=\"columns\"\n * [config]=\"{ striped: true, selectable: true }\"\n * rowId=\"id\"\n * (sortChange)=\"onSort($event)\"\n * (selectionChange)=\"onSelect($event)\">\n *\n * <ng-template afCellDef=\"status\" let-row>\n * <af-badge [variant]=\"getVariant(row.status)\">\n * {{ row.status | afFormatLabel }}\n * </af-badge>\n * </ng-template>\n *\n * <ng-template afCellDef=\"actions\" let-row>\n * <af-button variant=\"ghost\" iconOnly (clicked)=\"onDelete(row)\">\n * <af-icon name=\"delete\" />\n * </af-button>\n * </ng-template>\n * </af-data-table>\n */\n@Component({\n selector: 'af-data-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.css'\n})\nexport class AfDataTableComponent {\n data = input<AfDataRow[]>([]);\n columns = input<AfColumn[]>([]);\n config = input<AfDataTableConfig>({ striped: true, compact: true });\n\n /** Sort state (controlled). */\n sort = input<AfSortState | null>(null);\n\n /** Row id key or accessor for stable selection. */\n rowId = input<string | ((row: AfDataRow) => string | number) | null>(null);\n\n rowClick = output<AfDataRow>();\n selectionChange = output<AfDataRow[]>();\n sortChange = output<AfSortState | null>();\n\n cellDefs = contentChildren(AfCellDefDirective);\n\n private selectedRowIds = new Set<unknown>();\n private internalSort: AfSortState | null = null;\n private cellTemplateMap = new Map<string, TemplateRef<unknown>>();\n\n allSelected = false;\n someSelected = false;\n\n private cellDefsEffect = effect(() => {\n const defs = this.cellDefs();\n this.cellTemplateMap.clear();\n defs.forEach(def => {\n this.cellTemplateMap.set(def.columnKey(), def.templateRef);\n });\n });\n\n private dataEffect = effect(() => {\n this.data();\n this.rowId();\n this.syncSelectionWithData();\n this.updateSelectionState();\n });\n\n isSelectable = computed(() => {\n return this.config().selectable !== false;\n });\n\n tableClasses = computed(() => {\n const classes = ['ct-table'];\n if (this.config().striped) classes.push('ct-table--striped');\n if (this.config().compact) classes.push('ct-table--compact');\n return classes.join(' ');\n });\n\n sortedData = computed(() => {\n const sort = this.activeSort();\n if (!sort) return [...this.data()];\n if (!this.columns().some(column => column.key === sort.key)) return [...this.data()];\n const sorted = [...this.data()];\n sorted.sort((a, b) => this.compareValues(a?.[sort.key], b?.[sort.key], sort.direction));\n return sorted;\n });\n\n activeSort = computed(() => {\n return this.sort() ?? this.internalSort;\n });\n\n /** Returns the custom cell template for a column, or null for default rendering. */\n getCellTemplate(columnKey: string): TemplateRef<unknown> | null {\n return this.cellTemplateMap.get(columnKey) ?? null;\n }\n\n getAriaSort(column: AfColumn): string | null {\n if (!column.sortable) return null;\n const sort = this.activeSort();\n if (!sort || sort.key !== column.key) return 'none';\n return sort.direction === 'asc' ? 'ascending' : 'descending';\n }\n\n toggleSort(column: AfColumn): void {\n if (!column.sortable) return;\n const current = this.activeSort();\n let next: AfSortState | null;\n\n if (!current || current.key !== column.key) {\n next = { key: column.key, direction: 'asc' };\n } else if (current.direction === 'asc') {\n next = { key: column.key, direction: 'desc' };\n } else {\n next = null;\n }\n\n if (this.sort()) {\n this.sortChange.emit(next);\n } else {\n this.internalSort = next;\n this.sortChange.emit(next);\n }\n }\n\n onRowClick(row: AfDataRow): void {\n this.rowClick.emit(row);\n }\n\n toggleSelection(row: AfDataRow, event: Event): void {\n event.stopPropagation();\n const rowId = this.getRowId(row);\n if (this.selectedRowIds.has(rowId)) {\n this.selectedRowIds.delete(rowId);\n } else {\n this.selectedRowIds.add(rowId);\n }\n this.updateSelectionState();\n this.selectionChange.emit(this.getSelectedRows());\n }\n\n toggleAll(checked: boolean): void {\n if (checked) {\n this.data().forEach(row => this.selectedRowIds.add(this.getRowId(row)));\n } else {\n this.selectedRowIds.clear();\n }\n this.updateSelectionState();\n this.selectionChange.emit(this.getSelectedRows());\n }\n\n isSelected(row: AfDataRow): boolean {\n return this.selectedRowIds.has(this.getRowId(row));\n }\n\n private updateSelectionState(): void {\n const data = this.data();\n const hasData = data.length > 0;\n const selectedCount = data.filter(row => this.selectedRowIds.has(this.getRowId(row))).length;\n this.allSelected = hasData && selectedCount === data.length;\n this.someSelected = hasData && selectedCount > 0 && selectedCount < data.length;\n }\n\n private getRowId(row: AfDataRow): unknown {\n const rowId = this.rowId();\n if (typeof rowId === 'function') {\n return rowId(row);\n }\n if (typeof rowId === 'string' && row && row[rowId] !== undefined) {\n return row[rowId];\n }\n return row;\n }\n\n private getSelectedRows(): AfDataRow[] {\n return this.data().filter(row => this.selectedRowIds.has(this.getRowId(row)));\n }\n\n private syncSelectionWithData(): void {\n if (!this.rowId()) {\n this.selectedRowIds.clear();\n return;\n }\n const validIds = new Set(this.data().map(row => this.getRowId(row)));\n this.selectedRowIds.forEach(id => {\n if (!validIds.has(id)) {\n this.selectedRowIds.delete(id);\n }\n });\n }\n\n private compareValues(a: unknown, b: unknown, direction: AfSortDirection): number {\n const sortFactor = direction === 'asc' ? 1 : -1;\n if (a == null && b == null) return 0;\n if (a == null) return 1 * sortFactor;\n if (b == null) return -1 * sortFactor;\n\n if (typeof a === 'number' && typeof b === 'number') {\n return (a - b) * sortFactor;\n }\n if (a instanceof Date && b instanceof Date) {\n return (a.getTime() - b.getTime()) * sortFactor;\n }\n\n return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' }) * sortFactor;\n }\n}\n","<div class=\"ct-data-table ct-data-table--simple\">\n <div class=\"ct-data-table__table\">\n <table [class]=\"tableClasses()\">\n <thead>\n <tr>\n @if (isSelectable()) {\n <th scope=\"col\" class=\"ct-table__cell--checkbox\">\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"toggleAll($any($event.target).checked)\"\n aria-label=\"Select all rows\" />\n </label>\n </th>\n }\n @for (col of columns(); track col.key) {\n <th scope=\"col\" [attr.aria-sort]=\"getAriaSort(col)\">\n @if (col.sortable) {\n <button class=\"ct-table__sort\" type=\"button\" (click)=\"toggleSort(col)\">\n {{ col.header }}\n <span class=\"ct-table__sort-indicator\" aria-hidden=\"true\"></span>\n </button>\n } @else {\n {{ col.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of sortedData(); track row) {\n <tr (click)=\"onRowClick(row)\">\n @if (isSelectable()) {\n <td class=\"ct-table__cell--checkbox\">\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (change)=\"toggleSelection(row, $event)\"\n aria-label=\"Select row\" />\n </label>\n </td>\n }\n @for (col of columns(); track col.key) {\n <td [class]=\"col.cellClass || ''\">\n @if (getCellTemplate(col.key); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl; context: { $implicit: row, column: col }\"></ng-container>\n } @else {\n {{ row[col.key] }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n</div>\n","const FOCUSABLE_SELECTORS = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\n/**\n * Manages focus trapping within a container element.\n *\n * Handles Tab/Shift+Tab cycling, save/restore of the previously focused\n * element, and initial focus placement. Create one instance per overlay\n * (modal, drawer, popover, etc.).\n */\nexport class FocusTrap {\n private previousActiveElement: HTMLElement | null = null;\n\n /** Saves the currently focused element for later restoration. */\n saveFocus(): void {\n this.previousActiveElement = document.activeElement as HTMLElement;\n }\n\n /** Restores focus to the element saved via `saveFocus()`. */\n restoreFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = null;\n }\n }\n\n /** Overrides the saved focus target (e.g. to return focus to a specific trigger). */\n setReturnFocus(element: HTMLElement): void {\n this.previousActiveElement = element;\n }\n\n /**\n * Focuses the first focusable element inside the container,\n * or the fallback element if no focusable children exist.\n */\n focusFirst(container: HTMLElement | null | undefined, fallback?: HTMLElement | null): void {\n const elements = queryFocusableElements(container);\n const first = elements[0];\n if (first) {\n first.focus();\n } else {\n fallback?.focus();\n }\n }\n\n /**\n * Handles a Tab keydown event to trap focus within the container.\n * Call this from a `(keydown)` handler when the key is `Tab`.\n */\n handleTab(\n event: KeyboardEvent,\n container: HTMLElement | null | undefined,\n fallback?: HTMLElement | null,\n ): void {\n const elements = queryFocusableElements(container);\n\n if (elements.length === 0) {\n event.preventDefault();\n fallback?.focus();\n return;\n }\n\n const first = elements[0];\n const last = elements[elements.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey && active === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n\n/** Queries all visible, enabled, focusable elements within a container. */\nfunction queryFocusableElements(container: HTMLElement | null | undefined): HTMLElement[] {\n if (!container) return [];\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS),\n ).filter(\n (el) =>\n !el.hasAttribute('disabled') &&\n el.getAttribute('aria-hidden') !== 'true',\n );\n}\n","import { Component, ChangeDetectionStrategy, ElementRef, OnDestroy, AfterViewInit, input, output, signal, computed, effect, viewChild, contentChild } from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\n/**\n * Modal/Dialog component with accessibility features\n *\n * @example\n * <af-modal\n * [open]=\"isOpen\"\n * title=\"Confirm action\"\n * (closed)=\"handleClose()\">\n * <div body>\n * <p>Are you sure?</p>\n * </div>\n * <div footer>\n * <button (click)=\"cancel()\">Cancel</button>\n * <button (click)=\"confirm()\">Confirm</button>\n * </div>\n * </af-modal>\n */\n@Component({\n selector: 'af-modal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'onEscapeKey()',\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n @if (open()) {\n <div\n class=\"ct-modal\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"onBackdropClick($event)\">\n <div\n #dialog\n class=\"ct-modal__dialog\"\n tabindex=\"-1\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ct-modal__header\">\n <h2 [id]=\"titleId\">{{ title() }}</h2>\n @if (showCloseButton()) {\n <button\n class=\"ct-button ct-button--ghost\"\n aria-label=\"Close\"\n (click)=\"close()\">\n ×\n </button>\n }\n </div>\n <div class=\"ct-modal__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n @if (hasFooter()) {\n <div class=\"ct-modal__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n }\n </div>\n </div>\n }\n `,\n styles: [`\n :host {\n display: contents;\n }\n `]\n})\nexport class AfModalComponent implements OnDestroy, AfterViewInit {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Whether modal is open */\n open = input(false);\n\n /** Modal title */\n title = input('');\n\n /** Whether to show close button */\n showCloseButton = input(true);\n\n /** Whether clicking backdrop closes modal */\n closeOnBackdropClick = input(true);\n\n /** Close event emitter */\n closed = output<void>();\n\n /** Unique title ID for aria-labelledby */\n titleId = `af-modal-title-${AfModalComponent.nextId++}`;\n\n private footerRef = contentChild('[footer]', { read: ElementRef });\n hasFooter = computed(() => !!this.footerRef());\n\n private viewInitialized = signal(false);\n\n dialogRef = viewChild<ElementRef<HTMLElement>>('dialog');\n\n private openEffect = effect(() => {\n const isOpen = this.open();\n const initialized = this.viewInitialized();\n if (isOpen && initialized) {\n this.onOpen();\n } else if (!isOpen) {\n this.focusTrap.restoreFocus();\n }\n });\n\n ngAfterViewInit(): void {\n this.viewInitialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.focusTrap.restoreFocus();\n }\n\n onEscapeKey(): void {\n if (this.open()) {\n this.close();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open() || event.key !== 'Tab') return;\n this.focusTrap.handleTab(event, this.dialogRef()?.nativeElement, this.dialogRef()?.nativeElement);\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n close(): void {\n this.closed.emit();\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n queueMicrotask(() => {\n if (!this.open()) return;\n this.focusTrap.focusFirst(this.dialogRef()?.nativeElement, this.dialogRef()?.nativeElement);\n });\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type AfToastVariant = 'info' | 'success' | 'warning' | 'error';\n\nexport interface AfToast {\n id: string;\n title: string;\n description?: string;\n variant?: AfToastVariant;\n duration?: number;\n action?: {\n label: string;\n callback: () => void;\n };\n}\n\n/**\n * Toast notification service\n *\n * @example\n * const toast = inject(AfToastService);\n *\n * showSuccess() {\n * this.toast.success('Saved', 'Your changes were saved successfully.');\n * }\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AfToastService {\n private toastsSignal = signal<AfToast[]>([]);\n private nextId = 0;\n\n /** Reactive signal for toast list */\n toasts = this.toastsSignal.asReadonly();\n\n /**\n * Show a toast notification\n */\n show(toast: Omit<AfToast, 'id'>): string {\n const id = `toast-${this.nextId++}`;\n const newToast: AfToast = {\n id,\n variant: 'info',\n duration: 5000,\n ...toast\n };\n\n this.toastsSignal.update(toasts => [...toasts, newToast]);\n\n if (newToast.duration && newToast.duration > 0) {\n setTimeout(() => this.dismiss(id), newToast.duration);\n }\n\n return id;\n }\n\n /**\n * Show success toast\n */\n success(title: string, description?: string): string {\n return this.show({ title, description, variant: 'success' });\n }\n\n /**\n * Show error toast\n */\n error(title: string, description?: string): string {\n return this.show({ title, description, variant: 'error' });\n }\n\n /**\n * Show warning toast\n */\n warning(title: string, description?: string): string {\n return this.show({ title, description, variant: 'warning' });\n }\n\n /**\n * Show info toast\n */\n info(title: string, description?: string): string {\n return this.show({ title, description, variant: 'info' });\n }\n\n /**\n * Dismiss a toast by ID\n */\n dismiss(id: string): void {\n this.toastsSignal.update(toasts => toasts.filter(t => t.id !== id));\n }\n\n /**\n * Clear all toasts\n */\n clear(): void {\n this.toastsSignal.set([]);\n }\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { AfToastService, AfToast } from '../../services/toast.service';\n\n/**\n * Toast notification container component\n * Place once in your app root template\n *\n * @example\n * <!-- app.component.html -->\n * <ct-toast-container></ct-toast-container>\n */\n@Component({\n selector: 'af-toast-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-toast-region\" aria-live=\"polite\" aria-atomic=\"false\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div\n class=\"ct-toast\"\n [attr.data-variant]=\"toast.variant\"\n [attr.data-state]=\"'open'\"\n role=\"status\">\n <div class=\"ct-toast__title\">{{ toast.title }}</div>\n @if (toast.description) {\n <div class=\"ct-toast__description\">\n {{ toast.description }}\n </div>\n }\n @if (toast.action) {\n <button\n class=\"ct-button ct-button--ghost\"\n (click)=\"handleAction(toast)\">\n {{ toast.action.label }}\n </button>\n }\n <button\n class=\"ct-button ct-button--ghost\"\n aria-label=\"Close\"\n (click)=\"toastService.dismiss(toast.id)\">\n ×\n </button>\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: contents;\n }\n `]\n})\nexport class AfToastContainerComponent {\n toastService = inject(AfToastService);\n\n handleAction(toast: AfToast): void {\n if (toast.action) {\n toast.action.callback();\n this.toastService.dismiss(toast.id);\n }\n }\n}\n","import { Component, contentChildren, viewChildren, ElementRef, effect, input, output, model, ChangeDetectionStrategy } from '@angular/core';\n\nexport interface AfTab {\n id: string;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Tab panel component (used within af-tabs)\n */\n@Component({\n selector: 'af-tab-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n class=\"ct-tabs__panel\"\n role=\"tabpanel\"\n [attr.id]=\"'panel-' + id()\"\n [attr.aria-labelledby]=\"'tab-' + id()\">\n <ng-content></ng-content>\n </div>\n }\n `\n})\nexport class AfTabPanelComponent {\n private static nextId = 0;\n\n id = model('');\n label = input('');\n isActive = model(false);\n disabled = input(false);\n\n ensureId(): string {\n if (!this.id()) {\n this.id.set(`af-tab-${AfTabPanelComponent.nextId++}`);\n }\n return this.id();\n }\n}\n\n/**\n * Tabs component for organizing content into panels\n *\n * @example\n * <af-tabs [(activeTab)]=\"activeTab\">\n * <af-tab-panel id=\"overview\" label=\"Overview\">\n * <p>Overview content</p>\n * </af-tab-panel>\n * <af-tab-panel id=\"settings\" label=\"Settings\">\n * <p>Settings content</p>\n * </af-tab-panel>\n * </af-tabs>\n */\n@Component({\n selector: 'af-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-tabs\">\n <div class=\"ct-tabs__list\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <button\n #tabButton\n class=\"ct-tabs__trigger\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab() === tab.id\"\n [attr.aria-controls]=\"'panel-' + tab.id\"\n [attr.id]=\"'tab-' + tab.id\"\n [attr.tabindex]=\"activeTab() === tab.id ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [attr.data-tab-id]=\"tab.id\"\n type=\"button\"\n (click)=\"selectTab(tab.id)\"\n (keydown)=\"onKeydown($event, tab.id)\">\n {{ tab.label }}\n </button>\n }\n </div>\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfTabsComponent {\n /** Array of tabs (generated from projected tab panels) */\n tabs: AfTab[] = [];\n\n /** Currently active tab ID (two-way bound) */\n activeTab = model('');\n\n panels = contentChildren(AfTabPanelComponent);\n tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n private panelsEffect = effect(() => {\n this.syncTabsFromPanels();\n });\n\n selectTab(id: string): void {\n if (this.activeTab() !== id) {\n this.activeTab.set(id);\n this.syncActivePanel();\n }\n }\n\n onKeydown(event: KeyboardEvent, currentId: string): void {\n const enabledTabs = this.tabs.filter(tab => !tab.disabled);\n if (enabledTabs.length === 0) return;\n\n const currentIndex = enabledTabs.findIndex(tab => tab.id === currentId);\n const lastIndex = enabledTabs.length - 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown': {\n event.preventDefault();\n const next = enabledTabs[(currentIndex + 1) % enabledTabs.length];\n this.focusTab(next.id);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowUp': {\n event.preventDefault();\n const prev = enabledTabs[(currentIndex - 1 + enabledTabs.length) % enabledTabs.length];\n this.focusTab(prev.id);\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusTab(enabledTabs[0].id);\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusTab(enabledTabs[lastIndex].id);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n this.selectTab(currentId);\n break;\n }\n default:\n break;\n }\n }\n\n private syncTabsFromPanels(): void {\n const panels = this.panels();\n this.tabs = panels.map(panel => ({\n id: panel.ensureId(),\n label: panel.label() || panel.id(),\n disabled: panel.disabled()\n }));\n\n if (!this.activeTab() || !this.tabs.some(tab => tab.id === this.activeTab() && !tab.disabled)) {\n const firstEnabled = this.tabs.find(tab => !tab.disabled);\n if (firstEnabled) {\n this.activeTab.set(firstEnabled.id);\n }\n }\n\n this.syncActivePanel();\n }\n\n private syncActivePanel(): void {\n const panels = this.panels();\n if (!panels.length) return;\n panels.forEach(panel => {\n panel.isActive.set(panel.id() === this.activeTab());\n });\n }\n\n private focusTab(id: string): void {\n const button = this.tabButtons().find(ref => ref.nativeElement.dataset['tabId'] === id);\n button?.nativeElement.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\n\nexport interface AfDropdownItem {\n label: string;\n value: unknown;\n disabled?: boolean;\n separator?: boolean;\n}\n\n/**\n * Dropdown menu component implementing the WAI-ARIA Menu Pattern.\n *\n * Provides full keyboard navigation (Arrow keys, Home/End, type-ahead),\n * proper ARIA roles (`menu` / `menuitem`), and roving tabindex focus management.\n *\n * @example\n * <af-dropdown\n * label=\"Actions\"\n * [items]=\"menuItems\"\n * (itemSelected)=\"handleAction($event)\">\n * </af-dropdown>\n */\n@Component({\n selector: 'af-dropdown',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-dropdown\" [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <button\n #trigger\n class=\"ct-button ct-button--secondary ct-dropdown__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n aria-haspopup=\"menu\"\n type=\"button\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\">\n {{ label() }}\n </button>\n @if (isOpen()) {\n <div\n #menu\n class=\"ct-dropdown__menu\"\n [id]=\"menuId\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n [attr.aria-labelledby]=\"triggerId\"\n (keydown)=\"onMenuKeydown($event)\">\n @for (item of items(); track $index) {\n @if (item.separator) {\n <div class=\"ct-dropdown__separator\" role=\"separator\"></div>\n } @else {\n <button\n #itemButton\n class=\"ct-dropdown__item\"\n role=\"menuitem\"\n [attr.tabindex]=\"focusedItemIndex() === getActionableIndex(item) ? 0 : -1\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n type=\"button\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: inline-block;\n }\n `,\n ],\n})\nexport class AfDropdownComponent {\n private static nextId = 0;\n\n /** Dropdown button label. */\n label = input('Actions');\n\n /** Menu items. */\n items = input<AfDropdownItem[]>([]);\n\n /** Emits the selected item's value. */\n itemSelected = output<unknown>();\n\n triggerRef = viewChild<ElementRef<HTMLButtonElement>>('trigger');\n menuRef = viewChild<ElementRef<HTMLElement>>('menu');\n itemButtons = viewChildren<ElementRef<HTMLButtonElement>>('itemButton');\n\n isOpen = signal(false);\n focusedItemIndex = signal(0);\n\n private instanceId = AfDropdownComponent.nextId++;\n menuId = `af-dropdown-menu-${this.instanceId}`;\n triggerId = `af-dropdown-trigger-${this.instanceId}`;\n\n private typeAheadBuffer = '';\n private typeAheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n toggle(): void {\n if (this.isOpen()) {\n this.close(true);\n } else {\n this.open();\n }\n }\n\n selectItem(item: AfDropdownItem): void {\n if (!item.disabled) {\n this.itemSelected.emit(item.value);\n this.close(true);\n }\n }\n\n /** Handles keyboard events on the trigger button. */\n onTriggerKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open(true);\n }\n break;\n }\n }\n\n /** Handles keyboard events within the open menu. */\n onMenuKeydown(event: KeyboardEvent): void {\n const actionableItems = this.getActionableItems();\n if (actionableItems.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next = this.nextEnabledIndex(this.focusedItemIndex(), 1);\n this.focusItem(next);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const prev = this.nextEnabledIndex(this.focusedItemIndex(), -1);\n this.focusItem(prev);\n break;\n }\n case 'Home': {\n event.preventDefault();\n const first = this.nextEnabledIndex(-1, 1);\n this.focusItem(first);\n break;\n }\n case 'End': {\n event.preventDefault();\n const last = this.nextEnabledIndex(actionableItems.length, -1);\n this.focusItem(last);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close(true);\n break;\n case 'Tab':\n this.close(false);\n break;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const item = actionableItems[this.focusedItemIndex()];\n if (item && !item.disabled) {\n this.selectItem(item);\n }\n break;\n }\n default:\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n this.handleTypeAhead(event.key);\n }\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.ct-dropdown')) {\n this.close(false);\n }\n }\n\n /**\n * Returns the index of a non-separator item within the list of\n * actionable (non-separator) items.\n */\n getActionableIndex(item: AfDropdownItem): number {\n return this.getActionableItems().indexOf(item);\n }\n\n private open(focusLast = false): void {\n this.isOpen.set(true);\n const actionableItems = this.getActionableItems();\n const startIndex = focusLast\n ? this.nextEnabledIndex(actionableItems.length, -1)\n : this.nextEnabledIndex(-1, 1);\n this.focusedItemIndex.set(startIndex);\n queueMicrotask(() => this.focusCurrent());\n }\n\n private close(returnFocus: boolean): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.typeAheadBuffer = '';\n if (returnFocus) {\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n private focusItem(index: number): void {\n this.focusedItemIndex.set(index);\n this.focusCurrent();\n }\n\n private focusCurrent(): void {\n const buttons = this.itemButtons();\n const idx = this.focusedItemIndex();\n buttons[idx]?.nativeElement.focus();\n }\n\n private nextEnabledIndex(from: number, direction: 1 | -1): number {\n const actionableItems = this.getActionableItems();\n const len = actionableItems.length;\n if (len === 0) return 0;\n\n let idx = from + direction;\n for (let i = 0; i < len; i++) {\n if (idx < 0) idx = len - 1;\n if (idx >= len) idx = 0;\n if (!actionableItems[idx].disabled) return idx;\n idx += direction;\n }\n return from;\n }\n\n private getActionableItems(): AfDropdownItem[] {\n return this.items().filter((item) => !item.separator);\n }\n\n private handleTypeAhead(char: string): void {\n if (this.typeAheadTimer) {\n clearTimeout(this.typeAheadTimer);\n }\n this.typeAheadBuffer += char.toLowerCase();\n this.typeAheadTimer = setTimeout(() => {\n this.typeAheadBuffer = '';\n this.typeAheadTimer = null;\n }, 500);\n\n const actionableItems = this.getActionableItems();\n const startIndex = this.focusedItemIndex() + 1;\n\n for (let i = 0; i < actionableItems.length; i++) {\n const idx = (startIndex + i) % actionableItems.length;\n const item = actionableItems[idx];\n if (!item.disabled && item.label.toLowerCase().startsWith(this.typeAheadBuffer)) {\n this.focusItem(idx);\n return;\n }\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\n\n/**\n * Pagination component\n *\n * @example\n * <af-pagination\n * [currentPage]=\"page\"\n * [totalPages]=\"10\"\n * (pageChange)=\"onPageChange($event)\">\n * </af-pagination>\n */\n@Component({\n selector: 'af-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-pagination\" aria-label=\"Pagination\">\n <ul class=\"ct-pagination__list\">\n <li>\n <button\n class=\"ct-pagination__link\"\n [attr.aria-disabled]=\"currentPage() === 1 ? 'true' : null\"\n [disabled]=\"currentPage() === 1\"\n type=\"button\"\n (click)=\"goToPage(currentPage() - 1)\">\n {{ previousLabel() }}\n </button>\n </li>\n @for (page of visiblePages(); track page) {\n <li>\n @if (page === '...') {\n <span class=\"ct-pagination__ellipsis\">…</span>\n } @else {\n <button\n class=\"ct-pagination__link\"\n [attr.aria-current]=\"currentPage() === page ? 'page' : null\"\n type=\"button\"\n (click)=\"goToPage(page)\">\n {{ page }}\n </button>\n }\n </li>\n }\n <li>\n <button\n class=\"ct-pagination__link\"\n [attr.aria-disabled]=\"currentPage() === totalPages() ? 'true' : null\"\n [disabled]=\"currentPage() === totalPages()\"\n type=\"button\"\n (click)=\"goToPage(currentPage() + 1)\">\n {{ nextLabel() }}\n </button>\n </li>\n </ul>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfPaginationComponent {\n /** Current page number (1-indexed) */\n currentPage = input(1);\n\n /** Total number of pages */\n totalPages = input(1);\n\n /** Label for previous button */\n previousLabel = input('Prev');\n\n /** Label for next button */\n nextLabel = input('Next');\n\n /** Maximum number of page buttons to show */\n maxVisiblePages = input(7);\n\n /** Page change event */\n pageChange = output<number>();\n\n visiblePages = computed(() => {\n const pages: (number | string)[] = [];\n const halfMax = Math.floor(this.maxVisiblePages() / 2);\n\n let start = Math.max(1, this.currentPage() - halfMax);\n let end = Math.min(this.totalPages(), start + this.maxVisiblePages() - 1);\n\n if (end - start < this.maxVisiblePages() - 1) {\n start = Math.max(1, end - this.maxVisiblePages() + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) pages.push('...');\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < this.totalPages()) {\n if (end < this.totalPages() - 1) pages.push('...');\n pages.push(this.totalPages());\n }\n\n return pages;\n });\n\n goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages() && page !== this.currentPage()) {\n this.pageChange.emit(page);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\nexport interface AfBreadcrumb {\n label: string;\n url?: string;\n}\n\n/**\n * Breadcrumbs navigation component\n *\n * @example\n * <af-breadcrumbs [items]=\"breadcrumbs\"></af-breadcrumbs>\n */\n@Component({\n selector: 'af-breadcrumbs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-breadcrumbs\" aria-label=\"Breadcrumb\">\n <ol class=\"ct-breadcrumbs__list\">\n @for (item of items(); track $index; let isLast = $last) {\n <li class=\"ct-breadcrumbs__item\">\n @if (!isLast && item.url) {\n <a class=\"ct-breadcrumbs__link\" [href]=\"item.url\">\n {{ item.label }}\n </a>\n <span class=\"ct-breadcrumbs__separator\">/</span>\n } @else {\n <span class=\"ct-breadcrumbs__current\">{{ item.label }}</span>\n }\n </li>\n }\n </ol>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfBreadcrumbsComponent {\n /** Breadcrumb items */\n items = input<AfBreadcrumb[]>([]);\n}\n","import { Component, forwardRef, signal, computed, ElementRef, viewChild, input, output, model, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface CalendarDay {\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n}\n\n/**\n * Datepicker component with calendar popup\n *\n * @example\n * <af-datepicker\n * label=\"Select date\"\n * placeholder=\"Pick a date\"\n * [(ngModel)]=\"selectedDate\">\n * </af-datepicker>\n */\n@Component({\n selector: 'af-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfDatepickerComponent),\n multi: true\n }\n ],\n host: {\n '(document:keydown.escape)': 'onEscape()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId()\">{{ label() }}</label>\n }\n\n <div class=\"ct-datepicker\" [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <input\n #input\n class=\"ct-input\"\n type=\"text\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"formattedDate()\"\n [disabled]=\"disabled()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"popoverId()\"\n [attr.aria-label]=\"label() ? null : (placeholder() || 'Select date')\"\n (click)=\"toggle()\"\n (keydown)=\"onInputKeydown($event)\"\n (blur)=\"onTouched()\"\n readonly\n />\n\n @if (isOpen()) {\n <div\n #popover\n class=\"ct-datepicker__popover\"\n role=\"dialog\"\n [id]=\"popoverId()\"\n aria-label=\"Choose date\">\n <div class=\"ct-datepicker__header\">\n <button\n class=\"ct-button ct-button--ghost ct-button--icon\"\n aria-label=\"Previous month\"\n type=\"button\"\n (click)=\"previousMonth()\">\n ‹\n </button>\n <div class=\"ct-datepicker__title\">\n {{ monthNames[currentMonth()] }} {{ currentYear() }}\n </div>\n <button\n class=\"ct-button ct-button--ghost ct-button--icon\"\n aria-label=\"Next month\"\n type=\"button\"\n (click)=\"nextMonth()\">\n ›\n </button>\n </div>\n\n <div class=\"ct-datepicker__grid\" (keydown)=\"onGridKeydown($event)\">\n @for (day of weekdayLabels; track $index) {\n <div class=\"ct-datepicker__weekday\">{{ day }}</div>\n }\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n class=\"ct-datepicker__day\"\n [attr.data-date]=\"getDateKey(day.date)\"\n [attr.data-outside]=\"!day.isCurrentMonth\"\n [attr.data-today]=\"day.isToday\"\n [attr.aria-selected]=\"day.isSelected ? 'true' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.tabindex]=\"getDayTabIndex(day)\"\n type=\"button\"\n (click)=\"selectDate(day.date)\">\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfDatepickerComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Input label */\n label = input('');\n\n /** Placeholder text */\n placeholder = input('Select date');\n\n /** Whether datepicker is disabled */\n disabled = model(false);\n\n /** Date format for display */\n dateFormat = input('MMM dd, yyyy');\n\n /** Unique input ID */\n inputId = input(`af-datepicker-${AfDatepickerComponent.nextId++}`);\n\n /** Selected date change event */\n dateChange = output<Date>();\n\n inputRef = viewChild<ElementRef<HTMLInputElement>>('input');\n popoverRef = viewChild<ElementRef<HTMLDivElement>>('popover');\n\n weekdayLabels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n ];\n\n selectedDate = signal<Date | null>(null);\n currentMonth = signal(new Date().getMonth());\n currentYear = signal(new Date().getFullYear());\n isOpen = signal(false);\n focusedDate = signal<Date | null>(null);\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n calendarDays = computed(() => {\n return this.generateCalendarDays();\n });\n\n formattedDate = computed(() => {\n const date = this.selectedDate();\n if (!date) return '';\n return this.formatDate(date);\n });\n\n popoverId = computed(() => `${this.inputId()}-popover`);\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n selectDate(date: Date): void {\n this.selectedDate.set(date);\n this.focusedDate.set(date);\n this.onChange(date);\n this.dateChange.emit(date);\n this.close(true);\n }\n\n previousMonth(): void {\n this.shiftMonth(-1);\n }\n\n nextMonth(): void {\n this.shiftMonth(1);\n }\n\n private generateCalendarDays(): CalendarDay[] {\n const year = this.currentYear();\n const month = this.currentMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const today = new Date();\n const selected = this.selectedDate();\n\n const days: CalendarDay[] = [];\n\n // Get day of week (0 = Sunday, adjust to Monday = 0)\n let startDay = firstDay.getDay() - 1;\n if (startDay < 0) startDay = 6;\n\n // Previous month days\n const prevMonthLastDay = new Date(year, month, 0).getDate();\n for (let i = startDay - 1; i >= 0; i--) {\n const date = new Date(year, month - 1, prevMonthLastDay - i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n // Current month days\n for (let i = 1; i <= lastDay.getDate(); i++) {\n const date = new Date(year, month, i);\n days.push({\n date,\n isCurrentMonth: true,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n // Next month days to fill grid (6 rows * 7 days = 42)\n const remainingDays = 42 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(year, month + 1, i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n return days;\n }\n\n getDayTabIndex(day: CalendarDay): number {\n const focused = this.focusedDate();\n if (focused && this.isSameDay(day.date, focused)) return 0;\n if (!focused && day.isSelected) return 0;\n return -1;\n }\n\n getDateKey(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n\n onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.close(true);\n }\n }\n\n onGridKeydown(event: KeyboardEvent): void {\n if (!this.isOpen()) return;\n const focused = this.focusedDate() || this.selectedDate() || new Date(this.currentYear(), this.currentMonth(), 1);\n let nextDate: Date | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n nextDate = this.addDays(focused, 1);\n break;\n case 'ArrowLeft':\n nextDate = this.addDays(focused, -1);\n break;\n case 'ArrowDown':\n nextDate = this.addDays(focused, 7);\n break;\n case 'ArrowUp':\n nextDate = this.addDays(focused, -7);\n break;\n case 'Home':\n nextDate = this.addDays(focused, -this.getWeekdayIndex(focused));\n break;\n case 'End':\n nextDate = this.addDays(focused, 6 - this.getWeekdayIndex(focused));\n break;\n case 'PageUp':\n nextDate = this.addMonths(focused, -1);\n break;\n case 'PageDown':\n nextDate = this.addMonths(focused, 1);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectDate(focused);\n return;\n case 'Escape':\n event.preventDefault();\n this.close(true);\n return;\n default:\n return;\n }\n\n if (nextDate) {\n event.preventDefault();\n this.setFocusedDate(nextDate);\n }\n }\n\n onEscape(): void {\n if (this.isOpen()) {\n this.close(true);\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (this.isOpen() && !target.closest('.ct-datepicker')) {\n this.close(false);\n }\n }\n\n private open(): void {\n if (this.disabled() || this.isOpen()) return;\n const selected = this.selectedDate();\n const focusDate = selected || new Date();\n this.currentMonth.set(focusDate.getMonth());\n this.currentYear.set(focusDate.getFullYear());\n this.focusedDate.set(focusDate);\n this.isOpen.set(true);\n queueMicrotask(() => this.focusDayButton(focusDate));\n }\n\n private close(returnFocus = false): void {\n this.isOpen.set(false);\n this.onTouched();\n if (returnFocus) {\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n private setFocusedDate(date: Date): void {\n this.currentMonth.set(date.getMonth());\n this.currentYear.set(date.getFullYear());\n this.focusedDate.set(date);\n queueMicrotask(() => this.focusDayButton(date));\n }\n\n private focusDayButton(date: Date): void {\n const popover = this.popoverRef()?.nativeElement;\n if (!popover) return;\n const key = this.getDateKey(date);\n const button = popover.querySelector<HTMLButtonElement>(`.ct-datepicker__day[data-date=\"${key}\"]`);\n button?.focus();\n }\n\n private addDays(date: Date, delta: number): Date {\n const next = new Date(date);\n next.setDate(date.getDate() + delta);\n return next;\n }\n\n private addMonths(date: Date, delta: number): Date {\n const next = new Date(date);\n next.setMonth(date.getMonth() + delta);\n return next;\n }\n\n private getWeekdayIndex(date: Date): number {\n const day = date.getDay();\n return day === 0 ? 6 : day - 1;\n }\n\n private shiftMonth(delta: number): void {\n const base = this.focusedDate() || new Date(this.currentYear(), this.currentMonth(), 1);\n const next = this.addMonths(base, delta);\n this.setFocusedDate(next);\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n private formatDate(date: Date): string {\n const tokens: Record<string, string> = {\n yyyy: String(date.getFullYear()),\n MMM: this.monthNames[date.getMonth()].substring(0, 3),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n dd: String(date.getDate()).padStart(2, '0'),\n d: String(date.getDate())\n };\n\n return this.dateFormat().replace(/yyyy|MMM|MM|dd|d/g, token => tokens[token] ?? token);\n }\n\n // ControlValueAccessor implementation\n writeValue(value: Date | null): void {\n if (value) {\n this.selectedDate.set(value);\n this.currentMonth.set(value.getMonth());\n this.currentYear.set(value.getFullYear());\n this.focusedDate.set(value);\n } else {\n this.selectedDate.set(null);\n this.focusedDate.set(null);\n }\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ElementRef,\n viewChild,\n forwardRef,\n input,\n output,\n model,\n signal,\n computed,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Chip input component for managing a list of string values.\n *\n * Renders existing values as removable chips and provides a text input\n * that creates new chips on configurable separator keys (Enter, Comma, Semicolon).\n * Implements ControlValueAccessor for seamless integration with Angular Reactive Forms\n * and template-driven forms, binding to a `string[]` value.\n *\n * @example\n * <af-chip-input\n * label=\"Roles\"\n * placeholder=\"Add role...\"\n * [(ngModel)]=\"roles\">\n * </af-chip-input>\n *\n * @example\n * <af-chip-input\n * label=\"Tags\"\n * [separators]=\"[',', ';']\"\n * [formControl]=\"tagsControl\">\n * </af-chip-input>\n */\n@Component({\n selector: 'af-chip-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfChipInputComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n class=\"ct-chip-input\"\n [class.ct-chip-input--disabled]=\"disabled()\"\n [class.ct-chip-input--focused]=\"focused()\"\n (click)=\"focusInput()\">\n @for (chip of chips(); track chip) {\n <span\n class=\"ct-chip\"\n [attr.aria-disabled]=\"disabled() || null\">\n <span class=\"ct-chip__label\">{{ chip }}</span>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ct-chip__remove\"\n [attr.aria-label]=\"'Remove ' + chip\"\n (click)=\"remove(chip, $event)\">\n ×\n </button>\n }\n </span>\n }\n\n <input\n #chipInput\n [id]=\"inputId\"\n type=\"text\"\n class=\"ct-chip-input__input\"\n [placeholder]=\"chips().length === 0 ? placeholder() : ''\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n (keydown)=\"onKeydown($event)\"\n (input)=\"onInputChange($event)\"\n (focus)=\"focused.set(true)\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .ct-chip-input {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-2, 0.5rem);\n padding: var(--space-2, 0.5rem);\n border: var(--border-thin, 1px solid) var(--color-border-default, #d1d5db);\n border-radius: var(--radius-md, 0.375rem);\n background: var(--color-bg-default, #fff);\n cursor: text;\n transition: border-color var(--duration-fast, 150ms) var(--easing-standard, ease);\n }\n\n .ct-chip-input--focused {\n border-color: var(--color-focus-ring, #2563eb);\n outline: 2px solid var(--color-focus-ring, #2563eb);\n outline-offset: 2px;\n }\n\n .ct-chip-input--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ct-chip-input__input {\n flex: 1 1 auto;\n min-width: 80px;\n border: none;\n outline: none;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: var(--space-1, 0.25rem) 0;\n }\n\n .ct-chip-input__input:disabled {\n cursor: not-allowed;\n }\n `,\n ],\n})\nexport class AfChipInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the input */\n label = input('');\n\n /** Placeholder text for the text input */\n placeholder = input('');\n\n /** Hint text shown below the input */\n hint = input('');\n\n /** Error message -- shows error state */\n error = input('');\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Whether to allow duplicate chip values */\n allowDuplicates = input(false);\n\n /** Separator characters that trigger chip creation (in addition to Enter) */\n separators = input<string[]>([',', ';']);\n\n /** Emitted when a chip is added */\n added = output<string>();\n\n /** Emitted when a chip is removed */\n removed = output<string>();\n\n inputRef = viewChild.required<ElementRef<HTMLInputElement>>('chipInput');\n\n inputId = `af-chip-input-${AfChipInputComponent.nextId++}`;\n chips = signal<string[]>([]);\n focused = signal(false);\n\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.inputId}-hint`);\n\n errorId = computed(() => `${this.inputId}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n focusInput(): void {\n this.inputRef().nativeElement.focus();\n }\n\n onKeydown(event: KeyboardEvent): void {\n const inputEl = event.target as HTMLInputElement;\n const value = inputEl.value.trim();\n\n if (event.key === 'Enter') {\n event.preventDefault();\n this.addChip(value, inputEl);\n return;\n }\n\n if (this.separators().includes(event.key)) {\n event.preventDefault();\n this.addChip(value, inputEl);\n return;\n }\n\n const currentChips = this.chips();\n if (event.key === 'Backspace' && value === '' && currentChips.length > 0) {\n this.remove(currentChips[currentChips.length - 1]);\n }\n }\n\n onInputChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const value = inputEl.value;\n\n // Handle paste with separators\n for (const sep of this.separators()) {\n if (value.includes(sep)) {\n const parts = value.split(new RegExp(`[${this.escapeSeparators()}]`));\n inputEl.value = '';\n for (const part of parts) {\n const trimmed = part.trim();\n if (trimmed) {\n this.addChipValue(trimmed);\n }\n }\n return;\n }\n }\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n /** Removes a chip by value */\n remove(chip: string, event?: Event): void {\n event?.stopPropagation();\n const current = this.chips();\n const index = current.indexOf(chip);\n if (index >= 0) {\n this.chips.set([...current.slice(0, index), ...current.slice(index + 1)]);\n this.emitChange();\n this.removed.emit(chip);\n }\n }\n\n // ControlValueAccessor\n writeValue(value: string[]): void {\n this.chips.set(Array.isArray(value) ? [...value] : []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private addChip(value: string, inputEl: HTMLInputElement): void {\n if (value) {\n this.addChipValue(value);\n inputEl.value = '';\n }\n }\n\n private addChipValue(value: string): void {\n if (!this.allowDuplicates() && this.chips().includes(value)) {\n return;\n }\n this.chips.update(c => [...c, value]);\n this.emitChange();\n this.added.emit(value);\n }\n\n private emitChange(): void {\n this.onChange([...this.chips()]);\n }\n\n private escapeSeparators(): string {\n return this.separators().map(s => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('');\n }\n}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnDestroy,\n effect,\n input,\n inject,\n} from '@angular/core';\n\nexport type AfTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nlet tooltipIdCounter = 0;\n\n/**\n * Directive that attaches a tooltip to any host element.\n *\n * Uses the design system's `ct-tooltip` CSS classes for styling and animation.\n * Shows on hover and focus, hides on blur, mouse leave, and Escape key.\n * Includes a configurable delay before showing.\n *\n * @example\n * <button afTooltip=\"Save changes\">Save</button>\n *\n * @example\n * <button\n * afTooltip=\"Delete item\"\n * afTooltipPosition=\"bottom\"\n * [afTooltipDelay]=\"500\">\n * Delete\n * </button>\n */\n@Directive({\n selector: '[afTooltip]',\n})\nexport class AfTooltipDirective implements OnDestroy {\n /** Tooltip text content */\n text = input('', { alias: 'afTooltip' });\n\n /** Position relative to the host element */\n afTooltipPosition = input<AfTooltipPosition>('top');\n\n /** Delay in ms before showing the tooltip */\n afTooltipDelay = input(300);\n\n /** Whether the tooltip is disabled */\n afTooltipDisabled = input(false);\n\n private el = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n\n private contentEl: HTMLElement | null = null;\n private tooltipId = `af-tooltip-${tooltipIdCounter++}`;\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly listeners: (() => void)[] = [];\n\n constructor() {\n this.initHost();\n this.setupListeners();\n }\n\n private textEffect = effect(() => {\n if (this.contentEl) {\n this.contentEl.textContent = this.text();\n }\n });\n\n private positionEffect = effect(() => {\n this.el.nativeElement.setAttribute('data-side', this.afTooltipPosition());\n });\n\n ngOnDestroy(): void {\n this.hide();\n this.listeners.forEach(unlisten => unlisten());\n }\n\n private initHost(): void {\n const host = this.el.nativeElement;\n this.renderer.addClass(host, 'ct-tooltip');\n host.setAttribute('data-state', 'closed');\n host.setAttribute('data-side', this.afTooltipPosition());\n }\n\n private setupListeners(): void {\n const host = this.el.nativeElement;\n\n this.listeners.push(\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\n this.renderer.listen(host, 'mouseleave', () => this.hide()),\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\n this.renderer.listen(host, 'focusout', () => this.hide()),\n this.renderer.listen(host, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape') this.hide();\n }),\n );\n }\n\n private scheduleShow(): void {\n if (this.afTooltipDisabled() || !this.text()) return;\n this.clearTimeout();\n this.showTimeout = setTimeout(() => this.show(), this.afTooltipDelay());\n }\n\n private show(): void {\n if (this.contentEl) return;\n\n const host = this.el.nativeElement;\n const content = this.renderer.createElement('span') as HTMLElement;\n content.classList.add('ct-tooltip__content');\n content.setAttribute('role', 'tooltip');\n content.setAttribute('id', this.tooltipId);\n content.textContent = this.text();\n\n this.renderer.appendChild(host, content);\n host.setAttribute('aria-describedby', this.tooltipId);\n this.contentEl = content;\n\n // Trigger open state on next frame so CSS transition plays\n requestAnimationFrame(() => {\n host.setAttribute('data-state', 'open');\n });\n }\n\n private hide(): void {\n this.clearTimeout();\n if (this.contentEl) {\n const host = this.el.nativeElement;\n host.setAttribute('data-state', 'closed');\n host.removeAttribute('aria-describedby');\n this.contentEl.remove();\n this.contentEl = null;\n }\n }\n\n private clearTimeout(): void {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfBadgeVariant = 'default' | 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Badge component for status indicators\n *\n * @example\n * <af-badge variant=\"success\" icon=\"+\">Approved</af-badge>\n * <af-badge variant=\"danger\">Blocked</af-badge>\n */\n@Component({\n selector: 'af-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"badgeClasses()\" [attr.aria-label]=\"ariaLabel() || null\">\n @if (icon()) {\n <span class=\"ct-badge__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n }\n @if (dot()) {\n <span class=\"ct-badge__dot\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n </span>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfBadgeComponent {\n /** Accessible label, useful when the badge has no visible text. */\n ariaLabel = input('');\n\n /** Color variant. */\n variant = input<AfBadgeVariant>('default');\n\n /** Icon character to display */\n icon = input('');\n\n /** Show a dot indicator instead of icon */\n dot = input(false);\n\n badgeClasses = computed(() => {\n const classes = ['ct-badge'];\n if (this.variant() !== 'default') {\n classes.push(`ct-badge--${this.variant()}`);\n }\n if (this.icon() || this.dot()) {\n classes.push('ct-badge--icon');\n }\n return classes.join(' ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfProgressBarVariant = 'default' | 'info' | 'success' | 'warning' | 'danger';\nexport type AfProgressBarSize = 'sm' | 'md' | 'lg';\n\n/**\n * Progress bar for showing completion state\n *\n * @example\n * <af-progress-bar [value]=\"75\" variant=\"success\" label=\"Upload progress\"></af-progress-bar>\n * <af-progress-bar [indeterminate]=\"true\" label=\"Loading\"></af-progress-bar>\n */\n@Component({\n selector: 'af-progress-bar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n [class]=\"barClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"indeterminate() ? null : value()\"\n [attr.aria-valuemin]=\"indeterminate() ? null : 0\"\n [attr.aria-valuemax]=\"indeterminate() ? null : 100\"\n [attr.aria-label]=\"label()\">\n <div\n class=\"ct-progress-bar__track\"\n [style.width]=\"indeterminate() ? null : value() + '%'\">\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfProgressBarComponent {\n /** Current progress value (0-100) */\n value = input(0);\n\n /** Color variant */\n variant = input<AfProgressBarVariant>('default');\n\n /** Track height */\n size = input<AfProgressBarSize>('md');\n\n /** Accessible label for screen readers */\n label = input('');\n\n /** Indeterminate mode (animated, no fixed value) */\n indeterminate = input(false);\n\n barClasses = computed(() => {\n const classes = ['ct-progress-bar'];\n if (this.variant() !== 'default') {\n classes.push(`ct-progress-bar--${this.variant()}`);\n }\n if (this.size() !== 'md') {\n classes.push(`ct-progress-bar--${this.size()}`);\n }\n if (this.indeterminate()) {\n classes.push('ct-progress-bar--indeterminate');\n }\n return classes.join(' ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfSpinnerSize = 'sm' | 'md' | 'lg';\n\n/**\n * Spinner component for loading states\n *\n * @example\n * <af-spinner label=\"Loading data\"></af-spinner>\n * <af-spinner size=\"lg\" label=\"Processing\"></af-spinner>\n */\n@Component({\n selector: 'af-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span\n [class]=\"spinnerClasses()\"\n role=\"status\"\n [attr.aria-label]=\"label()\">\n </span>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfSpinnerComponent {\n /** Spinner size */\n size = input<AfSpinnerSize>('md');\n\n /** Accessible label for screen readers */\n label = input('Loading');\n\n spinnerClasses = computed(() => {\n const classes = ['ct-spinner'];\n if (this.size() !== 'md') {\n classes.push(`ct-spinner--${this.size()}`);\n }\n return classes.join(' ');\n });\n}\n","import { Component, forwardRef, input, output, model, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfToggleItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport type AfToggleGroupSize = 'sm' | 'md' | 'lg';\n\n/**\n * Toggle group for single or multi-select button groups\n *\n * @example\n * <af-toggle-group\n * [items]=\"viewModes\"\n * [(value)]=\"selectedMode\"\n * ariaLabel=\"View mode\">\n * </af-toggle-group>\n *\n * <af-toggle-group\n * [items]=\"filters\"\n * [multiple]=\"true\"\n * [(value)]=\"activeFilters\"\n * ariaLabel=\"Status filter\">\n * </af-toggle-group>\n */\n@Component({\n selector: 'af-toggle-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"groupClasses()\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of items(); track item.value) {\n <button\n class=\"ct-toggle-group__item\"\n type=\"button\"\n [attr.aria-pressed]=\"isPressed(item.value)\"\n [disabled]=\"item.disabled || disabled()\"\n (click)=\"toggle(item.value)\">\n {{ item.label }}\n </button>\n }\n </div>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfToggleGroupComponent),\n multi: true\n }]\n})\nexport class AfToggleGroupComponent implements ControlValueAccessor {\n /** Toggle items */\n items = input<AfToggleItem[]>([]);\n\n /** Group size */\n size = input<AfToggleGroupSize>('md');\n\n /** Allow multiple selections */\n multiple = input(false);\n\n /** Accessible group label */\n ariaLabel = input('');\n\n /** Disabled state */\n disabled = model(false);\n\n /** Current value (string for single, string[] for multiple) */\n value = model<string | string[]>('');\n\n private onChange: (value: string | string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n groupClasses = computed(() => {\n const classes = ['ct-toggle-group'];\n if (this.size() !== 'md') {\n classes.push(`ct-toggle-group--${this.size()}`);\n }\n return classes.join(' ');\n });\n\n isPressed(itemValue: string): boolean {\n if (this.multiple()) {\n return Array.isArray(this.value()) && (this.value() as string[]).includes(itemValue);\n }\n return this.value() === itemValue;\n }\n\n toggle(itemValue: string): void {\n this.onTouched();\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...this.value() as string[]] : [];\n const index = current.indexOf(itemValue);\n if (index >= 0) {\n current.splice(index, 1);\n } else {\n current.push(itemValue);\n }\n this.value.set(current);\n } else {\n this.value.set(itemValue);\n }\n\n this.onChange(this.value());\n }\n\n writeValue(value: string | string[]): void {\n this.value.set(value ?? (this.multiple() ? [] : ''));\n }\n\n registerOnChange(fn: (value: string | string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n/**\n * Toolbar component for top-level app navigation\n *\n * @example\n * <af-toolbar ariaLabel=\"Main navigation\">\n * <a brand href=\"#\">Construct</a>\n * <ul nav>\n * <li><a href=\"/dashboard\" class=\"ct-toolbar__nav-link ct-toolbar__nav-link--active\" aria-current=\"page\">Dashboard</a></li>\n * <li><a href=\"/documents\" class=\"ct-toolbar__nav-link\">Documents</a></li>\n * </ul>\n * <div actions>\n * <button class=\"ct-button ct-button--ghost\">Profile</button>\n * </div>\n * </af-toolbar>\n */\n@Component({\n selector: 'af-toolbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-toolbar\" [attr.aria-label]=\"ariaLabel()\">\n <div class=\"ct-toolbar__brand\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <ng-content select=\"[nav]\"></ng-content>\n <div class=\"ct-toolbar__spacer\"></div>\n <div class=\"ct-toolbar__actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfToolbarComponent {\n /** Accessible label for the navigation landmark */\n ariaLabel = input('Main navigation');\n}\n","import { Component, ChangeDetectionStrategy, input, model, computed } from '@angular/core';\n\nexport type AfSidebarMode = 'side' | 'over';\n\n/**\n * Sidebar component for collapsible navigation\n *\n * @example\n * <af-sidebar [open]=\"sidebarOpen\" mode=\"side\" ariaLabel=\"Folder navigation\" (openChange)=\"sidebarOpen = $event\">\n * <div header>\n * <strong>Folders</strong>\n * </div>\n * <ul content class=\"ct-nav-list\">\n * <li><a class=\"ct-nav-item ct-nav-item--active\" href=\"#\" aria-current=\"page\">\n * <span class=\"ct-nav-item__label\">Inbox</span>\n * <span class=\"ct-nav-item__badge\">12</span>\n * </a></li>\n * </ul>\n * </af-sidebar>\n */\n@Component({\n selector: 'af-sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n template: `\n <aside\n [class]=\"sidebarClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n [attr.aria-label]=\"ariaLabel()\">\n <div class=\"ct-sidebar__header\">\n <ng-content select=\"[header]\"></ng-content>\n @if (showCloseButton() && mode() === 'over') {\n <button\n class=\"ct-button ct-button--ghost ct-button--icon ct-button--sm\"\n type=\"button\"\n aria-label=\"Close menu\"\n (click)=\"close()\">\n <span class=\"ct-icon ct-icon--sm\" aria-hidden=\"true\">×</span>\n </button>\n }\n </div>\n <div class=\"ct-sidebar__content\">\n <ng-content select=\"[content]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </aside>\n @if (mode() === 'over' && open()) {\n <div class=\"ct-sidebar__backdrop\" (click)=\"close()\"></div>\n }\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSidebarComponent {\n /** Sidebar open state */\n open = model(true);\n\n /** Display mode: side (pushes content) or over (overlays) */\n mode = input<AfSidebarMode>('side');\n\n /** Accessible label for the sidebar landmark */\n ariaLabel = input('Navigation');\n\n /** Show close button in overlay mode */\n showCloseButton = input(true);\n\n sidebarClasses = computed(() => {\n const classes = ['ct-sidebar'];\n classes.push(`ct-sidebar--${this.mode()}`);\n return classes.join(' ');\n });\n\n close(): void {\n this.open.set(false);\n }\n\n onEscape(): void {\n if (this.mode() === 'over' && this.open()) {\n this.close();\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfIconSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Icon component that abstracts the icon rendering strategy.\n *\n * Currently uses Material Icons font ligatures. The icon strategy\n * can be changed centrally without modifying consumers.\n *\n * @example\n * <af-icon name=\"delete\" />\n * <af-icon name=\"edit\" size=\"sm\" />\n */\n@Component({\n selector: 'af-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"iconClasses()\" aria-hidden=\"true\">{{ name() }}</span>\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n `]\n})\nexport class AfIconComponent {\n /** Material Icon name (ligature) */\n name = input.required<string>();\n\n /** Icon size variant */\n size = input<AfIconSize>('md');\n\n iconClasses = computed(() => {\n const classes = ['ct-icon', 'material-icons'];\n if (this.size() !== 'md') {\n classes.push(`ct-icon--${this.size()}`);\n }\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n input,\n model,\n forwardRef,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type AfSliderSize = 'sm' | 'md' | 'lg';\n\n/**\n * Slider component with full form control and accessibility support.\n *\n * Wraps the `ct-slider` design system CSS. Supports min/max/step,\n * keyboard navigation, ARIA attributes, and reactive forms.\n *\n * @example Reactive Forms\n * <af-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" label=\"Volume\" />\n *\n * @example Standalone two-way binding\n * <af-slider [(value)]=\"brightness\" [min]=\"0\" [max]=\"100\" [step]=\"5\" [showValue]=\"true\" />\n *\n * @example With min/max labels\n * <af-slider [(value)]=\"temperature\" [min]=\"16\" [max]=\"30\" [showMinMax]=\"true\" label=\"Temperature\" />\n */\n@Component({\n selector: 'af-slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSliderComponent),\n multi: true,\n },\n ],\n template: `\n <div [class]=\"hostClasses()\" [style.--_value]=\"valuePercent()\">\n @if (showMinMax()) {\n <span class=\"ct-slider__min\" aria-hidden=\"true\">{{ min() }}</span>\n }\n\n <input\n #sliderInput\n class=\"ct-slider__input\"\n type=\"range\"\n [id]=\"sliderId()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuetext]=\"ariaValueText()\"\n [attr.aria-invalid]=\"invalid() ? true : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n\n @if (showMinMax()) {\n <span class=\"ct-slider__max\" aria-hidden=\"true\">{{ max() }}</span>\n }\n\n @if (showValue()) {\n <output class=\"ct-slider__value\" [attr.for]=\"sliderId()\">\n {{ value() }}\n </output>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfSliderComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Accessible label for the slider */\n label = input('');\n\n /** Minimum value */\n min = input(0);\n\n /** Maximum value */\n max = input(100);\n\n /** Step increment */\n step = input(1);\n\n /** Component size variant */\n size = input<AfSliderSize>('md');\n\n /** Whether the slider is disabled */\n disabled = model(false);\n\n /** Whether the slider is in an invalid state */\n invalid = input(false);\n\n /** Show the current value next to the slider */\n showValue = input(false);\n\n /** Show min/max labels */\n showMinMax = input(false);\n\n /** Custom aria-valuetext for screen readers */\n valueTextFn = input<((value: number) => string) | null>(null);\n\n /** Unique slider ID */\n sliderId = input(`af-slider-${AfSliderComponent.nextId++}`);\n\n /** Current value — supports two-way binding via [(value)] */\n value = model(0);\n\n sliderInput = viewChild.required<ElementRef<HTMLInputElement>>('sliderInput');\n\n private onChangeCallback: (value: number) => void = () => {};\n onTouched: () => void = () => {};\n\n hostClasses = computed(() => {\n const classes = ['ct-slider'];\n const s = this.size();\n if (s !== 'md') {\n classes.push(`ct-slider--${s}`);\n }\n return classes.join(' ');\n });\n\n valuePercent = computed(() => {\n const minVal = this.min();\n const maxVal = this.max();\n const range = maxVal - minVal;\n if (range === 0) return 0;\n return ((this.value() - minVal) / range) * 100;\n });\n\n ariaValueText = computed(() => {\n const fn = this.valueTextFn();\n return fn ? fn(this.value()) : null;\n });\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const numValue = Number(target.value);\n this.value.set(numValue);\n this.onChangeCallback(numValue);\n }\n\n /** Writes a new value from the form model. */\n writeValue(value: number): void {\n this.value.set(value ?? 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n input,\n output,\n model,\n computed,\n effect,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\nexport type AfDrawerPosition = 'right' | 'left' | 'top' | 'bottom';\nexport type AfDrawerSize = 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * Drawer/slide-out panel with full accessibility support.\n *\n * @example\n * ```html\n * <af-drawer [(open)]=\"isOpen\" position=\"right\" ariaLabel=\"Settings\">\n * <div header>\n * <h2>Settings</h2>\n * </div>\n * <div body>\n * <p>Drawer content here.</p>\n * </div>\n * <div footer>\n * <button (click)=\"isOpen = false\">Close</button>\n * </div>\n * </af-drawer>\n * ```\n */\n@Component({\n selector: 'af-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n <div\n #drawer\n [class]=\"containerClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n role=\"dialog\"\n [attr.aria-modal]=\"open() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"!ariaLabel() ? titleId : null\"\n (click)=\"onBackdropClick($event)\">\n <div\n #panel\n class=\"ct-drawer__panel\"\n tabindex=\"-1\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ct-drawer__header\">\n <ng-content select=\"[header]\"></ng-content>\n @if (showCloseButton()) {\n <button\n class=\"ct-button ct-button--ghost ct-button--icon ct-button--sm\"\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel()\"\n (click)=\"close()\">\n <span class=\"ct-icon ct-icon--sm\" aria-hidden=\"true\">×</span>\n </button>\n }\n </div>\n <div class=\"ct-drawer__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n <div class=\"ct-drawer__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfDrawerComponent implements OnDestroy {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Two-way bindable open state */\n open = model(false);\n\n /** Slide-in position */\n position = input<AfDrawerPosition>('right');\n\n /** Panel size */\n size = input<AfDrawerSize>('md');\n\n /** Accessible label for the drawer dialog */\n ariaLabel = input('');\n\n /** Show built-in close button in the header */\n showCloseButton = input(true);\n\n /** Whether clicking the backdrop closes the drawer */\n closeOnBackdropClick = input(true);\n\n /** Aria label for the close button */\n closeButtonAriaLabel = input('Close drawer');\n\n /** Emits when the drawer requests to be closed */\n closed = output<void>();\n\n /** Unique ID for aria-labelledby fallback */\n readonly titleId = `af-drawer-title-${AfDrawerComponent.nextId++}`;\n\n private panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n containerClasses = computed(() => {\n const classes = ['ct-drawer'];\n\n const pos = this.position();\n if (pos !== 'right') {\n classes.push(`ct-drawer--${pos}`);\n }\n\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-drawer--${sz}`);\n }\n\n return classes.join(' ');\n });\n\n private openEffect = effect(() => {\n const isOpen = this.open();\n if (isOpen) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n\n ngOnDestroy(): void {\n this.unlockBodyScroll();\n this.focusTrap.restoreFocus();\n }\n\n /** Closes the drawer and emits the closed event */\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open()) return;\n\n if (event.key === 'Escape') {\n this.close();\n return;\n }\n\n if (event.key === 'Tab') {\n const panel = this.panelRef()?.nativeElement;\n this.focusTrap.handleTab(event, panel, panel);\n }\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n this.lockBodyScroll();\n queueMicrotask(() => {\n if (!this.open()) return;\n const panel = this.panelRef()?.nativeElement;\n this.focusTrap.focusFirst(panel, panel);\n });\n }\n\n private onClose(): void {\n this.unlockBodyScroll();\n this.focusTrap.restoreFocus();\n }\n\n private lockBodyScroll(): void {\n document.body.style.overflow = 'hidden';\n }\n\n private unlockBodyScroll(): void {\n document.body.style.overflow = '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n computed,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfComboboxOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n description?: string;\n}\n\n/**\n * Combobox component with autocomplete filtering, keyboard navigation,\n * and full ARIA support following the WAI-ARIA 1.2 combobox pattern.\n *\n * @example\n * <af-combobox\n * label=\"Country\"\n * placeholder=\"Search countries...\"\n * [options]=\"countries\"\n * [(ngModel)]=\"selectedCountry\"\n * hint=\"Start typing to filter\"\n * ></af-combobox>\n *\n * @example\n * <af-combobox\n * label=\"Assignee\"\n * [options]=\"teamMembers\"\n * [formControl]=\"assigneeControl\"\n * [error]=\"assigneeError\"\n * required\n * ></af-combobox>\n */\n@Component({\n selector: 'af-combobox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfComboboxComponent),\n multi: true,\n },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n [class]=\"comboboxClasses()\"\n [attr.data-state]=\"isOpen() ? 'open' : 'closed'\"\n >\n <div class=\"ct-combobox__input-wrap\">\n <input\n #inputEl\n class=\"ct-combobox__input\"\n [id]=\"inputId\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-required]=\"required() || null\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n <button\n type=\"button\"\n class=\"ct-combobox__trigger\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [disabled]=\"disabled()\"\n (click)=\"toggleListbox()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <svg\n class=\"ct-combobox__trigger-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n <ul\n #listboxEl\n [id]=\"listboxId\"\n class=\"ct-combobox__listbox\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || 'Options'\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n class=\"ct-combobox__option\"\n role=\"option\"\n [id]=\"getOptionId(i)\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [attr.data-highlighted]=\"highlightedIndex() === i ? '' : null\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <span class=\"ct-combobox__option-check\" aria-hidden=\"true\">\n @if (isSelected(option)) {\n <svg viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3 8.5l3.5 3.5 6.5-8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </span>\n <span class=\"ct-combobox__option-label\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"ct-combobox__option-description\">{{ option.description }}</span>\n }\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li class=\"ct-combobox__empty\" aria-disabled=\"true\">\n {{ emptyText() }}\n </li>\n }\n </ul>\n\n <div\n class=\"ct-combobox__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ statusMessage() }}\n </div>\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId\">{{ error() }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfComboboxComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label for the combobox field */\n label = input('');\n\n /** Placeholder text for the input */\n placeholder = input('');\n\n /** Available options */\n options = input<AfComboboxOption[]>([]);\n\n /** Hint text shown below the combobox */\n hint = input('');\n\n /** Error message — shows error state and message */\n error = input('');\n\n /** Whether the combobox is required */\n required = input(false);\n\n /** Whether the combobox is disabled */\n disabled = model(false);\n\n /** Size variant */\n size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Text shown when no options match the filter */\n emptyText = input('No results found');\n\n /** Value comparison function for object values */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique combobox ID */\n comboboxId = input(`af-combobox-${AfComboboxComponent.nextId++}`);\n\n inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n listboxRef = viewChild<ElementRef<HTMLUListElement>>('listboxEl');\n\n isOpen = signal(false);\n query = signal('');\n highlightedIndex = signal(-1);\n\n private value = signal<unknown>(null);\n private onChange: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n get inputId(): string {\n return `${this.comboboxId()}-input`;\n }\n\n get listboxId(): string {\n return `${this.comboboxId()}-listbox`;\n }\n\n get hintId(): string {\n return `${this.comboboxId()}-hint`;\n }\n\n get errorId(): string {\n return `${this.comboboxId()}-error`;\n }\n\n comboboxClasses = computed(() => {\n const classes = ['ct-combobox'];\n const s = this.size();\n if (s === 'sm') classes.push('ct-combobox--sm');\n if (s === 'lg') classes.push('ct-combobox--lg');\n return classes.join(' ');\n });\n\n selectedOption = computed(() => {\n const v = this.value();\n if (v === null || v === undefined) return null;\n return this.options().find((o) => this.compareWith()(o.value, v)) ?? null;\n });\n\n filteredOptions = computed(() => {\n const q = this.query().toLowerCase().trim();\n const opts = this.options();\n if (!q) return opts;\n const selected = this.selectedOption();\n if (selected && selected.label.toLowerCase() === q) return opts;\n return opts.filter((o) => o.label.toLowerCase().includes(q));\n });\n\n activeDescendantId = computed(() => {\n const idx = this.highlightedIndex();\n if (idx < 0 || idx >= this.filteredOptions().length) return null;\n return this.getOptionId(idx);\n });\n\n statusMessage = computed(() => {\n if (!this.isOpen()) return '';\n const count = this.filteredOptions().length;\n if (count === 0) return this.emptyText();\n return `${count} result${count === 1 ? '' : 's'} available`;\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId;\n if (this.hint()) return this.hintId;\n return null;\n }\n\n getOptionId(index: number): string {\n return `${this.comboboxId()}-option-${index}`;\n }\n\n isSelected(option: AfComboboxOption): boolean {\n const v = this.value();\n if (v === null || v === undefined) return false;\n return this.compareWith()(option.value, v);\n }\n\n /** Opens the listbox and highlights the selected option or first enabled option */\n openListbox(): void {\n if (this.disabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.highlightedIndex.set(this.findSelectedIndex());\n }\n\n /** Closes the listbox and restores the display value */\n closeListbox(restoreDisplay = true): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.highlightedIndex.set(-1);\n if (restoreDisplay) {\n const selected = this.selectedOption();\n this.query.set(selected ? selected.label : '');\n }\n }\n\n /** Toggles the listbox open/closed */\n toggleListbox(): void {\n if (this.isOpen()) {\n this.closeListbox();\n } else {\n this.openListbox();\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n /** Selects an option and closes the listbox */\n selectOption(option: AfComboboxOption): void {\n if (option.disabled) return;\n this.value.set(option.value);\n this.query.set(option.label);\n this.onChange(option.value);\n this.closeListbox(false);\n this.inputRef()?.nativeElement.focus();\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.query.set(target.value);\n if (!this.isOpen()) {\n this.openListbox();\n }\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n if (!target.value.trim()) {\n this.value.set(null);\n this.onChange(null);\n }\n }\n\n onFocus(): void {\n this.openListbox();\n }\n\n onBlur(): void {\n this.closeListbox();\n this.onTouchedCallback();\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(1);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(-1);\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.isOpen()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < filtered.length && !filtered[idx].disabled) {\n this.selectOption(filtered[idx]);\n }\n } else {\n this.openListbox();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.closeListbox();\n }\n break;\n\n case 'Home':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'End':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findLastEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'Tab':\n if (this.isOpen()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < filtered.length && !filtered[idx].disabled) {\n this.selectOption(filtered[idx]);\n }\n this.closeListbox();\n }\n break;\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const host = this.inputRef()?.nativeElement.closest('.ct-combobox');\n if (host && !host.contains(target)) {\n this.closeListbox();\n this.onTouchedCallback();\n }\n }\n\n /** Writes a value from the form model */\n writeValue(value: unknown): void {\n this.value.set(value ?? null);\n const option = this.options().find((o) => this.compareWith()(o.value, this.value()));\n this.query.set(option ? option.label : '');\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private moveHighlight(direction: number): void {\n const filtered = this.filteredOptions();\n if (filtered.length === 0) return;\n\n let idx = this.highlightedIndex();\n let attempts = 0;\n\n do {\n idx += direction;\n if (idx < 0) idx = filtered.length - 1;\n if (idx >= filtered.length) idx = 0;\n attempts++;\n } while (filtered[idx]?.disabled && attempts < filtered.length);\n\n if (!filtered[idx]?.disabled) {\n this.highlightedIndex.set(idx);\n this.scrollHighlightedIntoView();\n }\n }\n\n private scrollHighlightedIntoView(): void {\n queueMicrotask(() => {\n const listbox = this.listboxRef()?.nativeElement;\n if (!listbox) return;\n const optionEl = listbox.querySelector('[data-highlighted]') as HTMLElement;\n optionEl?.scrollIntoView?.({ block: 'nearest' });\n });\n }\n\n private findSelectedIndex(): number {\n const v = this.value();\n if (v === null || v === undefined) return this.findFirstEnabledIndex();\n const filtered = this.filteredOptions();\n const idx = filtered.findIndex((o) => this.compareWith()(o.value, v));\n return idx >= 0 ? idx : this.findFirstEnabledIndex();\n }\n\n private findFirstEnabledIndex(): number {\n return this.filteredOptions().findIndex((o) => !o.disabled);\n }\n\n private findLastEnabledIndex(): number {\n const filtered = this.filteredOptions();\n for (let i = filtered.length - 1; i >= 0; i--) {\n if (!filtered[i].disabled) return i;\n }\n return -1;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n output,\n model,\n signal,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AfButtonComponent } from '../button';\nimport { AfBadgeComponent } from '../badge';\n\nexport interface AfFileValidationError {\n file: File;\n type: 'type' | 'size';\n message: string;\n}\n\nexport interface AfFileEntry {\n file: File;\n status: 'success' | 'error';\n error?: string;\n}\n\n/**\n * File upload component with drag-and-drop, validation, and form control support.\n *\n * @example\n * <af-file-upload\n * label=\"Attachments\"\n * hint=\"PDF, DOCX up to 10MB\"\n * accept=\".pdf,.docx\"\n * [maxSize]=\"10485760\"\n * multiple\n * [(ngModel)]=\"files\">\n * </af-file-upload>\n *\n * @example\n * <af-file-upload\n * label=\"Avatar\"\n * accept=\"image/*\"\n * [maxSize]=\"2097152\"\n * [formControl]=\"avatarControl\">\n * </af-file-upload>\n */\n@Component({\n selector: 'af-file-upload',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AfButtonComponent, AfBadgeComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfFileUploadComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"ct-file-upload\">\n @if (label()) {\n <span class=\"ct-field__label\" [id]=\"labelId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </span>\n }\n\n <label\n class=\"ct-file-upload__dropzone\"\n [attr.for]=\"inputId()\"\n [attr.data-state]=\"dragOver() ? 'dragover' : null\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\">\n <input\n class=\"ct-file-upload__input\"\n [id]=\"inputId()\"\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"label() || 'File upload'\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n (change)=\"onFileSelected($event)\"\n (blur)=\"onTouched()\" />\n <span class=\"ct-file-upload__title\">Drop files here or browse</span>\n @if (hint()) {\n <span class=\"ct-file-upload__hint\" [id]=\"hintId()\">{{ hint() }}</span>\n }\n <span class=\"ct-button ct-button--secondary ct-button--sm\" aria-hidden=\"true\">\n Browse files\n </span>\n </label>\n\n @if (fileEntries().length > 0) {\n <ul class=\"ct-file-upload__list\" aria-label=\"Selected files\">\n @for (entry of fileEntries(); track $index) {\n <li class=\"ct-file-upload__item\" [attr.data-status]=\"entry.status\">\n <div class=\"ct-file-upload__file\">\n <span class=\"ct-file-upload__name\">{{ entry.file.name }}</span>\n <span class=\"ct-file-upload__meta\">{{ formatSize(entry.file.size) }}</span>\n @if (entry.error) {\n <span class=\"ct-file-upload__error\">{{ entry.error }}</span>\n }\n </div>\n <div class=\"ct-file-upload__actions\">\n @if (entry.status === 'success') {\n <af-badge variant=\"success\">Ready</af-badge>\n }\n @if (entry.status === 'error') {\n <af-badge variant=\"danger\">Invalid</af-badge>\n }\n @if (!disabled()) {\n <af-button\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'Remove ' + entry.file.name\"\n (clicked)=\"removeFile(entry)\">\n Remove\n </af-button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n @if (error()) {\n <div class=\"ct-file-upload__error\" [id]=\"errorId()\" role=\"alert\">\n {{ error() }}\n </div>\n }\n\n <span class=\"af-file-upload__sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ liveAnnouncement() }}\n </span>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .af-file-upload__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `,\n ],\n})\nexport class AfFileUploadComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the dropzone */\n label = input('');\n\n /** Hint text shown in the dropzone (e.g. accepted types and size limit) */\n hint = input('');\n\n /** Error message — shows error state */\n error = input('');\n\n /** Accepted file types (e.g. '.pdf,.docx' or 'image/*') */\n accept = input('');\n\n /** Maximum file size in bytes (0 = unlimited) */\n maxSize = input(0);\n\n /** Allow selecting multiple files */\n multiple = input(false);\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Emits validation errors when invalid files are added */\n validationErrors = output<AfFileValidationError[]>();\n\n /** Unique component ID */\n inputId = input(`af-file-upload-${AfFileUploadComponent.nextId++}`);\n\n fileEntries = signal<AfFileEntry[]>([]);\n dragOver = signal(false);\n liveAnnouncement = signal('');\n\n onChange: (value: File | File[] | null) => void = () => {};\n onTouched: () => void = () => {};\n\n labelId = computed(() => `${this.inputId()}-label`);\n hintId = computed(() => `${this.inputId()}-hint`);\n errorId = computed(() => `${this.inputId()}-error`);\n\n ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n if (this.error()) ids.push(this.errorId());\n if (this.hint()) ids.push(this.hintId());\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n onDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled()) {\n this.dragOver.set(true);\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragOver.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragOver.set(false);\n\n if (this.disabled()) return;\n\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.processFiles(Array.from(files));\n }\n }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.processFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n /** Removes a file entry from the list */\n removeFile(entry: AfFileEntry): void {\n this.fileEntries.update((entries) => entries.filter((e) => e !== entry));\n this.emitValue();\n this.announce(`${entry.file.name} removed`);\n }\n\n /** Formats bytes into a human-readable size string */\n formatSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const size = bytes / Math.pow(1024, i);\n return `${size < 10 ? size.toFixed(1) : Math.round(size)} ${units[i]}`;\n }\n\n writeValue(value: File | File[] | null): void {\n if (!value) {\n this.fileEntries.set([]);\n return;\n }\n const files = Array.isArray(value) ? value : [value];\n this.fileEntries.set(files.map((file) => ({ file, status: 'success' as const })));\n }\n\n registerOnChange(fn: (value: File | File[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private processFiles(files: File[]): void {\n const newEntries: AfFileEntry[] = [];\n const errors: AfFileValidationError[] = [];\n\n for (const file of files) {\n const fileErrors = this.validateFile(file);\n if (fileErrors.length > 0) {\n newEntries.push({ file, status: 'error', error: fileErrors[0].message });\n errors.push(...fileErrors);\n } else {\n newEntries.push({ file, status: 'success' });\n }\n }\n\n if (this.multiple()) {\n this.fileEntries.update((existing) => [...existing, ...newEntries]);\n } else {\n this.fileEntries.set(newEntries.slice(0, 1));\n }\n\n if (errors.length > 0) {\n this.validationErrors.emit(errors);\n }\n\n this.emitValue();\n\n const validCount = newEntries.filter((e) => e.status === 'success').length;\n const errorCount = newEntries.filter((e) => e.status === 'error').length;\n const parts: string[] = [];\n if (validCount > 0) parts.push(`${validCount} file${validCount > 1 ? 's' : ''} added`);\n if (errorCount > 0) parts.push(`${errorCount} file${errorCount > 1 ? 's' : ''} rejected`);\n this.announce(parts.join(', '));\n }\n\n private validateFile(file: File): AfFileValidationError[] {\n const errors: AfFileValidationError[] = [];\n\n if (this.accept() && !this.isFileTypeAccepted(file)) {\n errors.push({\n file,\n type: 'type',\n message: `File type not accepted: ${file.name}`,\n });\n }\n\n if (this.maxSize() > 0 && file.size > this.maxSize()) {\n errors.push({\n file,\n type: 'size',\n message: `File too large: ${file.name} (${this.formatSize(file.size)})`,\n });\n }\n\n return errors;\n }\n\n private isFileTypeAccepted(file: File): boolean {\n const acceptStr = this.accept();\n if (!acceptStr) return true;\n\n const acceptedTypes = acceptStr.split(',').map((t) => t.trim().toLowerCase());\n const fileName = file.name.toLowerCase();\n const fileType = file.type.toLowerCase();\n\n return acceptedTypes.some((accepted) => {\n if (accepted.startsWith('.')) {\n return fileName.endsWith(accepted);\n }\n if (accepted.endsWith('/*')) {\n return fileType.startsWith(accepted.slice(0, -1));\n }\n return fileType === accepted;\n });\n }\n\n private emitValue(): void {\n const validFiles = this.fileEntries()\n .filter((e) => e.status === 'success')\n .map((e) => e.file);\n\n if (this.multiple()) {\n this.onChange(validFiles);\n } else {\n this.onChange(validFiles[0] ?? null);\n }\n }\n\n private announce(message: string): void {\n this.liveAnnouncement.set('');\n setTimeout(() => this.liveAnnouncement.set(message));\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n computed,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfSelectMenuOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Custom dropdown select component with keyboard navigation\n * and full ARIA listbox pattern for single and multi-select.\n *\n * @example Single select\n * <af-select-menu\n * label=\"Country\"\n * placeholder=\"Select a country\"\n * [options]=\"countries\"\n * [(ngModel)]=\"selectedCountry\">\n * </af-select-menu>\n *\n * @example Multi-select with reactive forms\n * <af-select-menu\n * label=\"Roles\"\n * placeholder=\"Select roles\"\n * [options]=\"roles\"\n * [multiple]=\"true\"\n * [formControl]=\"rolesControl\">\n * </af-select-menu>\n */\n@Component({\n selector: 'af-select-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSelectMenuComponent),\n multi: true,\n },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [id]=\"labelId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n #menuEl\n [class]=\"menuClasses()\"\n [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <button\n #triggerEl\n class=\"ct-select-menu__trigger\"\n type=\"button\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"label() ? null : 'Select option'\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled()\"\n (click)=\"toggleListbox()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\">\n <span\n class=\"ct-select-menu__value\"\n [attr.data-placeholder]=\"isPlaceholder() ? '' : null\">\n {{ displayValue() }}\n </span>\n <span class=\"ct-select-menu__icon\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </button>\n\n <div\n #listboxEl\n [id]=\"listboxId\"\n class=\"ct-select-menu__content\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n tabindex=\"-1\">\n @for (option of options(); track option.value; let i = $index) {\n <div\n class=\"ct-select-menu__option\"\n role=\"option\"\n [id]=\"getOptionId(i)\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [attr.data-highlighted]=\"highlightedIndex() === i ? '' : null\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n (mousedown)=\"$event.preventDefault()\">\n <span class=\"ct-select-menu__option-check\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n <span class=\"ct-select-menu__option-label\">{{ option.label }}</span>\n </div>\n }\n </div>\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId\">{{ error() }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfSelectMenuComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the select */\n label = input('');\n\n /** Placeholder text when nothing is selected */\n placeholder = input('');\n\n /** Available options */\n options = input<AfSelectMenuOption[]>([]);\n\n /** Hint text shown below the select */\n hint = input('');\n\n /** Error message — shows error state */\n error = input('');\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Allow selecting multiple options */\n multiple = input(false);\n\n /** Size variant */\n size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Value comparison function for object values */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique component ID */\n componentId = input(`af-select-menu-${AfSelectMenuComponent.nextId++}`);\n\n triggerRef = viewChild<ElementRef<HTMLButtonElement>>('triggerEl');\n listboxRef = viewChild<ElementRef<HTMLDivElement>>('listboxEl');\n menuRef = viewChild<ElementRef<HTMLDivElement>>('menuEl');\n\n isOpen = signal(false);\n highlightedIndex = signal(-1);\n private value = signal<unknown>(null);\n\n private onChange: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n get labelId(): string {\n return `${this.componentId()}-label`;\n }\n\n get listboxId(): string {\n return `${this.componentId()}-listbox`;\n }\n\n get hintId(): string {\n return `${this.componentId()}-hint`;\n }\n\n get errorId(): string {\n return `${this.componentId()}-error`;\n }\n\n menuClasses = computed(() => {\n const classes = ['ct-select-menu'];\n const s = this.size();\n if (s === 'sm') classes.push('ct-select-menu--sm');\n if (s === 'lg') classes.push('ct-select-menu--lg');\n return classes.join(' ');\n });\n\n isPlaceholder = computed(() => {\n const v = this.value();\n if (this.multiple()) {\n return ((v as unknown[]) ?? []).length === 0;\n }\n return v === null || v === undefined;\n });\n\n displayValue = computed(() => {\n const v = this.value();\n const opts = this.options();\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const vals = (v as unknown[]) ?? [];\n if (vals.length === 0) return this.placeholder();\n return vals\n .map((val) => opts.find((o) => cmp(o.value, val))?.label)\n .filter(Boolean)\n .join(', ');\n }\n\n if (v === null || v === undefined) return this.placeholder();\n return opts.find((o) => cmp(o.value, v))?.label ?? this.placeholder();\n });\n\n activeDescendantId = computed(() => {\n const idx = this.highlightedIndex();\n if (idx < 0 || idx >= this.options().length) return null;\n return this.getOptionId(idx);\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId;\n if (this.hint()) return this.hintId;\n return null;\n }\n\n getOptionId(index: number): string {\n return `${this.componentId()}-option-${index}`;\n }\n\n isSelected(option: AfSelectMenuOption): boolean {\n const v = this.value();\n const cmp = this.compareWith();\n if (this.multiple()) {\n return ((v as unknown[]) ?? []).some((val) => cmp(val, option.value));\n }\n if (v === null || v === undefined) return false;\n return cmp(v, option.value);\n }\n\n /** Toggles the listbox open/closed */\n toggleListbox(): void {\n if (this.isOpen()) {\n this.closeListbox();\n } else {\n this.openListbox();\n }\n }\n\n /** Opens the listbox and highlights the selected or first enabled option */\n openListbox(): void {\n if (this.disabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.highlightedIndex.set(this.findSelectedOrFirstIndex());\n this.scrollHighlightedIntoView();\n }\n\n /** Closes the listbox */\n closeListbox(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.highlightedIndex.set(-1);\n }\n\n /** Selects or toggles an option */\n selectOption(option: AfSelectMenuOption): void {\n if (option.disabled) return;\n\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const current = (this.value() as unknown[]) ?? [];\n const idx = current.findIndex((v) => cmp(v, option.value));\n const next = idx >= 0\n ? [...current.slice(0, idx), ...current.slice(idx + 1)]\n : [...current, option.value];\n this.value.set(next);\n this.onChange(next);\n } else {\n this.value.set(option.value);\n this.onChange(option.value);\n this.closeListbox();\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const opts = this.options();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(1);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(-1);\n break;\n\n case 'Enter':\n case ' ':\n if (this.isOpen()) {\n event.preventDefault();\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\n this.selectOption(opts[idx]);\n }\n } else {\n event.preventDefault();\n this.openListbox();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.closeListbox();\n this.triggerRef()?.nativeElement.focus();\n }\n break;\n\n case 'Home':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'End':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findLastEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'Tab':\n if (this.isOpen()) {\n if (!this.multiple()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\n this.selectOption(opts[idx]);\n }\n }\n this.closeListbox();\n }\n break;\n }\n }\n\n onBlur(): void {\n this.closeListbox();\n this.onTouchedCallback();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n const target = event.target as HTMLElement;\n const menu = this.menuRef()?.nativeElement;\n if (menu && !menu.contains(target)) {\n this.closeListbox();\n this.onTouchedCallback();\n }\n }\n\n writeValue(value: unknown): void {\n if (this.multiple()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else {\n this.value.set(value ?? null);\n }\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private moveHighlight(direction: number): void {\n const opts = this.options();\n if (opts.length === 0) return;\n\n let idx = this.highlightedIndex();\n let attempts = 0;\n\n do {\n idx += direction;\n if (idx < 0) idx = opts.length - 1;\n if (idx >= opts.length) idx = 0;\n attempts++;\n } while (opts[idx]?.disabled && attempts < opts.length);\n\n if (!opts[idx]?.disabled) {\n this.highlightedIndex.set(idx);\n this.scrollHighlightedIntoView();\n }\n }\n\n private scrollHighlightedIntoView(): void {\n queueMicrotask(() => {\n const listbox = this.listboxRef()?.nativeElement;\n if (!listbox) return;\n const el = listbox.querySelector('[data-highlighted]') as HTMLElement;\n el?.scrollIntoView?.({ block: 'nearest' });\n });\n }\n\n private findSelectedOrFirstIndex(): number {\n const v = this.value();\n const opts = this.options();\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const vals = (v as unknown[]) ?? [];\n if (vals.length > 0) {\n const idx = opts.findIndex((o) => cmp(o.value, vals[0]));\n if (idx >= 0 && !opts[idx].disabled) return idx;\n }\n } else if (v !== null && v !== undefined) {\n const idx = opts.findIndex((o) => cmp(o.value, v));\n if (idx >= 0) return idx;\n }\n\n return this.findFirstEnabledIndex();\n }\n\n private findFirstEnabledIndex(): number {\n return this.options().findIndex((o) => !o.disabled);\n }\n\n private findLastEnabledIndex(): number {\n const opts = this.options();\n for (let i = opts.length - 1; i >= 0; i--) {\n if (!opts[i].disabled) return i;\n }\n return -1;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n booleanAttribute,\n input,\n output,\n signal,\n computed,\n contentChildren,\n effect,\n viewChild,\n viewChildren,\n ElementRef,\n inject,\n} from '@angular/core';\n\nlet nextId = 0;\n\nexport type AfNavbarSize = 'sm' | 'md' | 'lg';\nexport type AfNavbarVariant =\n | 'default'\n | 'sticky'\n | 'fixed'\n | 'elevated'\n | 'transparent'\n | 'dark'\n | 'bordered';\n\n/**\n * Individual navigation item used within af-navbar.\n *\n * @example\n * <af-nav-item label=\"Dashboard\" href=\"/dashboard\" [active]=\"true\" />\n */\n@Component({\n selector: 'af-nav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <li class=\"ct-navbar__item\" role=\"none\">\n @if (href()) {\n <a\n #linkEl\n class=\"ct-navbar__link\"\n [href]=\"href()\"\n role=\"menuitem\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"rovingTabindex()\"\n (click)=\"onClick($event)\">\n {{ label() }}\n </a>\n } @else {\n <button\n #linkEl\n class=\"ct-navbar__link\"\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"rovingTabindex()\"\n (click)=\"onClick($event)\">\n {{ label() }}\n </button>\n }\n </li>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfNavItemComponent {\n /** Text label for the navigation item. */\n label = input.required<string>();\n\n /** URL for the navigation link. Renders as `<a>` when provided, `<button>` otherwise. */\n href = input('');\n\n /** Marks this item as the currently active page. */\n active = input(false, { transform: booleanAttribute });\n\n /** Disables interaction with this item. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Emits when the item is clicked (only fires when not disabled). */\n clicked = output<MouseEvent>();\n\n /** Roving tabindex managed by the parent AfNavbarComponent. */\n rovingTabindex = signal(0);\n\n linkRef = viewChild<ElementRef<HTMLElement>>('linkEl');\n\n /** Focus the link or button element. */\n focusLink(): void {\n this.linkRef()?.nativeElement.focus();\n }\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.clicked.emit(event);\n }\n}\n\n/**\n * Responsive navbar with mobile menu, keyboard navigation, and ARIA landmarks.\n *\n * @example\n * <af-navbar ariaLabel=\"Main navigation\">\n * <a brand class=\"ct-navbar__brand\" href=\"/\">My App</a>\n * <af-nav-item label=\"Dashboard\" href=\"/dashboard\" [active]=\"true\" />\n * <af-nav-item label=\"Settings\" href=\"/settings\" />\n * <button actions class=\"ct-button\">Profile</button>\n * </af-navbar>\n */\n@Component({\n selector: 'af-navbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'handleKeydown($event)',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <header [class]=\"navbarClasses()\">\n <ng-content select=\"[brand]\" />\n\n <button\n #toggleBtn\n class=\"ct-navbar__toggle\"\n type=\"button\"\n [attr.aria-expanded]=\"mobileMenuOpen()\"\n [attr.aria-label]=\"mobileMenuOpen() ? 'Close menu' : 'Open menu'\"\n [attr.aria-controls]=\"mobileMenuId\"\n (click)=\"toggleMobileMenu()\">\n <span class=\"ct-navbar__toggle-icon\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n </button>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"ct-navbar__nav\" role=\"menubar\">\n <ng-content />\n </ul>\n </nav>\n\n <div class=\"ct-navbar__spacer\"></div>\n\n <div class=\"ct-navbar__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n\n <div\n class=\"ct-navbar__mobile-menu\"\n [attr.id]=\"mobileMenuId\"\n [attr.data-state]=\"mobileMenuOpen() ? 'open' : 'closed'\"\n role=\"menu\"\n aria-label=\"Mobile navigation\">\n @for (item of items(); track item) {\n @if (item.href()) {\n <a\n #mobileLink\n class=\"ct-navbar__link\"\n [href]=\"item.href()\"\n role=\"menuitem\"\n [attr.aria-current]=\"item.active() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled() || null\"\n [attr.tabindex]=\"mobileMenuOpen() ? 0 : -1\"\n (click)=\"onMobileItemClick($event, item)\">\n {{ item.label() }}\n </a>\n } @else {\n <button\n #mobileLink\n class=\"ct-navbar__link\"\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-current]=\"item.active() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled() || null\"\n [attr.tabindex]=\"mobileMenuOpen() ? 0 : -1\"\n (click)=\"onMobileItemClick($event, item)\">\n {{ item.label() }}\n </button>\n }\n }\n </div>\n </header>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfNavbarComponent {\n private componentId = nextId++;\n private hostEl = inject(ElementRef);\n\n /** Size variant of the navbar. */\n size = input<AfNavbarSize>('md');\n\n /** Visual variant of the navbar. */\n variant = input<AfNavbarVariant>('default');\n\n /** Center the navigation items. */\n center = input(false, { transform: booleanAttribute });\n\n /** Accessible label for the navigation landmark. */\n ariaLabel = input('Main navigation');\n\n /** Projected nav item children. */\n items = contentChildren(AfNavItemComponent);\n\n /** Whether the mobile menu is currently open. */\n mobileMenuOpen = signal(false);\n\n readonly mobileMenuId = `af-navbar-mobile-${this.componentId}`;\n\n private focusedIndex = signal(0);\n private toggleRef = viewChild<ElementRef<HTMLButtonElement>>('toggleBtn');\n private mobileLinks = viewChildren<ElementRef<HTMLElement>>('mobileLink');\n\n navbarClasses = computed(() => {\n const classes = ['ct-navbar'];\n\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-navbar--${sz}`);\n }\n\n const variant = this.variant();\n if (variant !== 'default') {\n classes.push(`ct-navbar--${variant}`);\n }\n\n if (this.center()) {\n classes.push('ct-navbar--center');\n }\n\n return classes.join(' ');\n });\n\n /** Manage roving tabindex across child nav items. */\n private rovingTabindexEffect = effect(() => {\n const items = this.items();\n const enabledItems = items.filter((i) => !i.disabled());\n let idx = this.focusedIndex();\n\n if (enabledItems.length === 0) {\n items.forEach((item) => item.rovingTabindex.set(-1));\n return;\n }\n\n if (idx >= enabledItems.length) {\n idx = 0;\n }\n\n let enabledCount = 0;\n items.forEach((item) => {\n if (item.disabled()) {\n item.rovingTabindex.set(-1);\n } else {\n item.rovingTabindex.set(enabledCount === idx ? 0 : -1);\n enabledCount++;\n }\n });\n });\n\n /** Toggle mobile menu open/closed and auto-focus the first enabled item. */\n toggleMobileMenu(): void {\n const willOpen = !this.mobileMenuOpen();\n this.mobileMenuOpen.set(willOpen);\n\n if (willOpen) {\n queueMicrotask(() => {\n const links = this.mobileLinks();\n const firstEnabledIdx = this.items().findIndex((i) => !i.disabled());\n if (firstEnabledIdx >= 0 && links[firstEnabledIdx]) {\n links[firstEnabledIdx].nativeElement.focus();\n }\n });\n }\n }\n\n onMobileItemClick(event: MouseEvent, item: AfNavItemComponent): void {\n if (item.disabled()) {\n event.preventDefault();\n return;\n }\n item.clicked.emit(event);\n this.mobileMenuOpen.set(false);\n }\n\n onDocumentClick(event: Event): void {\n if (!this.mobileMenuOpen()) return;\n const target = event.target as HTMLElement;\n if (!this.hostEl.nativeElement.contains(target)) {\n this.mobileMenuOpen.set(false);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.mobileMenuOpen()) {\n event.preventDefault();\n this.mobileMenuOpen.set(false);\n this.toggleRef()?.nativeElement.focus();\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (this.isMobileMenuTarget(target)) {\n this.handleMobileKeydown(event, target);\n return;\n }\n\n if (\n target.getAttribute('role') === 'menuitem' &&\n target.closest('[role=\"menubar\"]')\n ) {\n this.handleDesktopKeydown(event);\n }\n }\n\n private handleDesktopKeydown(event: KeyboardEvent): void {\n const enabledItems = this.items().filter((i) => !i.disabled());\n if (enabledItems.length === 0) return;\n\n const currentIndex = this.focusedIndex();\n const last = enabledItems.length - 1;\n\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = (currentIndex + 1) % enabledItems.length;\n this.focusedIndex.set(next);\n enabledItems[next].focusLink();\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev =\n (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n this.focusedIndex.set(prev);\n enabledItems[prev].focusLink();\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusedIndex.set(0);\n enabledItems[0].focusLink();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusedIndex.set(last);\n enabledItems[last].focusLink();\n break;\n }\n }\n }\n\n private handleMobileKeydown(\n event: KeyboardEvent,\n target: HTMLElement,\n ): void {\n const links = this.mobileLinks();\n const enabledIndices = this.items()\n .map((item, i) => ({ item, i }))\n .filter(({ item }) => !item.disabled())\n .map(({ i }) => i);\n\n if (enabledIndices.length === 0) return;\n\n const currentIdx = links.findIndex(\n (ref) => ref.nativeElement === target,\n );\n const enabledPosition = enabledIndices.indexOf(currentIdx);\n if (enabledPosition === -1) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next =\n enabledIndices[(enabledPosition + 1) % enabledIndices.length];\n links[next].nativeElement.focus();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const prev =\n enabledIndices[\n (enabledPosition - 1 + enabledIndices.length) %\n enabledIndices.length\n ];\n links[prev].nativeElement.focus();\n break;\n }\n case 'Home': {\n event.preventDefault();\n links[enabledIndices[0]].nativeElement.focus();\n break;\n }\n case 'End': {\n event.preventDefault();\n links[\n enabledIndices[enabledIndices.length - 1]\n ].nativeElement.focus();\n break;\n }\n }\n }\n\n private isMobileMenuTarget(target: HTMLElement): boolean {\n return target.closest('.ct-navbar__mobile-menu') !== null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Signal,\n computed,\n contentChild,\n effect,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\nexport type AfPopoverPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type AfPopoverAlign = 'start' | 'center' | 'end';\nexport type AfPopoverSize = 'sm' | 'md' | 'lg';\n\n/** @internal API surface exposed to the trigger directive. */\ninterface AfPopoverApi {\n toggle(): void;\n open: Signal<boolean>;\n contentId: string;\n}\n\n/** @internal */\nconst AF_POPOVER = new InjectionToken<AfPopoverApi>('AfPopover');\n\n/**\n * Marks the trigger element for an `af-popover`.\n * Automatically sets ARIA attributes and toggles on click.\n *\n * @example\n * ```html\n * <af-popover>\n * <button afPopoverTrigger>Open</button>\n * ...\n * </af-popover>\n * ```\n */\n@Directive({\n selector: '[afPopoverTrigger]',\n host: {\n '(click)': 'popover.toggle()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-expanded]': 'popover.open()',\n '[attr.aria-controls]': 'popover.contentId',\n },\n})\nexport class AfPopoverTriggerDirective {\n /** @internal */\n readonly popover = inject(AF_POPOVER);\n /** @internal */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n}\n\n/**\n * Popover with configurable positioning, auto-flip, focus management,\n * and full ARIA support.\n *\n * @example\n * ```html\n * <af-popover position=\"bottom\" align=\"center\" title=\"Info\">\n * <button afPopoverTrigger>More info</button>\n * <p>Some helpful content.</p>\n * </af-popover>\n * ```\n */\n@Component({\n selector: 'af-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AF_POPOVER, useExisting: forwardRef(() => AfPopoverComponent) },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscapeKey()',\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n <div\n #wrapper\n [class]=\"containerClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n [attr.data-side]=\"activeSide()\"\n [attr.data-align]=\"align()\">\n <ng-content select=\"[afPopoverTrigger]\"></ng-content>\n <div\n #popoverContent\n class=\"ct-popover__content\"\n role=\"dialog\"\n [id]=\"contentId\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"!ariaLabel() && title() ? headerId : null\"\n tabindex=\"-1\">\n @if (showArrow()) {\n <div class=\"ct-popover__arrow\"></div>\n }\n @if (title()) {\n <div class=\"ct-popover__header\">\n <h3 [id]=\"headerId\">{{ title() }}</h3>\n </div>\n }\n <div class=\"ct-popover__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfPopoverComponent implements AfPopoverApi, OnDestroy {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Two-way bindable open state. */\n open = model(false);\n\n /** Preferred position relative to the trigger. Flips automatically when space is insufficient. */\n position = input<AfPopoverPosition>('bottom');\n\n /** Alignment along the position axis. */\n align = input<AfPopoverAlign>('center');\n\n /** Size variant (`sm` = 240px, `md` = default, `lg` = 480px). */\n size = input<AfPopoverSize>('md');\n\n /** Title displayed in the header section. */\n title = input('');\n\n /** Accessible label (overrides `aria-labelledby` from title). */\n ariaLabel = input('');\n\n /** Whether to show the decorative arrow. */\n showArrow = input(true);\n\n /** Whether clicking outside closes the popover. */\n closeOnClickOutside = input(true);\n\n /** Emits when the popover closes. */\n closed = output<void>();\n\n readonly contentId = `af-popover-${AfPopoverComponent.nextId}`;\n readonly headerId = `af-popover-header-${AfPopoverComponent.nextId++}`;\n\n private wrapperRef = viewChild<ElementRef<HTMLElement>>('wrapper');\n private contentRef = viewChild<ElementRef<HTMLElement>>('popoverContent');\n private triggerDirective = contentChild(AfPopoverTriggerDirective);\n private flippedSide = signal<AfPopoverPosition | null>(null);\n\n /** Effective side after auto-flip evaluation. */\n activeSide = computed(() => this.flippedSide() ?? this.position());\n\n containerClasses = computed(() => {\n const classes = ['ct-popover'];\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-popover--${sz}`);\n }\n return classes.join(' ');\n });\n\n private openEffect = effect(() => {\n if (this.open()) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n\n ngOnDestroy(): void {\n this.focusTrap.restoreFocus();\n }\n\n /** Toggle the popover open state. */\n toggle(): void {\n if (this.open()) {\n this.close();\n } else {\n this.open.set(true);\n }\n }\n\n /** Close the popover and emit the `closed` event. */\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.open() || !this.closeOnClickOutside()) return;\n const wrapper = this.wrapperRef()?.nativeElement;\n if (wrapper && !wrapper.contains(event.target as Node)) {\n this.close();\n }\n }\n\n onEscapeKey(): void {\n if (!this.open()) return;\n const trigger = this.triggerDirective()?.elementRef.nativeElement;\n if (trigger) {\n this.focusTrap.setReturnFocus(trigger);\n }\n this.close();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open() || event.key !== 'Tab') return;\n const content = this.contentRef()?.nativeElement;\n this.focusTrap.handleTab(event, content, content);\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n this.flippedSide.set(this.computeFlippedSide());\n queueMicrotask(() => {\n if (!this.open()) return;\n const content = this.contentRef()?.nativeElement;\n this.focusTrap.focusFirst(content, content);\n });\n }\n\n private onClose(): void {\n this.flippedSide.set(null);\n this.focusTrap.restoreFocus();\n }\n\n private computeFlippedSide(): AfPopoverPosition {\n const trigger = this.triggerDirective()?.elementRef.nativeElement;\n const content = this.contentRef()?.nativeElement;\n if (!trigger || !content) return this.position();\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const preferred = this.position();\n\n const opposites: Record<AfPopoverPosition, AfPopoverPosition> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n\n const space: Record<AfPopoverPosition, number> = {\n top: triggerRect.top,\n bottom: window.innerHeight - triggerRect.bottom,\n left: triggerRect.left,\n right: window.innerWidth - triggerRect.right,\n };\n\n const needed: Record<AfPopoverPosition, number> = {\n top: contentRect.height,\n bottom: contentRect.height,\n left: contentRect.width,\n right: contentRect.width,\n };\n\n if (space[preferred] >= needed[preferred]) return preferred;\n\n const opposite = opposites[preferred];\n if (space[opposite] >= needed[opposite]) return opposite;\n\n return preferred;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n input,\n output,\n signal,\n computed,\n effect,\n} from '@angular/core';\n\n/** Semantic variants controlling colors and ARIA behavior */\nexport type AfBannerVariant = 'info' | 'warning' | 'danger' | 'success' | 'neutral';\n\n/** Visual appearance styles */\nexport type AfBannerAppearance = 'subtle' | 'solid' | 'left-accent' | 'top-accent';\n\n/** Positioning strategies */\nexport type AfBannerPosition = 'inline' | 'fixed-top' | 'fixed-bottom' | 'sticky';\n\n/**\n * Persistent page- or section-level notice component.\n * Wraps the `ct-banner` design system component with dismiss logic,\n * optional auto-close timer, and ARIA live region support.\n *\n * Uses attribute-based content projection for icon, heading, message,\n * and actions slots. The component automatically applies the correct\n * `ct-banner__*` CSS wrapper classes.\n *\n * @example\n * ```html\n * <af-banner variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismissed()\">\n * <span icon>⚠️</span>\n * <span heading>Attention</span>\n * <span message>Something needs your attention.</span>\n * <div actions>\n * <button class=\"ct-button ct-button--sm\">Fix now</button>\n * </div>\n * </af-banner>\n * ```\n */\n@Component({\n selector: 'af-banner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n [class]=\"hostClasses()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-state]=\"state()\"\n [attr.role]=\"ariaRole()\">\n <div class=\"ct-banner__icon\">\n <ng-content select=\"[icon]\" />\n </div>\n <div class=\"ct-banner__content\">\n <div class=\"ct-banner__title\">\n <ng-content select=\"[heading]\" />\n </div>\n <div class=\"ct-banner__message\">\n <ng-content select=\"[message]\" />\n </div>\n <ng-content />\n </div>\n <div class=\"ct-banner__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n @if (dismissible()) {\n <button\n class=\"ct-banner__close\"\n type=\"button\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"dismiss()\">\n ×\n </button>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfBannerComponent implements OnDestroy {\n /** Semantic variant controlling colors and ARIA role */\n variant = input<AfBannerVariant>('info');\n\n /** Visual appearance style */\n appearance = input<AfBannerAppearance>('subtle');\n\n /** Positioning strategy */\n position = input<AfBannerPosition>('inline');\n\n /** Whether the banner displays a close/dismiss button */\n dismissible = input(false);\n\n /** Compact size mode */\n compact = input(false);\n\n /** Full-width layout (no radius, no inline border) */\n full = input(false);\n\n /** Auto-close delay in milliseconds. 0 means no auto-close */\n autoClose = input(0);\n\n /** Aria label for the close button */\n closeAriaLabel = input('Close banner');\n\n /** Emits when the banner is dismissed (by user or auto-close) */\n dismissed = output<void>();\n\n private readonly isDismissed = signal(false);\n private autoCloseTimerId: ReturnType<typeof setTimeout> | null = null;\n\n /** Current open/closed state for the data-state attribute */\n state = computed(() => (this.isDismissed() ? 'closed' : 'open'));\n\n /** ARIA role based on variant: alert for danger/warning, status for others */\n ariaRole = computed(() => {\n const v = this.variant();\n return v === 'danger' || v === 'warning' ? 'alert' : 'status';\n });\n\n /** Computed CSS class string for the banner element */\n hostClasses = computed(() => {\n const classes = ['ct-banner'];\n\n const app = this.appearance();\n if (app !== 'subtle') {\n classes.push(`ct-banner--${app}`);\n }\n\n const pos = this.position();\n if (pos !== 'inline') {\n classes.push(`ct-banner--${pos}`);\n }\n\n if (this.compact()) {\n classes.push('ct-banner--compact');\n }\n\n if (this.full()) {\n classes.push('ct-banner--full');\n }\n\n return classes.join(' ');\n });\n\n private autoCloseEffect = effect(() => {\n const delay = this.autoClose();\n this.clearAutoCloseTimer();\n if (delay > 0 && !this.isDismissed()) {\n this.autoCloseTimerId = setTimeout(() => this.dismiss(), delay);\n }\n });\n\n ngOnDestroy(): void {\n this.clearAutoCloseTimer();\n }\n\n /** Dismisses the banner and emits the dismissed event */\n dismiss(): void {\n if (this.isDismissed()) return;\n this.isDismissed.set(true);\n this.clearAutoCloseTimer();\n this.dismissed.emit();\n }\n\n private clearAutoCloseTimer(): void {\n if (this.autoCloseTimerId !== null) {\n clearTimeout(this.autoCloseTimerId);\n this.autoCloseTimerId = null;\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n inject,\n ElementRef,\n DOCUMENT,\n} from '@angular/core';\n\n/**\n * Skip-link component for keyboard-only navigation bypass.\n *\n * Renders an anchor that is visually hidden off-screen and slides into view\n * when focused. On activation it moves focus to the target element, allowing\n * keyboard users to skip repetitive navigation blocks.\n *\n * Must be placed as the first focusable element in the document.\n *\n * @example\n * <af-skip-link target=\"main-content\" />\n * <nav>…</nav>\n * <main id=\"main-content\" tabindex=\"-1\">…</main>\n */\n@Component({\n selector: 'af-skip-link',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <a\n class=\"ct-skip-link\"\n [attr.href]=\"'#' + target()\"\n (click)=\"focusTarget($event)\"\n >\n {{ label() }}\n </a>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfSkipLinkComponent {\n /** ID of the element to skip to (without the leading `#`). */\n target = input.required<string>();\n\n /** Visible label text shown when the link receives focus. */\n label = input('Skip to main content');\n\n private readonly document = inject(DOCUMENT);\n\n /**\n * Moves focus to the target element so keyboard navigation\n * continues from there instead of the top of the page.\n */\n focusTarget(event: Event): void {\n event.preventDefault();\n\n const el = this.document.getElementById(this.target());\n if (!el) {\n return;\n }\n\n if (!el.hasAttribute('tabindex')) {\n el.setAttribute('tabindex', '-1');\n }\n el.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n} from '@angular/core';\n\nexport type AfEmptyStateSize = 'sm' | 'md' | 'lg';\nexport type AfEmptyStateVariant = 'default' | 'error';\n\n/**\n * Empty state component for displaying placeholder content when no data is available.\n *\n * Supports content projection for icon, title, description, and actions.\n * Alternatively, use the `icon` input for simple text/emoji icons.\n *\n * @example\n * <af-empty-state variant=\"default\" size=\"md\" [bordered]=\"true\">\n * <span icon>📦</span>\n * <span title>No items found</span>\n * <span description>Try adjusting your search or filter criteria.</span>\n * <div actions>\n * <button class=\"ct-button ct-button--primary\">Add Item</button>\n * </div>\n * </af-empty-state>\n *\n * @example\n * <af-empty-state icon=\"🔍\" variant=\"error\">\n * <span title>Search failed</span>\n * <span description>An error occurred while searching.</span>\n * </af-empty-state>\n */\n@Component({\n selector: 'af-empty-state',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"containerClasses()\" role=\"status\">\n <div class=\"ct-empty-state__icon\" aria-hidden=\"true\">\n @if (icon()) {\n {{ icon() }}\n } @else {\n <ng-content select=\"[icon]\" />\n }\n </div>\n <p class=\"ct-empty-state__title\">\n <ng-content select=\"[title]\" />\n </p>\n <p class=\"ct-empty-state__description\">\n <ng-content select=\"[description]\" />\n </p>\n <div class=\"ct-empty-state__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfEmptyStateComponent {\n /** Size variant controlling icon size, padding, and font sizes */\n size = input<AfEmptyStateSize>('md');\n\n /** Visual variant — `error` highlights icon and title in danger color */\n variant = input<AfEmptyStateVariant>('default');\n\n /** Whether to display a dashed border around the empty state */\n bordered = input(false);\n\n /** Icon character or emoji to display (alternative to icon content projection) */\n icon = input('');\n\n containerClasses = computed(() => {\n const classes = ['ct-empty-state'];\n\n const s = this.size();\n if (s !== 'md') {\n classes.push(`ct-empty-state--${s}`);\n }\n\n if (this.variant() === 'error') {\n classes.push('ct-empty-state--error');\n }\n\n if (this.bordered()) {\n classes.push('ct-empty-state--bordered');\n }\n\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n numberAttribute,\n} from '@angular/core';\n\nexport type AfSkeletonVariant = 'text' | 'title' | 'avatar' | 'rect';\n\n/**\n * Skeleton placeholder component for loading states.\n * Renders animated placeholders while content is loading.\n *\n * @example\n * <af-skeleton variant=\"text\" count=\"3\"></af-skeleton>\n * <af-skeleton variant=\"avatar\"></af-skeleton>\n * <af-skeleton variant=\"rect\" width=\"200px\" height=\"120px\"></af-skeleton>\n */\n@Component({\n selector: 'af-skeleton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'status',\n '[attr.aria-busy]': '\"true\"',\n '[attr.aria-label]': 'label()',\n },\n template: `\n @for (_ of items(); track $index) {\n <span\n [class]=\"skeletonClasses()\"\n [attr.style]=\"skeletonStyle()\"\n aria-hidden=\"true\"\n ></span>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n span + span {\n margin-top: 0.5rem;\n }\n `,\n ],\n})\nexport class AfSkeletonComponent {\n /** Visual variant of the skeleton placeholder */\n variant = input<AfSkeletonVariant>('text');\n\n /** Custom width (CSS value, e.g. '200px', '50%') */\n width = input<string>();\n\n /** Custom height (CSS value, e.g. '100px', '2em') */\n height = input<string>();\n\n /** Number of skeleton lines to render */\n count = input(1, { transform: numberAttribute });\n\n /** Accessible label for screen readers */\n label = input('Loading\\u2026');\n\n items = computed(() => Array.from({ length: this.count() }));\n\n skeletonClasses = computed(() => {\n return `ct-skeleton ct-skeleton--${this.variant()}`;\n });\n\n skeletonStyle = computed(() => {\n const w = this.width();\n const h = this.height();\n if (!w && !h) return null;\n const parts: string[] = [];\n if (w) parts.push(`--ct-skeleton-width: ${w}`);\n if (h) parts.push(`--ct-skeleton-height: ${h}`);\n return parts.join('; ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfDividerOrientation = 'horizontal' | 'vertical';\nexport type AfDividerColor = 'default' | 'strong' | 'muted';\nexport type AfDividerSpacing = 'sm' | 'md' | 'lg' | 'none';\n\n/**\n * Divider component for visually separating content sections.\n *\n * @example\n * <af-divider />\n * <af-divider orientation=\"vertical\" />\n * <af-divider color=\"strong\" spacing=\"lg\" />\n * <af-divider label=\"Section\" />\n */\n@Component({\n selector: 'af-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[class]': 'dividerClasses()',\n },\n template: `\n @if (label()) {\n <span class=\"ct-divider__label\">{{ label() }}</span>\n }\n `,\n})\nexport class AfDividerComponent {\n /** Orientation of the divider. */\n orientation = input<AfDividerOrientation>('horizontal');\n\n /** Color variant of the divider line. */\n color = input<AfDividerColor>('default');\n\n /** Spacing around the divider. */\n spacing = input<AfDividerSpacing>('md');\n\n /** Optional label text displayed in the center of the divider. */\n label = input('');\n\n dividerClasses = computed(() => {\n const classes = ['ct-divider'];\n\n if (this.orientation() === 'vertical') {\n classes.push('ct-divider--vertical');\n }\n\n if (this.color() !== 'default') {\n classes.push(`ct-divider--${this.color()}`);\n }\n\n if (this.spacing() !== 'md') {\n classes.push(`ct-divider--${this.spacing()}`);\n }\n\n if (this.label()) {\n classes.push('ct-divider--labeled');\n }\n\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n AfterContentChecked,\n ElementRef,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nconst CONTROL_SELECTORS = [\n 'input',\n 'select',\n 'textarea',\n '[role=\"combobox\"]',\n '[role=\"listbox\"]',\n '[role=\"spinbutton\"]',\n '[role=\"slider\"]',\n].join(',');\n\n/**\n * Form field wrapper that binds label, hint, and error message to a projected form control.\n *\n * Automatically links the label via `for`/`id` and sets `aria-describedby`\n * and `aria-invalid` on the first interactive element found inside the projection.\n *\n * @example\n * <af-field label=\"Email\" hint=\"We will not share this.\">\n * <input class=\"ct-input\" type=\"email\" />\n * </af-field>\n *\n * @example\n * <af-field label=\"Name\" [error]=\"nameError\" required>\n * <input class=\"ct-input\" />\n * </af-field>\n */\n@Component({\n selector: 'af-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-field\">\n @if (label()) {\n <label\n class=\"ct-field__label\"\n [class.ct-field__label--required]=\"required()\"\n [attr.for]=\"fieldId()\"\n >\n {{ label() }}\n </label>\n }\n\n <ng-content></ng-content>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" role=\"alert\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfFieldComponent implements AfterContentInit, AfterContentChecked {\n private static nextId = 0;\n\n /** Field label text */\n label = input('');\n\n /** Hint text shown below the control */\n hint = input('');\n\n /** Error message — replaces hint and marks the control as invalid */\n error = input('');\n\n /** Whether the field is required (appends visual indicator to label) */\n required = input(false);\n\n /** Unique ID applied to the projected control, auto-generated if omitted */\n fieldId = input(`af-field-${AfFieldComponent.nextId++}`);\n\n hintId = computed(() => `${this.fieldId()}-hint`);\n errorId = computed(() => `${this.fieldId()}-error`);\n\n private elementRef = inject(ElementRef);\n private controlEl: HTMLElement | null = null;\n\n ngAfterContentInit(): void {\n this.controlEl =\n this.elementRef.nativeElement.querySelector(CONTROL_SELECTORS);\n\n if (this.controlEl && !this.controlEl.id) {\n this.controlEl.id = this.fieldId();\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.controlEl) return;\n\n const error = this.error();\n const hint = this.hint();\n\n // aria-describedby\n if (error) {\n this.controlEl.setAttribute('aria-describedby', this.errorId());\n } else if (hint) {\n this.controlEl.setAttribute('aria-describedby', this.hintId());\n } else {\n this.controlEl.removeAttribute('aria-describedby');\n }\n\n // aria-invalid\n if (error) {\n this.controlEl.setAttribute('aria-invalid', 'true');\n } else {\n this.controlEl.removeAttribute('aria-invalid');\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n booleanAttribute,\n} from '@angular/core';\n\nexport type AfTableVariant = 'default' | 'striped' | 'bordered';\nexport type AfTableCellType = 'text' | 'numeric' | 'checkbox' | 'actions';\n\n/**\n * Lightweight table container wrapping the Construct Design System table styles.\n *\n * @example\n * <af-table variant=\"striped\" caption=\"Team members\">\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Name</af-table-header-cell>\n * <af-table-header-cell type=\"numeric\">Age</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Alice</af-table-cell>\n * <af-table-cell type=\"numeric\">30</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n * </af-table>\n */\n@Component({\n selector: 'af-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-table-wrap\">\n <table [class]=\"tableClasses()\">\n @if (caption()) {\n <caption>{{ caption() }}</caption>\n }\n <ng-content />\n </table>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfTableComponent {\n /** Visual variant of the table. */\n variant = input<AfTableVariant>('default');\n\n /** Use compact cell padding. */\n compact = input(false, { transform: booleanAttribute });\n\n /** Accessible caption rendered as a `<caption>` element. */\n caption = input('');\n\n tableClasses = computed(() => {\n const classes = ['ct-table'];\n if (this.variant() !== 'default') {\n classes.push(`ct-table--${this.variant()}`);\n }\n if (this.compact()) {\n classes.push('ct-table--compact');\n }\n return classes.join(' ');\n });\n}\n\n/**\n * Table header section rendering a semantic `<thead>` element.\n *\n * @example\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Column</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n */\n@Component({\n selector: 'af-table-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<thead><ng-content /></thead>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableHeaderComponent {}\n\n/**\n * Table body section rendering a semantic `<tbody>` element.\n *\n * @example\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Data</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n */\n@Component({\n selector: 'af-table-body',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<tbody><ng-content /></tbody>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableBodyComponent {}\n\n/**\n * Table row rendering a semantic `<tr>` element.\n */\n@Component({\n selector: 'af-table-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<tr><ng-content /></tr>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableRowComponent {}\n\n/**\n * Header cell rendering a semantic `<th>` element.\n *\n * @example\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Name</af-table-header-cell>\n * <af-table-header-cell type=\"numeric\">Age</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n */\n@Component({\n selector: 'af-table-header-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <th [class]=\"cellClasses()\" [attr.scope]=\"scope()\">\n <ng-content />\n </th>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableHeaderCellComponent {\n /** Cell type for specialized styling (numeric, checkbox, actions). */\n type = input<AfTableCellType>('text');\n\n /** Scope attribute for the header cell. */\n scope = input<'col' | 'row'>('col');\n\n cellClasses = computed(() => {\n const classes: string[] = [];\n if (this.type() !== 'text') {\n classes.push(`ct-table__cell--${this.type()}`);\n }\n return classes.join(' ');\n });\n}\n\n/**\n * Data cell rendering a semantic `<td>` element.\n *\n * @example\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Alice</af-table-cell>\n * <af-table-cell type=\"numeric\">42</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n */\n@Component({\n selector: 'af-table-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <td [class]=\"cellClasses()\">\n <ng-content />\n </td>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableCellComponent {\n /** Cell type for specialized styling (numeric, checkbox, actions). */\n type = input<AfTableCellType>('text');\n\n cellClasses = computed(() => {\n const classes: string[] = [];\n if (this.type() !== 'text') {\n classes.push(`ct-table__cell--${this.type()}`);\n }\n return classes.join(' ');\n });\n}\n","// Components\nexport * from './alert';\nexport * from './accordion';\nexport * from './avatar';\nexport * from './button';\nexport * from './input';\nexport * from './select';\nexport * from './textarea';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './switch';\nexport * from './card';\nexport * from './data-table';\nexport * from './modal';\nexport * from './toast';\nexport * from './tabs';\nexport * from './dropdown';\nexport * from './pagination';\nexport * from './breadcrumbs';\nexport * from './datepicker';\nexport * from './chip-input';\nexport * from './tooltip';\nexport * from './badge';\nexport * from './progress-bar';\nexport * from './spinner';\nexport * from './toggle-group';\nexport * from './toolbar';\nexport * from './sidebar';\nexport * from './icon';\nexport * from './slider';\nexport * from './drawer';\nexport * from './combobox';\nexport * from './file-upload';\nexport * from './select-menu';\nexport * from './navbar';\nexport * from './popover';\nexport * from './banner';\nexport * from './skip-link';\nexport * from './empty-state';\nexport * from './skeleton';\nexport * from './divider';\nexport * from './field';\nexport * from './table';\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Transforms snake_case or SCREAMING_SNAKE_CASE strings to Title Case labels.\n *\n * @example\n * {{ 'IN_PROGRESS' | afFormatLabel }} => 'In Progress'\n * {{ 'pending_review' | afFormatLabel }} => 'Pending Review'\n * {{ null | afFormatLabel }} => '—'\n */\n@Pipe({\n name: 'afFormatLabel'\n})\nexport class AfFormatLabelPipe implements PipeTransform {\n transform(value: string | null | undefined): string {\n if (!value) return '\\u2014';\n return value\n .toLowerCase()\n .split('_')\n .map(chunk => chunk.charAt(0).toUpperCase() + chunk.slice(1))\n .join(' ');\n }\n}\n","/*\n * Public API Surface of angular\n */\n\nexport * from './lib/components';\nexport * from './lib/pipes';\nexport * from './lib/services/toast.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"neuravision-ng-construct.mjs","sources":["../../../projects/angular/src/lib/components/alert/alert.component.ts","../../../projects/angular/src/lib/components/accordion/accordion.component.ts","../../../projects/angular/src/lib/components/avatar/avatar.component.ts","../../../projects/angular/src/lib/components/button/button.component.ts","../../../projects/angular/src/lib/components/input/input.component.ts","../../../projects/angular/src/lib/components/select/select.component.ts","../../../projects/angular/src/lib/components/textarea/textarea.component.ts","../../../projects/angular/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular/src/lib/components/radio/radio.component.ts","../../../projects/angular/src/lib/components/switch/switch.component.ts","../../../projects/angular/src/lib/components/card/card.component.ts","../../../projects/angular/src/lib/components/data-table/cell-def.directive.ts","../../../projects/angular/src/lib/components/data-table/data-table.component.ts","../../../projects/angular/src/lib/components/data-table/data-table.component.html","../../../projects/angular/src/lib/utils/focus-trap.ts","../../../projects/angular/src/lib/components/modal/modal.component.ts","../../../projects/angular/src/lib/services/toast.service.ts","../../../projects/angular/src/lib/components/toast/toast.component.ts","../../../projects/angular/src/lib/components/tabs/tabs.component.ts","../../../projects/angular/src/lib/components/dropdown/dropdown.component.ts","../../../projects/angular/src/lib/components/pagination/pagination.component.ts","../../../projects/angular/src/lib/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/angular/src/lib/components/datepicker/datepicker.component.ts","../../../projects/angular/src/lib/components/chip-input/chip-input.component.ts","../../../projects/angular/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/angular/src/lib/components/badge/badge.component.ts","../../../projects/angular/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular/src/lib/components/spinner/spinner.component.ts","../../../projects/angular/src/lib/components/toggle-group/toggle-group.component.ts","../../../projects/angular/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular/src/lib/components/sidebar/sidebar.component.ts","../../../projects/angular/src/lib/components/icon/icon.component.ts","../../../projects/angular/src/lib/components/slider/slider.component.ts","../../../projects/angular/src/lib/components/drawer/drawer.component.ts","../../../projects/angular/src/lib/components/combobox/combobox.component.ts","../../../projects/angular/src/lib/components/file-upload/file-upload.component.ts","../../../projects/angular/src/lib/components/select-menu/select-menu.component.ts","../../../projects/angular/src/lib/components/navbar/navbar.component.ts","../../../projects/angular/src/lib/components/popover/popover.component.ts","../../../projects/angular/src/lib/components/banner/banner.component.ts","../../../projects/angular/src/lib/components/skip-link/skip-link.component.ts","../../../projects/angular/src/lib/components/empty-state/empty-state.component.ts","../../../projects/angular/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular/src/lib/components/divider/divider.component.ts","../../../projects/angular/src/lib/components/field/field.component.ts","../../../projects/angular/src/lib/components/table/table.component.ts","../../../projects/angular/src/lib/components/index.ts","../../../projects/angular/src/lib/pipes/format-label.pipe.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/neuravision-ng-construct.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n} from '@angular/core';\n\nexport type AfAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Alert component for displaying contextual feedback messages.\n *\n * Automatically assigns the appropriate ARIA role based on variant:\n * - `danger` / `warning` → `role=\"alert\"` (assertive announcement)\n * - `info` / `success` → `role=\"status\"` (polite announcement)\n *\n * @example\n * <af-alert variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismiss()\">\n * <span icon>⚠</span>\n * <span title>Action required</span>\n * Please review the pending changes before continuing.\n * <div actions>\n * <button class=\"ct-button ct-button--secondary ct-button--sm\">Review</button>\n * </div>\n * </af-alert>\n */\n@Component({\n selector: 'af-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (visible()) {\n <div\n [class]=\"alertClasses()\"\n [attr.data-variant]=\"variant()\"\n [attr.role]=\"alertRole()\">\n <span class=\"ct-alert__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\" />\n </span>\n <div class=\"ct-alert__content\">\n <div class=\"ct-alert__title\">\n <ng-content select=\"[title]\" />\n </div>\n <div class=\"ct-alert__description\">\n <ng-content />\n </div>\n <div class=\"ct-alert__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"af-alert__dismiss\"\n aria-label=\"Dismiss alert\"\n (click)=\"dismiss()\">\n ×\n </button>\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n\n .ct-alert--dismissible {\n position: relative;\n padding-right: 2.5rem;\n }\n\n .af-alert__dismiss {\n position: absolute;\n top: 0.625rem;\n right: 0.625rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n border: none;\n background: none;\n border-radius: var(--radius-sm, 0.25rem);\n color: var(--color-text-secondary);\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n }\n\n .af-alert__dismiss:hover {\n color: var(--color-text-primary);\n }\n\n .af-alert__dismiss:focus-visible {\n outline: 2px solid var(--ct-alert-accent, var(--color-brand-primary));\n outline-offset: 2px;\n }\n `,\n ],\n})\nexport class AfAlertComponent {\n /** Color variant determining the alert's visual style and ARIA role */\n variant = input<AfAlertVariant>('info');\n\n /** Whether the alert can be dismissed by the user */\n dismissible = input(false);\n\n /** Emits when the user dismisses the alert */\n dismissed = output<void>();\n\n /** Controls alert visibility */\n visible = signal(true);\n\n alertClasses = computed(() => {\n const classes = ['ct-alert'];\n if (this.dismissible()) {\n classes.push('ct-alert--dismissible');\n }\n return classes.join(' ');\n });\n\n /**\n * Maps variant to ARIA role:\n * - danger/warning → 'alert' (assertive, immediate announcement)\n * - info/success → 'status' (polite, non-intrusive announcement)\n */\n alertRole = computed(() => {\n const v = this.variant();\n return v === 'danger' || v === 'warning' ? 'alert' : 'status';\n });\n\n /** Hides the alert and emits the dismissed event */\n dismiss(): void {\n this.visible.set(false);\n this.dismissed.emit();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n booleanAttribute,\n input,\n model,\n computed,\n contentChildren,\n effect,\n ElementRef,\n viewChild,\n inject,\n forwardRef,\n} from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * Individual accordion item used within af-accordion.\n *\n * @example\n * <af-accordion-item heading=\"Section Title\">\n * <p>Content goes here</p>\n * </af-accordion-item>\n */\n@Component({\n selector: 'af-accordion-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <details\n #details\n class=\"ct-accordion__item\"\n [open]=\"expanded()\"\n (toggle)=\"onToggle($event)\">\n <summary\n class=\"ct-accordion__trigger\"\n [attr.id]=\"triggerId()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onClick($event)\">\n <span class=\"ct-accordion__heading\">{{ heading() }}</span>\n <svg\n class=\"ct-accordion__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </summary>\n <div\n class=\"ct-accordion__content\"\n role=\"region\"\n [attr.id]=\"panelId()\"\n [attr.aria-labelledby]=\"triggerId()\">\n <ng-content></ng-content>\n </div>\n </details>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfAccordionItemComponent {\n private itemId = nextId++;\n private accordion = inject(forwardRef(() => AfAccordionComponent), { optional: true });\n\n /** Heading text displayed in the accordion trigger. */\n heading = input.required<string>();\n\n /** Whether this item is expanded (supports two-way binding). */\n expanded = model(false);\n\n /** Whether this item is disabled. */\n disabled = input(false, { transform: booleanAttribute });\n\n detailsRef = viewChild.required<ElementRef<HTMLDetailsElement>>('details');\n\n triggerId = computed(() => `af-accordion-trigger-${this.itemId}`);\n panelId = computed(() => `af-accordion-panel-${this.itemId}`);\n\n /** Sync signal when the native details state diverges (e.g. programmatic open). */\n onToggle(event: Event): void {\n const details = event.target as HTMLDetailsElement;\n if (details.open !== this.expanded()) {\n this.expanded.set(details.open);\n if (details.open) {\n this.accordion?.onItemExpanded(this);\n }\n }\n }\n\n /**\n * Prevent native details toggle and manage state via signals\n * so the expanded signal is always the source of truth.\n */\n onClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.disabled()) return;\n const willExpand = !this.expanded();\n this.expanded.set(willExpand);\n if (willExpand) {\n this.accordion?.onItemExpanded(this);\n }\n }\n\n /** Programmatically collapse this item. */\n collapse(): void {\n this.expanded.set(false);\n }\n\n /** Focus the trigger (summary) element. */\n focusTrigger(): void {\n this.detailsRef().nativeElement.querySelector('summary')?.focus();\n }\n}\n\n/**\n * Accordion container that manages expand/collapse behaviour of child items.\n *\n * @example\n * <af-accordion>\n * <af-accordion-item heading=\"Section 1\">Content 1</af-accordion-item>\n * <af-accordion-item heading=\"Section 2\">Content 2</af-accordion-item>\n * </af-accordion>\n *\n * @example Single-expand mode\n * <af-accordion [multi]=\"false\">\n * <af-accordion-item heading=\"Only one open\">Content</af-accordion-item>\n * </af-accordion>\n */\n@Component({\n selector: 'af-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'handleKeydown($event)',\n },\n template: `\n <div [class]=\"accordionClasses()\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfAccordionComponent {\n /** Allow multiple items to be open at the same time (default: true). */\n multi = input(true, { transform: booleanAttribute });\n\n /** Use the bordered variant. */\n bordered = input(false, { transform: booleanAttribute });\n\n items = contentChildren(AfAccordionItemComponent);\n\n accordionClasses = computed(() => {\n const classes = ['ct-accordion'];\n if (this.bordered()) {\n classes.push('ct-accordion--bordered');\n }\n return classes.join(' ');\n });\n\n /**\n * Enforce single-expand constraint when `multi` is false\n * and multiple items are initially expanded.\n */\n private enforceConstraint = effect(() => {\n if (this.multi()) return;\n const expanded = this.items().filter((i) => i.expanded());\n if (expanded.length > 1) {\n for (let i = 1; i < expanded.length; i++) {\n expanded[i].collapse();\n }\n }\n });\n\n /** Called by child items when they expand. */\n onItemExpanded(expandedItem: AfAccordionItemComponent): void {\n if (this.multi()) return;\n for (const item of this.items()) {\n if (item !== expandedItem && item.expanded()) {\n item.collapse();\n }\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const target = event.target as HTMLElement;\n if (target.tagName !== 'SUMMARY') return;\n\n const enabledItems = this.items().filter((i) => !i.disabled());\n if (enabledItems.length === 0) return;\n\n const currentIndex = enabledItems.findIndex(\n (item) => item.detailsRef().nativeElement.querySelector('summary') === target,\n );\n if (currentIndex === -1) return;\n\n const last = enabledItems.length - 1;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n enabledItems[(currentIndex + 1) % enabledItems.length].focusTrigger();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n enabledItems[(currentIndex - 1 + enabledItems.length) % enabledItems.length].focusTrigger();\n break;\n }\n case 'Home': {\n event.preventDefault();\n enabledItems[0].focusTrigger();\n break;\n }\n case 'End': {\n event.preventDefault();\n enabledItems[last].focusTrigger();\n break;\n }\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n} from '@angular/core';\n\nexport type AfAvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type AfAvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n/**\n * Avatar component displaying a user image with fallback to initials.\n *\n * When `src` is provided the component renders an `<img>`. If the image\n * fails to load or no `src` is given, initials derived from `name` are\n * shown instead.\n *\n * @example\n * <af-avatar src=\"/photo.jpg\" name=\"Jane Doe\" alt=\"Jane Doe\" size=\"lg\" />\n * <af-avatar name=\"John Smith\" status=\"online\" />\n */\n@Component({\n selector: 'af-avatar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"avatarClasses()\" role=\"img\" [attr.aria-label]=\"ariaLabel()\">\n @if (showImage()) {\n <img\n class=\"ct-avatar__image\"\n [src]=\"src()\"\n [alt]=\"alt() || name()\"\n (error)=\"onImageError()\" />\n } @else {\n <span class=\"ct-avatar__initials\" aria-hidden=\"true\">{{ initials() }}</span>\n }\n @if (status()) {\n <span\n class=\"ct-avatar__status\"\n [attr.data-status]=\"status()\"\n [attr.aria-label]=\"status() + ' status'\"\n role=\"img\">\n </span>\n }\n </span>\n `,\n styles: [\n `\n :host {\n display: inline-block;\n }\n `,\n ],\n})\nexport class AfAvatarComponent {\n /** Image URL. Falls back to initials when missing or on load error. */\n src = input('');\n\n /** Full name used to compute initials and as default alt text. */\n name = input('');\n\n /** Size variant. */\n size = input<AfAvatarSize>('md');\n\n /** Alt text for the avatar image. Defaults to `name` if not set. */\n alt = input('');\n\n /** Online status indicator. */\n status = input<AfAvatarStatus | undefined>(undefined);\n\n /** Tracks whether the image failed to load. */\n imageError = signal(false);\n\n /** Whether to render the `<img>` element. */\n showImage = computed(() => !!this.src() && !this.imageError());\n\n /** Initials derived from the first letter of each word in `name`. */\n initials = computed(() => {\n const parts = this.name().trim().split(/\\s+/);\n if (parts.length === 0 || parts[0] === '') return '';\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase();\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();\n });\n\n /** Accessible label for the avatar. */\n ariaLabel = computed(() => this.alt() || this.name() || 'Avatar');\n\n avatarClasses = computed(() => {\n const classes = ['ct-avatar'];\n if (this.size() !== 'md') {\n classes.push(`ct-avatar--${this.size()}`);\n }\n return classes.join(' ');\n });\n\n /** Handles image load failure by switching to initials fallback. */\n onImageError(): void {\n this.imageError.set(true);\n }\n}\n","import { Component, ChangeDetectionStrategy, booleanAttribute, input, output, computed } from '@angular/core';\n\nexport type AfButtonVariant = 'primary' | 'secondary' | 'ghost' | 'outline' | 'danger' | 'accent' | 'link';\nexport type AfButtonSize = 'sm' | 'md' | 'lg';\nexport type AfButtonType = 'button' | 'submit' | 'reset';\n\n/**\n * Button component from the Construct Design System\n *\n * @example\n * <af-button variant=\"primary\" (clicked)=\"handleClick()\">Click me</af-button>\n *\n * @example Icon-only button\n * <af-button variant=\"ghost\" size=\"sm\" iconOnly ariaLabel=\"Delete item\">\n * <af-icon name=\"delete\" />\n * </af-button>\n */\n@Component({\n selector: 'af-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [class]=\"buttonClasses()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.title]=\"title() || null\"\n (click)=\"handleClick($event)\">\n <ng-content></ng-content>\n </button>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfButtonComponent {\n /** Button variant/style */\n variant = input<AfButtonVariant>('primary');\n\n /** Button size */\n size = input<AfButtonSize>('md');\n\n /** Button type attribute */\n type = input<AfButtonType>('button');\n\n /** Whether button is disabled */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Whether this is an icon-only button (no visible text) */\n iconOnly = input(false, { transform: booleanAttribute });\n\n /** Accessible label for icon-only buttons */\n ariaLabel = input('');\n\n /** Tooltip text shown on hover */\n title = input('');\n\n /** Click event emitter */\n clicked = output<MouseEvent>();\n\n buttonClasses = computed(() => {\n const classes = ['ct-button'];\n\n if (this.variant() !== 'primary') {\n classes.push(`ct-button--${this.variant()}`);\n }\n\n if (this.size() !== 'md') {\n classes.push(`ct-button--${this.size()}`);\n }\n\n if (this.iconOnly()) {\n classes.push('ct-button--icon');\n }\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.clicked.emit(event);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type AfInputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';\n\n/**\n * Input field component with form control support\n *\n * @example\n * <af-input\n * label=\"Email\"\n * type=\"email\"\n * placeholder=\"name@company.com\"\n * [(ngModel)]=\"email\"\n * hint=\"We will not share this.\"\n * ></af-input>\n *\n * @example\n * <af-input\n * label=\"Name\"\n * [error]=\"nameError\"\n * required\n * ></af-input>\n */\n@Component({\n selector: 'af-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfInputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n @if (iconPosition()) {\n <div class=\"ct-input-wrap\">\n @if (iconPosition() === 'left') {\n <span class=\"ct-input__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n <input\n [id]=\"inputId()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [class]=\"inputClasses()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n @if (iconPosition() === 'right') {\n <span class=\"ct-input__icon\" aria-hidden=\"true\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n </div>\n }\n\n @if (!iconPosition()) {\n <input\n [id]=\"inputId()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n class=\"ct-input\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n }\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Input label */\n label = input('');\n\n /** Input type */\n type = input<AfInputType>('text');\n\n /** Placeholder text */\n placeholder = input('');\n\n /** Hint text shown below input */\n hint = input('');\n\n /** Error message - shows error state and message */\n error = input('');\n\n /** Whether input is required */\n required = input(false);\n\n /** Whether input is disabled */\n disabled = model(false);\n\n /** Icon position (if icon content is projected) */\n iconPosition = input<'left' | 'right' | null>(null);\n\n /** Unique input ID */\n inputId = input(`af-input-${AfInputComponent.nextId++}`);\n\n value = '';\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.inputId()}-hint`);\n\n errorId = computed(() => `${this.inputId()}-error`);\n\n inputClasses = computed(() => {\n const classes = ['ct-input'];\n if (this.iconPosition()) {\n classes.push('ct-input--with-icon');\n }\n return classes.join(' ');\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: string): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfSelectOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Select dropdown component with form control support\n *\n * @example\n * <af-select\n * label=\"Role\"\n * [options]=\"roleOptions\"\n * [(ngModel)]=\"selectedRole\"\n * hint=\"Choose your primary role\"\n * ></af-select>\n */\n@Component({\n selector: 'af-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSelectComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"selectId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <select\n [id]=\"selectId()\"\n class=\"ct-select\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\"\n >\n @if (placeholder()) {\n <option value=\"\" [disabled]=\"true\" [selected]=\"isPlaceholderSelected\">\n {{ placeholder() }}\n </option>\n }\n @for (option of options(); track option.value) {\n <option\n [selected]=\"isOptionSelected(option)\"\n [disabled]=\"option.disabled || false\"\n >\n {{ option.label }}\n </option>\n }\n </select>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSelectComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Select label */\n label = input('');\n\n /** Placeholder option */\n placeholder = input('');\n\n /** Options array */\n options = input<AfSelectOption[]>([]);\n\n /** Hint text shown below select */\n hint = input('');\n\n /** Error message */\n error = input('');\n\n /** Whether select is required */\n required = input(false);\n\n /** Whether select is disabled */\n disabled = model(false);\n\n /** Value comparison function (for object values) */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique select ID */\n selectId = input(`af-select-${AfSelectComponent.nextId++}`);\n\n value: unknown = null;\n onChangeCallback: (value: unknown) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.selectId()}-hint`);\n\n errorId = computed(() => `${this.selectId()}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n get isPlaceholderSelected(): boolean {\n if (!this.placeholder()) return false;\n if (this.value === null || this.value === undefined || this.value === '') return true;\n return !this.hasMatchingOption();\n }\n\n private hasMatchingOption(): boolean {\n return this.options().some(option => this.compareWith()(option.value, this.value));\n }\n\n isOptionSelected(option: AfSelectOption): boolean {\n if (this.isPlaceholderSelected) return false;\n return this.compareWith()(option.value, this.value);\n }\n\n onChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const index = target.selectedIndex;\n const offset = this.placeholder() ? 1 : 0;\n\n if (this.placeholder() && index === 0) {\n this.value = null;\n this.onChangeCallback(null);\n return;\n }\n\n const option = this.options()[index - offset];\n const nextValue = option ? option.value : null;\n this.value = nextValue;\n this.onChangeCallback(nextValue);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: unknown): void {\n this.value = value ?? null;\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Textarea component with form control support\n *\n * @example\n * <af-textarea\n * label=\"Notes\"\n * placeholder=\"Enter your notes...\"\n * [(ngModel)]=\"notes\"\n * [rows]=\"5\"\n * ></af-textarea>\n */\n@Component({\n selector: 'af-textarea',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfTextareaComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"textareaId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <textarea\n [id]=\"textareaId()\"\n class=\"ct-textarea\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n ></textarea>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfTextareaComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Textarea label */\n label = input('');\n\n /** Placeholder text */\n placeholder = input('');\n\n /** Hint text shown below textarea */\n hint = input('');\n\n /** Error message */\n error = input('');\n\n /** Whether textarea is required */\n required = input(false);\n\n /** Whether textarea is disabled */\n disabled = model(false);\n\n /** Number of visible rows */\n rows = input(3);\n\n /** Unique textarea ID */\n textareaId = input(`af-textarea-${AfTextareaComponent.nextId++}`);\n\n value = '';\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.textareaId()}-hint`);\n\n errorId = computed(() => `${this.textareaId()}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.onChange(this.value);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: string): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Checkbox component with form control support\n *\n * Supports both ControlValueAccessor (reactive forms / ngModel) and\n * standalone usage via [(checked)] bindings (two-way via model).\n *\n * @example Reactive Forms\n * <af-checkbox formControlName=\"rememberMe\">Remember me</af-checkbox>\n *\n * @example Standalone with indeterminate (e.g. \"select all\" in tables)\n * <af-checkbox\n * [(checked)]=\"allSelected\"\n * [indeterminate]=\"hasPartialSelection()\"\n * (checkedChange)=\"onToggleAll($event)\">\n * </af-checkbox>\n */\n@Component({\n selector: 'af-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfCheckboxComponent),\n multi: true\n }\n ],\n template: `\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span class=\"ct-check__label\">\n <ng-content></ng-content>\n </span>\n </label>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfCheckboxComponent implements ControlValueAccessor {\n /** Whether checkbox is disabled */\n disabled = model(false);\n\n /** Whether checkbox shows indeterminate state (partial selection) */\n indeterminate = model(false);\n\n /** Checked state - supports two-way binding via [(checked)] */\n checked = model(false);\n\n private onChangeCallback: (value: boolean) => void = () => {};\n onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.indeterminate.set(false);\n this.onChangeCallback(target.checked);\n }\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// ── Radio Button ─────────────────────────────────────────────────────────────\n\n/**\n * Individual radio button. Use inside `af-radio-group` for full\n * accessibility, or standalone with its own `ControlValueAccessor`.\n *\n * @example\n * <af-radio-group ariaLabel=\"Plan\" name=\"plan\" [(ngModel)]=\"plan\">\n * <af-radio value=\"standard\">Standard</af-radio>\n * <af-radio value=\"premium\">Premium</af-radio>\n * </af-radio-group>\n */\n@Component({\n selector: 'af-radio',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfRadioComponent),\n multi: true,\n },\n ],\n template: `\n <label class=\"ct-radio\">\n <input\n #inputEl\n class=\"ct-radio__input\"\n type=\"radio\"\n [name]=\"resolvedName()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n [attr.tabindex]=\"resolvedTabindex()\"\n (change)=\"onChangeEvent()\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n (keydown)=\"onKeydown($event)\" />\n <span class=\"ct-radio__label\">\n <ng-content />\n </span>\n </label>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfRadioComponent implements ControlValueAccessor {\n private group = inject(forwardRef(() => AfRadioGroupComponent), { optional: true });\n\n /** Radio group name (only used without `af-radio-group`). */\n name = input('');\n\n /** Radio value. */\n value = input<unknown>(undefined);\n\n /** Whether this radio is disabled. */\n disabled = model(false);\n\n inputRef = viewChild.required<ElementRef<HTMLInputElement>>('inputEl');\n\n modelValue = signal<unknown>(undefined);\n onChangeCallback: (value: unknown) => void = () => {};\n onTouched: () => void = () => {};\n\n resolvedName = computed(() => this.group?.name() || this.name());\n\n isChecked = computed(() => {\n const selected = this.group ? this.group.selectedValue() : this.modelValue();\n return selected === this.value();\n });\n\n isDisabled = computed(() => {\n if (this.group?.disabled()) return true;\n return this.disabled();\n });\n\n resolvedTabindex = computed(() => {\n if (!this.group) return null;\n return this.group.tabindexFor(this);\n });\n\n /** Focuses the native input element. */\n focus(): void {\n this.inputRef().nativeElement.focus();\n }\n\n onChangeEvent(): void {\n if (this.group) {\n this.group.selectRadio(this);\n } else {\n this.modelValue.set(this.value());\n this.onChangeCallback(this.value());\n }\n }\n\n onFocus(): void {\n this.group?.onRadioFocus(this);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.group) {\n this.group.onRadioKeydown(event, this);\n }\n }\n\n writeValue(value: unknown): void {\n this.modelValue.set(value);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n\n// ── Radio Group ──────────────────────────────────────────────────────────────\n\n/**\n * Groups `af-radio` components with `role=\"radiogroup\"`, ARIA labeling,\n * roving tabindex, and arrow-key navigation per WAI-ARIA Radio Group Pattern.\n *\n * Implements `ControlValueAccessor` so the group value can be bound via\n * `[(ngModel)]` or reactive forms.\n *\n * @example\n * <af-radio-group ariaLabel=\"Select plan\" name=\"plan\" [(ngModel)]=\"plan\">\n * <af-radio value=\"standard\">Standard</af-radio>\n * <af-radio value=\"premium\">Premium</af-radio>\n * </af-radio-group>\n */\n@Component({\n selector: 'af-radio-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfRadioGroupComponent),\n multi: true,\n },\n ],\n template: `\n <div\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-disabled]=\"disabled() || null\">\n <ng-content />\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfRadioGroupComponent implements ControlValueAccessor {\n /** Shared `name` attribute for all child radios. */\n name = input.required<string>();\n\n /** Accessible label for the radio group. */\n ariaLabel = input('');\n\n /** ID of an external element labeling this group. */\n ariaLabelledBy = input('');\n\n /** Disables all radios in the group. */\n disabled = model(false);\n\n radios = contentChildren(AfRadioComponent);\n\n selectedValue = signal<unknown>(undefined);\n private focusedIndex = signal(0);\n\n private onChangeCallback: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n private syncEffect = effect(() => {\n const radios = this.radios();\n const value = this.selectedValue();\n const checkedIdx = radios.findIndex((r) => r.value() === value);\n this.focusedIndex.set(checkedIdx >= 0 ? checkedIdx : 0);\n });\n\n /** Returns the tabindex a child radio should use for roving tabindex. */\n tabindexFor(radio: AfRadioComponent): number {\n const radios = this.enabledRadios();\n const idx = radios.indexOf(radio);\n if (idx === -1) return -1;\n return idx === this.focusedIndex() ? 0 : -1;\n }\n\n /** Selects a radio and propagates the value. */\n selectRadio(radio: AfRadioComponent): void {\n const value = radio.value();\n this.selectedValue.set(value);\n this.onChangeCallback(value);\n this.onTouchedCallback();\n }\n\n /** Called when a child radio receives focus. */\n onRadioFocus(radio: AfRadioComponent): void {\n const idx = this.enabledRadios().indexOf(radio);\n if (idx >= 0) {\n this.focusedIndex.set(idx);\n }\n }\n\n /** Handles keyboard navigation within the group. */\n onRadioKeydown(event: KeyboardEvent, _current: AfRadioComponent): void {\n const enabled = this.enabledRadios();\n if (enabled.length === 0) return;\n\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n nextIndex = (this.focusedIndex() + 1) % enabled.length;\n break;\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n nextIndex = (this.focusedIndex() - 1 + enabled.length) % enabled.length;\n break;\n case 'Home':\n event.preventDefault();\n nextIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n nextIndex = enabled.length - 1;\n break;\n case ' ':\n event.preventDefault();\n this.selectRadio(enabled[this.focusedIndex()]);\n return;\n }\n\n if (nextIndex !== null) {\n this.focusedIndex.set(nextIndex);\n const target = enabled[nextIndex];\n target.focus();\n this.selectRadio(target);\n }\n }\n\n writeValue(value: unknown): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private enabledRadios(): AfRadioComponent[] {\n return this.radios().filter((r) => !r.isDisabled());\n }\n}\n","import { Component, ChangeDetectionStrategy, input, model, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Switch/Toggle component with form control support\n *\n * @example\n * <af-switch [(ngModel)]=\"autoRenew\">\n * Auto renew\n * </af-switch>\n */\n@Component({\n selector: 'af-switch',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSwitchComponent),\n multi: true\n }\n ],\n template: `\n <label class=\"ct-switch\">\n <input\n class=\"ct-switch__input\"\n type=\"checkbox\"\n role=\"switch\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (change)=\"onChange($event)\"\n (blur)=\"onTouched()\" />\n <span class=\"ct-switch__label\">\n <ng-content></ng-content>\n </span>\n </label>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSwitchComponent implements ControlValueAccessor {\n /** Accessible label for icon-only or unlabeled switches. */\n ariaLabel = input('');\n\n /** Whether switch is disabled. */\n disabled = model(false);\n\n /** Checked state - supports two-way binding via [(checked)] */\n checked = model(false);\n\n private onChangeCallback: (value: boolean) => void = () => {};\n onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.onChangeCallback(target.checked);\n }\n\n /** ControlValueAccessor implementation */\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n computed,\n contentChild,\n} from '@angular/core';\n\nexport type AfCardElevation = 'none' | 'sm' | 'md' | 'lg';\nexport type AfCardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * Card component for containing content.\n *\n * When `interactive` is set the card becomes keyboard-accessible with\n * `role=\"button\"`, roving `tabindex`, and Enter/Space activation.\n *\n * @example\n * <af-card elevation=\"md\" padding=\"lg\">\n * <div header><h3>Title</h3></div>\n * <div body><p>Card content</p></div>\n * </af-card>\n *\n * <af-card interactive ariaLabel=\"Open project\" (cardClick)=\"open()\">\n * <p body>Click me</p>\n * </af-card>\n */\n@Component({\n selector: 'af-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section\n [class]=\"cardClasses()\"\n [style]=\"cardStyles()\"\n [attr.role]=\"interactive() ? 'button' : null\"\n [attr.tabindex]=\"interactive() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"onCardClick()\"\n (keydown)=\"onCardKeydown($event)\">\n @if (hasHeader()) {\n <div class=\"ct-card__header\">\n <ng-content select=\"[header]\" />\n </div>\n }\n <div class=\"ct-card__body\">\n <ng-content select=\"[body]\" />\n <ng-content />\n </div>\n @if (hasFooter()) {\n <div class=\"ct-card__footer\">\n <ng-content select=\"[footer]\" />\n </div>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfCardComponent {\n /** Makes the card interactive (clickable, keyboard-accessible). */\n interactive = input(false);\n\n /** Shadow elevation level. */\n elevation = input<AfCardElevation | null>(null);\n\n /** Content padding level. */\n padding = input<AfCardPadding | null>(null);\n\n /** Accessible label for interactive cards. */\n ariaLabel = input('');\n\n /** Emitted when an interactive card is activated (click, Enter, or Space). */\n cardClick = output<void>();\n\n private headerRef = contentChild('[header]', { read: ElementRef });\n private footerRef = contentChild('[footer]', { read: ElementRef });\n hasHeader = computed(() => !!this.headerRef());\n hasFooter = computed(() => !!this.footerRef());\n\n private static readonly ELEVATION_MAP: Record<AfCardElevation, string> = {\n none: 'none',\n sm: '0 1px 3px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.08)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.12)',\n };\n\n private static readonly PADDING_MAP: Record<AfCardPadding, string> = {\n none: '0',\n sm: 'var(--space-3, 0.75rem)',\n md: 'var(--space-5, 1.25rem)',\n lg: 'var(--space-7, 2rem)',\n };\n\n cardClasses = computed(() => {\n const classes = ['ct-card'];\n if (this.interactive()) {\n classes.push('ct-card--interactive');\n }\n return classes.join(' ');\n });\n\n cardStyles = computed(() => {\n const styles: string[] = [];\n if (this.elevation() !== null) {\n styles.push(`box-shadow: ${AfCardComponent.ELEVATION_MAP[this.elevation()!]}`);\n }\n if (this.padding() !== null) {\n styles.push(`--ct-card-padding: ${AfCardComponent.PADDING_MAP[this.padding()!]}`);\n }\n return styles.join('; ');\n });\n\n onCardClick(): void {\n if (this.interactive()) {\n this.cardClick.emit();\n }\n }\n\n onCardKeydown(event: KeyboardEvent): void {\n if (!this.interactive()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClick.emit();\n }\n }\n}\n","import { Directive, TemplateRef, input, inject } from '@angular/core';\n\n/**\n * Directive for defining custom cell templates in AfDataTableComponent.\n *\n * @example\n * <af-data-table [data]=\"items\" [columns]=\"columns\">\n * <ng-template afCellDef=\"status\" let-row>\n * <af-badge [variant]=\"getVariant(row.status)\">{{ row.status }}</af-badge>\n * </ng-template>\n * <ng-template afCellDef=\"actions\" let-row>\n * <af-button variant=\"ghost\" iconOnly (clicked)=\"onEdit(row)\">\n * <af-icon name=\"edit\" />\n * </af-button>\n * </ng-template>\n * </af-data-table>\n */\n@Directive({\n selector: '[afCellDef]'\n})\nexport class AfCellDefDirective {\n /** Column key this template applies to */\n columnKey = input('', { alias: 'afCellDef' });\n\n readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import {\n Component,\n TemplateRef,\n input,\n output,\n computed,\n effect,\n contentChildren,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { AfCellDefDirective } from './cell-def.directive';\n\nexport interface AfColumn {\n key: string;\n header: string;\n sortable?: boolean;\n /** CSS class(es) for the cell */\n cellClass?: string;\n}\n\nexport interface AfDataTableConfig {\n striped?: boolean;\n compact?: boolean;\n /** Whether to show the selection checkbox column */\n selectable?: boolean;\n}\n\n/** Row type for the data table — uses `any` values to allow typed interfaces without index signatures. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AfDataRow = Record<string, any>;\n\nexport type AfSortDirection = 'asc' | 'desc';\n\nexport interface AfSortState {\n key: string;\n direction: AfSortDirection;\n}\n\n/**\n * Data table with sorting, selection, and custom cell templates.\n *\n * @example\n * <af-data-table\n * [data]=\"items()\"\n * [columns]=\"columns\"\n * [config]=\"{ striped: true, selectable: true }\"\n * rowId=\"id\"\n * (sortChange)=\"onSort($event)\"\n * (selectionChange)=\"onSelect($event)\">\n *\n * <ng-template afCellDef=\"status\" let-row>\n * <af-badge [variant]=\"getVariant(row.status)\">\n * {{ row.status | afFormatLabel }}\n * </af-badge>\n * </ng-template>\n *\n * <ng-template afCellDef=\"actions\" let-row>\n * <af-button variant=\"ghost\" iconOnly (clicked)=\"onDelete(row)\">\n * <af-icon name=\"delete\" />\n * </af-button>\n * </ng-template>\n * </af-data-table>\n */\n@Component({\n selector: 'af-data-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.css'\n})\nexport class AfDataTableComponent {\n data = input<AfDataRow[]>([]);\n columns = input<AfColumn[]>([]);\n config = input<AfDataTableConfig>({ striped: true, compact: true });\n\n /** Sort state (controlled). */\n sort = input<AfSortState | null>(null);\n\n /** Row id key or accessor for stable selection. */\n rowId = input<string | ((row: AfDataRow) => string | number) | null>(null);\n\n rowClick = output<AfDataRow>();\n selectionChange = output<AfDataRow[]>();\n sortChange = output<AfSortState | null>();\n\n cellDefs = contentChildren(AfCellDefDirective);\n\n private selectedRowIds = new Set<unknown>();\n private internalSort: AfSortState | null = null;\n private cellTemplateMap = new Map<string, TemplateRef<unknown>>();\n\n allSelected = false;\n someSelected = false;\n\n private cellDefsEffect = effect(() => {\n const defs = this.cellDefs();\n this.cellTemplateMap.clear();\n defs.forEach(def => {\n this.cellTemplateMap.set(def.columnKey(), def.templateRef);\n });\n });\n\n private dataEffect = effect(() => {\n this.data();\n this.rowId();\n this.syncSelectionWithData();\n this.updateSelectionState();\n });\n\n isSelectable = computed(() => {\n return this.config().selectable !== false;\n });\n\n tableClasses = computed(() => {\n const classes = ['ct-table'];\n if (this.config().striped) classes.push('ct-table--striped');\n if (this.config().compact) classes.push('ct-table--compact');\n return classes.join(' ');\n });\n\n sortedData = computed(() => {\n const sort = this.activeSort();\n if (!sort) return [...this.data()];\n if (!this.columns().some(column => column.key === sort.key)) return [...this.data()];\n const sorted = [...this.data()];\n sorted.sort((a, b) => this.compareValues(a?.[sort.key], b?.[sort.key], sort.direction));\n return sorted;\n });\n\n activeSort = computed(() => {\n return this.sort() ?? this.internalSort;\n });\n\n /** Returns the custom cell template for a column, or null for default rendering. */\n getCellTemplate(columnKey: string): TemplateRef<unknown> | null {\n return this.cellTemplateMap.get(columnKey) ?? null;\n }\n\n getAriaSort(column: AfColumn): string | null {\n if (!column.sortable) return null;\n const sort = this.activeSort();\n if (!sort || sort.key !== column.key) return 'none';\n return sort.direction === 'asc' ? 'ascending' : 'descending';\n }\n\n toggleSort(column: AfColumn): void {\n if (!column.sortable) return;\n const current = this.activeSort();\n let next: AfSortState | null;\n\n if (!current || current.key !== column.key) {\n next = { key: column.key, direction: 'asc' };\n } else if (current.direction === 'asc') {\n next = { key: column.key, direction: 'desc' };\n } else {\n next = null;\n }\n\n if (this.sort()) {\n this.sortChange.emit(next);\n } else {\n this.internalSort = next;\n this.sortChange.emit(next);\n }\n }\n\n onRowClick(row: AfDataRow): void {\n this.rowClick.emit(row);\n }\n\n toggleSelection(row: AfDataRow, event: Event): void {\n event.stopPropagation();\n const rowId = this.getRowId(row);\n if (this.selectedRowIds.has(rowId)) {\n this.selectedRowIds.delete(rowId);\n } else {\n this.selectedRowIds.add(rowId);\n }\n this.updateSelectionState();\n this.selectionChange.emit(this.getSelectedRows());\n }\n\n toggleAll(checked: boolean): void {\n if (checked) {\n this.data().forEach(row => this.selectedRowIds.add(this.getRowId(row)));\n } else {\n this.selectedRowIds.clear();\n }\n this.updateSelectionState();\n this.selectionChange.emit(this.getSelectedRows());\n }\n\n isSelected(row: AfDataRow): boolean {\n return this.selectedRowIds.has(this.getRowId(row));\n }\n\n private updateSelectionState(): void {\n const data = this.data();\n const hasData = data.length > 0;\n const selectedCount = data.filter(row => this.selectedRowIds.has(this.getRowId(row))).length;\n this.allSelected = hasData && selectedCount === data.length;\n this.someSelected = hasData && selectedCount > 0 && selectedCount < data.length;\n }\n\n private getRowId(row: AfDataRow): unknown {\n const rowId = this.rowId();\n if (typeof rowId === 'function') {\n return rowId(row);\n }\n if (typeof rowId === 'string' && row && row[rowId] !== undefined) {\n return row[rowId];\n }\n return row;\n }\n\n private getSelectedRows(): AfDataRow[] {\n return this.data().filter(row => this.selectedRowIds.has(this.getRowId(row)));\n }\n\n private syncSelectionWithData(): void {\n if (!this.rowId()) {\n this.selectedRowIds.clear();\n return;\n }\n const validIds = new Set(this.data().map(row => this.getRowId(row)));\n this.selectedRowIds.forEach(id => {\n if (!validIds.has(id)) {\n this.selectedRowIds.delete(id);\n }\n });\n }\n\n private compareValues(a: unknown, b: unknown, direction: AfSortDirection): number {\n const sortFactor = direction === 'asc' ? 1 : -1;\n if (a == null && b == null) return 0;\n if (a == null) return 1 * sortFactor;\n if (b == null) return -1 * sortFactor;\n\n if (typeof a === 'number' && typeof b === 'number') {\n return (a - b) * sortFactor;\n }\n if (a instanceof Date && b instanceof Date) {\n return (a.getTime() - b.getTime()) * sortFactor;\n }\n\n return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' }) * sortFactor;\n }\n}\n","<div class=\"ct-data-table ct-data-table--simple\">\n <div class=\"ct-data-table__table\">\n <table [class]=\"tableClasses()\">\n <thead>\n <tr>\n @if (isSelectable()) {\n <th scope=\"col\" class=\"ct-table__cell--checkbox\">\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"toggleAll($any($event.target).checked)\"\n aria-label=\"Select all rows\" />\n </label>\n </th>\n }\n @for (col of columns(); track col.key) {\n <th scope=\"col\" [attr.aria-sort]=\"getAriaSort(col)\">\n @if (col.sortable) {\n <button class=\"ct-table__sort\" type=\"button\" (click)=\"toggleSort(col)\">\n {{ col.header }}\n <span class=\"ct-table__sort-indicator\" aria-hidden=\"true\"></span>\n </button>\n } @else {\n {{ col.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of sortedData(); track row) {\n <tr (click)=\"onRowClick(row)\">\n @if (isSelectable()) {\n <td class=\"ct-table__cell--checkbox\">\n <label class=\"ct-check\">\n <input\n class=\"ct-check__input\"\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (change)=\"toggleSelection(row, $event)\"\n aria-label=\"Select row\" />\n </label>\n </td>\n }\n @for (col of columns(); track col.key) {\n <td [class]=\"col.cellClass || ''\">\n @if (getCellTemplate(col.key); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl; context: { $implicit: row, column: col }\"></ng-container>\n } @else {\n {{ row[col.key] }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n</div>\n","const FOCUSABLE_SELECTORS = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\n/**\n * Manages focus trapping within a container element.\n *\n * Handles Tab/Shift+Tab cycling, save/restore of the previously focused\n * element, and initial focus placement. Create one instance per overlay\n * (modal, drawer, popover, etc.).\n */\nexport class FocusTrap {\n private previousActiveElement: HTMLElement | null = null;\n\n /** Saves the currently focused element for later restoration. */\n saveFocus(): void {\n this.previousActiveElement = document.activeElement as HTMLElement;\n }\n\n /** Restores focus to the element saved via `saveFocus()`. */\n restoreFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = null;\n }\n }\n\n /** Overrides the saved focus target (e.g. to return focus to a specific trigger). */\n setReturnFocus(element: HTMLElement): void {\n this.previousActiveElement = element;\n }\n\n /**\n * Focuses the first focusable element inside the container,\n * or the fallback element if no focusable children exist.\n */\n focusFirst(container: HTMLElement | null | undefined, fallback?: HTMLElement | null): void {\n const elements = queryFocusableElements(container);\n const first = elements[0];\n if (first) {\n first.focus();\n } else {\n fallback?.focus();\n }\n }\n\n /**\n * Handles a Tab keydown event to trap focus within the container.\n * Call this from a `(keydown)` handler when the key is `Tab`.\n */\n handleTab(\n event: KeyboardEvent,\n container: HTMLElement | null | undefined,\n fallback?: HTMLElement | null,\n ): void {\n const elements = queryFocusableElements(container);\n\n if (elements.length === 0) {\n event.preventDefault();\n fallback?.focus();\n return;\n }\n\n const first = elements[0];\n const last = elements[elements.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (event.shiftKey && active === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n\n/** Queries all visible, enabled, focusable elements within a container. */\nfunction queryFocusableElements(container: HTMLElement | null | undefined): HTMLElement[] {\n if (!container) return [];\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS),\n ).filter(\n (el) =>\n !el.hasAttribute('disabled') &&\n el.getAttribute('aria-hidden') !== 'true',\n );\n}\n","import { Component, ChangeDetectionStrategy, ElementRef, OnDestroy, AfterViewInit, input, output, signal, computed, effect, viewChild, contentChild } from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\n/**\n * Modal/Dialog component with accessibility features\n *\n * @example\n * <af-modal\n * [open]=\"isOpen\"\n * title=\"Confirm action\"\n * (closed)=\"handleClose()\">\n * <div body>\n * <p>Are you sure?</p>\n * </div>\n * <div footer>\n * <button (click)=\"cancel()\">Cancel</button>\n * <button (click)=\"confirm()\">Confirm</button>\n * </div>\n * </af-modal>\n */\n@Component({\n selector: 'af-modal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'onEscapeKey()',\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n @if (open()) {\n <div\n class=\"ct-modal\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"onBackdropClick($event)\">\n <div\n #dialog\n class=\"ct-modal__dialog\"\n tabindex=\"-1\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ct-modal__header\">\n <h2 [id]=\"titleId\">{{ title() }}</h2>\n @if (showCloseButton()) {\n <button\n class=\"ct-button ct-button--ghost\"\n aria-label=\"Close\"\n (click)=\"close()\">\n ×\n </button>\n }\n </div>\n <div class=\"ct-modal__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n @if (hasFooter()) {\n <div class=\"ct-modal__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n }\n </div>\n </div>\n }\n `,\n styles: [`\n :host {\n display: contents;\n }\n `]\n})\nexport class AfModalComponent implements OnDestroy, AfterViewInit {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Whether modal is open */\n open = input(false);\n\n /** Modal title */\n title = input('');\n\n /** Whether to show close button */\n showCloseButton = input(true);\n\n /** Whether clicking backdrop closes modal */\n closeOnBackdropClick = input(true);\n\n /** Close event emitter */\n closed = output<void>();\n\n /** Unique title ID for aria-labelledby */\n titleId = `af-modal-title-${AfModalComponent.nextId++}`;\n\n private footerRef = contentChild('[footer]', { read: ElementRef });\n hasFooter = computed(() => !!this.footerRef());\n\n private viewInitialized = signal(false);\n\n dialogRef = viewChild<ElementRef<HTMLElement>>('dialog');\n\n private openEffect = effect(() => {\n const isOpen = this.open();\n const initialized = this.viewInitialized();\n if (isOpen && initialized) {\n this.onOpen();\n } else if (!isOpen) {\n this.focusTrap.restoreFocus();\n }\n });\n\n ngAfterViewInit(): void {\n this.viewInitialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.focusTrap.restoreFocus();\n }\n\n onEscapeKey(): void {\n if (this.open()) {\n this.close();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open() || event.key !== 'Tab') return;\n this.focusTrap.handleTab(event, this.dialogRef()?.nativeElement, this.dialogRef()?.nativeElement);\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n close(): void {\n this.closed.emit();\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n queueMicrotask(() => {\n if (!this.open()) return;\n this.focusTrap.focusFirst(this.dialogRef()?.nativeElement, this.dialogRef()?.nativeElement);\n });\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type AfToastVariant = 'info' | 'success' | 'warning' | 'error';\n\nexport interface AfToast {\n id: string;\n title: string;\n description?: string;\n variant?: AfToastVariant;\n duration?: number;\n action?: {\n label: string;\n callback: () => void;\n };\n}\n\n/**\n * Toast notification service\n *\n * @example\n * const toast = inject(AfToastService);\n *\n * showSuccess() {\n * this.toast.success('Saved', 'Your changes were saved successfully.');\n * }\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AfToastService {\n private toastsSignal = signal<AfToast[]>([]);\n private nextId = 0;\n\n /** Reactive signal for toast list */\n toasts = this.toastsSignal.asReadonly();\n\n /**\n * Show a toast notification\n */\n show(toast: Omit<AfToast, 'id'>): string {\n const id = `toast-${this.nextId++}`;\n const newToast: AfToast = {\n id,\n variant: 'info',\n duration: 5000,\n ...toast\n };\n\n this.toastsSignal.update(toasts => [...toasts, newToast]);\n\n if (newToast.duration && newToast.duration > 0) {\n setTimeout(() => this.dismiss(id), newToast.duration);\n }\n\n return id;\n }\n\n /**\n * Show success toast\n */\n success(title: string, description?: string): string {\n return this.show({ title, description, variant: 'success' });\n }\n\n /**\n * Show error toast\n */\n error(title: string, description?: string): string {\n return this.show({ title, description, variant: 'error' });\n }\n\n /**\n * Show warning toast\n */\n warning(title: string, description?: string): string {\n return this.show({ title, description, variant: 'warning' });\n }\n\n /**\n * Show info toast\n */\n info(title: string, description?: string): string {\n return this.show({ title, description, variant: 'info' });\n }\n\n /**\n * Dismiss a toast by ID\n */\n dismiss(id: string): void {\n this.toastsSignal.update(toasts => toasts.filter(t => t.id !== id));\n }\n\n /**\n * Clear all toasts\n */\n clear(): void {\n this.toastsSignal.set([]);\n }\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { AfToastService, AfToast } from '../../services/toast.service';\n\n/**\n * Toast notification container component\n * Place once in your app root template\n *\n * @example\n * <!-- app.component.html -->\n * <ct-toast-container></ct-toast-container>\n */\n@Component({\n selector: 'af-toast-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-toast-region\" aria-live=\"polite\" aria-atomic=\"false\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div\n class=\"ct-toast\"\n [attr.data-variant]=\"toast.variant\"\n [attr.data-state]=\"'open'\"\n role=\"status\">\n <div class=\"ct-toast__title\">{{ toast.title }}</div>\n @if (toast.description) {\n <div class=\"ct-toast__description\">\n {{ toast.description }}\n </div>\n }\n @if (toast.action) {\n <button\n class=\"ct-button ct-button--ghost\"\n (click)=\"handleAction(toast)\">\n {{ toast.action.label }}\n </button>\n }\n <button\n class=\"ct-button ct-button--ghost\"\n aria-label=\"Close\"\n (click)=\"toastService.dismiss(toast.id)\">\n ×\n </button>\n </div>\n }\n </div>\n `,\n styles: [`\n :host {\n display: contents;\n }\n `]\n})\nexport class AfToastContainerComponent {\n toastService = inject(AfToastService);\n\n handleAction(toast: AfToast): void {\n if (toast.action) {\n toast.action.callback();\n this.toastService.dismiss(toast.id);\n }\n }\n}\n","import { Component, contentChildren, viewChildren, ElementRef, effect, input, output, model, ChangeDetectionStrategy } from '@angular/core';\n\nexport interface AfTab {\n id: string;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Tab panel component (used within af-tabs)\n */\n@Component({\n selector: 'af-tab-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (isActive()) {\n <div\n class=\"ct-tabs__panel\"\n role=\"tabpanel\"\n [attr.id]=\"'panel-' + id()\"\n [attr.aria-labelledby]=\"'tab-' + id()\">\n <ng-content></ng-content>\n </div>\n }\n `\n})\nexport class AfTabPanelComponent {\n private static nextId = 0;\n\n id = model('');\n label = input('');\n isActive = model(false);\n disabled = input(false);\n\n ensureId(): string {\n if (!this.id()) {\n this.id.set(`af-tab-${AfTabPanelComponent.nextId++}`);\n }\n return this.id();\n }\n}\n\n/**\n * Tabs component for organizing content into panels\n *\n * @example\n * <af-tabs [(activeTab)]=\"activeTab\">\n * <af-tab-panel id=\"overview\" label=\"Overview\">\n * <p>Overview content</p>\n * </af-tab-panel>\n * <af-tab-panel id=\"settings\" label=\"Settings\">\n * <p>Settings content</p>\n * </af-tab-panel>\n * </af-tabs>\n */\n@Component({\n selector: 'af-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-tabs\">\n <div class=\"ct-tabs__list\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <button\n #tabButton\n class=\"ct-tabs__trigger\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab() === tab.id\"\n [attr.aria-controls]=\"'panel-' + tab.id\"\n [attr.id]=\"'tab-' + tab.id\"\n [attr.tabindex]=\"activeTab() === tab.id ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [attr.data-tab-id]=\"tab.id\"\n type=\"button\"\n (click)=\"selectTab(tab.id)\"\n (keydown)=\"onKeydown($event, tab.id)\">\n {{ tab.label }}\n </button>\n }\n </div>\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfTabsComponent {\n /** Array of tabs (generated from projected tab panels) */\n tabs: AfTab[] = [];\n\n /** Currently active tab ID (two-way bound) */\n activeTab = model('');\n\n panels = contentChildren(AfTabPanelComponent);\n tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n private panelsEffect = effect(() => {\n this.syncTabsFromPanels();\n });\n\n selectTab(id: string): void {\n if (this.activeTab() !== id) {\n this.activeTab.set(id);\n this.syncActivePanel();\n }\n }\n\n onKeydown(event: KeyboardEvent, currentId: string): void {\n const enabledTabs = this.tabs.filter(tab => !tab.disabled);\n if (enabledTabs.length === 0) return;\n\n const currentIndex = enabledTabs.findIndex(tab => tab.id === currentId);\n const lastIndex = enabledTabs.length - 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown': {\n event.preventDefault();\n const next = enabledTabs[(currentIndex + 1) % enabledTabs.length];\n this.focusTab(next.id);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowUp': {\n event.preventDefault();\n const prev = enabledTabs[(currentIndex - 1 + enabledTabs.length) % enabledTabs.length];\n this.focusTab(prev.id);\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusTab(enabledTabs[0].id);\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusTab(enabledTabs[lastIndex].id);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n this.selectTab(currentId);\n break;\n }\n default:\n break;\n }\n }\n\n private syncTabsFromPanels(): void {\n const panels = this.panels();\n this.tabs = panels.map(panel => ({\n id: panel.ensureId(),\n label: panel.label() || panel.id(),\n disabled: panel.disabled()\n }));\n\n if (!this.activeTab() || !this.tabs.some(tab => tab.id === this.activeTab() && !tab.disabled)) {\n const firstEnabled = this.tabs.find(tab => !tab.disabled);\n if (firstEnabled) {\n this.activeTab.set(firstEnabled.id);\n }\n }\n\n this.syncActivePanel();\n }\n\n private syncActivePanel(): void {\n const panels = this.panels();\n if (!panels.length) return;\n panels.forEach(panel => {\n panel.isActive.set(panel.id() === this.activeTab());\n });\n }\n\n private focusTab(id: string): void {\n const button = this.tabButtons().find(ref => ref.nativeElement.dataset['tabId'] === id);\n button?.nativeElement.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\n\nexport interface AfDropdownItem {\n label: string;\n value: unknown;\n disabled?: boolean;\n separator?: boolean;\n}\n\n/**\n * Dropdown menu component implementing the WAI-ARIA Menu Pattern.\n *\n * Provides full keyboard navigation (Arrow keys, Home/End, type-ahead),\n * proper ARIA roles (`menu` / `menuitem`), and roving tabindex focus management.\n *\n * @example\n * <af-dropdown\n * label=\"Actions\"\n * [items]=\"menuItems\"\n * (itemSelected)=\"handleAction($event)\">\n * </af-dropdown>\n */\n@Component({\n selector: 'af-dropdown',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-dropdown\" [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <button\n #trigger\n class=\"ct-button ct-button--secondary ct-dropdown__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n aria-haspopup=\"menu\"\n type=\"button\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\">\n {{ label() }}\n </button>\n @if (isOpen()) {\n <div\n #menu\n class=\"ct-dropdown__menu\"\n [id]=\"menuId\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n [attr.aria-labelledby]=\"triggerId\"\n (keydown)=\"onMenuKeydown($event)\">\n @for (item of items(); track $index) {\n @if (item.separator) {\n <div class=\"ct-dropdown__separator\" role=\"separator\"></div>\n } @else {\n <button\n #itemButton\n class=\"ct-dropdown__item\"\n role=\"menuitem\"\n [attr.tabindex]=\"focusedItemIndex() === getActionableIndex(item) ? 0 : -1\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n type=\"button\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: inline-block;\n }\n `,\n ],\n})\nexport class AfDropdownComponent {\n private static nextId = 0;\n\n /** Dropdown button label. */\n label = input('Actions');\n\n /** Menu items. */\n items = input<AfDropdownItem[]>([]);\n\n /** Emits the selected item's value. */\n itemSelected = output<unknown>();\n\n triggerRef = viewChild<ElementRef<HTMLButtonElement>>('trigger');\n menuRef = viewChild<ElementRef<HTMLElement>>('menu');\n itemButtons = viewChildren<ElementRef<HTMLButtonElement>>('itemButton');\n\n isOpen = signal(false);\n focusedItemIndex = signal(0);\n\n private instanceId = AfDropdownComponent.nextId++;\n menuId = `af-dropdown-menu-${this.instanceId}`;\n triggerId = `af-dropdown-trigger-${this.instanceId}`;\n\n private typeAheadBuffer = '';\n private typeAheadTimer: ReturnType<typeof setTimeout> | null = null;\n\n toggle(): void {\n if (this.isOpen()) {\n this.close(true);\n } else {\n this.open();\n }\n }\n\n selectItem(item: AfDropdownItem): void {\n if (!item.disabled) {\n this.itemSelected.emit(item.value);\n this.close(true);\n }\n }\n\n /** Handles keyboard events on the trigger button. */\n onTriggerKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open(true);\n }\n break;\n }\n }\n\n /** Handles keyboard events within the open menu. */\n onMenuKeydown(event: KeyboardEvent): void {\n const actionableItems = this.getActionableItems();\n if (actionableItems.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next = this.nextEnabledIndex(this.focusedItemIndex(), 1);\n this.focusItem(next);\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const prev = this.nextEnabledIndex(this.focusedItemIndex(), -1);\n this.focusItem(prev);\n break;\n }\n case 'Home': {\n event.preventDefault();\n const first = this.nextEnabledIndex(-1, 1);\n this.focusItem(first);\n break;\n }\n case 'End': {\n event.preventDefault();\n const last = this.nextEnabledIndex(actionableItems.length, -1);\n this.focusItem(last);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close(true);\n break;\n case 'Tab':\n this.close(false);\n break;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const item = actionableItems[this.focusedItemIndex()];\n if (item && !item.disabled) {\n this.selectItem(item);\n }\n break;\n }\n default:\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n this.handleTypeAhead(event.key);\n }\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.ct-dropdown')) {\n this.close(false);\n }\n }\n\n /**\n * Returns the index of a non-separator item within the list of\n * actionable (non-separator) items.\n */\n getActionableIndex(item: AfDropdownItem): number {\n return this.getActionableItems().indexOf(item);\n }\n\n private open(focusLast = false): void {\n this.isOpen.set(true);\n const actionableItems = this.getActionableItems();\n const startIndex = focusLast\n ? this.nextEnabledIndex(actionableItems.length, -1)\n : this.nextEnabledIndex(-1, 1);\n this.focusedItemIndex.set(startIndex);\n queueMicrotask(() => this.focusCurrent());\n }\n\n private close(returnFocus: boolean): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.typeAheadBuffer = '';\n if (returnFocus) {\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n private focusItem(index: number): void {\n this.focusedItemIndex.set(index);\n this.focusCurrent();\n }\n\n private focusCurrent(): void {\n const buttons = this.itemButtons();\n const idx = this.focusedItemIndex();\n buttons[idx]?.nativeElement.focus();\n }\n\n private nextEnabledIndex(from: number, direction: 1 | -1): number {\n const actionableItems = this.getActionableItems();\n const len = actionableItems.length;\n if (len === 0) return 0;\n\n let idx = from + direction;\n for (let i = 0; i < len; i++) {\n if (idx < 0) idx = len - 1;\n if (idx >= len) idx = 0;\n if (!actionableItems[idx].disabled) return idx;\n idx += direction;\n }\n return from;\n }\n\n private getActionableItems(): AfDropdownItem[] {\n return this.items().filter((item) => !item.separator);\n }\n\n private handleTypeAhead(char: string): void {\n if (this.typeAheadTimer) {\n clearTimeout(this.typeAheadTimer);\n }\n this.typeAheadBuffer += char.toLowerCase();\n this.typeAheadTimer = setTimeout(() => {\n this.typeAheadBuffer = '';\n this.typeAheadTimer = null;\n }, 500);\n\n const actionableItems = this.getActionableItems();\n const startIndex = this.focusedItemIndex() + 1;\n\n for (let i = 0; i < actionableItems.length; i++) {\n const idx = (startIndex + i) % actionableItems.length;\n const item = actionableItems[idx];\n if (!item.disabled && item.label.toLowerCase().startsWith(this.typeAheadBuffer)) {\n this.focusItem(idx);\n return;\n }\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\n\n/**\n * Pagination component\n *\n * @example\n * <af-pagination\n * [currentPage]=\"page\"\n * [totalPages]=\"10\"\n * (pageChange)=\"onPageChange($event)\">\n * </af-pagination>\n */\n@Component({\n selector: 'af-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-pagination\" aria-label=\"Pagination\">\n <ul class=\"ct-pagination__list\">\n <li>\n <button\n class=\"ct-pagination__link\"\n [attr.aria-disabled]=\"currentPage() === 1 ? 'true' : null\"\n [disabled]=\"currentPage() === 1\"\n type=\"button\"\n (click)=\"goToPage(currentPage() - 1)\">\n {{ previousLabel() }}\n </button>\n </li>\n @for (page of visiblePages(); track page) {\n <li>\n @if (page === '...') {\n <span class=\"ct-pagination__ellipsis\">…</span>\n } @else {\n <button\n class=\"ct-pagination__link\"\n [attr.aria-current]=\"currentPage() === page ? 'page' : null\"\n type=\"button\"\n (click)=\"goToPage(page)\">\n {{ page }}\n </button>\n }\n </li>\n }\n <li>\n <button\n class=\"ct-pagination__link\"\n [attr.aria-disabled]=\"currentPage() === totalPages() ? 'true' : null\"\n [disabled]=\"currentPage() === totalPages()\"\n type=\"button\"\n (click)=\"goToPage(currentPage() + 1)\">\n {{ nextLabel() }}\n </button>\n </li>\n </ul>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfPaginationComponent {\n /** Current page number (1-indexed) */\n currentPage = input(1);\n\n /** Total number of pages */\n totalPages = input(1);\n\n /** Label for previous button */\n previousLabel = input('Prev');\n\n /** Label for next button */\n nextLabel = input('Next');\n\n /** Maximum number of page buttons to show */\n maxVisiblePages = input(7);\n\n /** Page change event */\n pageChange = output<number>();\n\n visiblePages = computed(() => {\n const pages: (number | string)[] = [];\n const halfMax = Math.floor(this.maxVisiblePages() / 2);\n\n let start = Math.max(1, this.currentPage() - halfMax);\n let end = Math.min(this.totalPages(), start + this.maxVisiblePages() - 1);\n\n if (end - start < this.maxVisiblePages() - 1) {\n start = Math.max(1, end - this.maxVisiblePages() + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) pages.push('...');\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < this.totalPages()) {\n if (end < this.totalPages() - 1) pages.push('...');\n pages.push(this.totalPages());\n }\n\n return pages;\n });\n\n goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages() && page !== this.currentPage()) {\n this.pageChange.emit(page);\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\nexport interface AfBreadcrumb {\n label: string;\n url?: string;\n}\n\n/**\n * Breadcrumbs navigation component\n *\n * @example\n * <af-breadcrumbs [items]=\"breadcrumbs\"></af-breadcrumbs>\n */\n@Component({\n selector: 'af-breadcrumbs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-breadcrumbs\" aria-label=\"Breadcrumb\">\n <ol class=\"ct-breadcrumbs__list\">\n @for (item of items(); track $index; let isLast = $last) {\n <li class=\"ct-breadcrumbs__item\">\n @if (!isLast && item.url) {\n <a class=\"ct-breadcrumbs__link\" [href]=\"item.url\">\n {{ item.label }}\n </a>\n <span class=\"ct-breadcrumbs__separator\">/</span>\n } @else {\n <span class=\"ct-breadcrumbs__current\">{{ item.label }}</span>\n }\n </li>\n }\n </ol>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfBreadcrumbsComponent {\n /** Breadcrumb items */\n items = input<AfBreadcrumb[]>([]);\n}\n","import { Component, forwardRef, signal, computed, ElementRef, viewChild, input, output, model, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface CalendarDay {\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n}\n\n/**\n * Datepicker component with calendar popup\n *\n * @example\n * <af-datepicker\n * label=\"Select date\"\n * placeholder=\"Pick a date\"\n * [(ngModel)]=\"selectedDate\">\n * </af-datepicker>\n */\n@Component({\n selector: 'af-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfDatepickerComponent),\n multi: true\n }\n ],\n host: {\n '(document:keydown.escape)': 'onEscape()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId()\">{{ label() }}</label>\n }\n\n <div class=\"ct-datepicker\" [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <input\n #input\n class=\"ct-input\"\n type=\"text\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"formattedDate()\"\n [disabled]=\"disabled()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"popoverId()\"\n [attr.aria-label]=\"label() ? null : (placeholder() || 'Select date')\"\n (click)=\"toggle()\"\n (keydown)=\"onInputKeydown($event)\"\n (blur)=\"onTouched()\"\n readonly\n />\n\n @if (isOpen()) {\n <div\n #popover\n class=\"ct-datepicker__popover\"\n role=\"dialog\"\n [id]=\"popoverId()\"\n aria-label=\"Choose date\">\n <div class=\"ct-datepicker__header\">\n <button\n class=\"ct-button ct-button--ghost ct-button--icon\"\n aria-label=\"Previous month\"\n type=\"button\"\n (click)=\"previousMonth()\">\n ‹\n </button>\n <div class=\"ct-datepicker__title\">\n {{ monthNames[currentMonth()] }} {{ currentYear() }}\n </div>\n <button\n class=\"ct-button ct-button--ghost ct-button--icon\"\n aria-label=\"Next month\"\n type=\"button\"\n (click)=\"nextMonth()\">\n ›\n </button>\n </div>\n\n <div class=\"ct-datepicker__grid\" (keydown)=\"onGridKeydown($event)\">\n @for (day of weekdayLabels; track $index) {\n <div class=\"ct-datepicker__weekday\">{{ day }}</div>\n }\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n class=\"ct-datepicker__day\"\n [attr.data-date]=\"getDateKey(day.date)\"\n [attr.data-outside]=\"!day.isCurrentMonth\"\n [attr.data-today]=\"day.isToday\"\n [attr.aria-selected]=\"day.isSelected ? 'true' : null\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [attr.tabindex]=\"getDayTabIndex(day)\"\n type=\"button\"\n (click)=\"selectDate(day.date)\">\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfDatepickerComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Input label */\n label = input('');\n\n /** Placeholder text */\n placeholder = input('Select date');\n\n /** Whether datepicker is disabled */\n disabled = model(false);\n\n /** Date format for display */\n dateFormat = input('MMM dd, yyyy');\n\n /** Unique input ID */\n inputId = input(`af-datepicker-${AfDatepickerComponent.nextId++}`);\n\n /** Selected date change event */\n dateChange = output<Date>();\n\n inputRef = viewChild<ElementRef<HTMLInputElement>>('input');\n popoverRef = viewChild<ElementRef<HTMLDivElement>>('popover');\n\n weekdayLabels = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n ];\n\n selectedDate = signal<Date | null>(null);\n currentMonth = signal(new Date().getMonth());\n currentYear = signal(new Date().getFullYear());\n isOpen = signal(false);\n focusedDate = signal<Date | null>(null);\n\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n calendarDays = computed(() => {\n return this.generateCalendarDays();\n });\n\n formattedDate = computed(() => {\n const date = this.selectedDate();\n if (!date) return '';\n return this.formatDate(date);\n });\n\n popoverId = computed(() => `${this.inputId()}-popover`);\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n selectDate(date: Date): void {\n this.selectedDate.set(date);\n this.focusedDate.set(date);\n this.onChange(date);\n this.dateChange.emit(date);\n this.close(true);\n }\n\n previousMonth(): void {\n this.shiftMonth(-1);\n }\n\n nextMonth(): void {\n this.shiftMonth(1);\n }\n\n private generateCalendarDays(): CalendarDay[] {\n const year = this.currentYear();\n const month = this.currentMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const today = new Date();\n const selected = this.selectedDate();\n\n const days: CalendarDay[] = [];\n\n // Get day of week (0 = Sunday, adjust to Monday = 0)\n let startDay = firstDay.getDay() - 1;\n if (startDay < 0) startDay = 6;\n\n // Previous month days\n const prevMonthLastDay = new Date(year, month, 0).getDate();\n for (let i = startDay - 1; i >= 0; i--) {\n const date = new Date(year, month - 1, prevMonthLastDay - i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n // Current month days\n for (let i = 1; i <= lastDay.getDate(); i++) {\n const date = new Date(year, month, i);\n days.push({\n date,\n isCurrentMonth: true,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n // Next month days to fill grid (6 rows * 7 days = 42)\n const remainingDays = 42 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(year, month + 1, i);\n days.push({\n date,\n isCurrentMonth: false,\n isToday: this.isSameDay(date, today),\n isSelected: selected ? this.isSameDay(date, selected) : false\n });\n }\n\n return days;\n }\n\n getDayTabIndex(day: CalendarDay): number {\n const focused = this.focusedDate();\n if (focused && this.isSameDay(day.date, focused)) return 0;\n if (!focused && day.isSelected) return 0;\n return -1;\n }\n\n getDateKey(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n\n onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.open();\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.close(true);\n }\n }\n\n onGridKeydown(event: KeyboardEvent): void {\n if (!this.isOpen()) return;\n const focused = this.focusedDate() || this.selectedDate() || new Date(this.currentYear(), this.currentMonth(), 1);\n let nextDate: Date | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n nextDate = this.addDays(focused, 1);\n break;\n case 'ArrowLeft':\n nextDate = this.addDays(focused, -1);\n break;\n case 'ArrowDown':\n nextDate = this.addDays(focused, 7);\n break;\n case 'ArrowUp':\n nextDate = this.addDays(focused, -7);\n break;\n case 'Home':\n nextDate = this.addDays(focused, -this.getWeekdayIndex(focused));\n break;\n case 'End':\n nextDate = this.addDays(focused, 6 - this.getWeekdayIndex(focused));\n break;\n case 'PageUp':\n nextDate = this.addMonths(focused, -1);\n break;\n case 'PageDown':\n nextDate = this.addMonths(focused, 1);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectDate(focused);\n return;\n case 'Escape':\n event.preventDefault();\n this.close(true);\n return;\n default:\n return;\n }\n\n if (nextDate) {\n event.preventDefault();\n this.setFocusedDate(nextDate);\n }\n }\n\n onEscape(): void {\n if (this.isOpen()) {\n this.close(true);\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (this.isOpen() && !target.closest('.ct-datepicker')) {\n this.close(false);\n }\n }\n\n private open(): void {\n if (this.disabled() || this.isOpen()) return;\n const selected = this.selectedDate();\n const focusDate = selected || new Date();\n this.currentMonth.set(focusDate.getMonth());\n this.currentYear.set(focusDate.getFullYear());\n this.focusedDate.set(focusDate);\n this.isOpen.set(true);\n queueMicrotask(() => this.focusDayButton(focusDate));\n }\n\n private close(returnFocus = false): void {\n this.isOpen.set(false);\n this.onTouched();\n if (returnFocus) {\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n private setFocusedDate(date: Date): void {\n this.currentMonth.set(date.getMonth());\n this.currentYear.set(date.getFullYear());\n this.focusedDate.set(date);\n queueMicrotask(() => this.focusDayButton(date));\n }\n\n private focusDayButton(date: Date): void {\n const popover = this.popoverRef()?.nativeElement;\n if (!popover) return;\n const key = this.getDateKey(date);\n const button = popover.querySelector<HTMLButtonElement>(`.ct-datepicker__day[data-date=\"${key}\"]`);\n button?.focus();\n }\n\n private addDays(date: Date, delta: number): Date {\n const next = new Date(date);\n next.setDate(date.getDate() + delta);\n return next;\n }\n\n private addMonths(date: Date, delta: number): Date {\n const next = new Date(date);\n next.setMonth(date.getMonth() + delta);\n return next;\n }\n\n private getWeekdayIndex(date: Date): number {\n const day = date.getDay();\n return day === 0 ? 6 : day - 1;\n }\n\n private shiftMonth(delta: number): void {\n const base = this.focusedDate() || new Date(this.currentYear(), this.currentMonth(), 1);\n const next = this.addMonths(base, delta);\n this.setFocusedDate(next);\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n private formatDate(date: Date): string {\n const tokens: Record<string, string> = {\n yyyy: String(date.getFullYear()),\n MMM: this.monthNames[date.getMonth()].substring(0, 3),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n dd: String(date.getDate()).padStart(2, '0'),\n d: String(date.getDate())\n };\n\n return this.dateFormat().replace(/yyyy|MMM|MM|dd|d/g, token => tokens[token] ?? token);\n }\n\n // ControlValueAccessor implementation\n writeValue(value: Date | null): void {\n if (value) {\n this.selectedDate.set(value);\n this.currentMonth.set(value.getMonth());\n this.currentYear.set(value.getFullYear());\n this.focusedDate.set(value);\n } else {\n this.selectedDate.set(null);\n this.focusedDate.set(null);\n }\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ElementRef,\n viewChild,\n forwardRef,\n input,\n output,\n model,\n signal,\n computed,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Chip input component for managing a list of string values.\n *\n * Renders existing values as removable chips and provides a text input\n * that creates new chips on configurable separator keys (Enter, Comma, Semicolon).\n * Implements ControlValueAccessor for seamless integration with Angular Reactive Forms\n * and template-driven forms, binding to a `string[]` value.\n *\n * @example\n * <af-chip-input\n * label=\"Roles\"\n * placeholder=\"Add role...\"\n * [(ngModel)]=\"roles\">\n * </af-chip-input>\n *\n * @example\n * <af-chip-input\n * label=\"Tags\"\n * [separators]=\"[',', ';']\"\n * [formControl]=\"tagsControl\">\n * </af-chip-input>\n */\n@Component({\n selector: 'af-chip-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfChipInputComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n class=\"ct-chip-input\"\n [class.ct-chip-input--disabled]=\"disabled()\"\n [class.ct-chip-input--focused]=\"focused()\"\n (click)=\"focusInput()\">\n @for (chip of chips(); track chip) {\n <span\n class=\"ct-chip\"\n [attr.aria-disabled]=\"disabled() || null\">\n <span class=\"ct-chip__label\">{{ chip }}</span>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ct-chip__remove\"\n [attr.aria-label]=\"'Remove ' + chip\"\n (click)=\"remove(chip, $event)\">\n ×\n </button>\n }\n </span>\n }\n\n <input\n #chipInput\n [id]=\"inputId\"\n type=\"text\"\n class=\"ct-chip-input__input\"\n [placeholder]=\"chips().length === 0 ? placeholder() : ''\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n (keydown)=\"onKeydown($event)\"\n (input)=\"onInputChange($event)\"\n (focus)=\"focused.set(true)\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .ct-chip-input {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-2, 0.5rem);\n padding: var(--space-2, 0.5rem);\n border: var(--border-thin, 1px solid) var(--color-border-default, #d1d5db);\n border-radius: var(--radius-md, 0.375rem);\n background: var(--color-bg-default, #fff);\n cursor: text;\n transition: border-color var(--duration-fast, 150ms) var(--easing-standard, ease);\n }\n\n .ct-chip-input--focused {\n border-color: var(--color-focus-ring, #2563eb);\n outline: 2px solid var(--color-focus-ring, #2563eb);\n outline-offset: 2px;\n }\n\n .ct-chip-input--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ct-chip-input__input {\n flex: 1 1 auto;\n min-width: 80px;\n border: none;\n outline: none;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: var(--space-1, 0.25rem) 0;\n }\n\n .ct-chip-input__input:disabled {\n cursor: not-allowed;\n }\n `,\n ],\n})\nexport class AfChipInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the input */\n label = input('');\n\n /** Placeholder text for the text input */\n placeholder = input('');\n\n /** Hint text shown below the input */\n hint = input('');\n\n /** Error message -- shows error state */\n error = input('');\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Whether to allow duplicate chip values */\n allowDuplicates = input(false);\n\n /** Separator characters that trigger chip creation (in addition to Enter) */\n separators = input<string[]>([',', ';']);\n\n /** Emitted when a chip is added */\n added = output<string>();\n\n /** Emitted when a chip is removed */\n removed = output<string>();\n\n inputRef = viewChild.required<ElementRef<HTMLInputElement>>('chipInput');\n\n inputId = `af-chip-input-${AfChipInputComponent.nextId++}`;\n chips = signal<string[]>([]);\n focused = signal(false);\n\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n hintId = computed(() => `${this.inputId}-hint`);\n\n errorId = computed(() => `${this.inputId}-error`);\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId();\n if (this.hint()) return this.hintId();\n return null;\n }\n\n focusInput(): void {\n this.inputRef().nativeElement.focus();\n }\n\n onKeydown(event: KeyboardEvent): void {\n const inputEl = event.target as HTMLInputElement;\n const value = inputEl.value.trim();\n\n if (event.key === 'Enter') {\n event.preventDefault();\n this.addChip(value, inputEl);\n return;\n }\n\n if (this.separators().includes(event.key)) {\n event.preventDefault();\n this.addChip(value, inputEl);\n return;\n }\n\n const currentChips = this.chips();\n if (event.key === 'Backspace' && value === '' && currentChips.length > 0) {\n this.remove(currentChips[currentChips.length - 1]);\n }\n }\n\n onInputChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const value = inputEl.value;\n\n // Handle paste with separators\n for (const sep of this.separators()) {\n if (value.includes(sep)) {\n const parts = value.split(new RegExp(`[${this.escapeSeparators()}]`));\n inputEl.value = '';\n for (const part of parts) {\n const trimmed = part.trim();\n if (trimmed) {\n this.addChipValue(trimmed);\n }\n }\n return;\n }\n }\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n /** Removes a chip by value */\n remove(chip: string, event?: Event): void {\n event?.stopPropagation();\n const current = this.chips();\n const index = current.indexOf(chip);\n if (index >= 0) {\n this.chips.set([...current.slice(0, index), ...current.slice(index + 1)]);\n this.emitChange();\n this.removed.emit(chip);\n }\n }\n\n // ControlValueAccessor\n writeValue(value: string[]): void {\n this.chips.set(Array.isArray(value) ? [...value] : []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private addChip(value: string, inputEl: HTMLInputElement): void {\n if (value) {\n this.addChipValue(value);\n inputEl.value = '';\n }\n }\n\n private addChipValue(value: string): void {\n if (!this.allowDuplicates() && this.chips().includes(value)) {\n return;\n }\n this.chips.update(c => [...c, value]);\n this.emitChange();\n this.added.emit(value);\n }\n\n private emitChange(): void {\n this.onChange([...this.chips()]);\n }\n\n private escapeSeparators(): string {\n return this.separators().map(s => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('');\n }\n}\n","import {\n Directive,\n ElementRef,\n Renderer2,\n OnDestroy,\n effect,\n input,\n inject,\n} from '@angular/core';\n\nexport type AfTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nlet tooltipIdCounter = 0;\n\n/**\n * Directive that attaches a tooltip to any host element.\n *\n * Uses the design system's `ct-tooltip` CSS classes for styling and animation.\n * Shows on hover and focus, hides on blur, mouse leave, and Escape key.\n * Includes a configurable delay before showing.\n *\n * @example\n * <button afTooltip=\"Save changes\">Save</button>\n *\n * @example\n * <button\n * afTooltip=\"Delete item\"\n * afTooltipPosition=\"bottom\"\n * [afTooltipDelay]=\"500\">\n * Delete\n * </button>\n */\n@Directive({\n selector: '[afTooltip]',\n})\nexport class AfTooltipDirective implements OnDestroy {\n /** Tooltip text content */\n text = input('', { alias: 'afTooltip' });\n\n /** Position relative to the host element */\n afTooltipPosition = input<AfTooltipPosition>('top');\n\n /** Delay in ms before showing the tooltip */\n afTooltipDelay = input(300);\n\n /** Whether the tooltip is disabled */\n afTooltipDisabled = input(false);\n\n private el = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n\n private contentEl: HTMLElement | null = null;\n private tooltipId = `af-tooltip-${tooltipIdCounter++}`;\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly listeners: (() => void)[] = [];\n\n constructor() {\n this.initHost();\n this.setupListeners();\n }\n\n private textEffect = effect(() => {\n if (this.contentEl) {\n this.contentEl.textContent = this.text();\n }\n });\n\n private positionEffect = effect(() => {\n this.el.nativeElement.setAttribute('data-side', this.afTooltipPosition());\n });\n\n ngOnDestroy(): void {\n this.hide();\n this.listeners.forEach(unlisten => unlisten());\n }\n\n private initHost(): void {\n const host = this.el.nativeElement;\n this.renderer.addClass(host, 'ct-tooltip');\n host.setAttribute('data-state', 'closed');\n host.setAttribute('data-side', this.afTooltipPosition());\n }\n\n private setupListeners(): void {\n const host = this.el.nativeElement;\n\n this.listeners.push(\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\n this.renderer.listen(host, 'mouseleave', () => this.hide()),\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\n this.renderer.listen(host, 'focusout', () => this.hide()),\n this.renderer.listen(host, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape') this.hide();\n }),\n );\n }\n\n private scheduleShow(): void {\n if (this.afTooltipDisabled() || !this.text()) return;\n this.clearTimeout();\n this.showTimeout = setTimeout(() => this.show(), this.afTooltipDelay());\n }\n\n private show(): void {\n if (this.contentEl) return;\n\n const host = this.el.nativeElement;\n const content = this.renderer.createElement('span') as HTMLElement;\n content.classList.add('ct-tooltip__content');\n content.setAttribute('role', 'tooltip');\n content.setAttribute('id', this.tooltipId);\n content.textContent = this.text();\n\n this.renderer.appendChild(host, content);\n host.setAttribute('aria-describedby', this.tooltipId);\n this.contentEl = content;\n\n // Trigger open state on next frame so CSS transition plays\n requestAnimationFrame(() => {\n host.setAttribute('data-state', 'open');\n });\n }\n\n private hide(): void {\n this.clearTimeout();\n if (this.contentEl) {\n const host = this.el.nativeElement;\n host.setAttribute('data-state', 'closed');\n host.removeAttribute('aria-describedby');\n this.contentEl.remove();\n this.contentEl = null;\n }\n }\n\n private clearTimeout(): void {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfBadgeVariant = 'default' | 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Badge component for status indicators\n *\n * @example\n * <af-badge variant=\"success\" icon=\"+\">Approved</af-badge>\n * <af-badge variant=\"danger\">Blocked</af-badge>\n */\n@Component({\n selector: 'af-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"badgeClasses()\" [attr.aria-label]=\"ariaLabel() || null\">\n @if (icon()) {\n <span class=\"ct-badge__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n }\n @if (dot()) {\n <span class=\"ct-badge__dot\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n </span>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfBadgeComponent {\n /** Accessible label, useful when the badge has no visible text. */\n ariaLabel = input('');\n\n /** Color variant. */\n variant = input<AfBadgeVariant>('default');\n\n /** Icon character to display */\n icon = input('');\n\n /** Show a dot indicator instead of icon */\n dot = input(false);\n\n badgeClasses = computed(() => {\n const classes = ['ct-badge'];\n if (this.variant() !== 'default') {\n classes.push(`ct-badge--${this.variant()}`);\n }\n if (this.icon() || this.dot()) {\n classes.push('ct-badge--icon');\n }\n return classes.join(' ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfProgressBarVariant = 'default' | 'info' | 'success' | 'warning' | 'danger';\nexport type AfProgressBarSize = 'sm' | 'md' | 'lg';\n\n/**\n * Progress bar for showing completion state\n *\n * @example\n * <af-progress-bar [value]=\"75\" variant=\"success\" label=\"Upload progress\"></af-progress-bar>\n * <af-progress-bar [indeterminate]=\"true\" label=\"Loading\"></af-progress-bar>\n */\n@Component({\n selector: 'af-progress-bar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n [class]=\"barClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"indeterminate() ? null : value()\"\n [attr.aria-valuemin]=\"indeterminate() ? null : 0\"\n [attr.aria-valuemax]=\"indeterminate() ? null : 100\"\n [attr.aria-label]=\"label()\">\n <div\n class=\"ct-progress-bar__track\"\n [style.width]=\"indeterminate() ? null : value() + '%'\">\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfProgressBarComponent {\n /** Current progress value (0-100) */\n value = input(0);\n\n /** Color variant */\n variant = input<AfProgressBarVariant>('default');\n\n /** Track height */\n size = input<AfProgressBarSize>('md');\n\n /** Accessible label for screen readers */\n label = input('');\n\n /** Indeterminate mode (animated, no fixed value) */\n indeterminate = input(false);\n\n barClasses = computed(() => {\n const classes = ['ct-progress-bar'];\n if (this.variant() !== 'default') {\n classes.push(`ct-progress-bar--${this.variant()}`);\n }\n if (this.size() !== 'md') {\n classes.push(`ct-progress-bar--${this.size()}`);\n }\n if (this.indeterminate()) {\n classes.push('ct-progress-bar--indeterminate');\n }\n return classes.join(' ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfSpinnerSize = 'sm' | 'md' | 'lg';\n\n/**\n * Spinner component for loading states\n *\n * @example\n * <af-spinner label=\"Loading data\"></af-spinner>\n * <af-spinner size=\"lg\" label=\"Processing\"></af-spinner>\n */\n@Component({\n selector: 'af-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span\n [class]=\"spinnerClasses()\"\n role=\"status\"\n [attr.aria-label]=\"label()\">\n </span>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class AfSpinnerComponent {\n /** Spinner size */\n size = input<AfSpinnerSize>('md');\n\n /** Accessible label for screen readers */\n label = input('Loading');\n\n spinnerClasses = computed(() => {\n const classes = ['ct-spinner'];\n if (this.size() !== 'md') {\n classes.push(`ct-spinner--${this.size()}`);\n }\n return classes.join(' ');\n });\n}\n","import { Component, forwardRef, input, output, model, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfToggleItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport type AfToggleGroupSize = 'sm' | 'md' | 'lg';\n\n/**\n * Toggle group for single or multi-select button groups\n *\n * @example\n * <af-toggle-group\n * [items]=\"viewModes\"\n * [(value)]=\"selectedMode\"\n * ariaLabel=\"View mode\">\n * </af-toggle-group>\n *\n * <af-toggle-group\n * [items]=\"filters\"\n * [multiple]=\"true\"\n * [(value)]=\"activeFilters\"\n * ariaLabel=\"Status filter\">\n * </af-toggle-group>\n */\n@Component({\n selector: 'af-toggle-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"groupClasses()\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of items(); track item.value) {\n <button\n class=\"ct-toggle-group__item\"\n type=\"button\"\n [attr.aria-pressed]=\"isPressed(item.value)\"\n [disabled]=\"item.disabled || disabled()\"\n (click)=\"toggle(item.value)\">\n {{ item.label }}\n </button>\n }\n </div>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfToggleGroupComponent),\n multi: true\n }]\n})\nexport class AfToggleGroupComponent implements ControlValueAccessor {\n /** Toggle items */\n items = input<AfToggleItem[]>([]);\n\n /** Group size */\n size = input<AfToggleGroupSize>('md');\n\n /** Allow multiple selections */\n multiple = input(false);\n\n /** Accessible group label */\n ariaLabel = input('');\n\n /** Disabled state */\n disabled = model(false);\n\n /** Current value (string for single, string[] for multiple) */\n value = model<string | string[]>('');\n\n private onChange: (value: string | string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n groupClasses = computed(() => {\n const classes = ['ct-toggle-group'];\n if (this.size() !== 'md') {\n classes.push(`ct-toggle-group--${this.size()}`);\n }\n return classes.join(' ');\n });\n\n isPressed(itemValue: string): boolean {\n if (this.multiple()) {\n return Array.isArray(this.value()) && (this.value() as string[]).includes(itemValue);\n }\n return this.value() === itemValue;\n }\n\n toggle(itemValue: string): void {\n this.onTouched();\n\n if (this.multiple()) {\n const current = Array.isArray(this.value()) ? [...this.value() as string[]] : [];\n const index = current.indexOf(itemValue);\n if (index >= 0) {\n current.splice(index, 1);\n } else {\n current.push(itemValue);\n }\n this.value.set(current);\n } else {\n this.value.set(itemValue);\n }\n\n this.onChange(this.value());\n }\n\n writeValue(value: string | string[]): void {\n this.value.set(value ?? (this.multiple() ? [] : ''));\n }\n\n registerOnChange(fn: (value: string | string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n/**\n * Toolbar component for top-level app navigation\n *\n * @example\n * <af-toolbar ariaLabel=\"Main navigation\">\n * <a brand href=\"#\">Construct</a>\n * <ul nav>\n * <li><a href=\"/dashboard\" class=\"ct-toolbar__nav-link ct-toolbar__nav-link--active\" aria-current=\"page\">Dashboard</a></li>\n * <li><a href=\"/documents\" class=\"ct-toolbar__nav-link\">Documents</a></li>\n * </ul>\n * <div actions>\n * <button class=\"ct-button ct-button--ghost\">Profile</button>\n * </div>\n * </af-toolbar>\n */\n@Component({\n selector: 'af-toolbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ct-toolbar\" [attr.aria-label]=\"ariaLabel()\">\n <div class=\"ct-toolbar__brand\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <ng-content select=\"[nav]\"></ng-content>\n <div class=\"ct-toolbar__spacer\"></div>\n <div class=\"ct-toolbar__actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </nav>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfToolbarComponent {\n /** Accessible label for the navigation landmark */\n ariaLabel = input('Main navigation');\n}\n","import { Component, ChangeDetectionStrategy, input, model, computed } from '@angular/core';\n\nexport type AfSidebarMode = 'side' | 'over';\n\n/**\n * Sidebar component for collapsible navigation\n *\n * @example\n * <af-sidebar [open]=\"sidebarOpen\" mode=\"side\" ariaLabel=\"Folder navigation\" (openChange)=\"sidebarOpen = $event\">\n * <div header>\n * <strong>Folders</strong>\n * </div>\n * <ul content class=\"ct-nav-list\">\n * <li><a class=\"ct-nav-item ct-nav-item--active\" href=\"#\" aria-current=\"page\">\n * <span class=\"ct-nav-item__label\">Inbox</span>\n * <span class=\"ct-nav-item__badge\">12</span>\n * </a></li>\n * </ul>\n * </af-sidebar>\n */\n@Component({\n selector: 'af-sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n template: `\n <aside\n [class]=\"sidebarClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n [attr.aria-label]=\"ariaLabel()\">\n <div class=\"ct-sidebar__header\">\n <ng-content select=\"[header]\"></ng-content>\n @if (showCloseButton() && mode() === 'over') {\n <button\n class=\"ct-button ct-button--ghost ct-button--icon ct-button--sm\"\n type=\"button\"\n aria-label=\"Close menu\"\n (click)=\"close()\">\n <span class=\"ct-icon ct-icon--sm\" aria-hidden=\"true\">×</span>\n </button>\n }\n </div>\n <div class=\"ct-sidebar__content\">\n <ng-content select=\"[content]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </aside>\n @if (mode() === 'over' && open()) {\n <div class=\"ct-sidebar__backdrop\" (click)=\"close()\"></div>\n }\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class AfSidebarComponent {\n /** Sidebar open state */\n open = model(true);\n\n /** Display mode: side (pushes content) or over (overlays) */\n mode = input<AfSidebarMode>('side');\n\n /** Accessible label for the sidebar landmark */\n ariaLabel = input('Navigation');\n\n /** Show close button in overlay mode */\n showCloseButton = input(true);\n\n sidebarClasses = computed(() => {\n const classes = ['ct-sidebar'];\n classes.push(`ct-sidebar--${this.mode()}`);\n return classes.join(' ');\n });\n\n close(): void {\n this.open.set(false);\n }\n\n onEscape(): void {\n if (this.mode() === 'over' && this.open()) {\n this.close();\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfIconSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Icon component that abstracts the icon rendering strategy.\n *\n * Currently uses Material Icons font ligatures. The icon strategy\n * can be changed centrally without modifying consumers.\n *\n * @example\n * <af-icon name=\"delete\" />\n * <af-icon name=\"edit\" size=\"sm\" />\n */\n@Component({\n selector: 'af-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"iconClasses()\" aria-hidden=\"true\">{{ name() }}</span>\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n `]\n})\nexport class AfIconComponent {\n /** Material Icon name (ligature) */\n name = input.required<string>();\n\n /** Icon size variant */\n size = input<AfIconSize>('md');\n\n iconClasses = computed(() => {\n const classes = ['ct-icon', 'material-icons'];\n if (this.size() !== 'md') {\n classes.push(`ct-icon--${this.size()}`);\n }\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n input,\n model,\n forwardRef,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type AfSliderSize = 'sm' | 'md' | 'lg';\n\n/**\n * Slider component with full form control and accessibility support.\n *\n * Wraps the `ct-slider` design system CSS. Supports min/max/step,\n * keyboard navigation, ARIA attributes, and reactive forms.\n *\n * @example Reactive Forms\n * <af-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" label=\"Volume\" />\n *\n * @example Standalone two-way binding\n * <af-slider [(value)]=\"brightness\" [min]=\"0\" [max]=\"100\" [step]=\"5\" [showValue]=\"true\" />\n *\n * @example With min/max labels\n * <af-slider [(value)]=\"temperature\" [min]=\"16\" [max]=\"30\" [showMinMax]=\"true\" label=\"Temperature\" />\n */\n@Component({\n selector: 'af-slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSliderComponent),\n multi: true,\n },\n ],\n template: `\n <div [class]=\"hostClasses()\" [style.--_value]=\"valuePercent()\">\n @if (showMinMax()) {\n <span class=\"ct-slider__min\" aria-hidden=\"true\">{{ min() }}</span>\n }\n\n <input\n #sliderInput\n class=\"ct-slider__input\"\n type=\"range\"\n [id]=\"sliderId()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuetext]=\"ariaValueText()\"\n [attr.aria-invalid]=\"invalid() ? true : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n\n @if (showMinMax()) {\n <span class=\"ct-slider__max\" aria-hidden=\"true\">{{ max() }}</span>\n }\n\n @if (showValue()) {\n <output class=\"ct-slider__value\" [attr.for]=\"sliderId()\">\n {{ value() }}\n </output>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfSliderComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Accessible label for the slider */\n label = input('');\n\n /** Minimum value */\n min = input(0);\n\n /** Maximum value */\n max = input(100);\n\n /** Step increment */\n step = input(1);\n\n /** Component size variant */\n size = input<AfSliderSize>('md');\n\n /** Whether the slider is disabled */\n disabled = model(false);\n\n /** Whether the slider is in an invalid state */\n invalid = input(false);\n\n /** Show the current value next to the slider */\n showValue = input(false);\n\n /** Show min/max labels */\n showMinMax = input(false);\n\n /** Custom aria-valuetext for screen readers */\n valueTextFn = input<((value: number) => string) | null>(null);\n\n /** Unique slider ID */\n sliderId = input(`af-slider-${AfSliderComponent.nextId++}`);\n\n /** Current value — supports two-way binding via [(value)] */\n value = model(0);\n\n sliderInput = viewChild.required<ElementRef<HTMLInputElement>>('sliderInput');\n\n private onChangeCallback: (value: number) => void = () => {};\n onTouched: () => void = () => {};\n\n hostClasses = computed(() => {\n const classes = ['ct-slider'];\n const s = this.size();\n if (s !== 'md') {\n classes.push(`ct-slider--${s}`);\n }\n return classes.join(' ');\n });\n\n valuePercent = computed(() => {\n const minVal = this.min();\n const maxVal = this.max();\n const range = maxVal - minVal;\n if (range === 0) return 0;\n return ((this.value() - minVal) / range) * 100;\n });\n\n ariaValueText = computed(() => {\n const fn = this.valueTextFn();\n return fn ? fn(this.value()) : null;\n });\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const numValue = Number(target.value);\n this.value.set(numValue);\n this.onChangeCallback(numValue);\n }\n\n /** Writes a new value from the form model. */\n writeValue(value: number): void {\n this.value.set(value ?? 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n input,\n output,\n model,\n computed,\n effect,\n viewChild,\n ElementRef,\n} from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\nexport type AfDrawerPosition = 'right' | 'left' | 'top' | 'bottom';\nexport type AfDrawerSize = 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * Drawer/slide-out panel with full accessibility support.\n *\n * @example\n * ```html\n * <af-drawer [(open)]=\"isOpen\" position=\"right\" ariaLabel=\"Settings\">\n * <div header>\n * <h2>Settings</h2>\n * </div>\n * <div body>\n * <p>Drawer content here.</p>\n * </div>\n * <div footer>\n * <button (click)=\"isOpen = false\">Close</button>\n * </div>\n * </af-drawer>\n * ```\n */\n@Component({\n selector: 'af-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n <div\n #drawer\n [class]=\"containerClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n role=\"dialog\"\n [attr.aria-modal]=\"open() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"!ariaLabel() ? titleId : null\"\n (click)=\"onBackdropClick($event)\">\n <div\n #panel\n class=\"ct-drawer__panel\"\n tabindex=\"-1\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"ct-drawer__header\">\n <ng-content select=\"[header]\"></ng-content>\n @if (showCloseButton()) {\n <button\n class=\"ct-button ct-button--ghost ct-button--icon ct-button--sm\"\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel()\"\n (click)=\"close()\">\n <span class=\"ct-icon ct-icon--sm\" aria-hidden=\"true\">×</span>\n </button>\n }\n </div>\n <div class=\"ct-drawer__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n <div class=\"ct-drawer__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfDrawerComponent implements OnDestroy {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Two-way bindable open state */\n open = model(false);\n\n /** Slide-in position */\n position = input<AfDrawerPosition>('right');\n\n /** Panel size */\n size = input<AfDrawerSize>('md');\n\n /** Accessible label for the drawer dialog */\n ariaLabel = input('');\n\n /** Show built-in close button in the header */\n showCloseButton = input(true);\n\n /** Whether clicking the backdrop closes the drawer */\n closeOnBackdropClick = input(true);\n\n /** Aria label for the close button */\n closeButtonAriaLabel = input('Close drawer');\n\n /** Emits when the drawer requests to be closed */\n closed = output<void>();\n\n /** Unique ID for aria-labelledby fallback */\n readonly titleId = `af-drawer-title-${AfDrawerComponent.nextId++}`;\n\n private panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n containerClasses = computed(() => {\n const classes = ['ct-drawer'];\n\n const pos = this.position();\n if (pos !== 'right') {\n classes.push(`ct-drawer--${pos}`);\n }\n\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-drawer--${sz}`);\n }\n\n return classes.join(' ');\n });\n\n private openEffect = effect(() => {\n const isOpen = this.open();\n if (isOpen) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n\n ngOnDestroy(): void {\n this.unlockBodyScroll();\n this.focusTrap.restoreFocus();\n }\n\n /** Closes the drawer and emits the closed event */\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open()) return;\n\n if (event.key === 'Escape') {\n this.close();\n return;\n }\n\n if (event.key === 'Tab') {\n const panel = this.panelRef()?.nativeElement;\n this.focusTrap.handleTab(event, panel, panel);\n }\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n this.lockBodyScroll();\n queueMicrotask(() => {\n if (!this.open()) return;\n const panel = this.panelRef()?.nativeElement;\n this.focusTrap.focusFirst(panel, panel);\n });\n }\n\n private onClose(): void {\n this.unlockBodyScroll();\n this.focusTrap.restoreFocus();\n }\n\n private lockBodyScroll(): void {\n document.body.style.overflow = 'hidden';\n }\n\n private unlockBodyScroll(): void {\n document.body.style.overflow = '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n computed,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfComboboxOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n description?: string;\n}\n\n/**\n * Combobox component with autocomplete filtering, keyboard navigation,\n * and full ARIA support following the WAI-ARIA 1.2 combobox pattern.\n *\n * @example\n * <af-combobox\n * label=\"Country\"\n * placeholder=\"Search countries...\"\n * [options]=\"countries\"\n * [(ngModel)]=\"selectedCountry\"\n * hint=\"Start typing to filter\"\n * ></af-combobox>\n *\n * @example\n * <af-combobox\n * label=\"Assignee\"\n * [options]=\"teamMembers\"\n * [formControl]=\"assigneeControl\"\n * [error]=\"assigneeError\"\n * required\n * ></af-combobox>\n */\n@Component({\n selector: 'af-combobox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfComboboxComponent),\n multi: true,\n },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [attr.for]=\"inputId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n [class]=\"comboboxClasses()\"\n [attr.data-state]=\"isOpen() ? 'open' : 'closed'\"\n >\n <div class=\"ct-combobox__input-wrap\">\n <input\n #inputEl\n class=\"ct-combobox__input\"\n [id]=\"inputId\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-required]=\"required() || null\"\n [value]=\"query()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n <button\n type=\"button\"\n class=\"ct-combobox__trigger\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [disabled]=\"disabled()\"\n (click)=\"toggleListbox()\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <svg\n class=\"ct-combobox__trigger-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n <ul\n #listboxEl\n [id]=\"listboxId\"\n class=\"ct-combobox__listbox\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || 'Options'\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n class=\"ct-combobox__option\"\n role=\"option\"\n [id]=\"getOptionId(i)\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [attr.data-highlighted]=\"highlightedIndex() === i ? '' : null\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <span class=\"ct-combobox__option-check\" aria-hidden=\"true\">\n @if (isSelected(option)) {\n <svg viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3 8.5l3.5 3.5 6.5-8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </span>\n <span class=\"ct-combobox__option-label\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"ct-combobox__option-description\">{{ option.description }}</span>\n }\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li class=\"ct-combobox__empty\" aria-disabled=\"true\">\n {{ emptyText() }}\n </li>\n }\n </ul>\n\n <div\n class=\"ct-combobox__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ statusMessage() }}\n </div>\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId\">{{ error() }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfComboboxComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label for the combobox field */\n label = input('');\n\n /** Placeholder text for the input */\n placeholder = input('');\n\n /** Available options */\n options = input<AfComboboxOption[]>([]);\n\n /** Hint text shown below the combobox */\n hint = input('');\n\n /** Error message — shows error state and message */\n error = input('');\n\n /** Whether the combobox is required */\n required = input(false);\n\n /** Whether the combobox is disabled */\n disabled = model(false);\n\n /** Size variant */\n size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Text shown when no options match the filter */\n emptyText = input('No results found');\n\n /** Value comparison function for object values */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique combobox ID */\n comboboxId = input(`af-combobox-${AfComboboxComponent.nextId++}`);\n\n inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n listboxRef = viewChild<ElementRef<HTMLUListElement>>('listboxEl');\n\n isOpen = signal(false);\n query = signal('');\n highlightedIndex = signal(-1);\n\n private value = signal<unknown>(null);\n private onChange: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n get inputId(): string {\n return `${this.comboboxId()}-input`;\n }\n\n get listboxId(): string {\n return `${this.comboboxId()}-listbox`;\n }\n\n get hintId(): string {\n return `${this.comboboxId()}-hint`;\n }\n\n get errorId(): string {\n return `${this.comboboxId()}-error`;\n }\n\n comboboxClasses = computed(() => {\n const classes = ['ct-combobox'];\n const s = this.size();\n if (s === 'sm') classes.push('ct-combobox--sm');\n if (s === 'lg') classes.push('ct-combobox--lg');\n return classes.join(' ');\n });\n\n selectedOption = computed(() => {\n const v = this.value();\n if (v === null || v === undefined) return null;\n return this.options().find((o) => this.compareWith()(o.value, v)) ?? null;\n });\n\n filteredOptions = computed(() => {\n const q = this.query().toLowerCase().trim();\n const opts = this.options();\n if (!q) return opts;\n const selected = this.selectedOption();\n if (selected && selected.label.toLowerCase() === q) return opts;\n return opts.filter((o) => o.label.toLowerCase().includes(q));\n });\n\n activeDescendantId = computed(() => {\n const idx = this.highlightedIndex();\n if (idx < 0 || idx >= this.filteredOptions().length) return null;\n return this.getOptionId(idx);\n });\n\n statusMessage = computed(() => {\n if (!this.isOpen()) return '';\n const count = this.filteredOptions().length;\n if (count === 0) return this.emptyText();\n return `${count} result${count === 1 ? '' : 's'} available`;\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId;\n if (this.hint()) return this.hintId;\n return null;\n }\n\n getOptionId(index: number): string {\n return `${this.comboboxId()}-option-${index}`;\n }\n\n isSelected(option: AfComboboxOption): boolean {\n const v = this.value();\n if (v === null || v === undefined) return false;\n return this.compareWith()(option.value, v);\n }\n\n /** Opens the listbox and highlights the selected option or first enabled option */\n openListbox(): void {\n if (this.disabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.highlightedIndex.set(this.findSelectedIndex());\n }\n\n /** Closes the listbox and restores the display value */\n closeListbox(restoreDisplay = true): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.highlightedIndex.set(-1);\n if (restoreDisplay) {\n const selected = this.selectedOption();\n this.query.set(selected ? selected.label : '');\n }\n }\n\n /** Toggles the listbox open/closed */\n toggleListbox(): void {\n if (this.isOpen()) {\n this.closeListbox();\n } else {\n this.openListbox();\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n /** Selects an option and closes the listbox */\n selectOption(option: AfComboboxOption): void {\n if (option.disabled) return;\n this.value.set(option.value);\n this.query.set(option.label);\n this.onChange(option.value);\n this.closeListbox(false);\n this.inputRef()?.nativeElement.focus();\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.query.set(target.value);\n if (!this.isOpen()) {\n this.openListbox();\n }\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n if (!target.value.trim()) {\n this.value.set(null);\n this.onChange(null);\n }\n }\n\n onFocus(): void {\n this.openListbox();\n }\n\n onBlur(): void {\n this.closeListbox();\n this.onTouchedCallback();\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(1);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(-1);\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.isOpen()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < filtered.length && !filtered[idx].disabled) {\n this.selectOption(filtered[idx]);\n }\n } else {\n this.openListbox();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.closeListbox();\n }\n break;\n\n case 'Home':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'End':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findLastEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'Tab':\n if (this.isOpen()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < filtered.length && !filtered[idx].disabled) {\n this.selectOption(filtered[idx]);\n }\n this.closeListbox();\n }\n break;\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const host = this.inputRef()?.nativeElement.closest('.ct-combobox');\n if (host && !host.contains(target)) {\n this.closeListbox();\n this.onTouchedCallback();\n }\n }\n\n /** Writes a value from the form model */\n writeValue(value: unknown): void {\n this.value.set(value ?? null);\n const option = this.options().find((o) => this.compareWith()(o.value, this.value()));\n this.query.set(option ? option.label : '');\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private moveHighlight(direction: number): void {\n const filtered = this.filteredOptions();\n if (filtered.length === 0) return;\n\n let idx = this.highlightedIndex();\n let attempts = 0;\n\n do {\n idx += direction;\n if (idx < 0) idx = filtered.length - 1;\n if (idx >= filtered.length) idx = 0;\n attempts++;\n } while (filtered[idx]?.disabled && attempts < filtered.length);\n\n if (!filtered[idx]?.disabled) {\n this.highlightedIndex.set(idx);\n this.scrollHighlightedIntoView();\n }\n }\n\n private scrollHighlightedIntoView(): void {\n queueMicrotask(() => {\n const listbox = this.listboxRef()?.nativeElement;\n if (!listbox) return;\n const optionEl = listbox.querySelector('[data-highlighted]') as HTMLElement;\n optionEl?.scrollIntoView?.({ block: 'nearest' });\n });\n }\n\n private findSelectedIndex(): number {\n const v = this.value();\n if (v === null || v === undefined) return this.findFirstEnabledIndex();\n const filtered = this.filteredOptions();\n const idx = filtered.findIndex((o) => this.compareWith()(o.value, v));\n return idx >= 0 ? idx : this.findFirstEnabledIndex();\n }\n\n private findFirstEnabledIndex(): number {\n return this.filteredOptions().findIndex((o) => !o.disabled);\n }\n\n private findLastEnabledIndex(): number {\n const filtered = this.filteredOptions();\n for (let i = filtered.length - 1; i >= 0; i--) {\n if (!filtered[i].disabled) return i;\n }\n return -1;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n output,\n model,\n signal,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AfButtonComponent } from '../button';\nimport { AfBadgeComponent } from '../badge';\n\nexport interface AfFileValidationError {\n file: File;\n type: 'type' | 'size';\n message: string;\n}\n\nexport interface AfFileEntry {\n file: File;\n status: 'success' | 'error';\n error?: string;\n}\n\n/**\n * File upload component with drag-and-drop, validation, and form control support.\n *\n * @example\n * <af-file-upload\n * label=\"Attachments\"\n * hint=\"PDF, DOCX up to 10MB\"\n * accept=\".pdf,.docx\"\n * [maxSize]=\"10485760\"\n * multiple\n * [(ngModel)]=\"files\">\n * </af-file-upload>\n *\n * @example\n * <af-file-upload\n * label=\"Avatar\"\n * accept=\"image/*\"\n * [maxSize]=\"2097152\"\n * [formControl]=\"avatarControl\">\n * </af-file-upload>\n */\n@Component({\n selector: 'af-file-upload',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AfButtonComponent, AfBadgeComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfFileUploadComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"ct-file-upload\">\n @if (label()) {\n <span class=\"ct-field__label\" [id]=\"labelId()\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </span>\n }\n\n <label\n class=\"ct-file-upload__dropzone\"\n [attr.for]=\"inputId()\"\n [attr.data-state]=\"dragOver() ? 'dragover' : null\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\">\n <input\n class=\"ct-file-upload__input\"\n [id]=\"inputId()\"\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"label() || 'File upload'\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n (change)=\"onFileSelected($event)\"\n (blur)=\"onTouched()\" />\n <span class=\"ct-file-upload__title\">Drop files here or browse</span>\n @if (hint()) {\n <span class=\"ct-file-upload__hint\" [id]=\"hintId()\">{{ hint() }}</span>\n }\n <span class=\"ct-button ct-button--secondary ct-button--sm\" aria-hidden=\"true\">\n Browse files\n </span>\n </label>\n\n @if (fileEntries().length > 0) {\n <ul class=\"ct-file-upload__list\" aria-label=\"Selected files\">\n @for (entry of fileEntries(); track $index) {\n <li class=\"ct-file-upload__item\" [attr.data-status]=\"entry.status\">\n <div class=\"ct-file-upload__file\">\n <span class=\"ct-file-upload__name\">{{ entry.file.name }}</span>\n <span class=\"ct-file-upload__meta\">{{ formatSize(entry.file.size) }}</span>\n @if (entry.error) {\n <span class=\"ct-file-upload__error\">{{ entry.error }}</span>\n }\n </div>\n <div class=\"ct-file-upload__actions\">\n @if (entry.status === 'success') {\n <af-badge variant=\"success\">Ready</af-badge>\n }\n @if (entry.status === 'error') {\n <af-badge variant=\"danger\">Invalid</af-badge>\n }\n @if (!disabled()) {\n <af-button\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'Remove ' + entry.file.name\"\n (clicked)=\"removeFile(entry)\">\n Remove\n </af-button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n @if (error()) {\n <div class=\"ct-file-upload__error\" [id]=\"errorId()\" role=\"alert\">\n {{ error() }}\n </div>\n }\n\n <span class=\"af-file-upload__sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ liveAnnouncement() }}\n </span>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .af-file-upload__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n `,\n ],\n})\nexport class AfFileUploadComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the dropzone */\n label = input('');\n\n /** Hint text shown in the dropzone (e.g. accepted types and size limit) */\n hint = input('');\n\n /** Error message — shows error state */\n error = input('');\n\n /** Accepted file types (e.g. '.pdf,.docx' or 'image/*') */\n accept = input('');\n\n /** Maximum file size in bytes (0 = unlimited) */\n maxSize = input(0);\n\n /** Allow selecting multiple files */\n multiple = input(false);\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Emits validation errors when invalid files are added */\n validationErrors = output<AfFileValidationError[]>();\n\n /** Unique component ID */\n inputId = input(`af-file-upload-${AfFileUploadComponent.nextId++}`);\n\n fileEntries = signal<AfFileEntry[]>([]);\n dragOver = signal(false);\n liveAnnouncement = signal('');\n\n onChange: (value: File | File[] | null) => void = () => {};\n onTouched: () => void = () => {};\n\n labelId = computed(() => `${this.inputId()}-label`);\n hintId = computed(() => `${this.inputId()}-hint`);\n errorId = computed(() => `${this.inputId()}-error`);\n\n ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n if (this.error()) ids.push(this.errorId());\n if (this.hint()) ids.push(this.hintId());\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n onDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled()) {\n this.dragOver.set(true);\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragOver.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.dragOver.set(false);\n\n if (this.disabled()) return;\n\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.processFiles(Array.from(files));\n }\n }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.processFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n /** Removes a file entry from the list */\n removeFile(entry: AfFileEntry): void {\n this.fileEntries.update((entries) => entries.filter((e) => e !== entry));\n this.emitValue();\n this.announce(`${entry.file.name} removed`);\n }\n\n /** Formats bytes into a human-readable size string */\n formatSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const size = bytes / Math.pow(1024, i);\n return `${size < 10 ? size.toFixed(1) : Math.round(size)} ${units[i]}`;\n }\n\n writeValue(value: File | File[] | null): void {\n if (!value) {\n this.fileEntries.set([]);\n return;\n }\n const files = Array.isArray(value) ? value : [value];\n this.fileEntries.set(files.map((file) => ({ file, status: 'success' as const })));\n }\n\n registerOnChange(fn: (value: File | File[] | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private processFiles(files: File[]): void {\n const newEntries: AfFileEntry[] = [];\n const errors: AfFileValidationError[] = [];\n\n for (const file of files) {\n const fileErrors = this.validateFile(file);\n if (fileErrors.length > 0) {\n newEntries.push({ file, status: 'error', error: fileErrors[0].message });\n errors.push(...fileErrors);\n } else {\n newEntries.push({ file, status: 'success' });\n }\n }\n\n if (this.multiple()) {\n this.fileEntries.update((existing) => [...existing, ...newEntries]);\n } else {\n this.fileEntries.set(newEntries.slice(0, 1));\n }\n\n if (errors.length > 0) {\n this.validationErrors.emit(errors);\n }\n\n this.emitValue();\n\n const validCount = newEntries.filter((e) => e.status === 'success').length;\n const errorCount = newEntries.filter((e) => e.status === 'error').length;\n const parts: string[] = [];\n if (validCount > 0) parts.push(`${validCount} file${validCount > 1 ? 's' : ''} added`);\n if (errorCount > 0) parts.push(`${errorCount} file${errorCount > 1 ? 's' : ''} rejected`);\n this.announce(parts.join(', '));\n }\n\n private validateFile(file: File): AfFileValidationError[] {\n const errors: AfFileValidationError[] = [];\n\n if (this.accept() && !this.isFileTypeAccepted(file)) {\n errors.push({\n file,\n type: 'type',\n message: `File type not accepted: ${file.name}`,\n });\n }\n\n if (this.maxSize() > 0 && file.size > this.maxSize()) {\n errors.push({\n file,\n type: 'size',\n message: `File too large: ${file.name} (${this.formatSize(file.size)})`,\n });\n }\n\n return errors;\n }\n\n private isFileTypeAccepted(file: File): boolean {\n const acceptStr = this.accept();\n if (!acceptStr) return true;\n\n const acceptedTypes = acceptStr.split(',').map((t) => t.trim().toLowerCase());\n const fileName = file.name.toLowerCase();\n const fileType = file.type.toLowerCase();\n\n return acceptedTypes.some((accepted) => {\n if (accepted.startsWith('.')) {\n return fileName.endsWith(accepted);\n }\n if (accepted.endsWith('/*')) {\n return fileType.startsWith(accepted.slice(0, -1));\n }\n return fileType === accepted;\n });\n }\n\n private emitValue(): void {\n const validFiles = this.fileEntries()\n .filter((e) => e.status === 'success')\n .map((e) => e.file);\n\n if (this.multiple()) {\n this.onChange(validFiles);\n } else {\n this.onChange(validFiles[0] ?? null);\n }\n }\n\n private announce(message: string): void {\n this.liveAnnouncement.set('');\n setTimeout(() => this.liveAnnouncement.set(message));\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n computed,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface AfSelectMenuOption {\n value: unknown;\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Custom dropdown select component with keyboard navigation\n * and full ARIA listbox pattern for single and multi-select.\n *\n * @example Single select\n * <af-select-menu\n * label=\"Country\"\n * placeholder=\"Select a country\"\n * [options]=\"countries\"\n * [(ngModel)]=\"selectedCountry\">\n * </af-select-menu>\n *\n * @example Multi-select with reactive forms\n * <af-select-menu\n * label=\"Roles\"\n * placeholder=\"Select roles\"\n * [options]=\"roles\"\n * [multiple]=\"true\"\n * [formControl]=\"rolesControl\">\n * </af-select-menu>\n */\n@Component({\n selector: 'af-select-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AfSelectMenuComponent),\n multi: true,\n },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"ct-field\" [class.ct-field--error]=\"error()\">\n @if (label()) {\n <label class=\"ct-field__label\" [id]=\"labelId\">\n {{ label() }}\n @if (required()) {\n <span aria-label=\"required\"> *</span>\n }\n </label>\n }\n\n <div\n #menuEl\n [class]=\"menuClasses()\"\n [attr.data-state]=\"isOpen() ? 'open' : 'closed'\">\n <button\n #triggerEl\n class=\"ct-select-menu__trigger\"\n type=\"button\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"label() ? null : 'Select option'\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-invalid]=\"error() ? true : null\"\n [attr.aria-describedby]=\"getAriaDescribedBy()\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled()\"\n (click)=\"toggleListbox()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\">\n <span\n class=\"ct-select-menu__value\"\n [attr.data-placeholder]=\"isPlaceholder() ? '' : null\">\n {{ displayValue() }}\n </span>\n <span class=\"ct-select-menu__icon\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </button>\n\n <div\n #listboxEl\n [id]=\"listboxId\"\n class=\"ct-select-menu__content\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n tabindex=\"-1\">\n @for (option of options(); track option.value; let i = $index) {\n <div\n class=\"ct-select-menu__option\"\n role=\"option\"\n [id]=\"getOptionId(i)\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [attr.data-highlighted]=\"highlightedIndex() === i ? '' : null\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n (mousedown)=\"$event.preventDefault()\">\n <span class=\"ct-select-menu__option-check\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n <span class=\"ct-select-menu__option-label\">{{ option.label }}</span>\n </div>\n }\n </div>\n </div>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" [id]=\"errorId\">{{ error() }}</div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfSelectMenuComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n /** Label shown above the select */\n label = input('');\n\n /** Placeholder text when nothing is selected */\n placeholder = input('');\n\n /** Available options */\n options = input<AfSelectMenuOption[]>([]);\n\n /** Hint text shown below the select */\n hint = input('');\n\n /** Error message — shows error state */\n error = input('');\n\n /** Whether the field is required */\n required = input(false);\n\n /** Whether the component is disabled */\n disabled = model(false);\n\n /** Allow selecting multiple options */\n multiple = input(false);\n\n /** Size variant */\n size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Value comparison function for object values */\n compareWith = input<(a: unknown, b: unknown) => boolean>((a, b) => a === b);\n\n /** Unique component ID */\n componentId = input(`af-select-menu-${AfSelectMenuComponent.nextId++}`);\n\n triggerRef = viewChild<ElementRef<HTMLButtonElement>>('triggerEl');\n listboxRef = viewChild<ElementRef<HTMLDivElement>>('listboxEl');\n menuRef = viewChild<ElementRef<HTMLDivElement>>('menuEl');\n\n isOpen = signal(false);\n highlightedIndex = signal(-1);\n private value = signal<unknown>(null);\n\n private onChange: (value: unknown) => void = () => {};\n private onTouchedCallback: () => void = () => {};\n\n get labelId(): string {\n return `${this.componentId()}-label`;\n }\n\n get listboxId(): string {\n return `${this.componentId()}-listbox`;\n }\n\n get hintId(): string {\n return `${this.componentId()}-hint`;\n }\n\n get errorId(): string {\n return `${this.componentId()}-error`;\n }\n\n menuClasses = computed(() => {\n const classes = ['ct-select-menu'];\n const s = this.size();\n if (s === 'sm') classes.push('ct-select-menu--sm');\n if (s === 'lg') classes.push('ct-select-menu--lg');\n return classes.join(' ');\n });\n\n isPlaceholder = computed(() => {\n const v = this.value();\n if (this.multiple()) {\n return ((v as unknown[]) ?? []).length === 0;\n }\n return v === null || v === undefined;\n });\n\n displayValue = computed(() => {\n const v = this.value();\n const opts = this.options();\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const vals = (v as unknown[]) ?? [];\n if (vals.length === 0) return this.placeholder();\n return vals\n .map((val) => opts.find((o) => cmp(o.value, val))?.label)\n .filter(Boolean)\n .join(', ');\n }\n\n if (v === null || v === undefined) return this.placeholder();\n return opts.find((o) => cmp(o.value, v))?.label ?? this.placeholder();\n });\n\n activeDescendantId = computed(() => {\n const idx = this.highlightedIndex();\n if (idx < 0 || idx >= this.options().length) return null;\n return this.getOptionId(idx);\n });\n\n getAriaDescribedBy(): string | null {\n if (this.error()) return this.errorId;\n if (this.hint()) return this.hintId;\n return null;\n }\n\n getOptionId(index: number): string {\n return `${this.componentId()}-option-${index}`;\n }\n\n isSelected(option: AfSelectMenuOption): boolean {\n const v = this.value();\n const cmp = this.compareWith();\n if (this.multiple()) {\n return ((v as unknown[]) ?? []).some((val) => cmp(val, option.value));\n }\n if (v === null || v === undefined) return false;\n return cmp(v, option.value);\n }\n\n /** Toggles the listbox open/closed */\n toggleListbox(): void {\n if (this.isOpen()) {\n this.closeListbox();\n } else {\n this.openListbox();\n }\n }\n\n /** Opens the listbox and highlights the selected or first enabled option */\n openListbox(): void {\n if (this.disabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.highlightedIndex.set(this.findSelectedOrFirstIndex());\n this.scrollHighlightedIntoView();\n }\n\n /** Closes the listbox */\n closeListbox(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.highlightedIndex.set(-1);\n }\n\n /** Selects or toggles an option */\n selectOption(option: AfSelectMenuOption): void {\n if (option.disabled) return;\n\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const current = (this.value() as unknown[]) ?? [];\n const idx = current.findIndex((v) => cmp(v, option.value));\n const next = idx >= 0\n ? [...current.slice(0, idx), ...current.slice(idx + 1)]\n : [...current, option.value];\n this.value.set(next);\n this.onChange(next);\n } else {\n this.value.set(option.value);\n this.onChange(option.value);\n this.closeListbox();\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const opts = this.options();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(1);\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openListbox();\n return;\n }\n this.moveHighlight(-1);\n break;\n\n case 'Enter':\n case ' ':\n if (this.isOpen()) {\n event.preventDefault();\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\n this.selectOption(opts[idx]);\n }\n } else {\n event.preventDefault();\n this.openListbox();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.closeListbox();\n this.triggerRef()?.nativeElement.focus();\n }\n break;\n\n case 'Home':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findFirstEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'End':\n if (this.isOpen()) {\n event.preventDefault();\n this.highlightedIndex.set(this.findLastEnabledIndex());\n this.scrollHighlightedIntoView();\n }\n break;\n\n case 'Tab':\n if (this.isOpen()) {\n if (!this.multiple()) {\n const idx = this.highlightedIndex();\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\n this.selectOption(opts[idx]);\n }\n }\n this.closeListbox();\n }\n break;\n }\n }\n\n onBlur(): void {\n this.closeListbox();\n this.onTouchedCallback();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n const target = event.target as HTMLElement;\n const menu = this.menuRef()?.nativeElement;\n if (menu && !menu.contains(target)) {\n this.closeListbox();\n this.onTouchedCallback();\n }\n }\n\n writeValue(value: unknown): void {\n if (this.multiple()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else {\n this.value.set(value ?? null);\n }\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private moveHighlight(direction: number): void {\n const opts = this.options();\n if (opts.length === 0) return;\n\n let idx = this.highlightedIndex();\n let attempts = 0;\n\n do {\n idx += direction;\n if (idx < 0) idx = opts.length - 1;\n if (idx >= opts.length) idx = 0;\n attempts++;\n } while (opts[idx]?.disabled && attempts < opts.length);\n\n if (!opts[idx]?.disabled) {\n this.highlightedIndex.set(idx);\n this.scrollHighlightedIntoView();\n }\n }\n\n private scrollHighlightedIntoView(): void {\n queueMicrotask(() => {\n const listbox = this.listboxRef()?.nativeElement;\n if (!listbox) return;\n const el = listbox.querySelector('[data-highlighted]') as HTMLElement;\n el?.scrollIntoView?.({ block: 'nearest' });\n });\n }\n\n private findSelectedOrFirstIndex(): number {\n const v = this.value();\n const opts = this.options();\n const cmp = this.compareWith();\n\n if (this.multiple()) {\n const vals = (v as unknown[]) ?? [];\n if (vals.length > 0) {\n const idx = opts.findIndex((o) => cmp(o.value, vals[0]));\n if (idx >= 0 && !opts[idx].disabled) return idx;\n }\n } else if (v !== null && v !== undefined) {\n const idx = opts.findIndex((o) => cmp(o.value, v));\n if (idx >= 0) return idx;\n }\n\n return this.findFirstEnabledIndex();\n }\n\n private findFirstEnabledIndex(): number {\n return this.options().findIndex((o) => !o.disabled);\n }\n\n private findLastEnabledIndex(): number {\n const opts = this.options();\n for (let i = opts.length - 1; i >= 0; i--) {\n if (!opts[i].disabled) return i;\n }\n return -1;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n booleanAttribute,\n input,\n output,\n signal,\n computed,\n contentChildren,\n effect,\n viewChild,\n viewChildren,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nlet nextId = 0;\n\nexport type AfNavbarSize = 'sm' | 'md' | 'lg';\nexport type AfNavbarVariant =\n | 'default'\n | 'sticky'\n | 'fixed'\n | 'elevated'\n | 'transparent'\n | 'dark'\n | 'bordered';\n\n/**\n * Individual navigation item used within af-navbar or af-toolbar.\n *\n * Supports Angular Router via `routerLink`, standard links via `href`,\n * and button mode when neither is provided. Content projection allows\n * icons and custom markup inside the link.\n *\n * @example\n * <af-nav-item label=\"Dashboard\" routerLink=\"/dashboard\">\n * <af-icon name=\"dashboard\" /> Dashboard\n * </af-nav-item>\n */\n@Component({\n selector: 'af-nav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive],\n template: `\n <li class=\"ct-navbar__item\" role=\"none\">\n @if (routerLink()) {\n <a\n #linkEl\n class=\"ct-navbar__link\"\n [routerLink]=\"routerLink()!\"\n routerLinkActive=\"ct-navbar__link--active\"\n role=\"menuitem\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"rovingTabindex()\"\n (click)=\"onClick($event)\">\n <ng-content>{{ label() }}</ng-content>\n </a>\n } @else if (href()) {\n <a\n #linkEl\n class=\"ct-navbar__link\"\n [class.ct-navbar__link--active]=\"active()\"\n [href]=\"href()\"\n role=\"menuitem\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"rovingTabindex()\"\n (click)=\"onClick($event)\">\n <ng-content>{{ label() }}</ng-content>\n </a>\n } @else {\n <button\n #linkEl\n class=\"ct-navbar__link\"\n [class.ct-navbar__link--active]=\"active()\"\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"rovingTabindex()\"\n (click)=\"onClick($event)\">\n <ng-content>{{ label() }}</ng-content>\n </button>\n }\n </li>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfNavItemComponent {\n /** Text label shown as fallback when no content is projected. Also used by the mobile menu. */\n label = input.required<string>();\n\n /** URL for the navigation link. Renders as `<a>` when provided, `<button>` otherwise. */\n href = input('');\n\n /** Angular Router link. Renders as `<a>` with routerLink and auto-active detection. */\n routerLink = input<string | string[] | null>(null);\n\n /** Marks this item as the currently active page (used for href/button mode, routerLink auto-detects). */\n active = input(false, { transform: booleanAttribute });\n\n /** Disables interaction with this item. */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Emits when the item is clicked (only fires when not disabled). */\n clicked = output<MouseEvent>();\n\n /** Roving tabindex managed by the parent AfNavbarComponent. */\n rovingTabindex = signal(0);\n\n linkRef = viewChild<ElementRef<HTMLElement>>('linkEl');\n\n /** Focus the link or button element. */\n focusLink(): void {\n this.linkRef()?.nativeElement.focus();\n }\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.clicked.emit(event);\n }\n}\n\n/**\n * Responsive navbar with mobile menu, keyboard navigation, and ARIA landmarks.\n *\n * @example\n * <af-navbar ariaLabel=\"Main navigation\">\n * <a brand class=\"ct-navbar__brand\" href=\"/\">My App</a>\n * <af-nav-item label=\"Dashboard\" routerLink=\"/dashboard\">\n * <af-icon name=\"dashboard\" /> Dashboard\n * </af-nav-item>\n * <af-nav-item label=\"Settings\" routerLink=\"/settings\" />\n * <button actions class=\"ct-button\">Profile</button>\n * </af-navbar>\n */\n@Component({\n selector: 'af-navbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive],\n host: {\n '(keydown)': 'handleKeydown($event)',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <header [class]=\"navbarClasses()\">\n <ng-content select=\"[brand]\" />\n\n <button\n #toggleBtn\n class=\"ct-navbar__toggle\"\n type=\"button\"\n [attr.aria-expanded]=\"mobileMenuOpen()\"\n [attr.aria-label]=\"mobileMenuOpen() ? 'Close menu' : 'Open menu'\"\n [attr.aria-controls]=\"mobileMenuId\"\n (click)=\"toggleMobileMenu()\">\n <span class=\"ct-navbar__toggle-icon\">\n <span></span>\n <span></span>\n <span></span>\n </span>\n </button>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"ct-navbar__nav\" role=\"menubar\">\n <ng-content />\n </ul>\n </nav>\n\n <div class=\"ct-navbar__spacer\"></div>\n\n <div class=\"ct-navbar__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n\n <div\n class=\"ct-navbar__mobile-menu\"\n [attr.id]=\"mobileMenuId\"\n [attr.data-state]=\"mobileMenuOpen() ? 'open' : 'closed'\"\n role=\"menu\"\n aria-label=\"Mobile navigation\">\n @for (item of items(); track item) {\n @if (item.routerLink(); as rl) {\n <a\n #mobileLink\n class=\"ct-navbar__link\"\n [routerLink]=\"rl\"\n routerLinkActive=\"ct-navbar__link--active\"\n role=\"menuitem\"\n [attr.aria-disabled]=\"item.disabled() || null\"\n [attr.tabindex]=\"mobileMenuOpen() ? 0 : -1\"\n (click)=\"onMobileItemClick($event, item)\">\n {{ item.label() }}\n </a>\n } @else if (item.href()) {\n <a\n #mobileLink\n class=\"ct-navbar__link\"\n [href]=\"item.href()\"\n role=\"menuitem\"\n [attr.aria-current]=\"item.active() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled() || null\"\n [attr.tabindex]=\"mobileMenuOpen() ? 0 : -1\"\n (click)=\"onMobileItemClick($event, item)\">\n {{ item.label() }}\n </a>\n } @else {\n <button\n #mobileLink\n class=\"ct-navbar__link\"\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-current]=\"item.active() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled() || null\"\n [attr.tabindex]=\"mobileMenuOpen() ? 0 : -1\"\n (click)=\"onMobileItemClick($event, item)\">\n {{ item.label() }}\n </button>\n }\n }\n </div>\n </header>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfNavbarComponent {\n private componentId = nextId++;\n private hostEl = inject(ElementRef);\n\n /** Size variant of the navbar. */\n size = input<AfNavbarSize>('md');\n\n /** Visual variant of the navbar. */\n variant = input<AfNavbarVariant>('default');\n\n /** Center the navigation items. */\n center = input(false, { transform: booleanAttribute });\n\n /** Accessible label for the navigation landmark. */\n ariaLabel = input('Main navigation');\n\n /** Projected nav item children. */\n items = contentChildren(AfNavItemComponent);\n\n /** Whether the mobile menu is currently open. */\n mobileMenuOpen = signal(false);\n\n readonly mobileMenuId = `af-navbar-mobile-${this.componentId}`;\n\n private focusedIndex = signal(0);\n private toggleRef = viewChild<ElementRef<HTMLButtonElement>>('toggleBtn');\n private mobileLinks = viewChildren<ElementRef<HTMLElement>>('mobileLink');\n\n navbarClasses = computed(() => {\n const classes = ['ct-navbar'];\n\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-navbar--${sz}`);\n }\n\n const variant = this.variant();\n if (variant !== 'default') {\n classes.push(`ct-navbar--${variant}`);\n }\n\n if (this.center()) {\n classes.push('ct-navbar--center');\n }\n\n return classes.join(' ');\n });\n\n /** Manage roving tabindex across child nav items. */\n private rovingTabindexEffect = effect(() => {\n const items = this.items();\n const enabledItems = items.filter((i) => !i.disabled());\n let idx = this.focusedIndex();\n\n if (enabledItems.length === 0) {\n items.forEach((item) => item.rovingTabindex.set(-1));\n return;\n }\n\n if (idx >= enabledItems.length) {\n idx = 0;\n }\n\n let enabledCount = 0;\n items.forEach((item) => {\n if (item.disabled()) {\n item.rovingTabindex.set(-1);\n } else {\n item.rovingTabindex.set(enabledCount === idx ? 0 : -1);\n enabledCount++;\n }\n });\n });\n\n /** Toggle mobile menu open/closed and auto-focus the first enabled item. */\n toggleMobileMenu(): void {\n const willOpen = !this.mobileMenuOpen();\n this.mobileMenuOpen.set(willOpen);\n\n if (willOpen) {\n queueMicrotask(() => {\n const links = this.mobileLinks();\n const firstEnabledIdx = this.items().findIndex((i) => !i.disabled());\n if (firstEnabledIdx >= 0 && links[firstEnabledIdx]) {\n links[firstEnabledIdx].nativeElement.focus();\n }\n });\n }\n }\n\n onMobileItemClick(event: MouseEvent, item: AfNavItemComponent): void {\n if (item.disabled()) {\n event.preventDefault();\n return;\n }\n item.clicked.emit(event);\n this.mobileMenuOpen.set(false);\n }\n\n onDocumentClick(event: Event): void {\n if (!this.mobileMenuOpen()) return;\n const target = event.target as HTMLElement;\n if (!this.hostEl.nativeElement.contains(target)) {\n this.mobileMenuOpen.set(false);\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.mobileMenuOpen()) {\n event.preventDefault();\n this.mobileMenuOpen.set(false);\n this.toggleRef()?.nativeElement.focus();\n return;\n }\n\n const target = event.target as HTMLElement;\n\n if (this.isMobileMenuTarget(target)) {\n this.handleMobileKeydown(event, target);\n return;\n }\n\n if (\n target.getAttribute('role') === 'menuitem' &&\n target.closest('[role=\"menubar\"]')\n ) {\n this.handleDesktopKeydown(event);\n }\n }\n\n private handleDesktopKeydown(event: KeyboardEvent): void {\n const enabledItems = this.items().filter((i) => !i.disabled());\n if (enabledItems.length === 0) return;\n\n const currentIndex = this.focusedIndex();\n const last = enabledItems.length - 1;\n\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = (currentIndex + 1) % enabledItems.length;\n this.focusedIndex.set(next);\n enabledItems[next].focusLink();\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev =\n (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n this.focusedIndex.set(prev);\n enabledItems[prev].focusLink();\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusedIndex.set(0);\n enabledItems[0].focusLink();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusedIndex.set(last);\n enabledItems[last].focusLink();\n break;\n }\n }\n }\n\n private handleMobileKeydown(\n event: KeyboardEvent,\n target: HTMLElement,\n ): void {\n const links = this.mobileLinks();\n const enabledIndices = this.items()\n .map((item, i) => ({ item, i }))\n .filter(({ item }) => !item.disabled())\n .map(({ i }) => i);\n\n if (enabledIndices.length === 0) return;\n\n const currentIdx = links.findIndex(\n (ref) => ref.nativeElement === target,\n );\n const enabledPosition = enabledIndices.indexOf(currentIdx);\n if (enabledPosition === -1) return;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n const next =\n enabledIndices[(enabledPosition + 1) % enabledIndices.length];\n links[next].nativeElement.focus();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n const prev =\n enabledIndices[\n (enabledPosition - 1 + enabledIndices.length) %\n enabledIndices.length\n ];\n links[prev].nativeElement.focus();\n break;\n }\n case 'Home': {\n event.preventDefault();\n links[enabledIndices[0]].nativeElement.focus();\n break;\n }\n case 'End': {\n event.preventDefault();\n links[\n enabledIndices[enabledIndices.length - 1]\n ].nativeElement.focus();\n break;\n }\n }\n }\n\n private isMobileMenuTarget(target: HTMLElement): boolean {\n return target.closest('.ct-navbar__mobile-menu') !== null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Signal,\n computed,\n contentChild,\n effect,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '../../utils/focus-trap';\n\nexport type AfPopoverPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type AfPopoverAlign = 'start' | 'center' | 'end';\nexport type AfPopoverSize = 'sm' | 'md' | 'lg';\n\n/** @internal API surface exposed to the trigger directive. */\ninterface AfPopoverApi {\n toggle(): void;\n open: Signal<boolean>;\n contentId: string;\n}\n\n/** @internal */\nconst AF_POPOVER = new InjectionToken<AfPopoverApi>('AfPopover');\n\n/**\n * Marks the trigger element for an `af-popover`.\n * Automatically sets ARIA attributes and toggles on click.\n *\n * @example\n * ```html\n * <af-popover>\n * <button afPopoverTrigger>Open</button>\n * ...\n * </af-popover>\n * ```\n */\n@Directive({\n selector: '[afPopoverTrigger]',\n host: {\n '(click)': 'popover.toggle()',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-expanded]': 'popover.open()',\n '[attr.aria-controls]': 'popover.contentId',\n },\n})\nexport class AfPopoverTriggerDirective {\n /** @internal */\n readonly popover = inject(AF_POPOVER);\n /** @internal */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n}\n\n/**\n * Popover with configurable positioning, auto-flip, focus management,\n * and full ARIA support.\n *\n * @example\n * ```html\n * <af-popover position=\"bottom\" align=\"center\" title=\"Info\">\n * <button afPopoverTrigger>More info</button>\n * <p>Some helpful content.</p>\n * </af-popover>\n * ```\n */\n@Component({\n selector: 'af-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: AF_POPOVER, useExisting: forwardRef(() => AfPopoverComponent) },\n ],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscapeKey()',\n '(document:keydown)': 'onKeydown($event)',\n },\n template: `\n <div\n #wrapper\n [class]=\"containerClasses()\"\n [attr.data-state]=\"open() ? 'open' : 'closed'\"\n [attr.data-side]=\"activeSide()\"\n [attr.data-align]=\"align()\">\n <ng-content select=\"[afPopoverTrigger]\"></ng-content>\n <div\n #popoverContent\n class=\"ct-popover__content\"\n role=\"dialog\"\n [id]=\"contentId\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"!ariaLabel() && title() ? headerId : null\"\n tabindex=\"-1\">\n @if (showArrow()) {\n <div class=\"ct-popover__arrow\"></div>\n }\n @if (title()) {\n <div class=\"ct-popover__header\">\n <h3 [id]=\"headerId\">{{ title() }}</h3>\n </div>\n }\n <div class=\"ct-popover__body\">\n <ng-content select=\"[body]\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfPopoverComponent implements AfPopoverApi, OnDestroy {\n private static nextId = 0;\n private focusTrap = new FocusTrap();\n\n /** Two-way bindable open state. */\n open = model(false);\n\n /** Preferred position relative to the trigger. Flips automatically when space is insufficient. */\n position = input<AfPopoverPosition>('bottom');\n\n /** Alignment along the position axis. */\n align = input<AfPopoverAlign>('center');\n\n /** Size variant (`sm` = 240px, `md` = default, `lg` = 480px). */\n size = input<AfPopoverSize>('md');\n\n /** Title displayed in the header section. */\n title = input('');\n\n /** Accessible label (overrides `aria-labelledby` from title). */\n ariaLabel = input('');\n\n /** Whether to show the decorative arrow. */\n showArrow = input(true);\n\n /** Whether clicking outside closes the popover. */\n closeOnClickOutside = input(true);\n\n /** Emits when the popover closes. */\n closed = output<void>();\n\n readonly contentId = `af-popover-${AfPopoverComponent.nextId}`;\n readonly headerId = `af-popover-header-${AfPopoverComponent.nextId++}`;\n\n private wrapperRef = viewChild<ElementRef<HTMLElement>>('wrapper');\n private contentRef = viewChild<ElementRef<HTMLElement>>('popoverContent');\n private triggerDirective = contentChild(AfPopoverTriggerDirective);\n private flippedSide = signal<AfPopoverPosition | null>(null);\n\n /** Effective side after auto-flip evaluation. */\n activeSide = computed(() => this.flippedSide() ?? this.position());\n\n containerClasses = computed(() => {\n const classes = ['ct-popover'];\n const sz = this.size();\n if (sz !== 'md') {\n classes.push(`ct-popover--${sz}`);\n }\n return classes.join(' ');\n });\n\n private openEffect = effect(() => {\n if (this.open()) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n\n ngOnDestroy(): void {\n this.focusTrap.restoreFocus();\n }\n\n /** Toggle the popover open state. */\n toggle(): void {\n if (this.open()) {\n this.close();\n } else {\n this.open.set(true);\n }\n }\n\n /** Close the popover and emit the `closed` event. */\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.open() || !this.closeOnClickOutside()) return;\n const wrapper = this.wrapperRef()?.nativeElement;\n if (wrapper && !wrapper.contains(event.target as Node)) {\n this.close();\n }\n }\n\n onEscapeKey(): void {\n if (!this.open()) return;\n const trigger = this.triggerDirective()?.elementRef.nativeElement;\n if (trigger) {\n this.focusTrap.setReturnFocus(trigger);\n }\n this.close();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.open() || event.key !== 'Tab') return;\n const content = this.contentRef()?.nativeElement;\n this.focusTrap.handleTab(event, content, content);\n }\n\n private onOpen(): void {\n this.focusTrap.saveFocus();\n this.flippedSide.set(this.computeFlippedSide());\n queueMicrotask(() => {\n if (!this.open()) return;\n const content = this.contentRef()?.nativeElement;\n this.focusTrap.focusFirst(content, content);\n });\n }\n\n private onClose(): void {\n this.flippedSide.set(null);\n this.focusTrap.restoreFocus();\n }\n\n private computeFlippedSide(): AfPopoverPosition {\n const trigger = this.triggerDirective()?.elementRef.nativeElement;\n const content = this.contentRef()?.nativeElement;\n if (!trigger || !content) return this.position();\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const preferred = this.position();\n\n const opposites: Record<AfPopoverPosition, AfPopoverPosition> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n\n const space: Record<AfPopoverPosition, number> = {\n top: triggerRect.top,\n bottom: window.innerHeight - triggerRect.bottom,\n left: triggerRect.left,\n right: window.innerWidth - triggerRect.right,\n };\n\n const needed: Record<AfPopoverPosition, number> = {\n top: contentRect.height,\n bottom: contentRect.height,\n left: contentRect.width,\n right: contentRect.width,\n };\n\n if (space[preferred] >= needed[preferred]) return preferred;\n\n const opposite = opposites[preferred];\n if (space[opposite] >= needed[opposite]) return opposite;\n\n return preferred;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n input,\n output,\n signal,\n computed,\n effect,\n} from '@angular/core';\n\n/** Semantic variants controlling colors and ARIA behavior */\nexport type AfBannerVariant = 'info' | 'warning' | 'danger' | 'success' | 'neutral';\n\n/** Visual appearance styles */\nexport type AfBannerAppearance = 'subtle' | 'solid' | 'left-accent' | 'top-accent';\n\n/** Positioning strategies */\nexport type AfBannerPosition = 'inline' | 'fixed-top' | 'fixed-bottom' | 'sticky';\n\n/**\n * Persistent page- or section-level notice component.\n * Wraps the `ct-banner` design system component with dismiss logic,\n * optional auto-close timer, and ARIA live region support.\n *\n * Uses attribute-based content projection for icon, heading, message,\n * and actions slots. The component automatically applies the correct\n * `ct-banner__*` CSS wrapper classes.\n *\n * @example\n * ```html\n * <af-banner variant=\"warning\" [dismissible]=\"true\" (dismissed)=\"onDismissed()\">\n * <span icon>⚠️</span>\n * <span heading>Attention</span>\n * <span message>Something needs your attention.</span>\n * <div actions>\n * <button class=\"ct-button ct-button--sm\">Fix now</button>\n * </div>\n * </af-banner>\n * ```\n */\n@Component({\n selector: 'af-banner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n [class]=\"hostClasses()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-state]=\"state()\"\n [attr.role]=\"ariaRole()\">\n <div class=\"ct-banner__icon\">\n <ng-content select=\"[icon]\" />\n </div>\n <div class=\"ct-banner__content\">\n <div class=\"ct-banner__title\">\n <ng-content select=\"[heading]\" />\n </div>\n <div class=\"ct-banner__message\">\n <ng-content select=\"[message]\" />\n </div>\n <ng-content />\n </div>\n <div class=\"ct-banner__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n @if (dismissible()) {\n <button\n class=\"ct-banner__close\"\n type=\"button\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"dismiss()\">\n ×\n </button>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfBannerComponent implements OnDestroy {\n /** Semantic variant controlling colors and ARIA role */\n variant = input<AfBannerVariant>('info');\n\n /** Visual appearance style */\n appearance = input<AfBannerAppearance>('subtle');\n\n /** Positioning strategy */\n position = input<AfBannerPosition>('inline');\n\n /** Whether the banner displays a close/dismiss button */\n dismissible = input(false);\n\n /** Compact size mode */\n compact = input(false);\n\n /** Full-width layout (no radius, no inline border) */\n full = input(false);\n\n /** Auto-close delay in milliseconds. 0 means no auto-close */\n autoClose = input(0);\n\n /** Aria label for the close button */\n closeAriaLabel = input('Close banner');\n\n /** Emits when the banner is dismissed (by user or auto-close) */\n dismissed = output<void>();\n\n private readonly isDismissed = signal(false);\n private autoCloseTimerId: ReturnType<typeof setTimeout> | null = null;\n\n /** Current open/closed state for the data-state attribute */\n state = computed(() => (this.isDismissed() ? 'closed' : 'open'));\n\n /** ARIA role based on variant: alert for danger/warning, status for others */\n ariaRole = computed(() => {\n const v = this.variant();\n return v === 'danger' || v === 'warning' ? 'alert' : 'status';\n });\n\n /** Computed CSS class string for the banner element */\n hostClasses = computed(() => {\n const classes = ['ct-banner'];\n\n const app = this.appearance();\n if (app !== 'subtle') {\n classes.push(`ct-banner--${app}`);\n }\n\n const pos = this.position();\n if (pos !== 'inline') {\n classes.push(`ct-banner--${pos}`);\n }\n\n if (this.compact()) {\n classes.push('ct-banner--compact');\n }\n\n if (this.full()) {\n classes.push('ct-banner--full');\n }\n\n return classes.join(' ');\n });\n\n private autoCloseEffect = effect(() => {\n const delay = this.autoClose();\n this.clearAutoCloseTimer();\n if (delay > 0 && !this.isDismissed()) {\n this.autoCloseTimerId = setTimeout(() => this.dismiss(), delay);\n }\n });\n\n ngOnDestroy(): void {\n this.clearAutoCloseTimer();\n }\n\n /** Dismisses the banner and emits the dismissed event */\n dismiss(): void {\n if (this.isDismissed()) return;\n this.isDismissed.set(true);\n this.clearAutoCloseTimer();\n this.dismissed.emit();\n }\n\n private clearAutoCloseTimer(): void {\n if (this.autoCloseTimerId !== null) {\n clearTimeout(this.autoCloseTimerId);\n this.autoCloseTimerId = null;\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n inject,\n ElementRef,\n DOCUMENT,\n} from '@angular/core';\n\n/**\n * Skip-link component for keyboard-only navigation bypass.\n *\n * Renders an anchor that is visually hidden off-screen and slides into view\n * when focused. On activation it moves focus to the target element, allowing\n * keyboard users to skip repetitive navigation blocks.\n *\n * Must be placed as the first focusable element in the document.\n *\n * @example\n * <af-skip-link target=\"main-content\" />\n * <nav>…</nav>\n * <main id=\"main-content\" tabindex=\"-1\">…</main>\n */\n@Component({\n selector: 'af-skip-link',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <a\n class=\"ct-skip-link\"\n [attr.href]=\"'#' + target()\"\n (click)=\"focusTarget($event)\"\n >\n {{ label() }}\n </a>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfSkipLinkComponent {\n /** ID of the element to skip to (without the leading `#`). */\n target = input.required<string>();\n\n /** Visible label text shown when the link receives focus. */\n label = input('Skip to main content');\n\n private readonly document = inject(DOCUMENT);\n\n /**\n * Moves focus to the target element so keyboard navigation\n * continues from there instead of the top of the page.\n */\n focusTarget(event: Event): void {\n event.preventDefault();\n\n const el = this.document.getElementById(this.target());\n if (!el) {\n return;\n }\n\n if (!el.hasAttribute('tabindex')) {\n el.setAttribute('tabindex', '-1');\n }\n el.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n} from '@angular/core';\n\nexport type AfEmptyStateSize = 'sm' | 'md' | 'lg';\nexport type AfEmptyStateVariant = 'default' | 'error';\n\n/**\n * Empty state component for displaying placeholder content when no data is available.\n *\n * Supports content projection for icon, title, description, and actions.\n * Alternatively, use the `icon` input for simple text/emoji icons.\n *\n * @example\n * <af-empty-state variant=\"default\" size=\"md\" [bordered]=\"true\">\n * <span icon>📦</span>\n * <span title>No items found</span>\n * <span description>Try adjusting your search or filter criteria.</span>\n * <div actions>\n * <button class=\"ct-button ct-button--primary\">Add Item</button>\n * </div>\n * </af-empty-state>\n *\n * @example\n * <af-empty-state icon=\"🔍\" variant=\"error\">\n * <span title>Search failed</span>\n * <span description>An error occurred while searching.</span>\n * </af-empty-state>\n */\n@Component({\n selector: 'af-empty-state',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"containerClasses()\" role=\"status\">\n <div class=\"ct-empty-state__icon\" aria-hidden=\"true\">\n @if (icon()) {\n {{ icon() }}\n } @else {\n <ng-content select=\"[icon]\" />\n }\n </div>\n <p class=\"ct-empty-state__title\">\n <ng-content select=\"[title]\" />\n </p>\n <p class=\"ct-empty-state__description\">\n <ng-content select=\"[description]\" />\n </p>\n <div class=\"ct-empty-state__actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfEmptyStateComponent {\n /** Size variant controlling icon size, padding, and font sizes */\n size = input<AfEmptyStateSize>('md');\n\n /** Visual variant — `error` highlights icon and title in danger color */\n variant = input<AfEmptyStateVariant>('default');\n\n /** Whether to display a dashed border around the empty state */\n bordered = input(false);\n\n /** Icon character or emoji to display (alternative to icon content projection) */\n icon = input('');\n\n containerClasses = computed(() => {\n const classes = ['ct-empty-state'];\n\n const s = this.size();\n if (s !== 'md') {\n classes.push(`ct-empty-state--${s}`);\n }\n\n if (this.variant() === 'error') {\n classes.push('ct-empty-state--error');\n }\n\n if (this.bordered()) {\n classes.push('ct-empty-state--bordered');\n }\n\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n numberAttribute,\n} from '@angular/core';\n\nexport type AfSkeletonVariant = 'text' | 'title' | 'avatar' | 'rect';\n\n/**\n * Skeleton placeholder component for loading states.\n * Renders animated placeholders while content is loading.\n *\n * @example\n * <af-skeleton variant=\"text\" count=\"3\"></af-skeleton>\n * <af-skeleton variant=\"avatar\"></af-skeleton>\n * <af-skeleton variant=\"rect\" width=\"200px\" height=\"120px\"></af-skeleton>\n */\n@Component({\n selector: 'af-skeleton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'status',\n '[attr.aria-busy]': '\"true\"',\n '[attr.aria-label]': 'label()',\n },\n template: `\n @for (_ of items(); track $index) {\n <span\n [class]=\"skeletonClasses()\"\n [attr.style]=\"skeletonStyle()\"\n aria-hidden=\"true\"\n ></span>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n span + span {\n margin-top: 0.5rem;\n }\n `,\n ],\n})\nexport class AfSkeletonComponent {\n /** Visual variant of the skeleton placeholder */\n variant = input<AfSkeletonVariant>('text');\n\n /** Custom width (CSS value, e.g. '200px', '50%') */\n width = input<string>();\n\n /** Custom height (CSS value, e.g. '100px', '2em') */\n height = input<string>();\n\n /** Number of skeleton lines to render */\n count = input(1, { transform: numberAttribute });\n\n /** Accessible label for screen readers */\n label = input('Loading\\u2026');\n\n items = computed(() => Array.from({ length: this.count() }));\n\n skeletonClasses = computed(() => {\n return `ct-skeleton ct-skeleton--${this.variant()}`;\n });\n\n skeletonStyle = computed(() => {\n const w = this.width();\n const h = this.height();\n if (!w && !h) return null;\n const parts: string[] = [];\n if (w) parts.push(`--ct-skeleton-width: ${w}`);\n if (h) parts.push(`--ct-skeleton-height: ${h}`);\n return parts.join('; ');\n });\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type AfDividerOrientation = 'horizontal' | 'vertical';\nexport type AfDividerColor = 'default' | 'strong' | 'muted';\nexport type AfDividerSpacing = 'sm' | 'md' | 'lg' | 'none';\n\n/**\n * Divider component for visually separating content sections.\n *\n * @example\n * <af-divider />\n * <af-divider orientation=\"vertical\" />\n * <af-divider color=\"strong\" spacing=\"lg\" />\n * <af-divider label=\"Section\" />\n */\n@Component({\n selector: 'af-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[class]': 'dividerClasses()',\n },\n template: `\n @if (label()) {\n <span class=\"ct-divider__label\">{{ label() }}</span>\n }\n `,\n})\nexport class AfDividerComponent {\n /** Orientation of the divider. */\n orientation = input<AfDividerOrientation>('horizontal');\n\n /** Color variant of the divider line. */\n color = input<AfDividerColor>('default');\n\n /** Spacing around the divider. */\n spacing = input<AfDividerSpacing>('md');\n\n /** Optional label text displayed in the center of the divider. */\n label = input('');\n\n dividerClasses = computed(() => {\n const classes = ['ct-divider'];\n\n if (this.orientation() === 'vertical') {\n classes.push('ct-divider--vertical');\n }\n\n if (this.color() !== 'default') {\n classes.push(`ct-divider--${this.color()}`);\n }\n\n if (this.spacing() !== 'md') {\n classes.push(`ct-divider--${this.spacing()}`);\n }\n\n if (this.label()) {\n classes.push('ct-divider--labeled');\n }\n\n return classes.join(' ');\n });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n AfterContentInit,\n AfterContentChecked,\n ElementRef,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nconst CONTROL_SELECTORS = [\n 'input',\n 'select',\n 'textarea',\n '[role=\"combobox\"]',\n '[role=\"listbox\"]',\n '[role=\"spinbutton\"]',\n '[role=\"slider\"]',\n].join(',');\n\n/**\n * Form field wrapper that binds label, hint, and error message to a projected form control.\n *\n * Automatically links the label via `for`/`id` and sets `aria-describedby`\n * and `aria-invalid` on the first interactive element found inside the projection.\n *\n * @example\n * <af-field label=\"Email\" hint=\"We will not share this.\">\n * <input class=\"ct-input\" type=\"email\" />\n * </af-field>\n *\n * @example\n * <af-field label=\"Name\" [error]=\"nameError\" required>\n * <input class=\"ct-input\" />\n * </af-field>\n */\n@Component({\n selector: 'af-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-field\">\n @if (label()) {\n <label\n class=\"ct-field__label\"\n [class.ct-field__label--required]=\"required()\"\n [attr.for]=\"fieldId()\"\n >\n {{ label() }}\n </label>\n }\n\n <ng-content></ng-content>\n\n @if (hint() && !error()) {\n <div class=\"ct-field__hint\" [id]=\"hintId()\">{{ hint() }}</div>\n }\n\n @if (error()) {\n <div class=\"ct-field__error\" role=\"alert\" [id]=\"errorId()\">\n {{ error() }}\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfFieldComponent implements AfterContentInit, AfterContentChecked {\n private static nextId = 0;\n\n /** Field label text */\n label = input('');\n\n /** Hint text shown below the control */\n hint = input('');\n\n /** Error message — replaces hint and marks the control as invalid */\n error = input('');\n\n /** Whether the field is required (appends visual indicator to label) */\n required = input(false);\n\n /** Unique ID applied to the projected control, auto-generated if omitted */\n fieldId = input(`af-field-${AfFieldComponent.nextId++}`);\n\n hintId = computed(() => `${this.fieldId()}-hint`);\n errorId = computed(() => `${this.fieldId()}-error`);\n\n private elementRef = inject(ElementRef);\n private controlEl: HTMLElement | null = null;\n\n ngAfterContentInit(): void {\n this.controlEl =\n this.elementRef.nativeElement.querySelector(CONTROL_SELECTORS);\n\n if (this.controlEl && !this.controlEl.id) {\n this.controlEl.id = this.fieldId();\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.controlEl) return;\n\n const error = this.error();\n const hint = this.hint();\n\n // aria-describedby\n if (error) {\n this.controlEl.setAttribute('aria-describedby', this.errorId());\n } else if (hint) {\n this.controlEl.setAttribute('aria-describedby', this.hintId());\n } else {\n this.controlEl.removeAttribute('aria-describedby');\n }\n\n // aria-invalid\n if (error) {\n this.controlEl.setAttribute('aria-invalid', 'true');\n } else {\n this.controlEl.removeAttribute('aria-invalid');\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n booleanAttribute,\n} from '@angular/core';\n\nexport type AfTableVariant = 'default' | 'striped' | 'bordered';\nexport type AfTableCellType = 'text' | 'numeric' | 'checkbox' | 'actions';\n\n/**\n * Lightweight table container wrapping the Construct Design System table styles.\n *\n * @example\n * <af-table variant=\"striped\" caption=\"Team members\">\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Name</af-table-header-cell>\n * <af-table-header-cell type=\"numeric\">Age</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Alice</af-table-cell>\n * <af-table-cell type=\"numeric\">30</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n * </af-table>\n */\n@Component({\n selector: 'af-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ct-table-wrap\">\n <table [class]=\"tableClasses()\">\n @if (caption()) {\n <caption>{{ caption() }}</caption>\n }\n <ng-content />\n </table>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class AfTableComponent {\n /** Visual variant of the table. */\n variant = input<AfTableVariant>('default');\n\n /** Use compact cell padding. */\n compact = input(false, { transform: booleanAttribute });\n\n /** Accessible caption rendered as a `<caption>` element. */\n caption = input('');\n\n tableClasses = computed(() => {\n const classes = ['ct-table'];\n if (this.variant() !== 'default') {\n classes.push(`ct-table--${this.variant()}`);\n }\n if (this.compact()) {\n classes.push('ct-table--compact');\n }\n return classes.join(' ');\n });\n}\n\n/**\n * Table header section rendering a semantic `<thead>` element.\n *\n * @example\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Column</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n */\n@Component({\n selector: 'af-table-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<thead><ng-content /></thead>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableHeaderComponent {}\n\n/**\n * Table body section rendering a semantic `<tbody>` element.\n *\n * @example\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Data</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n */\n@Component({\n selector: 'af-table-body',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<tbody><ng-content /></tbody>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableBodyComponent {}\n\n/**\n * Table row rendering a semantic `<tr>` element.\n */\n@Component({\n selector: 'af-table-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<tr><ng-content /></tr>`,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableRowComponent {}\n\n/**\n * Header cell rendering a semantic `<th>` element.\n *\n * @example\n * <af-table-header>\n * <af-table-row>\n * <af-table-header-cell>Name</af-table-header-cell>\n * <af-table-header-cell type=\"numeric\">Age</af-table-header-cell>\n * </af-table-row>\n * </af-table-header>\n */\n@Component({\n selector: 'af-table-header-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <th [class]=\"cellClasses()\" [attr.scope]=\"scope()\">\n <ng-content />\n </th>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableHeaderCellComponent {\n /** Cell type for specialized styling (numeric, checkbox, actions). */\n type = input<AfTableCellType>('text');\n\n /** Scope attribute for the header cell. */\n scope = input<'col' | 'row'>('col');\n\n cellClasses = computed(() => {\n const classes: string[] = [];\n if (this.type() !== 'text') {\n classes.push(`ct-table__cell--${this.type()}`);\n }\n return classes.join(' ');\n });\n}\n\n/**\n * Data cell rendering a semantic `<td>` element.\n *\n * @example\n * <af-table-body>\n * <af-table-row>\n * <af-table-cell>Alice</af-table-cell>\n * <af-table-cell type=\"numeric\">42</af-table-cell>\n * </af-table-row>\n * </af-table-body>\n */\n@Component({\n selector: 'af-table-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <td [class]=\"cellClasses()\">\n <ng-content />\n </td>\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n `,\n ],\n})\nexport class AfTableCellComponent {\n /** Cell type for specialized styling (numeric, checkbox, actions). */\n type = input<AfTableCellType>('text');\n\n cellClasses = computed(() => {\n const classes: string[] = [];\n if (this.type() !== 'text') {\n classes.push(`ct-table__cell--${this.type()}`);\n }\n return classes.join(' ');\n });\n}\n","// Components\nexport * from './alert';\nexport * from './accordion';\nexport * from './avatar';\nexport * from './button';\nexport * from './input';\nexport * from './select';\nexport * from './textarea';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './switch';\nexport * from './card';\nexport * from './data-table';\nexport * from './modal';\nexport * from './toast';\nexport * from './tabs';\nexport * from './dropdown';\nexport * from './pagination';\nexport * from './breadcrumbs';\nexport * from './datepicker';\nexport * from './chip-input';\nexport * from './tooltip';\nexport * from './badge';\nexport * from './progress-bar';\nexport * from './spinner';\nexport * from './toggle-group';\nexport * from './toolbar';\nexport * from './sidebar';\nexport * from './icon';\nexport * from './slider';\nexport * from './drawer';\nexport * from './combobox';\nexport * from './file-upload';\nexport * from './select-menu';\nexport * from './navbar';\nexport * from './popover';\nexport * from './banner';\nexport * from './skip-link';\nexport * from './empty-state';\nexport * from './skeleton';\nexport * from './divider';\nexport * from './field';\nexport * from './table';\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Transforms snake_case or SCREAMING_SNAKE_CASE strings to Title Case labels.\n *\n * @example\n * {{ 'IN_PROGRESS' | afFormatLabel }} => 'In Progress'\n * {{ 'pending_review' | afFormatLabel }} => 'Pending Review'\n * {{ null | afFormatLabel }} => '—'\n */\n@Pipe({\n name: 'afFormatLabel'\n})\nexport class AfFormatLabelPipe implements PipeTransform {\n transform(value: string | null | undefined): string {\n if (!value) return '\\u2014';\n return value\n .toLowerCase()\n .split('_')\n .map(chunk => chunk.charAt(0).toUpperCase() + chunk.slice(1))\n .join(' ');\n }\n}\n","/*\n * Public API Surface of angular\n */\n\nexport * from './lib/components';\nexport * from './lib/pipes';\nexport * from './lib/services/toast.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
|