@hawiyah/angular 0.0.0-stage → 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hawiyah-angular.mjs","names":["nextId","fieldEnd","nextId","nextId"],"sources":["../../src/field-presence.ts","../../src/forms.ts","../../src/navigation.ts","../../src/overlays.ts","../../src/presentation.ts","../../src/advanced-controls.ts","../../src/interactions.ts","../../src/content.ts","../../src/layouts.ts","../../src/portal.ts","../../src/mobile-top-bar.ts","../../src/navigation-drawer.ts","../../src/site-verification.ts","../../src/content-navigation.ts","../../src/file-upload-list.ts"],"sourcesContent":["import { afterEveryRender, DestroyRef, ElementRef, inject } from '@angular/core';\nimport { observeReadonlyChoice, observeFieldValue, type FieldValueElement, type FieldValueObserver } from '@hawiyah/core';\n\n/** Share value-presence tracking with projected native inputs; Angular owns rendering. */\nexport function observeAngularFieldPresence(): void {\n const host: HTMLElement = inject(ElementRef).nativeElement;\n const fields = new Map<FieldValueElement, FieldValueObserver>();\n afterEveryRender(() => {\n for (const [element, observer] of fields) if (!host.contains(element)) { observer.destroy(); fields.delete(element); }\n for (const element of host.querySelectorAll<FieldValueElement>('input.hw-input, textarea.hw-textarea, select.hw-select, input.hw-checkbox, input.hw-radio, input.hw-switch')) {\n if (!fields.has(element)) fields.set(element, element.matches('.hw-checkbox, .hw-radio, .hw-switch') ? observeReadonlyChoice(element as HTMLInputElement) : observeFieldValue(element));\n fields.get(element)!.refresh();\n }\n });\n inject(DestroyRef).onDestroy(() => { for (const observer of fields.values()) observer.destroy(); fields.clear(); });\n}\n","import { observeAngularFieldPresence } from './field-presence';\nimport { booleanAttribute, ChangeDetectorRef, Component, Directive, EventEmitter, forwardRef, HostListener, inject, Input, Output, ViewChild, ElementRef, type AfterViewInit, type OnChanges, type SimpleChanges } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport { createComboboxState, getComboboxOptions, isDisabled, transitionCombobox, type ComboboxEvent, type Option } from '@hawiyah/core';\n\nlet nextId = 0;\nfunction fieldDescriptionIds(id: string, hint: string, error: string, external?: string | null): string | null {\n const ids = (external ?? '').trim().split(/\\s+/).filter(Boolean);\n if (hint) ids.push(`${id}-hint`);\n if (error) ids.push(`${id}-error`);\n return [...new Set(ids)].join(' ') || null;\n}\n/** Pass controlId for stable application-owned identifiers, especially with SSR. */\n@Directive()\nexport abstract class HwValueControl<T> implements ControlValueAccessor {\n constructor() { observeAngularFieldPresence(); }\n @Input() controlId = `hw-control-${++nextId}`;\n @Input() label = '';\n @Input() name = '';\n @Input() hint = '';\n @Input() error = '';\n @Input() describedBy?: string | null;\n @Input({transform: booleanAttribute}) required = false;\n @Input({transform: booleanAttribute}) disabled = false;\n @Input() value!: T;\n @Output() readonly valueChange = new EventEmitter<T>();\n protected readonly changeDetector = inject(ChangeDetectorRef);\n protected onChange: (value: T) => void = () => {};\n protected onTouched: () => void = () => {};\n get descriptionIds(): string | null { return fieldDescriptionIds(this.controlId, this.hint, this.error, this.describedBy); }\n writeValue(value: T): void { this.value = value; this.changeDetector.markForCheck(); }\n registerOnChange(fn: (value: T) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(disabled: boolean): void { this.disabled = disabled; this.changeDetector.markForCheck(); }\n update(value: T): void { if (this.disabled) return; this.value = value; this.onChange(value); this.valueChange.emit(value); }\n touch(): void { this.onTouched(); }\n}\n\nconst fieldLabel = `<label class=\"hw-label\" [for]=\"controlId\">{{ label }}@if (required) {<span class=\"hw-required-marker\" aria-hidden=\"true\"> *</span>}</label>`;\nconst fieldEnd = `@if (hint) { <p class=\"hw-hint\" [id]=\"controlId + '-hint'\">{{ hint }}</p> } @if (error) { <p class=\"hw-error\" [id]=\"controlId + '-error'\">{{ error }}</p> }`;\n\n@Component({ selector: 'hw-field', standalone: true, template: `<div class=\"hw-field\">${fieldLabel}<ng-content />@if (hint) {<p class=\"hw-hint\" [id]=\"controlId + '-hint'\">{{ hint }}</p>}@if (error) {<p class=\"hw-error\" [id]=\"controlId + '-error'\">{{ error }}</p>}</div>` })\nexport class HwFieldComponent {\n @Input({ required: true }) controlId = '';\n @Input({ required: true }) label = '';\n @Input() hint = '';\n @Input() error = '';\n @Input() describedBy?: string | null;\n @Input({transform: booleanAttribute}) required = false;\n get descriptionIds(): string | null { return fieldDescriptionIds(this.controlId, this.hint, this.error, this.describedBy); }\n}\n\n@Component({ selector: 'hw-text-field', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwTextFieldComponent), multi: true }],\n template: `<div class=\"hw-field\">${fieldLabel}<input class=\"hw-input\" [attr.data-size]=\"size\" [attr.data-variant]=\"visualVariant\" [id]=\"controlId\" [type]=\"type\" [name]=\"name\" [value]=\"value || ''\" [disabled]=\"disabled\" [required]=\"required\" [readOnly]=\"readOnly\" [placeholder]=\"placeholder\" [attr.autocomplete]=\"autocomplete\" [attr.inputmode]=\"inputmode || null\" [attr.min]=\"min\" [attr.max]=\"max\" [attr.step]=\"step\" [attr.minlength]=\"minLength\" [attr.maxlength]=\"maxLength\" [attr.pattern]=\"pattern\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"update($any($event.target).value)\" (blur)=\"touch()\">${fieldEnd}</div>` })\nexport class HwTextFieldComponent extends HwValueControl<string> {\n override value = '';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() visualVariant: 'outline' | 'filled' = 'outline';\n @Input() type: 'text' | 'email' | 'password' | 'tel' | 'url' | 'search' | 'date' | 'datetime-local' | 'month' | 'week' | 'time' | 'number' | 'color' | 'range' = 'text';\n @Input() placeholder = '';\n @Input() autocomplete = 'off';\n @Input() inputmode = '';\n @Input() min: string | number | null = null;\n @Input() max: string | number | null = null;\n @Input() step: string | number | null = null;\n @Input() minLength: number | null = null;\n @Input() maxLength: number | null = null;\n @Input() pattern: string | null = null;\n @Input({transform: booleanAttribute}) readOnly = false;\n}\n\n@Component({ selector: 'hw-textarea', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwTextareaComponent), multi: true }],\n template: `<div class=\"hw-field\">${fieldLabel}<textarea class=\"hw-textarea\" [attr.data-size]=\"size\" [attr.data-variant]=\"visualVariant\" [id]=\"controlId\" [name]=\"name\" [value]=\"value || ''\" [disabled]=\"disabled\" [required]=\"required\" [readOnly]=\"readOnly\" [rows]=\"rows\" [placeholder]=\"placeholder\" [attr.maxlength]=\"maxLength\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"update($any($event.target).value)\" (blur)=\"touch()\"></textarea>${fieldEnd}</div>` })\nexport class HwTextareaComponent extends HwValueControl<string> {\n override value = '';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() visualVariant: 'outline' | 'filled' = 'outline';\n @Input() rows = 4;\n @Input() placeholder = '';\n @Input() maxLength: number | null = null;\n @Input({transform: booleanAttribute}) readOnly = false;\n}\n\n@Component({ selector: 'hw-select', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwSelectComponent), multi: true }],\n template: `<div class=\"hw-field\">${fieldLabel}<select class=\"hw-select\" [attr.data-size]=\"size\" [attr.data-variant]=\"visualVariant\" [id]=\"controlId\" [name]=\"name\" [value]=\"value || ''\" [disabled]=\"disabled\" [required]=\"required\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (change)=\"update($any($event.target).value)\" (blur)=\"touch()\">@if (showPrompt) {<option value=\"\">{{ placeholder }}</option>}@for (option of options; track option.value) {<option [value]=\"option.value\" [disabled]=\"option.disabled ?? false\" [selected]=\"option.value === value\">{{ option.label }}</option>}</select>${fieldEnd}</div>` })\nexport class HwSelectComponent extends HwValueControl<string> {\n override value = '';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() visualVariant: 'outline' | 'filled' = 'outline';\n @Input() options: readonly Option[] = [];\n @Input() placeholder = 'اختر خيارًا';\n get showPrompt(): boolean { return Boolean(this.placeholder) && !this.options.some(option => option.value === ''); }\n}\n\n@Component({ selector: 'hw-checkbox', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwCheckboxComponent), multi: true }],\n template: `<div class=\"hw-field\"><label class=\"hw-choice\" [for]=\"controlId\"><input class=\"hw-checkbox\" type=\"checkbox\" [id]=\"controlId\" [name]=\"name\" [checked]=\"value\" [disabled]=\"disabled\" [required]=\"required\" [readOnly]=\"readOnly\" [attr.aria-disabled]=\"readOnly || null\" [indeterminate]=\"indeterminate\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (change)=\"!readOnly && update($any($event.target).checked)\" (blur)=\"touch()\"><span>{{ label }}</span></label>${fieldEnd}</div>` })\nexport class HwCheckboxComponent extends HwValueControl<boolean> {\n @Input({transform: booleanAttribute}) readOnly = false;\n override value = false;\n @Input({transform: booleanAttribute}) indeterminate = false;\n}\n\n@Component({ selector: 'hw-switch', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwSwitchComponent), multi: true }],\n template: `<div class=\"hw-field\"><label class=\"hw-choice\" [for]=\"controlId\"><input class=\"hw-switch\" type=\"checkbox\" role=\"switch\" [id]=\"controlId\" [name]=\"name\" [checked]=\"value\" [disabled]=\"disabled\" [required]=\"required\" [readOnly]=\"readOnly\" [attr.aria-disabled]=\"readOnly || null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (change)=\"!readOnly && update($any($event.target).checked)\" (blur)=\"touch()\"><span>{{ label }}</span></label>${fieldEnd}</div>` })\nexport class HwSwitchComponent extends HwValueControl<boolean> { @Input({transform: booleanAttribute}) readOnly = false; override value = false; }\n\n@Component({ selector: 'hw-radio', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwRadioComponent), multi: true }],\n template: `<fieldset class=\"hw-field\" [disabled]=\"disabled\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\"><legend class=\"hw-label\">{{ label }}</legend>@for (option of options; track option.value; let i = $index) {<label class=\"hw-choice\" [for]=\"controlId + '-' + i\"><input class=\"hw-radio\" type=\"radio\" [id]=\"controlId + '-' + i\" [name]=\"name || controlId\" [value]=\"option.value\" [checked]=\"value === option.value\" [disabled]=\"disabled || (option.disabled ?? false)\" [required]=\"required\" [readOnly]=\"readOnly\" [attr.aria-disabled]=\"readOnly || null\" (change)=\"!readOnly && update(option.value)\" (blur)=\"touch()\"><span>{{ option.label }}</span></label>}${fieldEnd}</fieldset>` })\nexport class HwRadioComponent extends HwValueControl<string> {\n @Input({transform: booleanAttribute}) readOnly = false;\n override value = '';\n @Input() options: readonly Option[] = [];\n}\n\n@Component({ selector: 'hw-combobox', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwComboboxComponent), multi: true }],\n template: `<div class=\"hw-field hw-combobox\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><input #input class=\"hw-input\" role=\"combobox\" aria-autocomplete=\"list\" aria-haspopup=\"listbox\" autocomplete=\"off\" [id]=\"controlId\" [value]=\"state.query\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [attr.aria-readonly]=\"readOnly || null\" [required]=\"required\" [placeholder]=\"placeholder\" [attr.aria-expanded]=\"state.open\" [attr.aria-controls]=\"controlId + '-list'\" [attr.aria-activedescendant]=\"state.open && state.activeIndex >= 0 ? controlId + '-option-' + state.activeIndex : null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"inputChanged($event)\" (compositionstart)=\"composing = true\" (compositionend)=\"compositionEnded($event)\" (focus)=\"dispatch({type: 'open'})\" (click)=\"dispatch({type: 'open'})\" (keydown)=\"keydown($event)\" (blur)=\"blur()\"><input type=\"hidden\" [name]=\"name\" [value]=\"state.value\" [disabled]=\"disabled\"><ul class=\"hw-listbox\" role=\"listbox\" [id]=\"controlId + '-list'\" [attr.aria-label]=\"label\" [hidden]=\"!state.open\">@for (option of visibleOptions; track option.value; let i = $index) {<li class=\"hw-option\" role=\"option\" [id]=\"controlId + '-option-' + i\" [attr.aria-selected]=\"state.value === option.value\" [attr.aria-disabled]=\"option.disabled || null\" [attr.data-active]=\"state.activeIndex === i ? '' : null\" (mousedown)=\"$event.preventDefault()\" (click)=\"select(option)\">{{ option.label }}</li>}@if (visibleOptions.length === 0) {<li class=\"hw-hint\" role=\"presentation\">{{ emptyMessage }}</li>}</ul><span class=\"hw-sr-only\" role=\"status\" aria-live=\"polite\">{{ state.open ? resultsMessage(visibleOptions.length) : '' }}</span>${fieldEnd}</div>` })\nexport class HwComboboxComponent extends HwValueControl<string> implements OnChanges, AfterViewInit {\n override value = '';\n @Input({transform: booleanAttribute}) readOnly = false;\n @Input() options: readonly Option[] = [];\n @Input() placeholder = '';\n @Input() emptyMessage = 'No results';\n @Input() validationMessage = 'Select an option from the list.';\n @Input() resultsMessage: (count: number) => string = count => `${count} results available`;\n @ViewChild('input') input?: ElementRef<HTMLInputElement>;\n state = createComboboxState([]);\n composing = false;\n private readonly host = inject(ElementRef<HTMLElement>);\n private disabledObserver?: MutationObserver;\n private get blocked(): boolean { return this.disabled || this.readOnly || !!(this.input && isDisabled(this.input.nativeElement)); }\n get visibleOptions(): Option[] { return getComboboxOptions(this.state, this.options); }\n ngOnChanges(changes: SimpleChanges): void {\n if (this.value !== this.state.value || !this.state.query || (changes['options'] && this.state.value)) this.state = createComboboxState(this.options, this.value);\n else if (changes['options'] && this.state.open) this.dispatch({type: 'open'});\n if (this.blocked) this.dispatch({type: 'close'});\n this.syncValidity();\n }\n ngAfterViewInit(): void {\n this.syncValidity();\n const input = this.input?.nativeElement;\n if (!input) return;\n const Observer = input.ownerDocument.defaultView?.MutationObserver;\n if (Observer) {\n this.disabledObserver = new Observer(() => { if (this.blocked) this.dispatch({type: 'close'}); this.syncValidity(); this.changeDetector.markForCheck(); });\n for (let ancestor = input.parentElement; ancestor; ancestor = ancestor.parentElement) {\n if (ancestor.localName === 'fieldset') this.disabledObserver.observe(ancestor, { attributes: true, attributeFilter: ['disabled'] });\n }\n }\n }\n ngOnDestroy(): void { this.disabledObserver?.disconnect(); }\n private syncValidity(): void { this.input?.nativeElement.setCustomValidity(this.required && !this.disabled && !this.state.value ? this.validationMessage : ''); }\n override writeValue(value: string): void { super.writeValue(value ?? ''); this.state = createComboboxState(this.options, value ?? ''); this.syncValidity(); }\n override setDisabledState(disabled: boolean): void { super.setDisabledState(disabled); if (disabled) this.dispatch({type: 'close'}); this.syncValidity(); }\n dispatch(event: ComboboxEvent): void { if (this.blocked && event.type !== 'close' && event.type !== 'reset') return; this.state = transitionCombobox(this.state, event, this.options); this.syncValidity(); }\n inputChanged(event: Event): void { if (!this.composing && !(event as InputEvent).isComposing) this.search((event.target as HTMLInputElement).value); }\n compositionEnded(event: Event): void { this.composing = false; this.search((event.target as HTMLInputElement).value); }\n @HostListener('document:pointerdown', ['$event']) outside(event: Event): void { if (!this.host.nativeElement.contains(event.target as Node)) this.dispatch({type: 'close'}); }\n search(query: string): void { if (this.blocked) { if (this.input) this.input.nativeElement.value = this.state.query; return; } this.dispatch({type: 'input', query}); this.update(this.state.value); }\n select(option: Option): void { if (this.blocked || option.disabled) return; this.dispatch({type: 'select', value: option.value}); this.update(this.state.value); this.input?.nativeElement.focus(); }\n blur(): void { this.dispatch({type: 'close'}); this.touch(); }\n keydown(event: KeyboardEvent): void {\n if (event.isComposing || this.composing || event.altKey || event.ctrlKey || event.metaKey || this.blocked) return;\n if (['ArrowDown', 'ArrowUp'].includes(event.key) || (this.state.open && ['Home', 'End'].includes(event.key))) {\n event.preventDefault(); this.dispatch({type: 'navigate', key: event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'});\n this.changeDetector.detectChanges();\n this.input?.nativeElement.ownerDocument.getElementById(`${this.controlId}-option-${this.state.activeIndex}`)?.scrollIntoView?.({block: 'nearest'});\n } else if (event.key === 'Enter' && this.state.open) {\n const option = this.visibleOptions[this.state.activeIndex]; if (option && !option.disabled) { event.preventDefault(); this.select(option); }\n } else if (event.key === 'Escape' && this.state.open) { event.preventDefault(); event.stopPropagation(); this.dispatch({type: 'close'}); }\n else if (event.key === 'Tab') this.dispatch({type: 'close'});\n }\n}\n\n@Component({ selector: 'hw-file-upload', standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwFileUploadComponent), multi: true }],\n template: `<div class=\"hw-field hw-upload\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><input #fileInput class=\"hw-input\" type=\"file\" [id]=\"controlId\" [name]=\"name\" [accept]=\"accept\" [multiple]=\"multiple\" [disabled]=\"disabled\" [required]=\"required\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (change)=\"filesChanged($event)\" (blur)=\"touch()\">${fieldEnd}</div>` })\nexport class HwFileUploadComponent extends HwValueControl<readonly File[]> {\n override value: readonly File[] = [];\n @Input() accept = '';\n @Input({transform: booleanAttribute}) multiple = false;\n @ViewChild('fileInput') fileInput?: ElementRef<HTMLInputElement>;\n filesChanged(event: Event): void { this.update(Array.from((event.target as HTMLInputElement).files ?? [])); }\n override writeValue(value: readonly File[] | null): void {\n super.writeValue(value ?? []);\n // Browsers only allow programmatic clearing, never assigning a local file.\n if (!value?.length && this.fileInput) this.fileInput.nativeElement.value = '';\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, TemplateRef, ViewChild, ViewChildren, inject } from '@angular/core';\nimport { observeAngularFieldPresence } from './field-presence';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { getDirection, getNextEnabledIndex, getPaginationItems, normalizePaginationPage, normalizePaginationTotal, observeTabOverflow, type Direction, type Orientation } from '@hawiyah/core';\n\nlet nextId = 0;\n@Component({ selector: 'hw-tab', standalone: true, template: `<ng-template #content><ng-content /></ng-template>` })\nexport class HwTabComponent {\n @Input({required: true}) value = '';\n @Input({required: true}) label = '';\n @Input({transform: booleanAttribute}) disabled = false;\n @ViewChild('content', {static: true}) content!: TemplateRef<unknown>;\n /** Notify the owning tabset when projected input state changes. */\n readonly stateChanges = new EventEmitter<void>();\n ngOnChanges(): void {this.stateChanges.emit();}\n}\n\n@Component({ selector: 'hw-tabs', standalone: true, imports: [NgTemplateOutlet],\n template: `<div class=\"hw-tabs\"><div #tabBar class=\"hw-tab-bar\" [attr.data-hw-overflow]=\"overflow\" [attr.data-orientation]=\"orientation\">\n <div class=\"hw-tab-list\" [attr.data-hw-overflow]=\"overflow\" role=\"tablist\" [attr.aria-label]=\"label\" [attr.aria-orientation]=\"orientation\" [attr.aria-hidden]=\"hiddenTabs.length === tabs?.length || null\">@for (tab of tabs; track tab.value; let i = $index) {<button #tabButton class=\"hw-tab\" type=\"button\" role=\"tab\" [id]=\"tabId(i)\" [attr.aria-controls]=\"panelId(i)\" [attr.aria-selected]=\"activeValue === tab.value\" [attr.data-hw-overflow-hidden]=\"hiddenTabs.includes(i) ? 'true' : null\" [attr.aria-hidden]=\"hiddenTabs.includes(i) || null\" [disabled]=\"tab.disabled\" [tabIndex]=\"!hiddenTabs.includes(i) && focusValue === tab.value ? 0 : -1\" (click)=\"select(tab.value)\" (focus)=\"focusedValue = tab.value\" (keydown)=\"keydown($event, i)\">{{ tab.label }}</button>}</div>\n <details #overflowDetails class=\"hw-tabs-overflow\" [hidden]=\"!hiddenTabs.length\" (keydown)=\"overflowKey($event)\"><summary class=\"hw-tab-overflow-trigger\" [attr.aria-label]=\"overflowLabel\" [attr.data-active]=\"overflowActive || null\">…</summary><div class=\"hw-tab-overflow-menu\">@for (i of hiddenTabs; track i) {@if (tabs.get(i); as tab) {<button type=\"button\" class=\"hw-tab-overflow-item\" [attr.data-hw-overflow-value]=\"tab.value\" [disabled]=\"tab.disabled\" [attr.aria-pressed]=\"tab.value === activeValue\" (click)=\"overflowSelect(tab.value)\">{{ tab.label }}</button>}}</div></details>\n </div>@for (tab of tabs; track tab.value; let i = $index) {<section class=\"hw-tab-panel\" role=\"tabpanel\" tabindex=\"0\" [id]=\"panelId(i)\" [attr.aria-labelledby]=\"tabId(i)\" [hidden]=\"activeValue !== tab.value\"><ng-container [ngTemplateOutlet]=\"tab.content\" /></section>}<ng-content /></div>` })\nexport class HwTabsComponent {\n @Input() id = `hw-tabs-${++nextId}`;\n @Input({required: true}) label = '';\n @Input() value = '';\n @Input() orientation: Orientation = 'horizontal';\n @Input() direction?: Direction;\n @Input() activationMode: 'automatic' | 'manual' = 'automatic';\n @Input() overflow: 'menu' | 'scroll' = 'menu';\n @Input() overflowLabel = 'المزيد من التبويبات';\n @Output() readonly valueChange = new EventEmitter<string>();\n @ContentChildren(HwTabComponent) tabs!: QueryList<HwTabComponent>;\n @ViewChildren('tabButton') buttons!: QueryList<ElementRef<HTMLButtonElement>>;\n @ViewChild('tabBar') tabBar?: ElementRef<HTMLElement>;\n @ViewChild('overflowDetails') overflowDetails?: ElementRef<HTMLDetailsElement>;\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private overflowObserver?: ReturnType<typeof observeTabOverflow>;\n private pendingFocus?: {kind: 'summary' | 'tab' | 'menu'; value?: string};\n private previousActive = '';\n private tabSubscriptions: Array<{unsubscribe(): void}> = [];\n private tabsSubscription?: {unsubscribe(): void};\n private outside = (event: Event) => {if (!this.tabBar?.nativeElement.contains(event.target as Node)) this.closeOverflow();};\n hiddenTabs: number[] = [];\n focusedValue = '';\n get activeValue(): string { return this.tabs?.find(tab => tab.value === this.value && !tab.disabled)?.value ?? this.tabs?.find(tab => !tab.disabled)?.value ?? ''; }\n get focusValue(): string { const visible = this.tabs?.filter((tab, index) => !tab.disabled && !this.hiddenTabs.includes(index)) ?? []; return visible.find(tab => tab.value === this.focusedValue)?.value ?? visible.find(tab => tab.value === this.activeValue)?.value ?? visible[0]?.value ?? ''; }\n get overflowActive(): boolean {return this.hiddenTabs.some(index => this.tabs?.get(index)?.value === this.activeValue);}\n ngAfterContentInit(): void {\n const bind = () => {\n this.tabSubscriptions.forEach(subscription => subscription.unsubscribe());\n this.tabSubscriptions = this.tabs.map(tab => tab.stateChanges.subscribe(() => {this.changeDetector.markForCheck();this.overflowObserver?.refresh();}));\n this.changeDetector.markForCheck(); this.overflowObserver?.refresh();\n };\n bind(); this.tabsSubscription = this.tabs.changes.subscribe(bind);\n }\n ngAfterViewInit(): void {\n const node = this.tabBar!.nativeElement;\n this.overflowObserver = observeTabOverflow({container: node, tabs: () => this.buttons.toArray().map(button => button.nativeElement), enabled: () => this.overflow === 'menu' && this.orientation === 'horizontal', onChange: next => {\n const focusedElement = node.ownerDocument.activeElement;\n const menuValue = (focusedElement as HTMLElement | null)?.dataset.hwOverflowValue;\n const itemIndex = this.tabs.toArray().findIndex(tab => tab.value === menuValue);\n if (menuValue !== undefined && itemIndex >= 0 && next.includes(itemIndex)) this.pendingFocus = {kind:'menu',value:menuValue};\n else {\n if (menuValue !== undefined && itemIndex >= 0) this.pendingFocus = {kind:'tab',value:menuValue};\n else if (next.some(index => this.buttons.get(index)?.nativeElement === focusedElement)) this.pendingFocus = {kind:'summary'};\n else if (this.overflowDetails?.nativeElement.contains(focusedElement)) this.pendingFocus = {kind:next.length ? 'summary' : 'tab'};\n this.closeOverflow();\n }\n this.hiddenTabs = next; this.changeDetector.markForCheck();\n }});\n node.ownerDocument.addEventListener('click', this.outside);\n }\n ngAfterViewChecked(): void {\n this.overflowObserver?.refresh();\n if (this.previousActive !== this.activeValue) {this.previousActive = this.activeValue; this.closeOverflow();}\n const destination = this.pendingFocus; this.pendingFocus = undefined;\n if (destination?.kind === 'summary') this.overflowDetails?.nativeElement.querySelector('summary')?.focus();\n else if (destination?.kind === 'tab') this.buttons?.get(this.tabs.toArray().findIndex(tab => tab.value === (destination.value ?? this.focusValue)))?.nativeElement.focus();\n else if (destination?.kind === 'menu') [...(this.overflowDetails?.nativeElement.querySelectorAll<HTMLElement>('[data-hw-overflow-value]') ?? [])].find(button => button.dataset.hwOverflowValue === destination.value)?.focus();\n else {const focusedElement = this.host.nativeElement.ownerDocument.activeElement; if (focusedElement?.getAttribute('data-hw-overflow-hidden') === 'true' && this.tabBar?.nativeElement.contains(focusedElement)) this.overflowDetails?.nativeElement.querySelector('summary')?.focus();}\n }\n ngOnDestroy(): void {this.overflowObserver?.destroy();this.tabsSubscription?.unsubscribe();this.tabSubscriptions.forEach(subscription => subscription.unsubscribe()); this.host.nativeElement.ownerDocument.removeEventListener('click', this.outside);}\n closeOverflow(): void {if (this.overflowDetails) this.overflowDetails.nativeElement.open = false;}\n overflowSelect(value: string): void {if (!this.tabs.find(tab => tab.value === value && !tab.disabled)) return; this.select(value); this.closeOverflow(); this.overflowDetails?.nativeElement.querySelector('summary')?.focus();}\n overflowKey(event: KeyboardEvent): void {if (event.key === 'Escape' && this.overflowDetails?.nativeElement.open) {event.preventDefault(); this.closeOverflow(); this.overflowDetails.nativeElement.querySelector('summary')?.focus();}}\n tabId(index: number): string { return `${this.id}-tab-${index}`; }\n panelId(index: number): string { return `${this.id}-panel-${index}`; }\n select(value: string): void { if (!this.tabs.find(tab => tab.value === value && !tab.disabled)) return; this.value = value; this.focusedValue = value; this.valueChange.emit(value); }\n keydown(event: KeyboardEvent, index: number): void {\n if (event.altKey || event.ctrlKey || event.metaKey || event.isComposing) return;\n const keys = this.orientation === 'vertical' ? ['ArrowUp', 'ArrowDown', 'Home', 'End'] : ['ArrowLeft', 'ArrowRight', 'Home', 'End'];\n if (!keys.includes(event.key)) return;\n event.preventDefault();\n const next = getNextEnabledIndex(index, event.key, this.tabs.map((tab, i) => ({disabled: tab.disabled || this.hiddenTabs.includes(i)})), this.direction ?? getDirection(this.host.nativeElement), this.orientation);\n const tab = this.tabs.get(next); if (!tab) return;\n this.focusedValue = tab.value; this.buttons.get(next)?.nativeElement.focus();\n if (this.activationMode === 'automatic') this.select(tab.value);\n }\n}\n\nexport interface HwBreadcrumbItem { label: string; href?: string; disabled?: boolean }\n@Component({ selector: 'hw-breadcrumb', standalone: true, template: `<nav class=\"hw-breadcrumb\" [attr.aria-label]=\"label\"><ol>@for (item of items; track $index; let last = $last) {<li>@if (item.href && !item.disabled && !last) {<a [href]=\"item.href\">{{ item.label }}</a>} @else {<span [attr.role]=\"item.disabled ? 'link' : null\" [attr.aria-disabled]=\"item.disabled || null\" [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>}</li>}</ol></nav>` })\nexport class HwBreadcrumbComponent {\n @Input() label = 'مسار التنقل';\n @Input() items: readonly HwBreadcrumbItem[] = [];\n}\n\n@Component({ selector: 'hw-pagination', standalone: true, template: `<nav #root class=\"hw-pagination\" [attr.aria-label]=\"label\" [attr.data-disabled]=\"disabled || null\" [hidden]=\"hideOnSinglePage && total === 1\" (keydown)=\"key($event)\" (click)=\"guardClick($event)\">\n<button class=\"hw-button hw-pagination-arrow\" data-variant=\"ghost\" data-hw-previous type=\"button\" [attr.aria-label]=\"previousLabel\" [disabled]=\"disabled || current === 1\" (click)=\"select(current - 1)\"></button>\n@for (item of entries; track item.page || -item.start) {\n @if (item.page) {<button class=\"hw-button hw-pagination-item\" data-variant=\"ghost\" [attr.data-hw-page]=\"item.page\" type=\"button\" [disabled]=\"disabled\" [attr.aria-current]=\"item.page === current ? 'page' : null\" [attr.aria-label]=\"pageLabel(item.page)\" (click)=\"select(item.page)\">{{ formatPage(item.page) }}</button>}\n @else if (disabled) {<span class=\"hw-pagination-ellipsis\" aria-hidden=\"true\">…</span>}\n @else {<details class=\"hw-pagination-gap\" (toggle)=\"toggled($event)\"><summary class=\"hw-pagination-gap-trigger\" [attr.aria-label]=\"gapLabel(item.start, item.end)\">…</summary><div class=\"hw-pagination-menu\">\n @if (item.end - item.start < 100) {@for (number of gapPages(item); track number) {<button class=\"hw-button hw-pagination-item\" data-variant=\"ghost\" [attr.data-hw-page]=\"number\" type=\"button\" [attr.aria-label]=\"pageLabel(number)\" (click)=\"gapSelect($event, number)\">{{ formatPage(number) }}</button>}}\n @else {<div #jumpGroup class=\"hw-pagination-jump\" (keydown.enter)=\"jumpKey($event, jumpGroup, item)\"><label class=\"hw-label\">{{ jumpLabel }}<input class=\"hw-input\" data-hw-jump-input data-hw-filled=\"true\" form=\"\" type=\"number\" inputmode=\"numeric\" required [min]=\"item.start\" [max]=\"item.end\" step=\"1\" [value]=\"item.start\" (input)=\"jumpInput($event)\"></label><button type=\"button\" class=\"hw-button\" data-hw-jump-submit (click)=\"jump(jumpGroup, item)\">{{ goLabel }}</button></div>}\n </div></details>}\n}\n<button class=\"hw-button hw-pagination-arrow\" data-variant=\"ghost\" data-hw-next type=\"button\" [attr.aria-label]=\"nextLabel\" [disabled]=\"disabled || current === total\" (click)=\"select(current + 1)\"></button>\n</nav>` })\nexport class HwPaginationComponent {\n constructor() { observeAngularFieldPresence(); }\n @Input() label = 'ترقيم الصفحات';\n @Input() page = 1;\n @Input() totalPages = 1;\n @Input() previousLabel = 'الصفحة السابقة';\n @Input() nextLabel = 'الصفحة التالية';\n @Input() pageLabel: (page: number) => string = page => 'الصفحة ' + page;\n @Input() formatPage: (page: number) => string = String;\n @Input() siblingCount = 1;\n @Input({transform: booleanAttribute}) disabled = false;\n @Input({transform: booleanAttribute}) hideOnSinglePage = false;\n @Input() gapLabel = (start: number, end: number) => 'الصفحات ' + start + ' إلى ' + end;\n @Input() jumpLabel = 'الانتقال إلى صفحة';\n @Input() goLabel = 'انتقال';\n @Output() readonly pageChange = new EventEmitter<number>();\n @ViewChild('root') root?: ElementRef<HTMLElement>;\n private pendingFocus = false;\n private ancestorObserver?: MutationObserver;\n private outside = (event: Event) => {if(this.root && !this.root.nativeElement.contains(event.target as Node)) this.close();};\n get total(): number { return normalizePaginationTotal(this.totalPages); }\n get current(): number { return normalizePaginationPage(this.page, this.total); }\n get entries() { return getPaginationItems(this.current, this.total, this.siblingCount).map(item => typeof item === 'number' ? {page: item, start: 0, end: 0} : {page: 0, ...item}); }\n get pages(): number[] { return this.entries.map(item => item.page); }\n gapPages(item: {start: number; end: number}): number[] { return item.end - item.start < 100 ? Array.from({length: item.end - item.start + 1}, (_, index) => item.start + index) : []; }\n private close(except?: HTMLDetailsElement) { this.root?.nativeElement.querySelectorAll<HTMLDetailsElement>('.hw-pagination-gap[open]').forEach(details => {if(details !== except) details.open = false;}); }\n private blocked() { return this.disabled || !!this.root?.nativeElement.querySelector<HTMLButtonElement>(':scope > [data-hw-page]')?.matches(':disabled'); }\n private syncInherited() {\n const unavailable=this.blocked();\n this.root?.nativeElement.querySelectorAll<HTMLElement>('.hw-pagination-gap > summary').forEach(summary => {\n if(unavailable) {summary.setAttribute('aria-disabled','true');summary.tabIndex=-1;}\n else {summary.removeAttribute('aria-disabled');summary.removeAttribute('tabindex');}\n });\n if(unavailable) this.close();\n }\n ngAfterViewInit() {\n const node=this.root?.nativeElement;if(!node)return;\n node.ownerDocument.addEventListener('click',this.outside);\n const Observer=node.ownerDocument.defaultView?.MutationObserver;\n this.ancestorObserver=Observer?new Observer(()=>this.syncInherited()):undefined;\n for(let ancestor=node.parentElement;ancestor;ancestor=ancestor.parentElement) if(ancestor.tagName==='FIELDSET')this.ancestorObserver?.observe(ancestor,{attributes:true,attributeFilter:['disabled']});\n this.syncInherited();\n }\n ngOnDestroy() { this.root?.nativeElement.ownerDocument.removeEventListener('click', this.outside);this.ancestorObserver?.disconnect(); }\n ngOnChanges() { this.close(); }\n guardClick(event: MouseEvent) { if(this.blocked()) {event.preventDefault();event.stopPropagation();this.syncInherited();} }\n ngAfterViewChecked() { this.syncInherited();if(this.pendingFocus) {this.pendingFocus = false; this.root?.nativeElement.querySelector<HTMLElement>('[aria-current=\"page\"]')?.focus();} }\n toggled(event: Event) { const details = event.currentTarget as HTMLDetailsElement; if(this.blocked()) this.syncInherited();else if(details.open) this.close(details); }\n key(event: KeyboardEvent) {\n if(this.blocked() && ['Enter',' '].includes(event.key)) {event.preventDefault();this.syncInherited();return;}\n if(event.defaultPrevented || event.key !== 'Escape') return;\n const details = (event.target as HTMLElement).closest<HTMLDetailsElement>('.hw-pagination-gap[open]');\n if(details) {event.preventDefault(); details.open = false; details.querySelector<HTMLElement>('summary')?.focus();}\n }\n select(page: number, gap?: HTMLDetailsElement | null): void {\n if(this.blocked() || !Number.isFinite(page)) return;\n const next = normalizePaginationPage(page, this.total), changed = next !== this.current; this.close();\n if(gap) {gap.querySelector<HTMLElement>('summary')?.focus(); this.pendingFocus = changed;}\n if(changed) {this.page = next; this.pageChange.emit(next);}\n }\n gapSelect(event: Event, page: number) { this.select(page, (event.currentTarget as HTMLElement).closest('details')); }\n jump(node: HTMLElement, item: {start: number; end: number}) {\n const input = node.querySelector<HTMLInputElement>('input');\n if(!input || this.blocked())return;\n input.dataset.hwJumpTouched='true';\n if(input.checkValidity() && Number.isInteger(input.valueAsNumber) && input.valueAsNumber >= item.start && input.valueAsNumber <= item.end) {input.removeAttribute('aria-invalid');this.select(input.valueAsNumber, node.closest('details'));}\n else {input.setAttribute('aria-invalid','true');input.reportValidity();}\n }\n jumpInput(event: Event) {const input=event.currentTarget as HTMLInputElement;if(input.dataset.hwJumpTouched==='true'){if(input.checkValidity())input.removeAttribute('aria-invalid');else input.setAttribute('aria-invalid','true');}}\n jumpKey(event: Event, node: HTMLElement, item: {start: number; end: number}) { event.preventDefault(); this.jump(node, item); }\n}\n\nexport interface HwStep { label: string; description?: string; status?: 'complete' | 'current' | 'upcoming' }\n@Component({ selector: 'hw-stepper', standalone: true, template: `<ol class=\"hw-stepper\" [attr.aria-label]=\"label\">@for (step of steps; track $index; let i = $index) {<li class=\"hw-step\" [attr.aria-current]=\"state(i) === 'current' ? 'step' : null\" [attr.data-state]=\"state(i)\"><span>{{ step.label }}@if (step.description) {<small class=\"hw-hint\">{{ step.description }}</small>}</span></li>}</ol>` })\nexport class HwStepperComponent {\n @Input() label = 'التقدم';\n @Input() steps: readonly HwStep[] = [];\n /** Zero-based current step. This is a progress indicator, not navigation. */\n @Input() current = 0;\n /** Overrides current. -1 means not started; steps.length means complete. */\n @Input() activeIndex?: number;\n state(index: number): 'complete' | 'current' | 'upcoming' {\n const requested = this.activeIndex ?? this.current;\n const active = Number.isInteger(requested) && requested >= -1 && requested <= this.steps.length ? requested : -1;\n return this.steps[index]?.status ?? (index === active ? 'current' : index < active ? 'complete' : 'upcoming');\n }\n}\n","import { booleanAttribute, AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, PLATFORM_ID, ViewChild, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { restoreFocus } from '@hawiyah/core';\n\nlet nextId = 0;\n@Component({ selector: 'hw-dialog', standalone: true, template: `<dialog #dialog class=\"hw-dialog\" [attr.aria-labelledby]=\"titleId\" [attr.aria-describedby]=\"describedBy || null\" (close)=\"closed()\" (cancel)=\"cancelledBackdrop()\" (pointerdown)=\"backdropStart($event)\" (pointercancel)=\"resetBackdrop()\" (click)=\"backdrop($event)\"><header class=\"hw-dialog-header\"><h2 [id]=\"titleId\">{{ title }}</h2><button class=\"hw-button\" data-variant=\"ghost\" type=\"button\" [attr.aria-label]=\"closeLabel\" (click)=\"close()\">×</button></header><div class=\"hw-dialog-body\"><ng-content /></div><footer class=\"hw-dialog-footer\"><ng-content select=\"[hwDialogFooter]\" /></footer></dialog>` })\nexport class HwDialogComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input({required: true}) title = '';\n @Input() describedBy = '';\n @Input() titleId = `hw-dialog-title-${++nextId}`;\n @Input({transform: booleanAttribute}) open = false;\n @Input() closeLabel = 'Close dialog';\n @Input({transform: booleanAttribute}) closeOnBackdrop = true;\n @Output() readonly openChange = new EventEmitter<boolean>();\n @Output() readonly cancelled = new EventEmitter<void>();\n @Output() readonly returnValue = new EventEmitter<string>();\n @ViewChild('dialog') dialog?: ElementRef<HTMLDialogElement>;\n private readonly browser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly changeDetector = inject(ChangeDetectorRef);\n private trigger: HTMLElement | null = null;\n private ready = false;\n private backdropStarted = false;\n ngAfterViewInit(): void { this.ready = true; this.sync(); }\n ngOnChanges(): void { this.sync(); }\n private sync(): void {\n if (!this.ready || !this.browser) return;\n const dialog = this.dialog!.nativeElement;\n if (this.open && !dialog.open) {\n this.resetBackdrop();\n this.trigger = dialog.ownerDocument.activeElement as HTMLElement | null;\n dialog.showModal();\n } else if (!this.open && dialog.open) { this.resetBackdrop(); dialog.close(); }\n }\n show(trigger?: HTMLElement): void { this.open = true; this.sync(); if (trigger) this.trigger = trigger; this.openChange.emit(true); }\n close(value = ''): void { this.resetBackdrop(); if (this.browser) this.dialog?.nativeElement.close(value); else this.open = false; }\n closed(): void { this.resetBackdrop(); this.open = false; this.openChange.emit(false); this.returnValue.emit(this.dialog?.nativeElement.returnValue ?? ''); restoreFocus(this.trigger); this.trigger = null; this.changeDetector.markForCheck(); }\n resetBackdrop(): void { this.backdropStarted = false; }\n cancelledBackdrop(): void { this.resetBackdrop(); this.cancelled.emit(); }\n backdropStart(event: PointerEvent): void {\n this.resetBackdrop();\n const dialog = this.dialog?.nativeElement;\n if (!dialog || event.defaultPrevented || event.button !== 0 || event.target !== dialog) return;\n const bounds = dialog.getBoundingClientRect();\n this.backdropStarted = event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom;\n }\n backdrop(event: MouseEvent): void {\n const started = this.backdropStarted; this.resetBackdrop();\n const dialog = this.dialog?.nativeElement;\n if (!dialog || event.defaultPrevented || !started || !this.closeOnBackdrop || event.target !== dialog) return;\n const bounds = dialog.getBoundingClientRect();\n if (event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom) this.close();\n }\n ngOnDestroy(): void { if (this.dialog?.nativeElement.open) this.dialog.nativeElement.close(); restoreFocus(this.trigger); }\n}\n\n@Component({ selector: 'hw-tooltip', standalone: true, template: `<span class=\"hw-tooltip-anchor hw-tooltip-trigger\" tabindex=\"0\" [attr.aria-describedby]=\"id\" (focusin)=\"focusEntered()\" (focusout)=\"focusLeft($event)\" (mouseenter)=\"pointerEntered()\" (mouseleave)=\"pointerLeft()\" (keydown)=\"escape($event)\"><ng-content /><span class=\"hw-tooltip\" role=\"tooltip\" [id]=\"id\" [attr.data-placement]=\"placement\" [attr.data-align]=\"align\" [hidden]=\"!visible\">{{ text }}</span></span>` })\nexport class HwTooltipComponent implements OnDestroy {\n @Input() placement: 'top' | 'bottom' | 'start' | 'end' = 'top';\n @Input() align: 'start' | 'center' | 'end' = 'start';\n @Input({required: true}) text = '';\n @Input() id = `hw-tooltip-${++nextId}`;\n visible = false;\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private hovered = false;\n private focused = false;\n private hideTimer?: ReturnType<typeof setTimeout>;\n private show() {\n clearTimeout(this.hideTimer);\n if (this.visible) return;\n this.visible = true;\n const doc = this.host.nativeElement.ownerDocument;\n doc.addEventListener('keydown', this.escape);\n doc.addEventListener('pointerdown', this.outside);\n }\n hide() {\n clearTimeout(this.hideTimer);\n if (!this.visible) return;\n this.visible = false;\n const doc = this.host.nativeElement.ownerDocument;\n doc.removeEventListener('keydown', this.escape);\n doc.removeEventListener('pointerdown', this.outside);\n this.changeDetector.markForCheck();\n }\n pointerEntered() { this.hovered = true; this.show(); }\n pointerLeft() {\n this.hovered = false;\n if (!this.focused) this.hideTimer = setTimeout(() => this.hide(), 120);\n }\n focusEntered() { this.focused = true; this.show(); }\n focusLeft(event: FocusEvent) {\n if (this.host.nativeElement.contains(event.relatedTarget as Node | null)) return;\n this.focused = false;\n if (!this.hovered) this.hide();\n }\n readonly escape = (event: KeyboardEvent) => {\n if (!this.visible || event.key !== 'Escape' || event.defaultPrevented) return;\n event.preventDefault(); event.stopPropagation(); this.hide();\n };\n readonly outside = (event: Event) => { if (!this.host.nativeElement.contains(event.target as Node)) this.hide(); };\n ngOnDestroy() { this.hide(); }\n}\n","import { booleanAttribute, Component, Directive, ElementRef, EventEmitter, HostListener, Input, Output, inject } from '@angular/core';\nimport type { AfterViewInit, OnChanges, OnDestroy } from '@angular/core';\nimport { createAccordionMotion } from '@hawiyah/core';\nimport type { AccordionMotion } from '@hawiyah/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/** Native button keeps native form, keyboard, disabled and event semantics. */\n@Directive({selector: 'button[hwButton],a[hwButton]', standalone: true, host: {'class': 'hw-button', '[attr.data-variant]': 'variant', '[attr.data-size]': 'size'}})\nexport class HwButtonDirective {\n @Input() variant: 'primary' | 'default' | 'secondary' | 'outline' | 'outline-white' | 'light' | 'danger' | 'ghost' | 'soft' | 'link' = 'primary';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n}\n\n@Component({selector: 'hw-card', standalone: true, imports: [NgTemplateOutlet], template: `\n <ng-template #content><header class=\"hw-card-header\"><ng-content select=\"[hwCardHeader]\" /></header><div class=\"hw-card-body\"><ng-content /></div><footer class=\"hw-card-footer\"><ng-content select=\"[hwCardFooter]\" /></footer></ng-template>\n @if (href !== undefined) {\n <a class=\"hw-card hw-card-action\" [attr.href]=\"disabled ? null : href\" [attr.target]=\"target\" [attr.rel]=\"rel\" [attr.data-variant]=\"variant\" [attr.data-disabled]=\"disabled || null\" [attr.aria-disabled]=\"disabled || null\" [attr.role]=\"disabled ? 'link' : null\" [attr.tabindex]=\"disabled ? -1 : null\" (click)=\"guard($event)\"><ng-container [ngTemplateOutlet]=\"content\" /></a>\n } @else {\n <article class=\"hw-card\" [attr.data-variant]=\"variant\" [attr.data-disabled]=\"disabled || null\" (click)=\"guard($event)\"><ng-container [ngTemplateOutlet]=\"content\" /></article>\n }`})\nexport class HwCardComponent {\n @Input() variant: 'default' | 'flat' | 'elevated' | 'outlined' | 'ghost' = 'default';\n @Input() href: string | undefined;\n @Input() target: string | undefined;\n @Input() rel: string | undefined;\n @Input({transform: booleanAttribute}) disabled = false;\n guard(event: MouseEvent) { if (this.disabled) { event.preventDefault(); event.stopPropagation(); } }\n}\n\n@Component({selector: 'hw-badge', standalone: true, template: `<span class=\"hw-badge\" [attr.data-tone]=\"tone\" [attr.data-variant]=\"variant\"><ng-content /></span>`})\nexport class HwBadgeComponent { @Input() variant: 'soft' | 'outline' | 'dot' = 'soft'; @Input() tone: 'neutral' | 'success' | 'warning' | 'danger' | 'info' = 'neutral'; }\n\n@Component({selector: 'hw-alert', standalone: true, template: `<div class=\"hw-alert\" [attr.data-tone]=\"tone\" [attr.data-variant]=\"variant\" [attr.role]=\"role\"><div class=\"hw-alert-content\">@if (title) {<strong>{{ title }}</strong>}<ng-content /></div>@if (dismissible) {<button class=\"hw-button\" data-variant=\"ghost\" type=\"button\" [attr.aria-label]=\"closeLabel\" (click)=\"dismissed.emit()\">×</button>}</div>`})\nexport class HwAlertComponent {\n @Input() tone: 'neutral' | 'info' | 'success' | 'warning' | 'danger' = 'info';\n @Input() variant: 'default' | 'outline' | 'minimal' = 'default';\n @Input() title = '';\n @Input() role: 'alert' | 'status' | 'region' | 'group' = 'status';\n @Input({transform: booleanAttribute}) dismissible = false;\n @Input() closeLabel = 'Dismiss';\n @Output() readonly dismissed = new EventEmitter<void>();\n}\n\nlet nextAccordionId = 0;\nexport interface HwAccordionItem { id: string; title: string; content: string; open?: boolean }\n@Directive({selector: 'details[hwAccordionOpen]', standalone: true, host: { '[attr.open]': 'initialOpen ? \"\" : null' }})\nexport class HwAccordionMotionDirective implements AfterViewInit, OnChanges, OnDestroy {\n private readonly element = inject<ElementRef<HTMLDetailsElement>>(ElementRef).nativeElement;\n private motion?: AccordionMotion;\n private localOpen = false;\n initialOpen = false;\n @Input() hwAccordionOpen: boolean | undefined;\n @Input() hwAccordionGroup: string | undefined;\n @Output() readonly hwAccordionChange = new EventEmitter<boolean>();\n private get desired() { return this.localOpen; }\n private change = (open: boolean) => {\n this.localOpen = open; this.motion?.setOpen(open);\n this.hwAccordionChange.emit(open);\n };\n ngAfterViewInit() { this.setupMotion(); }\n ngOnChanges(changes: import('@angular/core').SimpleChanges) {\n if (changes['hwAccordionOpen']) this.localOpen = this.hwAccordionOpen ?? false;\n if (!this.motion) this.initialOpen = this.desired;\n else if (this.hwAccordionGroup !== this.group) this.setupMotion();\n else this.motion.setOpen(this.desired);\n }\n private group?: string;\n private setupMotion() {\n this.motion?.destroy(); this.group = this.hwAccordionGroup;\n if (this.group) this.element.setAttribute('name', this.group); else this.element.removeAttribute('name');\n this.motion = createAccordionMotion(this.element, this.element.querySelector<HTMLElement>(':scope > .hw-accordion-content')!, this.change);\n this.motion.setOpen(this.desired, true);\n }\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n const target = event.target as Element;\n if (target.closest('summary')?.parentElement !== this.element) return;\n if (target.closest('a,button,input,select,textarea')) return;\n event.preventDefault(); this.change(!this.desired);\n }\n @HostListener('toggle') toggle() { this.motion?.nativeToggle(); }\n ngOnDestroy() { this.motion?.destroy(); }\n}\n@Component({selector: 'hw-accordion', standalone: true, imports: [HwAccordionMotionDirective], template: `<div class=\"hw-accordion\">@for (item of items; track item.id) {<details class=\"hw-accordion-item\" [hwAccordionOpen]=\"item.open\" [hwAccordionGroup]=\"exclusive ? groupName : undefined\" (hwAccordionChange)=\"toggled.emit({id: item.id, open: $event})\"><summary class=\"hw-accordion-trigger\">{{ item.title }}</summary><div class=\"hw-accordion-content\">{{ item.content }}</div></details>}<ng-content /></div>`})\nexport class HwAccordionComponent {\n @Input() items: readonly HwAccordionItem[] = [];\n @Input({transform: booleanAttribute}) exclusive = false;\n @Input() groupName = `hw-accordion-${++nextAccordionId}`;\n @Output() readonly toggled = new EventEmitter<{id: string; open: boolean}>();\n}\n\nexport interface HwTableColumn { key: string; label: string; rowHeader?: boolean }\nexport type HwTableRow = Record<string, string | number | null | undefined>;\n@Component({selector: 'hw-table', standalone: true, styles: [':host { display: block; min-inline-size: 0; max-inline-size: 100%; }'], template: `<div class=\"hw-table-wrap\" tabindex=\"0\" role=\"region\" [attr.aria-label]=\"caption\"><table class=\"hw-table\" [attr.data-variant]=\"variant\" [attr.data-size]=\"size\"><caption>{{ caption }}</caption><thead><tr>@for (column of columns; track column.key) {<th scope=\"col\">{{ column.label }}</th>}</tr></thead><tbody>@for (row of rows; track $index) {<tr>@for (column of columns; track column.key) {@if (column.rowHeader) {<th scope=\"row\">{{ row[column.key] }}</th>} @else {<td>{{ row[column.key] }}</td>}}</tr>}@empty {<tr><td [attr.colspan]=\"columns.length || 1\">{{ emptyMessage }}</td></tr>}</tbody></table></div>`})\nexport class HwTableComponent {\n @Input({required: true}) caption = '';\n @Input() columns: readonly HwTableColumn[] = [];\n @Input() rows: readonly HwTableRow[] = [];\n @Input() variant?: 'default' | 'striped' | 'bordered';\n @Input() size?: 'sm' | 'md' | 'lg';\n @Input() emptyMessage = 'لا توجد سجلات';\n}\n\n@Component({selector: 'hw-progress', standalone: true, template: `<label class=\"hw-stack\"><span>{{ label }}</span><progress class=\"hw-progress\" [attr.value]=\"value === null ? null : boundedValue\" [max]=\"safeMax\" [attr.aria-label]=\"label\"></progress></label>`})\nexport class HwProgressComponent {\n @Input({required: true}) label = '';\n @Input() value: number | null = null;\n @Input() max = 100;\n get safeMax(): number { return this.max > 0 && Number.isFinite(this.max) ? this.max : 100; }\n get boundedValue(): number { return Math.max(0, Math.min(this.safeMax, this.value ?? 0)); }\n}\n\n@Component({selector: 'hw-skeleton', standalone: true, template: `<span class=\"hw-skeleton\" aria-hidden=\"true\" [style.inline-size]=\"width\" [style.block-size]=\"height\"></span>`})\nexport class HwSkeletonComponent {\n @Input() width = '100%';\n @Input() height = '1rem';\n}\n\n@Component({selector: 'hw-spinner', standalone: true, template: `<span role=\"status\"><span class=\"hw-spinner\" aria-hidden=\"true\"></span><span class=\"hw-sr-only\">{{ label }}</span></span>`})\nexport class HwSpinnerComponent { @Input() label = 'Loading'; }\n\n@Component({selector: 'hw-avatar', standalone: true, template: `<span class=\"hw-avatar\" [attr.data-size]=\"size\" [attr.data-variant]=\"variant\" [attr.role]=\"src && !imageFailed ? null : 'img'\" [attr.aria-label]=\"src && !imageFailed ? null : name\">@if (src && !imageFailed) {<img [src]=\"src\" [alt]=\"name\" (error)=\"imageFailed = true\">} @else {<span aria-hidden=\"true\">{{ initials }}</span>}</span>`})\nexport class HwAvatarComponent {\n @Input({required: true}) name = '';\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' | '40' | '64' | '80' | '120' = 'md';\n @Input() variant: 'circle' | 'square' = 'circle';\n private suppliedInitials: string | undefined;\n @Input() set initials(value: string | undefined) { this.suppliedInitials = value; }\n private imageSrc = '';\n @Input() set src(value: string) { this.imageSrc = value; this.imageFailed = false; }\n get src(): string { return this.imageSrc; }\n imageFailed = false;\n get initials(): string { return this.suppliedInitials ?? this.name.trim().split(/\\s+/u).slice(0, 2).map(part => Array.from(part)[0] ?? '').join(''); }\n}\n\n@Component({selector: 'hw-divider', standalone: true, template: `<hr class=\"hw-divider\" [attr.data-tone]=\"tone\" [attr.aria-orientation]=\"orientation\">`})\nexport class HwDividerComponent {\n @Input() tone?: 'neutral' | 'primary' | 'gold' | 'tertiary';\n @Input() orientation?: 'horizontal' | 'vertical';\n}\n\n@Component({selector: 'hw-empty-state', standalone: true, template: `<section class=\"hw-empty\"><h3>{{ title }}</h3>@if (description) {<p>{{ description }}</p>}<ng-content /></section>`})\nexport class HwEmptyStateComponent {\n @Input({required: true}) title = '';\n @Input() description = '';\n}\n","import { booleanAttribute, Component, Directive, ElementRef, EventEmitter, forwardRef, inject, Input, Output, ViewChild, type AfterViewInit, type OnChanges, type SimpleChanges } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, type AbstractControl, type ValidationErrors, type Validator } from '@angular/forms';\nimport { getCalendarLabels, clampRange, filterOptions, formatCalendarDate, getCalendarDateParts, getCalendarMonth, getDirection, getSearchSuggestions, isCalendarDateSupported, isDateInRange, isDisabled, moveCalendarDate, normalizeDigits, normalizeRatingMax, normalizeRatingValue, requestSearchDialogClose, UMALQURA_MAX_DATE, UMALQURA_MIN_DATE, type CalendarSystem, type Direction, type Option } from '@hawiyah/core';\nimport { HwValueControl } from './forms';\nimport { observeAngularFieldPresence } from './field-presence';\nimport { HwDialogComponent, HwTooltipComponent } from './overlays';\n\nconst fieldEnd = `@if (hint) {<p class=\"hw-hint\" [id]=\"controlId + '-hint'\">{{ hint }}</p>}@if (error) {<p class=\"hw-error\" [id]=\"controlId + '-error'\">{{ error }}</p>}`;\n/** Null writes from Angular form reset restore each control's empty value. */\n@Directive()\nexport abstract class HwExpandedValueControl<T> extends HwValueControl<T> {\n @Input({transform: booleanAttribute}) readOnly = false;\n protected abstract emptyValue(): T;\n override writeValue(value: T | null): void { super.writeValue(value ?? this.emptyValue()); }\n override update(value: T): void { if (!this.readOnly) super.update(value); }\n}\n\n@Component({selector: 'hw-input-group', standalone: true, template: `<div class=\"hw-input-group\" [attr.data-size]=\"size\"><span class=\"hw-input-addon\"><ng-content select=\"[hwPrefix]\" /></span><ng-content /><span class=\"hw-input-addon\"><ng-content select=\"[hwSuffix]\" /></span></div>`})\nexport class HwInputGroupComponent { constructor() { observeAngularFieldPresence(); } @Input() size: 'sm' | 'md' | 'lg' = 'md'; }\n\n@Component({selector: 'hw-password-field', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwPasswordFieldComponent), multi: true}], template: `<div class=\"hw-field hw-password-field\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><div class=\"hw-password-control\"><input #passwordInput class=\"hw-input\" [id]=\"controlId\" [type]=\"revealed ? 'text' : 'password'\" [value]=\"value\" [name]=\"name\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [required]=\"required\" [attr.autocomplete]=\"autocomplete\" [placeholder]=\"placeholder\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"update($any($event.target).value)\" (blur)=\"touch()\"><button type=\"button\" class=\"hw-button hw-password-toggle\" data-variant=\"ghost\" [attr.data-toggle-variant]=\"toggleVariant\" [disabled]=\"disabled\" [attr.aria-label]=\"revealed ? hideLabel : showLabel\" [attr.aria-pressed]=\"revealed\" [attr.aria-controls]=\"controlId\" (click)=\"toggle()\">@if (toggleVariant === 'text') { {{ revealed ? hideLabel : showLabel }} } @else {<span class=\"hw-password-icon\" aria-hidden=\"true\"></span>}</button></div>${fieldEnd}</div>`})\nexport class HwPasswordFieldComponent extends HwExpandedValueControl<string> implements AfterViewInit {\n override value = ''; protected emptyValue() { return ''; }\n @Input() autocomplete = 'current-password'; @Input() placeholder = ''; @Input() showLabel = 'Show password'; @Input() hideLabel = 'Hide password'; @Input() toggleVariant: 'icon' | 'text' = 'icon';\n @ViewChild('passwordInput') input?: ElementRef<HTMLInputElement>; revealed = false;\n private removeReset?: () => void; private destroyed = false;\n toggle() { if (this.input && !isDisabled(this.input.nativeElement)) this.revealed = !this.revealed; }\n ngAfterViewInit() {\n const form = this.input?.nativeElement.form;\n const reset = (event: Event) => queueMicrotask(() => { if (!this.destroyed && !event.defaultPrevented) { this.revealed = false; this.changeDetector.markForCheck(); } });\n form?.addEventListener('reset', reset); this.removeReset = () => form?.removeEventListener('reset', reset);\n }\n ngOnDestroy() { this.destroyed = true; this.removeReset?.(); }\n override writeValue(value: string | null) { super.writeValue(value); this.revealed = false; }\n}\n\n@Component({selector: 'hw-search-field', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwSearchFieldComponent), multi: true}], template: `\n<div #searchRoot class=\"hw-field hw-search-field\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><div class=\"hw-input-group\"><div class=\"hw-search-control\">\n<input #input class=\"hw-input\" type=\"search\" [autofocus]=\"autofocus\" [id]=\"controlId\" [value]=\"value\" [name]=\"name\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [required]=\"required\" [placeholder]=\"placeholder\" [attr.autocomplete]=\"autocomplete\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" [attr.role]=\"suggestions !== undefined ? 'combobox' : null\" [attr.aria-autocomplete]=\"suggestions !== undefined ? 'list' : null\" [attr.aria-expanded]=\"suggestions !== undefined ? expanded : null\" [attr.aria-controls]=\"suggestions !== undefined ? listId : null\" [attr.aria-activedescendant]=\"expanded && active >= 0 && active < matches.length ? listId + '-' + active : null\" (input)=\"inputChanged($event)\" (keydown)=\"searchKey($event)\" (focus)=\"focused()\" (compositionstart)=\"compositionStart()\" (compositionend)=\"compositionEnd()\" (blur)=\"blurred()\">\n<button type=\"button\" class=\"hw-button hw-search-clear\" data-variant=\"ghost\" [hidden]=\"!value || readOnly\" [disabled]=\"disabled\" [attr.aria-controls]=\"controlId\" [attr.aria-label]=\"clearLabel\" (pointerdown)=\"keepFocus($event)\" (mousedown)=\"keepFocus($event)\" (click)=\"clear()\"><span class=\"hw-search-clear-icon\" aria-hidden=\"true\"></span></button>\n@if (suggestions !== undefined) {<div class=\"hw-search-suggestions\" [id]=\"listId\" role=\"listbox\" [attr.aria-label]=\"label || searchLabel\" [hidden]=\"!expanded\">@for (match of matches; track match.value; let i = $index) {<div class=\"hw-search-option\" dir=\"auto\" [id]=\"listId + '-' + i\" role=\"option\" [attr.aria-selected]=\"active === i\" (pointerdown)=\"keepFocus($event)\" (mousedown)=\"keepFocus($event)\" (click)=\"choose(i)\">@for (segment of match.segments; track $index) {@if (segment.match) {<strong>{{ segment.text }}</strong>} @else {{{ segment.text }}}}</div>}</div>}\n</div>@if (showSearchButton) {<button type=\"button\" class=\"hw-button hw-search-submit\" [disabled]=\"disabled\" [attr.aria-label]=\"searchLabel\" (click)=\"search()\"><span class=\"hw-search-submit-icon\" aria-hidden=\"true\"></span></button>}</div>\n@if (suggestions !== undefined) {<span class=\"hw-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{ opened && !readOnly && !disabled && !composing && value.trim() ? resultsMessage(matches.length) : '' }}</span>}\n${fieldEnd}</div>`})\nexport class HwSearchFieldComponent extends HwExpandedValueControl<string> {\n override value = ''; protected emptyValue() {return '';}\n @Input() placeholder = ''; @Input() autocomplete = 'off'; @Input({transform: booleanAttribute}) autofocus = false; @Input() clearLabel = 'مسح البحث'; @Input() searchLabel = 'بحث';\n @Input() suggestions?: readonly string[]; @Input() maxSuggestions = 8;\n @Input() resultsMessage: (count: number) => string = count => `${count} اقتراحات متاحة`;\n @Input({transform: booleanAttribute}) showSearchButton = true;\n @Output() readonly searched = new EventEmitter<string>();\n @ViewChild('input') input?: ElementRef<HTMLInputElement>; @ViewChild('searchRoot') searchRoot?: ElementRef<HTMLElement>;\n composing = false; opened = false; active = -1;\n private expectedValue?: string; private suggestionSignature?: string; private observer?: MutationObserver; private removeReset?: () => void; private destroyed = false;\n private outside = (event: Event) => {if (!this.searchRoot?.nativeElement.contains(event.target as Node)) {this.close();this.changeDetector.markForCheck();}};\n get listId(): string {return `${this.controlId}-suggestions`;}\n get matches() {return getSearchSuggestions(this.value || '', this.suggestions ?? [], this.maxSuggestions);}\n get expanded(): boolean {return this.opened && this.suggestions !== undefined && !this.disabled && !this.readOnly && !this.composing && this.matches.length > 0;}\n private editable(): boolean {return !!this.input && !this.readOnly && !this.input.nativeElement.readOnly && !isDisabled(this.input.nativeElement);}\n close(): void {this.opened = false;this.active = -1;}\n focus(): void {if (this.input && !isDisabled(this.input.nativeElement)) this.input.nativeElement.focus();}\n focused(): void {if (this.editable() && !this.composing) this.opened = true;}\n blurred(): void {this.touch();this.close();}\n compositionStart(): void {this.composing = true;this.close();}\n compositionEnd(): void {this.composing = false;if (this.editable()) this.opened = true;}\n keepFocus(event: MouseEvent): void {if (event.button === 0) event.preventDefault();}\n inputChanged(event: Event): void {if (event.defaultPrevented || !this.editable()) return;this.expectedValue = (event.target as HTMLInputElement).value;this.update(this.expectedValue);this.active = -1;this.opened = !this.composing;}\n clear(): void {if (!this.editable()) return;this.expectedValue = '';this.update('');this.focus();this.close();}\n choose(index: number): void {if (!this.editable() || this.composing) return;const match = this.matches[index];if (!match) return;this.expectedValue = match.value;this.update(match.value);this.focus();this.close();}\n search(): void {if (!this.input || isDisabled(this.input.nativeElement) || this.composing) return;const query = this.value.trim();if (query) this.searched.emit(query);this.close();}\n searchKey(event: KeyboardEvent): void {\n if (event.defaultPrevented || this.composing || event.isComposing || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey || !this.input || isDisabled(this.input.nativeElement)) return;\n if (event.key === 'Escape' && this.expanded) {event.preventDefault();event.stopPropagation();this.close();return;}\n if (event.key === 'Escape' && requestSearchDialogClose(this.input.nativeElement)) {event.preventDefault();event.stopPropagation();return;}\n const count = this.matches.length;\n if (this.editable() && count && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {event.preventDefault();this.opened = true;this.active = event.key === 'ArrowDown' ? (this.active + 1) % count : this.active <= 0 ? count - 1 : this.active - 1;return;}\n if (event.key === 'Enter') {if (this.expanded && this.active >= 0) {event.preventDefault();this.choose(this.active);} else this.search();}\n }\n ngOnChanges(changes: SimpleChanges): void {\n const signature = JSON.stringify(this.suggestions);\n if (signature !== this.suggestionSignature || changes['maxSuggestions'] || changes['readOnly'] || changes['disabled']) this.close();\n this.suggestionSignature = signature;\n if (changes['value']) {if (this.value !== this.expectedValue) this.close();this.active = -1;this.expectedValue = undefined;}\n }\n ngAfterViewInit(): void {\n const input = this.input!.nativeElement;input.ownerDocument.addEventListener('pointerdown', this.outside);\n const Observer = input.ownerDocument.defaultView?.MutationObserver;\n this.observer = Observer ? new Observer(() => {if (input.readOnly || isDisabled(input)) {this.close();this.changeDetector.markForCheck();}}) : undefined;\n this.observer?.observe(input, {attributes: true, attributeFilter: ['readonly','disabled','aria-disabled']});\n for (let parent = input.parentElement; parent; parent = parent.parentElement) if (parent.localName === 'fieldset') this.observer?.observe(parent, {attributes: true, attributeFilter: ['disabled']});\n const form = input.form, reset = (event: Event) => queueMicrotask(() => {if (!this.destroyed && !event.defaultPrevented) {this.close();this.composing = false;this.changeDetector.markForCheck();}});\n form?.addEventListener('reset', reset);this.removeReset = () => form?.removeEventListener('reset', reset);\n }\n ngAfterViewChecked(): void {\n if (!this.expanded || this.active < 0) return;const list = this.input?.nativeElement.ownerDocument.getElementById(this.listId), option = list?.children[this.active] as HTMLElement | undefined;\n if (!list || !option) return;const outer = list.getBoundingClientRect(), inner = option.getBoundingClientRect();if (inner.top < outer.top) list.scrollTop -= outer.top - inner.top;else if (inner.bottom > outer.bottom) list.scrollTop += inner.bottom - outer.bottom;\n }\n override writeValue(value: string | null): void {super.writeValue(value);this.close();this.composing = false;}\n override setDisabledState(disabled: boolean): void {super.setDisabledState(disabled);if (disabled) this.close();}\n ngOnDestroy(): void {this.destroyed = true;this.observer?.disconnect();this.removeReset?.();this.input?.nativeElement.ownerDocument.removeEventListener('pointerdown', this.outside);}\n}\n\n@Component({selector: 'hw-number-field', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwNumberFieldComponent), multi: true}], template: `<div class=\"hw-field hw-number-field\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><input class=\"hw-input\" type=\"number\" [id]=\"controlId\" [name]=\"name\" [value]=\"value ?? ''\" [attr.value]=\"value\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [required]=\"required\" [attr.min]=\"min\" [attr.max]=\"max\" [step]=\"step\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"numberChanged($event)\" (blur)=\"touch()\">${fieldEnd}</div>`})\nexport class HwNumberFieldComponent extends HwExpandedValueControl<number | null> { override value: number | null = null; protected emptyValue() { return null; } @Input() min: number | null = null; @Input() max: number | null = null; @Input() step: number | 'any' = 1; numberChanged(event: Event) { const value = (event.target as HTMLInputElement).valueAsNumber; this.update(Number.isNaN(value) ? null : value); } }\n\n@Component({selector: 'hw-slider', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwSliderComponent), multi: true}], template: `<div class=\"hw-field\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><input class=\"hw-slider\" type=\"range\" [id]=\"controlId\" [name]=\"name\" [value]=\"value\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [disabled]=\"disabled\" [attr.aria-readonly]=\"readOnly || null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (pointerdown)=\"guardPointer($event)\" (keydown)=\"guardKey($event)\" (input)=\"changed($event)\" (blur)=\"touch()\"><output [attr.for]=\"controlId\">{{ value }}</output>${fieldEnd}</div>`})\nexport class HwSliderComponent extends HwExpandedValueControl<number> {\n override value = 0; protected emptyValue() { return this.min; }\n @Input() min = 0; @Input() max = 100; @Input() step = 1;\n guardPointer(event: PointerEvent) { if (this.readOnly) event.preventDefault(); }\n guardKey(event: KeyboardEvent) { if (this.readOnly && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key)) event.preventDefault(); }\n changed(event: Event) {\n const input = event.target as HTMLInputElement;\n if (this.readOnly || isDisabled(input)) { input.value = String(this.value); return; }\n this.update(input.valueAsNumber);\n }\n}\n\n@Component({selector: 'hw-range-slider', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwRangeSliderComponent), multi: true}], template: `<fieldset class=\"hw-field hw-range-slider\" [disabled]=\"disabled\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\"><legend class=\"hw-label\">{{ label }}</legend><label [for]=\"controlId + '-lower'\">{{ lowerLabel }}</label><input class=\"hw-slider\" type=\"range\" [id]=\"controlId + '-lower'\" [name]=\"lowerName || name\" [min]=\"min\" [max]=\"pair[1]\" [step]=\"step\" [value]=\"pair[0]\" [disabled]=\"disabled\" [attr.aria-readonly]=\"readOnly || null\" (pointerdown)=\"guardPointer($event)\" (keydown)=\"guardKey($event)\" (input)=\"changed($event, 'lower')\" (blur)=\"touch()\"><label [for]=\"controlId + '-upper'\">{{ upperLabel }}</label><input class=\"hw-slider\" type=\"range\" [id]=\"controlId + '-upper'\" [name]=\"upperName || name\" [min]=\"pair[0]\" [max]=\"max\" [step]=\"step\" [value]=\"pair[1]\" [disabled]=\"disabled\" [attr.aria-readonly]=\"readOnly || null\" (pointerdown)=\"guardPointer($event)\" (keydown)=\"guardKey($event)\" (input)=\"changed($event, 'upper')\" (blur)=\"touch()\"><output [attr.for]=\"controlId + '-lower ' + controlId + '-upper'\">{{ pair[0] }} – {{ pair[1] }}</output>${fieldEnd}</fieldset>`})\nexport class HwRangeSliderComponent extends HwExpandedValueControl<[number, number]> {\n override value: [number, number] = [0, 100]; protected emptyValue(): [number, number] { return [this.min, this.max]; }\n @Input() min = 0; @Input() max = 100; @Input() step = 1; @Input() lowerLabel = 'Minimum'; @Input() upperLabel = 'Maximum'; @Input() lowerName = ''; @Input() upperName = '';\n get pair(): [number, number] { return clampRange(this.value ?? [this.min, this.max], this.min, this.max, 'lower'); }\n guardPointer(event: PointerEvent) { if (this.readOnly) event.preventDefault(); }\n guardKey(event: KeyboardEvent) { if (this.readOnly && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key)) event.preventDefault(); }\n changed(event: Event, changed: 'lower' | 'upper') {\n const input = event.target as HTMLInputElement; const index = changed === 'lower' ? 0 : 1;\n if (this.readOnly || isDisabled(input)) { input.value = String(this.pair[index]); return; }\n const next = [...this.pair] as [number, number]; next[index] = input.valueAsNumber;\n const pair = clampRange(next, this.min, this.max, changed); this.update(pair); input.value = String(pair[index]);\n }\n}\n\n@Component({selector: 'hw-rating', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwRatingComponent), multi: true}], template: `<fieldset class=\"hw-field hw-rating\" [disabled]=\"disabled\" [attr.data-hw-readonly]=\"readOnly || null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\"><legend class=\"hw-label\">{{ label }}</legend>@for (rating of ratings; track rating) {<label><input type=\"radio\" [name]=\"name || controlId\" [value]=\"rating\" [checked]=\"currentInput === rating\" [required]=\"required\" [attr.aria-disabled]=\"readOnly || null\" (click)=\"guardClick($event)\" (keydown)=\"guardKey($event)\" (change)=\"changed($event, rating)\" (blur)=\"touch()\"><span aria-hidden=\"true\">★</span><span class=\"hw-sr-only\">{{ ratingLabel(rating, total) }}</span></label>}${fieldEnd}</fieldset>`})\nexport class HwRatingComponent extends HwExpandedValueControl<number> {\n override value = 0; protected emptyValue() { return 0; }\n @Input() max = 5;\n @Input() ratingLabel = (value: number, max: number) => `${value} من ${max}`;\n get total() { return normalizeRatingMax(this.max); }\n get currentInput() { return Math.floor(normalizeRatingValue(this.value, this.total)); }\n get ratings() { return Array.from({length: this.total}, (_, i) => i + 1); }\n private restore(input: HTMLInputElement) { input.closest('fieldset')?.querySelectorAll<HTMLInputElement>('input[type=\"radio\"]').forEach(radio => { radio.checked = Number(radio.value) === this.currentInput; }); }\n guardClick(event: MouseEvent) { if (this.readOnly) { event.preventDefault(); this.restore(event.currentTarget as HTMLInputElement); } }\n guardKey(event: KeyboardEvent) { if (this.readOnly && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', ' '].includes(event.key)) event.preventDefault(); }\n changed(event: Event, rating: number) { const input = event.currentTarget as HTMLInputElement; if (this.readOnly || isDisabled(input)) { this.restore(input); return; } this.update(rating); }\n}\n/** Aggregate score with fractional fill; this component has no form controls. */\n@Component({selector: 'hw-rating-display', standalone: true, template: `<div class=\"hw-rating-display\" role=\"img\" [attr.aria-label]=\"label + ': ' + valueLabel(score, total)\"><span class=\"hw-rating-stars\" aria-hidden=\"true\">@for (star of stars; track star) {<span class=\"hw-rating-star\">★<span class=\"hw-rating-fill\" [style.--hw-rating-fill]=\"fill(star) + '%'\"></span></span>}</span>@if (showValue) {<span class=\"hw-rating-score\" aria-hidden=\"true\">{{ score }}/{{ total }}</span>}</div>`})\nexport class HwRatingDisplayComponent {\n @Input({required: true}) label = '';\n @Input() value = 0;\n @Input() max = 5;\n @Input({transform: booleanAttribute}) showValue = true;\n @Input() valueLabel = (value: number, max: number) => `${value} من ${max}`;\n get total() { return normalizeRatingMax(this.max); }\n get score() { return normalizeRatingValue(this.value, this.total); }\n get stars() { return Array.from({length: this.total}, (_, index) => index); }\n fill(index: number) { return Math.min(1, Math.max(0, this.score - index)) * 100; }\n}\n\n@Component({selector: 'hw-pin-input', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwPinInputComponent), multi: true}], template: `<div class=\"hw-field hw-pin-input\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><input class=\"hw-input\" type=\"text\" inputmode=\"numeric\" autocomplete=\"one-time-code\" [attr.pattern]=\"'[0-9]{' + normalizedLength + '}'\" [id]=\"controlId\" [name]=\"name\" [value]=\"normalizedValue\" [attr.maxlength]=\"normalizedLength\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [required]=\"required\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"inputChanged($event)\" (blur)=\"touch()\">${fieldEnd}</div>`})\nexport class HwPinInputComponent extends HwExpandedValueControl<string> { override value = ''; protected emptyValue() { return ''; } @Input() length = 6; get normalizedLength() { return Math.max(1, Math.floor(this.length) || 6); } private normalize(value: string) { return normalizeDigits(value).replace(/[^0-9]/g, '').slice(0, this.normalizedLength); } get normalizedValue() { return this.normalize(this.value); } inputChanged(event: Event) { const input = event.target as HTMLInputElement; this.update(this.normalize(input.value)); input.value = this.normalizedValue; } }\n\n@Component({selector: 'hw-tag-input', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwTagInputComponent), multi: true}], template: `<div class=\"hw-field hw-tag-input\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><ul>@for (tag of value; track tag) {<li class=\"hw-chip\"><span>{{ tag }}</span><button type=\"button\" [disabled]=\"disabled || readOnly\" [attr.aria-label]=\"removeLabel + ': ' + tag\" (click)=\"remove(tag)\">×</button><input type=\"hidden\" [name]=\"name\" [value]=\"tag\" [disabled]=\"disabled\"></li>}</ul><div class=\"hw-input-group\"><input #input class=\"hw-input\" [id]=\"controlId\" [value]=\"draft\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [placeholder]=\"placeholder\" [attr.aria-required]=\"required || null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"draft = $any($event.target).value\" (keydown)=\"keydown($event)\" (compositionstart)=\"composing = true\" (compositionend)=\"composing = false\" (blur)=\"touch()\"><button class=\"hw-button\" type=\"button\" [disabled]=\"disabled || readOnly || !draft.trim()\" (click)=\"add()\">{{ addLabel }}</button></div>${fieldEnd}</div>`})\nexport class HwTagInputComponent extends HwExpandedValueControl<string[]> implements OnChanges { override value: string[] = []; protected emptyValue() { return []; } @Input() placeholder = ''; @Input() addLabel = 'Add'; @Input() removeLabel = 'Remove'; @Input() validationMessage = 'Add at least one tag.'; draft = ''; composing = false; private get blocked() { return this.disabled || this.readOnly || !!this.input && isDisabled(this.input.nativeElement); } @ViewChild('input') input?: ElementRef<HTMLInputElement>; add() { const tag = this.draft.trim(); if (!tag || this.blocked) return; if (!this.value.includes(tag)) this.update([...this.value, tag]); this.draft = ''; this.validity(); this.input?.nativeElement.focus(); } remove(tag: string) { if (this.blocked) return; this.update(this.value.filter(value => value !== tag)); this.validity(); this.input?.nativeElement.focus(); } keydown(event: KeyboardEvent) { if (event.defaultPrevented || this.blocked || this.composing || event.isComposing || event.ctrlKey || event.altKey || event.metaKey) return; if ((event.key === 'Enter' || event.key === ',') && this.draft.trim()) { event.preventDefault(); this.add(); } else if (event.key === 'Backspace' && !this.draft && this.value.length) { event.preventDefault(); this.remove(this.value.at(-1)!); } } ngAfterViewInit() { this.validity(); } ngOnChanges() { this.validity(); } private validity() { this.input?.nativeElement.setCustomValidity(this.required && !this.disabled && !this.value.length ? this.validationMessage : ''); } override writeValue(value: string[] | null) { super.writeValue(value); this.draft = ''; this.validity(); } override setDisabledState(disabled: boolean) { super.setDisabledState(disabled); this.validity(); } }\n\n@Component({selector: 'hw-multi-select', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwMultiSelectComponent), multi: true}], template: `<fieldset class=\"hw-field hw-multi-select\" [disabled]=\"disabled\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\"><legend class=\"hw-label\">{{ label }}</legend><label class=\"hw-sr-only\" [for]=\"controlId\">{{ searchLabel }}</label><input #search class=\"hw-input\" type=\"search\" [id]=\"controlId\" [value]=\"query\" [placeholder]=\"searchLabel\" [disabled]=\"disabled\" [attr.aria-required]=\"required || null\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (input)=\"query = $any($event.target).value\" (blur)=\"touch()\"><div class=\"hw-multi-select-options\">@for (option of filtered; track option.value) {<label><input class=\"hw-checkbox\" type=\"checkbox\" [value]=\"option.value\" [checked]=\"selectedValues.includes(option.value)\" [disabled]=\"disabled || readOnly || option.disabled\" (change)=\"toggle(option)\" (blur)=\"touch()\"><span>{{ option.label }}</span></label>} @empty {<p>{{ emptyMessage }}</p>}</div>@for (selected of selectedValues; track selected) {<input type=\"hidden\" [name]=\"name\" [value]=\"selected\" [disabled]=\"disabled\">}<p class=\"hw-hint\" role=\"status\">{{ selectedMessage(selectedValues.length) }}</p>${fieldEnd}</fieldset>`})\nexport class HwMultiSelectComponent extends HwExpandedValueControl<string[]> implements OnChanges {\n override value: string[] = []; protected emptyValue() { return []; } @Input() options: readonly Option[] = []; @Input() searchLabel = 'Search options'; @Input() emptyMessage = 'No options'; @Input() validationMessage = 'Select at least one option.'; @Input() selectedMessage = (count: number) => `${count} selected`; @ViewChild('search') search?: ElementRef<HTMLInputElement>; query = '';\n get selectedValues() { return this.value.filter(value => this.options.some(option => option.value === value && !option.disabled)); }\n get filtered() { return filterOptions(this.options, this.query); }\n toggle(option: Option) { if (!option.disabled) { this.update(this.selectedValues.includes(option.value) ? this.selectedValues.filter(value => value !== option.value) : [...this.selectedValues, option.value]); this.validity(); } }\n ngAfterViewInit() { this.validity(); } ngOnChanges() { this.validity(); }\n private validity() { this.search?.nativeElement.setCustomValidity(this.required && !this.disabled && !this.selectedValues.length ? this.validationMessage : ''); }\n override writeValue(value: string[] | null) { super.writeValue(value); this.query = ''; this.validity(); }\n override setDisabledState(value: boolean) { super.setDisabledState(value); this.validity(); }\n}\n\n@Component({selector: 'hw-calendar', standalone: true, imports: [HwTooltipComponent], providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwCalendarComponent), multi: true}], template: `<div class=\"hw-field hw-calendar\" [attr.dir]=\"direction || null\"><div class=\"hw-calendar-toolbar\"><button class=\"hw-button hw-calendar-prev\" data-variant=\"ghost\" type=\"button\" [disabled]=\"disabled || !canPrevious\" [attr.aria-label]=\"previousLabel ?? copy.previous\" (click)=\"navigate(data.previous)\">‹</button><div class=\"hw-calendar-heading\"><h3 [id]=\"controlId + '-month'\" aria-live=\"polite\">{{ data.label }}</h3>@if (calendar === 'islamic-umalqura') {<hw-tooltip class=\"hw-calendar-info\" [text]=\"rangeDescription\"><span class=\"hw-calendar-info-icon\" aria-hidden=\"true\">i</span><span class=\"hw-sr-only\">{{ rangeLabel }}</span></hw-tooltip>}</div><button class=\"hw-button hw-calendar-next\" data-variant=\"ghost\" type=\"button\" [disabled]=\"disabled || !canNext\" [attr.aria-label]=\"nextLabel ?? copy.next\" (click)=\"navigate(data.next)\">›</button></div><table class=\"hw-calendar-grid\" role=\"grid\" [attr.aria-label]=\"label || copy.calendar\" [attr.aria-describedby]=\"descriptionIds\"><thead><tr>@for (weekday of data.weekdays; track $index) {<th scope=\"col\">{{ weekday }}</th>}</tr></thead><tbody>@for (week of weeks; track $index) {<tr>@for (day of week; track day.value) {<td role=\"gridcell\" [attr.aria-selected]=\"day.selected\"><button type=\"button\" class=\"hw-calendar-day\" [attr.data-date]=\"day.value\" [attr.data-outside]=\"day.outside\" [attr.data-selected]=\"day.selected\" [attr.aria-current]=\"day.today ? 'date' : null\" [attr.aria-label]=\"dateLabel(day.value)\" [attr.aria-disabled]=\"readOnly || null\" [tabIndex]=\"day.value === tabbable ? 0 : -1\" [disabled]=\"disabled || day.disabled\" (click)=\"select(day.value)\" (keydown)=\"keydown($event, day.value)\" (blur)=\"touch()\">{{ day.label }}</button></td>}</tr>}</tbody></table><input type=\"hidden\" [name]=\"name\" [value]=\"value\" [disabled]=\"disabled\">${fieldEnd}</div>`})\nexport class HwCalendarComponent extends HwExpandedValueControl<string> implements OnChanges {\n get copy() { return getCalendarLabels(this.locale); }\n get rangeLabel() { return this.copy.range; }\n get rangeDescription() { return `${this.rangeLabel}: \\u2066${UMALQURA_MIN_DATE} – ${UMALQURA_MAX_DATE}\\u2069`; }\n\n override value = ''; protected emptyValue() { return ''; }\n @Input() month = ''; @Input() min = ''; @Input() max = ''; @Input() locale = 'ar-SA'; @Input() calendar: CalendarSystem = 'gregory'; @Input() weekStartsOn = 0; @Input() direction?: Direction; @Input() previousLabel?: string; @Input() nextLabel?: string; @Output() readonly monthChange = new EventEmitter<string>();\n private readonly host: ElementRef<HTMLElement> = inject(ElementRef); focused = '';\n private cachedMonth?: ReturnType<typeof getCalendarMonth>; private cachedMonthKey = '';\n get data() { const options = {month: isDateInRange(this.month) ? this.month : isDateInRange(this.value) ? this.value : undefined, value: isDateInRange(this.value) ? this.value : '', min: this.min || undefined, max: this.max || undefined, locale: this.locale, calendar: this.calendar, weekStartsOn: this.weekStartsOn, fixedWeeks: true}; const key = JSON.stringify(options); if (!this.cachedMonth || key !== this.cachedMonthKey) { this.cachedMonth = getCalendarMonth(options); this.cachedMonthKey = key; } return this.cachedMonth; }\n get weeks() { const days = this.data.days; return Array.from({length: 6}, (_, index) => days.slice(index * 7, index * 7 + 7)); }\n get tabbable() { const days = this.data.days; return days.find(day => day.value === this.focused && !day.disabled)?.value ?? days.find(day => day.selected && !day.disabled)?.value ?? days.find(day => !day.outside && !day.disabled)?.value ?? days.find(day => !day.disabled)?.value ?? ''; }\n ngOnChanges(changes: SimpleChanges) { if (this.value && isDateInRange(this.value)) { this.focused = this.value; if (changes['value'] && !changes['month']) this.month = this.value; } }\n override writeValue(value: string | null) { super.writeValue(value); this.focused = this.value; this.month = this.value; }\n focusSelected() { this.month = this.value || ''; this.focused = this.value; this.changeDetector.detectChanges(); this.host.nativeElement.querySelector<HTMLButtonElement>('.hw-calendar-day[tabindex=\"0\"]')?.focus(); }\n get canPrevious() {\n const first = this.data.days.find(day => !day.outside)?.value;\n return !!first && this.data.previous !== first && (!this.min || moveCalendarDate(first, -1, 'day', 'gregory') >= this.min);\n }\n get canNext() {\n return this.data.next !== this.data.days.find(day => !day.outside)?.value && (!this.max || this.data.next <= this.max);\n }\n private readonly dateLabels = new Map<string, string>(); private readonly monthLabels = new Map<string, string>();\n dateLabel(value: string) {\n if (!isCalendarDateSupported(value, this.calendar)) return value;\n const key = `${this.locale}/${this.calendar}/${value}`; const cached = this.dateLabels.get(key); if (cached) return cached;\n const parts = getCalendarDateParts(value, this.calendar);\n const weekday = new Intl.DateTimeFormat(this.locale, {weekday: 'long', timeZone: 'UTC'}).format(new Date(`${value}T12:00:00Z`));\n const monthKey = `${this.locale}/${this.calendar}/${parts.year}/${parts.month}`; let month = this.monthLabels.get(monthKey);\n if (!month) { month = getCalendarMonth({month: value, locale: this.locale, calendar: this.calendar}).label; if (this.monthLabels.size > 48) this.monthLabels.clear(); this.monthLabels.set(monthKey, month); }\n const label = `${weekday}, ${new Intl.NumberFormat(this.locale, {numberingSystem: 'latn'}).format(parts.day)} ${month}`;\n if (this.dateLabels.size > 100) this.dateLabels.clear(); this.dateLabels.set(key, label); return label;\n }\n navigate(month: string) { if (this.disabled) return; this.month = month; this.focused = ''; this.monthChange.emit(month); }\n select(value: string) { if (this.disabled || this.readOnly || !isDateInRange(value, this.min || undefined, this.max || undefined)) return; this.focused = value; this.month = value; this.update(value); this.touch(); }\n keydown(event: KeyboardEvent, value: string) {\n if (this.disabled || event.altKey || event.ctrlKey || event.metaKey) return;\n const rtl = (this.direction ?? getDirection(this.host.nativeElement)) === 'rtl';\n let next = value;\n try {\n if (event.key === 'ArrowRight') next = moveCalendarDate(value, rtl ? -1 : 1, 'day', this.calendar);\n else if (event.key === 'ArrowLeft') next = moveCalendarDate(value, rtl ? 1 : -1, 'day', this.calendar);\n else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') next = moveCalendarDate(value, event.key === 'ArrowDown' ? 7 : -7, 'day', this.calendar);\n else if (event.key === 'PageDown' || event.key === 'PageUp') next = moveCalendarDate(value, event.key === 'PageDown' ? 1 : -1, event.shiftKey ? 'year' : 'month', this.calendar);\n else if (event.key === 'Home' || event.key === 'End') { const weekday = (new Date(`${value}T12:00:00Z`).getUTCDay() - this.weekStartsOn + 7) % 7; next = moveCalendarDate(value, event.key === 'Home' ? -weekday : 6 - weekday, 'day', this.calendar); }\n else return;\n } catch (error) { if (error instanceof RangeError) { event.preventDefault(); return; } throw error; }\n event.preventDefault();\n if (this.min && next < this.min) next = this.min;\n if (this.max && next > this.max) next = this.max;\n if (!isDateInRange(next, this.min || undefined, this.max || undefined) || !isCalendarDateSupported(next, this.calendar)) return;\n this.focused = next; this.month = next; this.monthChange.emit(next); this.changeDetector.detectChanges();\n this.host.nativeElement.querySelector<HTMLButtonElement>(`[data-date=\"${next}\"]`)?.focus();\n }\n}\n\n@Component({selector: 'hw-date-picker', standalone: true, imports: [HwDialogComponent, HwCalendarComponent], providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwDatePickerComponent), multi: true}, {provide: NG_VALIDATORS, useExisting: forwardRef(() => HwDatePickerComponent), multi: true}], template: `<div class=\"hw-field hw-date-picker\"><label class=\"hw-label\" [for]=\"controlId\">{{ label || copy.date }}</label><div class=\"hw-date-picker-control\"><input #dateInput class=\"hw-input\" type=\"text\" placeholder=\"YYYY-MM-DD\" [id]=\"controlId\" [value]=\"displayedDate\" aria-haspopup=\"dialog\" [attr.aria-controls]=\"controlId + '-dialog'\" [min]=\"min\" [max]=\"max\" [disabled]=\"disabled\" [readOnly]=\"readOnly\" [required]=\"required\" [attr.aria-describedby]=\"dateDescriptionIds\" [attr.aria-invalid]=\"error || validationMessage ? true : null\" (input)=\"edit($any($event.target).value)\" (keydown)=\"inputKeydown($event)\" (focus)=\"beginEditing()\" (blur)=\"endEditing()\"><button #trigger class=\"hw-button hw-date-picker-trigger\" type=\"button\" [disabled]=\"disabled || readOnly\" aria-haspopup=\"dialog\" [attr.aria-expanded]=\"pickerOpen\" [attr.aria-controls]=\"controlId + '-dialog'\" [attr.aria-label]=\"openLabel ?? copy.open\" (click)=\"openCalendar(trigger)\"><span class=\"hw-date-picker-icon\" aria-hidden=\"true\"></span></button></div><input type=\"hidden\" [name]=\"name\" [value]=\"canonicalValue\" [disabled]=\"disabled\"><output class=\"hw-sr-only hw-date-picker-value\" [id]=\"controlId + '-formatted'\" [attr.for]=\"controlId\" [hidden]=\"!formattedDate\" aria-live=\"polite\" aria-atomic=\"true\">{{ formattedDate }}</output><hw-dialog #dialog (openChange)=\"pickerOpen = $event\" [title]=\"dialogTitle || label || copy.choose\" [titleId]=\"controlId + '-dialog-title'\" [closeLabel]=\"closeLabel ?? copy.close\"><div class=\"hw-calendar-options\"><div class=\"hw-calendar-system hw-calendar-switch\" role=\"radiogroup\" [attr.aria-label]=\"calendarLabel ?? copy.system\" [attr.data-calendar]=\"calendar\"><label><input type=\"radio\" [name]=\"controlId + '-calendar-system'\" form=\"\" value=\"gregory\" [checked]=\"calendar === 'gregory'\" [disabled]=\"disabled || readOnly\" (change)=\"switchCalendar('gregory')\"><span>{{ gregorianLabel ?? copy.gregorian }}</span></label><label><input type=\"radio\" [name]=\"controlId + '-calendar-system'\" form=\"\" value=\"islamic-umalqura\" [checked]=\"calendar === 'islamic-umalqura'\" [disabled]=\"disabled || readOnly\" (change)=\"switchCalendar('islamic-umalqura')\"><span>{{ hijriLabel ?? copy.hijri }}</span></label></div></div>@if (unsupportedDate) {<p class=\"hw-sr-only\" role=\"status\">@for (part of unsupportedMessageParts; track $index) {@if (part.date) {<bdi dir=\"ltr\">{{ part.text }}</bdi>} @else { {{ part.text }} }}</p>}<hw-calendar #pickerCalendar [controlId]=\"controlId + '-calendar'\" [label]=\"label\" [value]=\"canonicalValue\" [min]=\"min\" [max]=\"max\" [locale]=\"locale\" [calendar]=\"calendar\" [weekStartsOn]=\"weekStartsOn\" [direction]=\"direction\" [disabled]=\"disabled || readOnly\" [previousLabel]=\"previousLabel\" [nextLabel]=\"nextLabel\" (valueChange)=\"selected($event)\" /></hw-dialog>@if (validationMessage && !error) {<p class=\"hw-error\" [id]=\"controlId + '-date-error'\">@for (part of validationMessageParts; track $index) {@if (part.date) {<bdi dir=\"ltr\">{{ part.text }}</bdi>} @else { {{ part.text }} }}</p>}${fieldEnd}</div>`})\nexport class HwDatePickerComponent extends HwExpandedValueControl<string> implements OnChanges, AfterViewInit, Validator {\n override value = ''; protected emptyValue() { return ''; } @Input() min = ''; @Input() max = ''; @Input() locale = 'ar-SA'; @Input() calendar: CalendarSystem = 'gregory'; @Input() weekStartsOn = 0; @Input() direction?: Direction; @Input() dialogTitle = ''; @Input() openLabel?: string; @Input() closeLabel?: string; @Input() previousLabel?: string; @Input() nextLabel?: string; @ViewChild('dialog') dialog?: HwDialogComponent; @ViewChild('pickerCalendar') pickerCalendar?: HwCalendarComponent; @Input() calendarLabel?: string; @Input() gregorianLabel?: string; @Input() hijriLabel?: string; @Input() unsupportedMessage?: string; @Input() invalidMessage?: string; @Output() readonly calendarChange = new EventEmitter<CalendarSystem>();\n @ViewChild('dateInput') dateInput?: ElementRef<HTMLInputElement>;\n get copy() { return getCalendarLabels(this.locale); }\n draft = ''; pickerOpen = false; editing = false;\n private validatorChanged: () => void = () => {};\n get canonicalValue() { return isDateInRange(this.value) ? this.value : ''; }\n get formattedDate(): string { return this.canonicalValue && isCalendarDateSupported(this.canonicalValue, this.calendar) ? formatCalendarDate(this.canonicalValue, {locale: this.locale, calendar: this.calendar, dateStyle: 'full'}) : ''; }\n get displayedDate(): string { return !this.editing && this.draft && !this.validationMessage && isCalendarDateSupported(this.draft, this.calendar) ? formatCalendarDate(this.draft, {locale: this.locale, calendar: this.calendar, dateStyle: 'medium'}) : this.draft; }\n beginEditing(): void { if (!this.blocked) { this.dateInput!.nativeElement.value = this.draft; this.dateInput!.nativeElement.select(); this.editing = true; } }\n endEditing(): void { this.editing = false; this.touch(); }\n get dateDescriptionIds(): string | null { return [this.descriptionIds, this.formattedDate && `${this.controlId}-formatted`, this.validationMessage && !this.error && `${this.controlId}-date-error`].filter(Boolean).join(' ') || null; }\n private messageParts(message: string) { return message.split(/([0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2})/u).map(text => ({text, date: /^[0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2}$/u.test(text)})); }\n get unsupportedMessageParts() { return this.messageParts(this.unsupportedMessage ?? this.copy.unsupported); }\n get validationMessageParts() { return this.messageParts(this.validationMessage); }\n get unsupportedDate() { return !!this.draft && isDateInRange(this.draft) && this.calendar === 'islamic-umalqura' && !isCalendarDateSupported(this.draft, this.calendar); }\n get validationMessage() {\n if (!this.draft) return '';\n if (!isDateInRange(this.draft)) return this.invalidMessage ?? this.copy.invalid;\n if (this.unsupportedDate) return this.unsupportedMessage ?? this.copy.unsupported;\n return isDateInRange(this.draft, this.min || undefined, this.max || undefined) ? '' : (this.invalidMessage ?? this.copy.invalid);\n }\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.disabled || control.disabled || this.readOnly) return null;\n if (this.required && !this.draft) return {required: true};\n if (this.unsupportedDate) return {calendarUnsupported: {calendar: this.calendar, min: UMALQURA_MIN_DATE, max: UMALQURA_MAX_DATE, actual: this.draft}};\n return this.validationMessage ? {calendarDate: {actual: this.draft, min: this.min, max: this.max}} : null;\n }\n registerOnValidatorChange(fn: () => void): void { this.validatorChanged = fn; }\n private syncValidity(): void {\n this.dateInput?.nativeElement.setCustomValidity(this.disabled ? '' : this.validationMessage);\n this.dialog?.dialog?.nativeElement.setAttribute('id', `${this.controlId}-dialog`);\n this.validatorChanged();\n }\n private get blocked() { return this.disabled || this.readOnly || !this.dateInput || isDisabled(this.dateInput.nativeElement); }\n ngAfterViewInit(): void { this.syncValidity(); }\n edit(value: string): void { if (this.blocked) return; this.draft = value; if (!value || isDateInRange(value)) super.update(value); this.syncValidity(); }\n override update(value: string): void { if (this.disabled || this.readOnly || value && !isDateInRange(value)) return; this.draft = value; super.update(value); this.syncValidity(); }\n inputKeydown(event: KeyboardEvent) { if (!event.defaultPrevented && !event.isComposing && !event.ctrlKey && !event.metaKey && !event.shiftKey && event.key === 'ArrowDown' && !this.blocked) { event.preventDefault(); this.openCalendar(this.dateInput!.nativeElement); } }\n openCalendar(trigger: HTMLElement) { if (this.blocked) return; this.dialog?.show(trigger); this.pickerCalendar?.focusSelected(); }\n switchCalendar(calendar: CalendarSystem) { if (this.blocked) return; this.calendar = calendar; this.syncValidity(); this.calendarChange.emit(calendar); this.changeDetector.markForCheck(); }\n selected(value: string) { if (this.blocked) return; this.update(value); this.touch(); this.dialog?.close(); }\n ngOnChanges(changes: SimpleChanges) { if (changes['value']) this.draft = this.value; if (this.disabled || this.readOnly) this.dialog?.close(); this.syncValidity(); }\n override setDisabledState(disabled: boolean) { super.setDisabledState(disabled); if (disabled) this.dialog?.close(); this.syncValidity(); }\n override writeValue(value: string | null) { super.writeValue(value); this.draft = this.value; if (!value) this.dialog?.close(); this.syncValidity(); }\n}\n\n@Component({selector: 'hw-file-dropzone', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwFileDropzoneComponent), multi: true}], template: `<div class=\"hw-field hw-file-dropzone\" [attr.data-dragging]=\"dragging\" [attr.aria-disabled]=\"disabled\" (dragover)=\"dragover($event)\" (dragleave)=\"dragging = false\" (drop)=\"drop($event)\"><label class=\"hw-label\" [for]=\"controlId\">{{ label }}</label><p>{{ instruction }}</p><input #input class=\"hw-input\" type=\"file\" [id]=\"controlId\" [name]=\"name\" [accept]=\"accept\" [multiple]=\"multiple\" [disabled]=\"disabled || readOnly\" [required]=\"required\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\" (change)=\"selected($event)\" (blur)=\"touch()\"><ul>@for (file of value; track $index) {<li>{{ file.name }} ({{ file.size }})</li>}</ul><p class=\"hw-sr-only\" role=\"status\">{{ value.length ? selectedMessage(value.length) : '' }}</p>${fieldEnd}</div>`})\nexport class HwFileDropzoneComponent extends HwExpandedValueControl<File[]> {\n override value: File[] = []; protected emptyValue() { return []; } @Input() accept = ''; @Input({transform: booleanAttribute}) multiple = false; @Input() instruction = 'Drop files here or choose files'; @Input() selectedMessage = (count: number) => `${count} files selected`; @Output() readonly rejected = new EventEmitter<readonly File[]>(); @ViewChild('input') input?: ElementRef<HTMLInputElement>; dragging = false;\n private accepts(file: File) { return !this.accept || this.accept.split(',').some(rule => { const part = rule.trim().toLowerCase(); return part.startsWith('.') ? file.name.toLowerCase().endsWith(part) : part.endsWith('/*') ? file.type.startsWith(part.slice(0, -1)) : file.type === part; }); }\n private get unavailable() { return this.disabled || this.readOnly || !this.input || isDisabled(this.input.nativeElement); }\n private commit(files: File[]) {\n if (this.unavailable) return;\n const accepted = files.filter(file => this.accepts(file)); const selected = this.multiple ? accepted : accepted.slice(0, 1); const rejected = files.filter(file => !selected.includes(file)); if (rejected.length) this.rejected.emit(rejected);\n if (this.input && typeof DataTransfer !== 'undefined') { const transfer = new DataTransfer(); selected.forEach(file => transfer.items.add(file)); this.input.nativeElement.files = transfer.files; }\n else if (this.input && rejected.length) { this.input.nativeElement.value = ''; this.update([]); return; }\n this.update(selected); this.touch();\n }\n selected(event: Event) { this.commit(Array.from((event.target as HTMLInputElement).files ?? [])); }\n dragover(event: DragEvent) { event.preventDefault(); if (!this.unavailable) this.dragging = true; }\n drop(event: DragEvent) { event.preventDefault(); this.dragging = false; if (event.dataTransfer) this.commit(Array.from(event.dataTransfer.files)); }\n override writeValue(value: File[] | null) { super.writeValue(value); if (!this.value.length && this.input) this.input.nativeElement.value = ''; }\n}\n","import { booleanAttribute, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostListener, inject, Input, Output, signal, TemplateRef, ViewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getDirection, getNextEnabledIndex, observeReadonlyChoice, prepareToastDismissFocus, type Direction, type Option } from '@hawiyah/core';\nimport { HwExpandedValueControl } from './advanced-controls';\nimport { HwDialogComponent } from './overlays';\n\nlet nextId = 0;\n@Component({selector: 'hw-toggle-group', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwToggleGroupComponent), multi: true}], template: `<fieldset #group class=\"hw-toggle-group\" [disabled]=\"disabled\" [attr.data-hw-readonly]=\"readOnly || null\" [attr.data-variant]=\"variant\" [attr.aria-describedby]=\"descriptionIds\" [attr.aria-invalid]=\"error ? true : null\"><legend class=\"hw-label\">{{ label }}</legend>@for (option of options; track option.value) {@if (multiple) {<button type=\"button\" class=\"hw-button\" [disabled]=\"disabled || option.disabled\" [attr.aria-disabled]=\"readOnly || null\" [attr.aria-pressed]=\"selected(option.value)\" (click)=\"toggle(option)\" (blur)=\"touch()\">{{ option.label }}</button>} @else {<label><input type=\"radio\" [name]=\"name || controlId\" [value]=\"option.value\" [checked]=\"selected(option.value)\" [readOnly]=\"readOnly\" [disabled]=\"disabled || option.disabled\" [attr.aria-disabled]=\"readOnly || null\" [required]=\"required\" (change)=\"toggle(option)\" (blur)=\"touch()\"><span>{{ option.label }}</span></label>}}@if (hint) {<p class=\"hw-hint\" [id]=\"controlId + '-hint'\">{{ hint }}</p>}@if (error) {<p class=\"hw-error\" [id]=\"controlId + '-error'\">{{ error }}</p>}</fieldset>@if (multiple) {@for (selected of submittedValues; track selected) {<input type=\"hidden\" [name]=\"name\" [value]=\"selected\" [disabled]=\"disabled\">}}`})\nexport class HwToggleGroupComponent extends HwExpandedValueControl<string | string[]> {\n override value: string | string[] = ''; @Input() options: readonly Option[] = []; @Input({transform: booleanAttribute}) multiple = false; @Input() variant: 'segmented' | 'outline' = 'segmented'; protected emptyValue() { return this.multiple ? [] : ''; }\n get selectedValues() { return Array.isArray(this.value) ? this.value : this.value ? [this.value] : []; }\n @ViewChild('group') group?: ElementRef<HTMLFieldSetElement>;\n private guarded: HTMLInputElement[]=[]; private guards: ReturnType<typeof observeReadonlyChoice>[]=[];\n ngAfterViewChecked() { const inputs=Array.from(this.group?.nativeElement.querySelectorAll<HTMLInputElement>('input[type=\"radio\"]') ?? []); if(inputs.length!==this.guarded.length || inputs.some((input,index)=>input!==this.guarded[index])) {this.guards.forEach(guard=>guard.destroy());this.guarded=inputs;this.guards=inputs.map(observeReadonlyChoice);} else this.guards.forEach(guard=>guard.refresh()); }\n ngOnDestroy(){this.guards.forEach(guard=>guard.destroy());}\n get submittedValues(){return this.selectedValues.filter(value=>this.options.some(option=>option.value===value && !option.disabled));}\n selected(value: string) { return this.selectedValues.includes(value); }\n toggle(option: Option) { if (option.disabled) return; this.update(this.multiple ? this.selected(option.value) ? this.selectedValues.filter(value => value !== option.value) : [...this.selectedValues, option.value] : option.value); }\n}\n\n@Component({selector: 'hw-popover', standalone: true, template: `<div class=\"hw-popover\"><button #trigger class=\"hw-button\" type=\"button\" [disabled]=\"disabled\" [attr.aria-expanded]=\"open\" [attr.aria-controls]=\"id\" (click)=\"toggle()\">{{ triggerLabel }}</button><div #panel class=\"hw-popover-panel\" role=\"region\" [id]=\"id\" [attr.aria-label]=\"label\" [hidden]=\"!open\"><ng-content /></div></div>`})\nexport class HwPopoverComponent {\n @Input() id = `hw-popover-${++nextId}`; @Input({required: true}) label = ''; @Input() triggerLabel = 'Open'; @Input({transform: booleanAttribute}) disabled = false; @Input({transform: booleanAttribute}) open = false; @Output() readonly openChange = new EventEmitter<boolean>(); @ViewChild('trigger') trigger?: ElementRef<HTMLButtonElement>; @ViewChild('panel') panel?: ElementRef<HTMLElement>;\n protected readonly host: ElementRef<HTMLElement> = inject(ElementRef); protected readonly changeDetector = inject(ChangeDetectorRef);\n ngOnChanges() { if (this.disabled) this.close(); }\n toggle() { if (this.open) this.close(); else this.show(); }\n show() { if (this.disabled) return; this.open = true; this.openChange.emit(true); }\n close(restore = false) { if (!this.open) return; this.open = false; this.openChange.emit(false); if (restore) this.trigger?.nativeElement.focus(); }\n @HostListener('document:pointerdown', ['$event']) outside(event: Event) { if (!this.host.nativeElement.contains(event.target as Node)) this.close(); }\n @HostListener('document:keydown.escape', ['$event']) escape(event: Event) { if (this.open && this.host.nativeElement.contains(event.target as Node)) { event.preventDefault(); event.stopPropagation(); this.close(true); } }\n}\n\nexport interface HwMenuItem { id: string; label: string; disabled?: boolean; }\n@Component({selector: 'hw-menu', standalone: true, template: `<div class=\"hw-menu\"><button #trigger type=\"button\" class=\"hw-button\" aria-haspopup=\"menu\" [disabled]=\"disabled\" [attr.aria-expanded]=\"open\" [attr.aria-controls]=\"id\" (click)=\"toggle()\" (keydown)=\"triggerKey($event)\">{{ triggerLabel }}</button><div #panel class=\"hw-menu-panel\" role=\"menu\" [id]=\"id\" [attr.aria-label]=\"label\" [hidden]=\"!open\" (keydown)=\"keydown($event)\">@for (item of items; track item.id; let index = $index) {<button type=\"button\" role=\"menuitem\" class=\"hw-menu-item\" [disabled]=\"item.disabled\" [tabIndex]=\"index === active ? 0 : -1\" (focus)=\"active = index\" (click)=\"choose(item)\">{{ item.label }}</button>}</div></div>`})\nexport class HwMenuComponent extends HwPopoverComponent {\n @Input() items: readonly HwMenuItem[] = []; @Output() readonly action = new EventEmitter<string>(); active = -1;\n override show() { if (this.disabled) return; super.show(); this.active = getNextEnabledIndex(-1, 'Home', this.items, 'ltr', 'vertical'); this.focusActive(); }\n private focusActive() { this.changeDetector.detectChanges(); this.panel?.nativeElement.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]')[this.active]?.focus(); }\n triggerKey(event: KeyboardEvent) { if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); this.show(); if (event.key === 'ArrowUp') { this.active = getNextEnabledIndex(-1, 'End', this.items, 'ltr', 'vertical'); this.focusActive(); } } }\n keydown(event: KeyboardEvent) {\n if (event.altKey || event.ctrlKey || event.metaKey) return;\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) { event.preventDefault(); this.active = getNextEnabledIndex(this.active, event.key, this.items, 'ltr', 'vertical'); this.focusActive(); }\n else if (event.key === 'Escape') { event.preventDefault(); event.stopPropagation(); this.close(true); }\n else if (event.key === 'Tab') this.close();\n }\n choose(item: HwMenuItem) { if (this.disabled || item.disabled) return; this.action.emit(item.id); this.close(true); }\n}\n\n@Component({selector: 'hw-drawer', standalone: true, template: `<dialog #dialog class=\"hw-dialog hw-drawer\" [attr.data-side]=\"side\" [attr.aria-labelledby]=\"titleId\" (close)=\"closed()\" (cancel)=\"cancelledBackdrop()\" (pointerdown)=\"backdropStart($event)\" (pointercancel)=\"resetBackdrop()\" (click)=\"backdrop($event)\"><header class=\"hw-dialog-header\"><h2 [id]=\"titleId\">{{ title }}</h2><button type=\"button\" class=\"hw-button\" data-variant=\"ghost\" [attr.aria-label]=\"closeLabel\" (click)=\"close()\">×</button></header><div class=\"hw-dialog-body\"><ng-content /></div><footer class=\"hw-dialog-footer\"><ng-content select=\"[hwDrawerFooter]\" /></footer></dialog>`})\nexport class HwDrawerComponent extends HwDialogComponent { @Input() side: 'start' | 'end' | 'bottom' = 'end'; }\n\nexport interface HwToast { id: string; title?: string; message: string; tone?: 'neutral' | 'info' | 'success' | 'warning' | 'danger'; urgent?: boolean; dismissible?: boolean; }\n// Angular output subscriptions are independent of component inputs. Notify the\n// template when their presence changes, including an imperative unsubscription.\nclass ToastDismissEmitter extends EventEmitter<string> {\n constructor(private readonly changed: (observed: boolean) => void) { super(); }\n override subscribe(...args: Parameters<EventEmitter<string>['subscribe']>) {\n const subscription = super.subscribe(...args);\n this.changed(this.observed);\n subscription.add(() => this.changed(this.observed));\n return subscription;\n }\n}\n@Component({selector: 'hw-toast-region', standalone: true, template: `\n <section #region class=\"hw-toast-region\" tabindex=\"-1\" [attr.data-variant]=\"variant\" [attr.data-position]=\"position || null\" [attr.aria-label]=\"label\">\n @for (group of groups; track group) {\n <div [attr.role]=\"group === 'polite' ? 'status' : 'alert'\" [attr.aria-live]=\"group\" [attr.data-hw-live]=\"group\" aria-relevant=\"additions text\">\n @for (toast of group === 'polite' ? polite : urgent; track toast.id) {\n <article class=\"hw-toast\" [attr.data-hw-toast]=\"toast.id\" [attr.data-tone]=\"toast.tone || 'info'\">\n @if (variant === 'banner') {<span class=\"hw-toast-icon\" aria-hidden=\"true\"></span>}\n <div class=\"hw-toast-content\">@if (toast.title) {<strong>{{toast.title}}</strong>}<p>{{toast.message}}</p></div>\n @if (toast.dismissible !== false && hasDismissListener()) {\n <button type=\"button\" class=\"hw-button hw-toast-dismiss\" data-variant=\"ghost\" data-hw-dismiss [attr.aria-label]=\"dismissLabel + ': ' + (toast.title || toast.message)\" (click)=\"requestDismiss(toast, $event)\">×</button>\n }\n </article>\n }\n </div>\n }\n </section>`})\nexport class HwToastRegionComponent {\n @Input() variant: 'default' | 'inline' | 'banner' = 'default';\n @Input() position?: 'inline' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n @Input() label = 'الإشعارات';\n @Input() messages: readonly HwToast[] = [];\n @Input() dismissLabel = 'إغلاق الإشعار';\n protected readonly hasDismissListener = signal(false);\n @Output() readonly dismissed: EventEmitter<string> = new ToastDismissEmitter(observed => this.hasDismissListener.set(observed));\n @ViewChild('region') private region?: ElementRef<HTMLElement>;\n readonly groups = ['polite', 'assertive'] as const;\n private pending?: () => void;\n get polite() { return this.messages.filter(message => !message.urgent); }\n get urgent() { return this.messages.filter(message => message.urgent); }\n requestDismiss(toast: HwToast, event: Event) {\n if (toast.dismissible === false || !this.dismissed.observed) return;\n const notice = (event.currentTarget as HTMLElement).closest<HTMLElement>('[data-hw-toast]');\n if (notice && this.region) this.pending = prepareToastDismissFocus(this.region.nativeElement, notice);\n this.dismissed.emit(toast.id);\n }\n ngAfterViewChecked() { this.pending?.(); this.pending = undefined; }\n}\n\n@Component({selector: 'hw-collapsible', standalone: true, template: `<details class=\"hw-collapsible\" [open]=\"open\" (toggle)=\"toggled($event)\"><summary class=\"hw-collapsible-trigger\">{{ label }}</summary><div class=\"hw-collapsible-content\"><ng-content /></div></details>`})\nexport class HwCollapsibleComponent { @Input({required: true}) label = ''; @Input({transform: booleanAttribute}) open = false; @Output() readonly openChange = new EventEmitter<boolean>(); toggled(event: Event) { const open = (event.target as HTMLDetailsElement).open; if (this.open !== open) { this.open = open; this.openChange.emit(open); } } }\n\nexport interface HwTreeNode { id: string; label: string; disabled?: boolean; children?: readonly HwTreeNode[]; }\ninterface HwVisibleTreeNode { node: HwTreeNode; level: number; parent?: string; position: number; total: number; disabled?: boolean; }\n@Component({selector: 'hw-tree-view', standalone: true, providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => HwTreeViewComponent), multi: true}], template: `<ul class=\"hw-tree-view\" role=\"tree\" [attr.aria-label]=\"label\" [attr.aria-disabled]=\"disabled\" [attr.aria-describedby]=\"descriptionIds\" [attr.dir]=\"direction || null\">@for (entry of visible; track entry.node.id) {<li role=\"treeitem\" class=\"hw-tree-item\" [attr.data-node]=\"entry.node.id\" [attr.aria-level]=\"entry.level\" [attr.aria-posinset]=\"entry.position\" [attr.aria-setsize]=\"entry.total\" [attr.aria-expanded]=\"entry.node.children?.length ? isExpanded(entry.node.id) : null\" [attr.aria-selected]=\"value === entry.node.id\" [attr.aria-disabled]=\"disabled || entry.node.disabled || null\" [style.padding-inline-start]=\"(entry.level - 1) + 'rem'\" [tabIndex]=\"!disabled && !entry.node.disabled && focusId === entry.node.id ? 0 : -1\" (focus)=\"focused = entry.node.id\" (click)=\"select(entry.node)\" (keydown)=\"keydown($event, entry)\" (blur)=\"touch()\">@if (entry.node.children?.length) {<span class=\"hw-tree-toggle\" aria-hidden=\"true\" (click)=\"$event.stopPropagation(); toggleNode(entry.node)\">{{ isExpanded(entry.node.id) ? '−' : '+' }}</span>}<span>{{ entry.node.label }}</span></li>}</ul><input type=\"hidden\" [name]=\"name\" [value]=\"value\" [disabled]=\"disabled\">@if (hint) {<p class=\"hw-hint\" [id]=\"controlId + '-hint'\">{{ hint }}</p>}@if (error) {<p class=\"hw-error\" [id]=\"controlId + '-error'\">{{ error }}</p>}`})\nexport class HwTreeViewComponent extends HwExpandedValueControl<string> {\n override value = ''; protected emptyValue() { return ''; } @Input() nodes: readonly HwTreeNode[] = []; @Input() expandedIds: readonly string[] = []; @Input() direction?: Direction; @Output() readonly expandedIdsChange = new EventEmitter<readonly string[]>(); private readonly host: ElementRef<HTMLElement> = inject(ElementRef); focused = '';\n get visible(): HwVisibleTreeNode[] { const entries: HwVisibleTreeNode[] = []; const visit = (nodes: readonly HwTreeNode[], level: number, parent?: string) => nodes.forEach((node, index) => { entries.push({node, level, parent, position: index + 1, total: nodes.length, disabled: node.disabled}); if (node.children && this.isExpanded(node.id)) visit(node.children, level + 1, node.id); }); visit(this.nodes, 1); return entries; }\n get focusId() { const entries = this.visible; return entries.find(entry => entry.node.id === this.focused && !entry.node.disabled)?.node.id ?? entries.find(entry => entry.node.id === this.value && !entry.node.disabled)?.node.id ?? entries.find(entry => !entry.node.disabled)?.node.id ?? ''; }\n isExpanded(id: string) { return this.expandedIds.includes(id); }\n toggleNode(node: HwTreeNode) { if (this.disabled || node.disabled || !node.children?.length) return; this.expandedIds = this.isExpanded(node.id) ? this.expandedIds.filter(id => id !== node.id) : [...this.expandedIds, node.id]; this.expandedIdsChange.emit(this.expandedIds); this.focus(node.id); }\n select(node: HwTreeNode) { if (!this.disabled && !node.disabled) { this.focused = node.id; this.update(node.id); } }\n private focus(id: string) { this.focused = id; this.changeDetector.detectChanges(); Array.from(this.host.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]')).find(element => element.dataset['node'] === id)?.focus(); }\n keydown(event: KeyboardEvent, entry: HwVisibleTreeNode) {\n if (this.disabled || entry.node.disabled || event.altKey || event.ctrlKey || event.metaKey) return;\n const entries = this.visible; const index = entries.findIndex(item => item.node.id === entry.node.id); const rtl = (this.direction ?? getDirection(this.host.nativeElement)) === 'rtl';\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) { event.preventDefault(); const next = getNextEnabledIndex(index, event.key, entries, 'ltr', 'vertical'); if (entries[next]) this.focus(entries[next]!.node.id); }\n else if (event.key === (rtl ? 'ArrowLeft' : 'ArrowRight')) { event.preventDefault(); if (entry.node.children?.length) { if (!this.isExpanded(entry.node.id)) this.toggleNode(entry.node); else { const child = entries.slice(index + 1).find(item => item.parent === entry.node.id && !item.node.disabled); if (child) this.focus(child.node.id); } } }\n else if (event.key === (rtl ? 'ArrowRight' : 'ArrowLeft')) { event.preventDefault(); if (this.isExpanded(entry.node.id)) this.toggleNode(entry.node); else if (entry.parent) { const parent = entries.find(item => item.node.id === entry.parent); if (parent && !parent.node.disabled) this.focus(parent.node.id); } }\n else if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); this.select(entry.node); }\n }\n}\n\nexport interface HwSlide { id?: string; title?: string; content?: string; src?: string; alt?: string; }\n@Component({selector: 'hw-carousel', standalone: true, imports: [NgTemplateOutlet], styles: [':host { display: block; min-inline-size: 0; max-inline-size: 100%; }'], template: `\n <section class=\"hw-carousel\" data-hw-carousel-ready [style.--hw-carousel-index]=\"indexValue\" role=\"region\" [attr.aria-label]=\"label\" [attr.aria-roledescription]=\"carouselDescription\">\n <div class=\"hw-carousel-viewport hw-carousel-slides\"><div class=\"hw-carousel-track\">\n @for (slide of slides; track slide.id || $index; let index = $index) {\n <div class=\"hw-carousel-slide\" role=\"group\" [attr.aria-roledescription]=\"slideDescription\" [attr.aria-label]=\"slideLabel(index + 1, slides.length)\" [hidden]=\"index !== indexValue\" [inert]=\"index !== indexValue\" [attr.aria-hidden]=\"index !== indexValue ? 'true' : null\">\n @if (slideTemplate) {<ng-container [ngTemplateOutlet]=\"slideTemplate\" [ngTemplateOutletContext]=\"{$implicit: slide, index: index}\" />} @else {\n @if (slide.src) {<img [src]=\"slide.src\" [alt]=\"slide.alt || ''\">}@if (slide.title) {<h3>{{ slide.title }}</h3>}@if (slide.content) {<p>{{ slide.content }}</p>}\n }\n </div>\n }\n </div>@if (!slides.length) {<p class=\"hw-carousel-empty\">{{ emptyLabel }}</p>}</div>\n <div class=\"hw-carousel-controls\">\n @if (showIndicators && slides.length) {<div class=\"hw-carousel-pagination\" role=\"group\" [attr.aria-label]=\"indicatorsLabel\">@for (slide of slides; track slide.id || $index; let index = $index) {<button class=\"hw-carousel-dot\" type=\"button\" [attr.aria-label]=\"slideLabel(index + 1, slides.length)\" [attr.aria-current]=\"index === indexValue ? 'true' : null\" (click)=\"select(index)\"></button>}</div>}\n <div class=\"hw-carousel-arrows\"><button class=\"hw-button hw-carousel-arrow\" type=\"button\" data-hw-previous [attr.aria-label]=\"previousLabel\" [disabled]=\"slides.length < 2 || (!loop && indexValue === 0)\" (click)=\"move(-1)\"></button><button class=\"hw-button hw-carousel-arrow\" type=\"button\" data-hw-next [attr.aria-label]=\"nextLabel\" [disabled]=\"slides.length < 2 || (!loop && indexValue === slides.length - 1)\" (click)=\"move(1)\"></button></div>\n <span class=\"hw-carousel-status hw-sr-only\" role=\"status\" aria-live=\"polite\">{{ slides.length ? slideLabel(indexValue + 1, slides.length) : emptyLabel }}</span>\n </div>\n </section>`})\nexport class HwCarouselComponent {\n @Input({required: true}) label = '';\n @Input() slides: readonly HwSlide[] = [];\n @Input() slideTemplate?: TemplateRef<{$implicit: HwSlide; index: number}>;\n @Input() current = 0;\n @Input({transform: booleanAttribute}) loop = false;\n @Input({transform: booleanAttribute}) showIndicators = true;\n @Input() indicatorsLabel = 'اختيار الشريحة';\n @Input() previousLabel = 'الشريحة السابقة';\n @Input() nextLabel = 'الشريحة التالية';\n @Input() emptyLabel = 'لا توجد شرائح';\n @Input() carouselDescription = 'عرض شرائح';\n @Input() slideDescription = 'شريحة';\n @Input() slideLabel = (current: number, total: number) => `${current} من ${total}`;\n @Output() readonly currentChange = new EventEmitter<number>();\n get indexValue() { return Math.max(0, Math.min(this.slides.length - 1, Number.isFinite(this.current) ? Math.floor(this.current) : 0)); }\n select(requested: number) {\n const total = this.slides.length;\n if (!total || !Number.isFinite(requested)) return;\n const rounded = Math.floor(requested);\n const next = this.loop ? ((rounded % total) + total) % total : Math.max(0, Math.min(total - 1, rounded));\n if (next === this.indexValue) return;\n this.current = next; this.currentChange.emit(next);\n }\n move(amount: number) { this.select(this.indexValue + amount); }\n}\n","import { booleanAttribute, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, inject } from '@angular/core';\nimport { sortRows } from '@hawiyah/core';\nimport { HwAvatarComponent } from './presentation';\n\nexport interface HwLinkItem { label: string; href: string; current?: boolean; }\nexport interface HwDescription { term: string; description: string; }\nexport interface HwNotification { id: string; title: string; description?: string; time?: string; href?: string; unread?: boolean; }\nexport interface HwDataColumn { key: string; label: string; sortable?: boolean; rowHeader?: boolean; }\nexport type HwDataRow = Record<string, string | number | boolean | null | undefined>;\nlet nextPortalId = 0;\n\n@Component({selector: 'hw-link', standalone: true, template: `<a class=\"hw-link\" [attr.href]=\"disabled ? null : href\" [attr.role]=\"disabled ? 'link' : null\" [attr.aria-disabled]=\"disabled || null\" [attr.tabindex]=\"disabled ? -1 : null\" (click)=\"guard($event)\" (auxclick)=\"guard($event)\" [attr.target]=\"target || null\" [attr.rel]=\"rel || (target === '_blank' ? 'noopener noreferrer' : null)\" [attr.aria-current]=\"current ? 'page' : null\" [attr.data-variant]=\"variant\"><ng-content /></a>`})\nexport class HwLinkComponent {\n @Input({required: true}) href = ''; @Input() target = ''; @Input() rel = ''; @Input() variant: 'default' | 'subtle' | 'neutral' | 'standalone' = 'default'; @Input({transform: booleanAttribute}) current = false;\n @Input({transform: booleanAttribute}) disabled = false;\n guard(event:MouseEvent){if(this.disabled){event.preventDefault();event.stopPropagation();}}\n}\n@Component({selector: 'hw-icon-button', standalone: true, template: `<button #button class=\"hw-button hw-icon-button\" [type]=\"type\" [disabled]=\"disabled || loading\" [attr.form]=\"form\" [attr.name]=\"name || null\" [value]=\"value\" [attr.aria-label]=\"label\" [attr.aria-pressed]=\"pressed\" [attr.aria-busy]=\"loading || null\" [attr.aria-controls]=\"controls || null\" [attr.aria-expanded]=\"expanded\" [attr.aria-describedby]=\"describedBy || null\" [attr.aria-haspopup]=\"hasPopup || null\" [attr.data-variant]=\"variant\" [attr.data-size]=\"size\" [attr.data-shape]=\"shape\" (click)=\"activated.emit($event)\"><span aria-hidden=\"true\"><ng-content /></span></button>`})\nexport class HwIconButtonComponent {\n @Input({required: true}) label = ''; @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input({transform: booleanAttribute}) disabled = false; @Input({transform: booleanAttribute}) loading = false;\n @Input() pressed: boolean | null = null; @Input() variant = 'ghost'; @Input() size = 'md'; @Input() shape: 'square' | 'circle' = 'square';\n @Input() form?: string | null; @Input() name = ''; @Input() value = ''; @Input() controls = ''; @Input() describedBy = '';\n @Input({transform: (value: unknown) => value == null ? null : booleanAttribute(value)}) expanded: boolean | null = null; @Input() hasPopup: 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null = null;\n @Output() readonly activated = new EventEmitter<MouseEvent>(); @ViewChild('button') button?: ElementRef<HTMLButtonElement>;\n focus() { this.button?.nativeElement.focus(); }\n}\n@Component({selector: 'hw-button-group', standalone: true, template: `<div class=\"hw-button-group\" role=\"group\" [attr.aria-label]=\"label\" [attr.data-orientation]=\"orientation\" [attr.data-variant]=\"variant\"><ng-content /></div>`})\nexport class HwButtonGroupComponent { @Input({required: true}) label = ''; @Input() variant: 'default' | 'attached' = 'default'; @Input() orientation: 'horizontal' | 'vertical' = 'horizontal'; }\n@Component({selector: 'hw-chip', standalone: true, template: `<span class=\"hw-chip\" [attr.data-tone]=\"tone\" [attr.data-variant]=\"variant\"><ng-content />@if (removable) {<button type=\"button\" [disabled]=\"disabled\" [attr.aria-label]=\"removeLabel\" (click)=\"removed.emit()\">×</button>}</span>`})\nexport class HwChipComponent { @Input() tone = 'neutral'; @Input() variant = 'soft'; @Input({transform: booleanAttribute}) removable = false; @Input({transform: booleanAttribute}) disabled = false; @Input() removeLabel = 'Remove'; @Output() readonly removed = new EventEmitter<void>(); }\n@Component({selector: 'hw-description-list', standalone: true, template: `<dl class=\"hw-description-list\" [attr.data-variant]=\"variant\">@for (item of items; track $index) {<div><dt>{{ item.term }}</dt><dd>{{ item.description }}</dd></div>}<ng-content /></dl>`})\nexport class HwDescriptionListComponent { @Input() items: readonly HwDescription[] = []; @Input() variant: 'stacked' | 'horizontal' = 'stacked'; }\n@Component({selector: 'hw-stat', standalone: true, template: `<div class=\"hw-stat\" [attr.data-tone]=\"tone\"><div class=\"hw-stat-label\">{{ label }}</div><strong class=\"hw-stat-value\">{{ value }}</strong>@if (description) {<p class=\"hw-stat-description\">{{ description }}</p>}<ng-content /></div>`})\nexport class HwStatComponent { @Input({required: true}) label = ''; @Input() value: string | number = ''; @Input() description = ''; @Input() tone = 'neutral'; }\n@Component({selector: 'hw-timeline', standalone: true, template: `<ol class=\"hw-timeline\" [attr.aria-label]=\"label\">@for (item of items; track $index) {<li class=\"hw-timeline-item\" [attr.data-state]=\"item.state || null\" [attr.aria-current]=\"item.state === 'current' ? 'step' : null\">@if (item.time) {<time [attr.datetime]=\"item.dateTime || null\">{{ item.time }}</time>}<h3>{{ item.title }}</h3>@if (item.description) {<p>{{ item.description }}</p>}</li>}</ol>`})\nexport class HwTimelineComponent { @Input() label = 'Timeline'; @Input() items: readonly {title: string; description?: string; time?: string; dateTime?: string; state?: 'complete' | 'current' | 'pending'}[] = []; }\n@Component({selector: 'hw-meter', standalone: true, template: `<label class=\"hw-meter\"><span>{{ label }}</span><meter [value]=\"value\" [min]=\"min\" [max]=\"max\" [low]=\"low\" [high]=\"high\" [optimum]=\"optimum\">{{ value }}</meter></label>`})\nexport class HwMeterComponent { @Input({required: true}) label = ''; @Input() value = 0; @Input() min = 0; @Input() max = 100; @Input() low = 25; @Input() high = 75; @Input() optimum = 100; }\n@Component({selector: 'hw-avatar-group', standalone: true, imports: [HwAvatarComponent], template: `<div class=\"hw-avatar-group\" role=\"group\" [attr.aria-label]=\"label\">@for (avatar of visibleAvatars; track $index) {<hw-avatar [name]=\"avatar.name\" [src]=\"avatar.src || ''\" />}@if (remaining > 0) {<span class=\"hw-avatar\" role=\"img\" [attr.aria-label]=\"overflowLabel(remaining)\">+{{ remaining }}</span>}</div>`})\nexport class HwAvatarGroupComponent { @Input() label = 'People'; @Input() avatars: readonly {name: string; src?: string}[] = []; @Input() max = 5; @Input() overflowLabel = (count: number) => `${count} more people`; get visibleAvatars() {\n const rounded = Math.floor(this.max);\n return this.avatars.slice(0, Number.isNaN(rounded) ? 5 : Math.max(0, rounded));\n } get remaining() { return this.avatars.length - this.visibleAvatars.length; } }\n@Component({selector: 'hw-data-table', standalone: true, styles: [':host { display: block; min-inline-size: 0; max-inline-size: 100%; }'], template: `<div class=\"hw-table-wrap hw-data-table\" tabindex=\"0\" role=\"region\" [attr.aria-label]=\"caption\"><table class=\"hw-table\" [attr.data-variant]=\"variant\" [attr.data-size]=\"size\"><caption>{{ caption }}</caption><thead><tr>@for (column of columns; track column.key) {<th scope=\"col\" [attr.aria-sort]=\"sortKey === column.key ? sortDirection : (column.sortable ? 'none' : null)\">@if (column.sortable) {<button type=\"button\" (click)=\"sort(column.key)\">{{ column.label }}<span aria-hidden=\"true\">{{ sortKey === column.key ? (sortDirection === 'ascending' ? ' ↑' : ' ↓') : ' ↕' }}</span></button>} @else { {{ column.label }} }</th>}</tr></thead><tbody>@for (row of sortedRows; track $index) {<tr>@for (column of columns; track column.key) {@if (column.rowHeader) {<th scope=\"row\">{{ row[column.key] }}</th>} @else {<td>{{ row[column.key] }}</td>}}</tr>} @empty {<tr><td [attr.colspan]=\"columns.length || 1\">{{ emptyMessage }}</td></tr>}</tbody></table></div>`})\nexport class HwDataTableComponent {\n @Input({required: true}) caption = ''; @Input() columns: readonly HwDataColumn[] = []; @Input() rows: readonly HwDataRow[] = []; @Input() locale = 'ar-SA'; @Input() emptyMessage = 'لا توجد نتائج'; @Input() sortKey = ''; @Input() sortDirection: 'ascending' | 'descending' = 'ascending'; @Output() readonly sortChange = new EventEmitter<{key: string; direction: 'ascending' | 'descending'}>();\n @Input() variant?: 'default' | 'striped' | 'bordered';\n @Input() size?: 'sm' | 'md' | 'lg';\n get sortedRows(): readonly HwDataRow[] { return this.sortKey ? sortRows(this.rows, this.sortKey, this.sortDirection, this.locale) : this.rows; }\n sort(key: string): void { this.sortDirection = this.sortKey === key && this.sortDirection === 'ascending' ? 'descending' : 'ascending'; this.sortKey = key; this.sortChange.emit({key, direction: this.sortDirection}); }\n}\n\n@Component({selector: 'hw-service-card', standalone: true, template: `<article class=\"hw-card hw-service-card\" [attr.data-variant]=\"variant\"><div class=\"hw-service-card-icon\" aria-hidden=\"true\"><ng-content select=\"[hwServiceIcon]\" /></div>@if (category) {<p class=\"hw-badge\">{{ category }}</p>}<h3><a class=\"hw-link\" [href]=\"href\">{{ title }}</a></h3><p>{{ description }}</p><div class=\"hw-service-card-meta\">@if (duration) {<span>{{ duration }}</span>}@if (fee) {<span>{{ fee }}</span>}</div><ng-content /><a class=\"hw-button\" data-variant=\"secondary\" [href]=\"href\">{{ actionLabel }}<span class=\"hw-sr-only\">: {{ title }}</span></a></article>`})\nexport class HwServiceCardComponent { @Input({required: true}) title = ''; @Input({required: true}) href = ''; @Input() description = ''; @Input() category = ''; @Input() duration = ''; @Input() fee = ''; @Input() actionLabel = 'View service'; @Input() variant = 'default'; }\n@Component({selector: 'hw-service-details', standalone: true, imports: [HwDescriptionListComponent], template: `<section class=\"hw-service-details\"><header><h2>{{ title }}</h2><p>{{ description }}</p></header><hw-description-list [items]=\"details\" variant=\"horizontal\" />@if (requirements.length) {<h3>{{ requirementsLabel }}</h3><ul>@for (requirement of requirements; track $index) {<li>{{ requirement }}</li>}</ul>}<ng-content /></section>`})\nexport class HwServiceDetailsComponent { @Input({required: true}) title = ''; @Input() description = ''; @Input() details: readonly HwDescription[] = []; @Input() requirements: readonly string[] = []; @Input() requirementsLabel = 'Requirements'; }\nexport interface HwPortalNavItem extends HwLinkItem {\n groups?: readonly { label?: string; links: readonly HwLinkItem[] }[];\n}\n@Component({selector: 'hw-portal-header', standalone: true, template: `<header class=\"hw-portal-header\">\n @if (mainId) {<a class=\"hw-skip-link\" [href]=\"'#' + mainId\">{{ skipLabel }}</a>}\n <a class=\"hw-portal-brand\" [href]=\"homeHref\"><ng-content select=\"[hwBrand]\" /><span>{{ brand }}</span></a>\n @if (links.length) {\n <button #menuToggle class=\"hw-button hw-portal-menu-toggle\" type=\"button\" [attr.aria-expanded]=\"menuOpen\" [attr.aria-controls]=\"navigationId\" (click)=\"branch = undefined; menuOpen = !menuOpen\"><span class=\"hw-icon\" [attr.data-icon]=\"menuOpen ? 'cancel-01' : 'menu-01'\" aria-hidden=\"true\"></span>{{ menuLabel }}</button>\n <nav [id]=\"navigationId\" [attr.aria-label]=\"navigationLabel\" [attr.data-open]=\"menuOpen\"><ul>\n @for (item of links; track item.href) {<li>\n @if (hasGroups(item)) {\n <details #details data-hw-portal-branch class=\"hw-portal-branch\" [attr.data-current]=\"item.current || hasCurrentChild(item) || null\" [open]=\"branch === details\">\n <summary (click)=\"toggleBranch($event, details)\">{{ item.label }}</summary>\n <div class=\"hw-portal-branch-panel\">\n <a class=\"hw-link hw-portal-branch-overview\" [href]=\"item.href\" [attr.aria-current]=\"item.current && !hasCurrentChild(item) ? 'page' : null\" (click)=\"close()\">{{ item.label }}</a>\n @for (group of item.groups; track $index) {@if (group.links.length) {\n <section class=\"hw-portal-branch-group\">@if (group.label) {<h2>{{ group.label }}</h2>}\n <ul>@for (link of group.links; track link.href) {<li><a class=\"hw-link\" [href]=\"link.href\" [attr.aria-current]=\"link.current ? 'page' : null\" (click)=\"close()\">{{ link.label }}</a></li>}</ul>\n </section>\n }}\n </div>\n </details>\n } @else {<a class=\"hw-link\" [href]=\"item.href\" [attr.aria-current]=\"item.current ? 'page' : null\" (click)=\"close()\">{{ item.label }}</a>}\n </li>}\n </ul></nav>\n }\n <div class=\"hw-portal-header-actions\"><ng-content /></div>\n</header>`})\nexport class HwPortalHeaderComponent {\n @Input({required: true}) brand = ''; @Input() homeHref = '/'; @Input() mainId = 'main-content';\n @Input() skipLabel = 'انتقل إلى المحتوى'; @Input() menuLabel = 'القائمة'; @Input() navigationLabel = 'التنقل الرئيسي';\n @Input() navigationId = `hw-portal-navigation-${++nextPortalId}`; @Input() links: readonly HwPortalNavItem[] = [];\n menuOpen = false;\n branch?: HTMLDetailsElement;\n @ViewChild('menuToggle') menuToggle?: ElementRef<HTMLButtonElement>;\n private readonly host = inject(ElementRef<HTMLElement>);\n hasGroups(item: HwPortalNavItem) { return item.groups?.some(group => group.links.length); }\n hasCurrentChild(item: HwPortalNavItem) { return item.groups?.some(group => group.links.some(link => link.current)); }\n toggleBranch(event: MouseEvent, details: HTMLDetailsElement) {\n event.preventDefault();\n this.branch = this.branch === details ? undefined : details;\n }\n close() { this.branch = undefined; this.menuOpen = false; }\n @HostListener('keydown', ['$event']) keydown(event: KeyboardEvent) {\n if (event.defaultPrevented || event.key !== 'Escape') return;\n if (this.branch?.isConnected) {\n event.preventDefault(); event.stopPropagation();\n const summary = this.branch.querySelector<HTMLElement>(':scope > summary');\n this.branch = undefined; summary?.focus();\n } else if (this.menuOpen) {\n event.preventDefault(); event.stopPropagation(); this.close(); this.menuToggle?.nativeElement.focus();\n }\n }\n @HostListener('document:pointerdown', ['$event']) outside(event: PointerEvent) {\n const target = event.target as Node;\n if (!this.branch?.contains(target)) this.branch = undefined;\n if (!this.host.nativeElement.contains(target)) this.menuOpen = false;\n }\n @HostListener('focusout', ['$event']) focusout(event: FocusEvent) {\n const target = (event.relatedTarget ?? this.host.nativeElement.ownerDocument.activeElement) as Node | null;\n if (!this.branch?.contains(target)) this.branch = undefined;\n if (!this.host.nativeElement.contains(target)) this.menuOpen = false;\n }\n}\nexport interface HwPortalFooterLink extends HwLinkItem { external?: boolean }\nexport interface HwPortalFooterGroup { title: string; links: readonly HwPortalFooterLink[] }\n@Component({selector: 'hw-portal-footer', standalone: true, template: `<footer class=\"hw-portal-footer\">\n <div class=\"hw-portal-footer-main\">\n <div class=\"hw-portal-footer-brand\"><div class=\"hw-portal-footer-brand-marks\"><ng-content select=\"[hwFooterBrand]\" /></div>@if (brand) {<strong>{{ brand }}</strong>}@if (description) {<p>{{ description }}</p>}</div>\n @if (links.length) {<nav class=\"hw-portal-footer-group\" [attr.aria-label]=\"navigationLabel\"><h2>{{ navigationLabel }}</h2><ul class=\"hw-portal-footer-links\">@for (link of links; track $index) {<li><a class=\"hw-link\" [href]=\"link.href\" [attr.target]=\"link.external ? '_blank' : null\" [attr.rel]=\"link.external ? 'noopener noreferrer' : null\">{{ link.label }}@if (link.external) {<span class=\"hw-portal-footer-external\" aria-hidden=\"true\">↗</span><span class=\"hw-sr-only\"> · {{ externalLabel }}</span>}</a></li>}</ul></nav>}\n @for (group of groups; track $index) {@if (group.links.length) {<nav class=\"hw-portal-footer-group\" [attr.aria-label]=\"group.title\"><h2>{{ group.title }}</h2><ul class=\"hw-portal-footer-links\">@for (link of group.links; track $index) {<li><a class=\"hw-link\" [href]=\"link.href\" [attr.target]=\"link.external ? '_blank' : null\" [attr.rel]=\"link.external ? 'noopener noreferrer' : null\">{{ link.label }}@if (link.external) {<span class=\"hw-portal-footer-external\" aria-hidden=\"true\">↗</span><span class=\"hw-sr-only\"> · {{ externalLabel }}</span>}</a></li>}</ul></nav>}}\n <section class=\"hw-portal-footer-support\" [attr.aria-label]=\"supportLabel\"><h2>{{ supportLabel }}</h2><div class=\"hw-portal-footer-support-content\"><ng-content select=\"[hwFooterSupport]\" /></div></section>\n <div class=\"hw-portal-footer-extra\"><ng-content /></div>\n </div>\n <div class=\"hw-portal-footer-bottom\">@if (copyright) {<small>{{ copyright }}</small>}@if (legalLinks.length) {<nav class=\"hw-portal-footer-legal\" [attr.aria-label]=\"legalLinksLabel\"><ul class=\"hw-portal-footer-links\">@for (link of legalLinks; track $index) {<li><a class=\"hw-link\" [href]=\"link.href\" [attr.target]=\"link.external ? '_blank' : null\" [attr.rel]=\"link.external ? 'noopener noreferrer' : null\">{{ link.label }}@if (link.external) {<span class=\"hw-portal-footer-external\" aria-hidden=\"true\">↗</span><span class=\"hw-sr-only\"> · {{ externalLabel }}</span>}</a></li>}</ul></nav>}<div class=\"hw-portal-footer-partners\"><ng-content select=\"[hwFooterPartners]\" /></div></div>\n</footer>`})\nexport class HwPortalFooterComponent {\n @Input() brand = ''; @Input() description = ''; @Input() copyright = '';\n @Input() navigationLabel = 'روابط التذييل'; @Input() links: readonly HwPortalFooterLink[] = [];\n @Input() groups: readonly HwPortalFooterGroup[] = []; @Input() legalLinks: readonly HwPortalFooterLink[] = [];\n @Input() legalLinksLabel = 'السياسات وإمكانية الوصول'; @Input() supportLabel = 'المساعدة والتواصل'; @Input() externalLabel = 'يفتح في نافذة جديدة';\n}\n@Component({selector: 'hw-feedback', standalone: true, template: `<section class=\"hw-feedback\" [attr.aria-label]=\"label\" [attr.data-choice-variant]=\"choiceVariant\"><p>{{ label }}</p><div class=\"hw-button-group hw-feedback-actions\" role=\"group\" [attr.aria-label]=\"label\"><button class=\"hw-button\" data-variant=\"secondary\" type=\"button\" [disabled]=\"disabled\" [attr.aria-pressed]=\"value === true\" (click)=\"choose(true)\"><span class=\"hw-icon hw-feedback-icon\" data-icon=\"thumbs-up\" aria-hidden=\"true\"></span><span class=\"hw-feedback-label\">{{ positiveLabel }}</span></button><button class=\"hw-button\" data-variant=\"secondary\" type=\"button\" [disabled]=\"disabled\" [attr.aria-pressed]=\"value === false\" (click)=\"choose(false)\"><span class=\"hw-icon hw-feedback-icon\" data-icon=\"thumbs-down\" aria-hidden=\"true\"></span><span class=\"hw-feedback-label\">{{ negativeLabel }}</span></button></div><p role=\"status\">{{ value !== null ? thanksMessage : '' }}</p><ng-content /></section>`})\nexport class HwFeedbackComponent { @Input() choiceVariant: 'text' | 'icon' | 'icon-text' = 'text'; @Input() label = 'Was this page helpful?'; @Input() positiveLabel = 'Yes'; @Input() negativeLabel = 'No'; @Input() thanksMessage = 'Thank you for your feedback'; @Input() value: boolean | null = null; @Input({transform: booleanAttribute}) disabled = false; @Output() readonly valueChange = new EventEmitter<boolean>(); choose(value: boolean) { if (!this.disabled) { this.value = value; this.valueChange.emit(value); } } }\n@Component({selector: 'hw-cookie-consent', standalone: true, template: `@if (visible) {<section class=\"hw-cookie-consent\" role=\"region\" [attr.aria-label]=\"title\"><h2>{{ title }}</h2><p>{{ description }}</p><ng-content /><div class=\"hw-button-group\"><button class=\"hw-button\" type=\"button\" (click)=\"choose('accepted')\">{{ acceptLabel }}</button><button class=\"hw-button\" data-variant=\"secondary\" type=\"button\" (click)=\"choose('rejected')\">{{ rejectLabel }}</button><button class=\"hw-button\" data-variant=\"ghost\" type=\"button\" (click)=\"preferences.emit()\">{{ preferencesLabel }}</button></div></section>}`})\nexport class HwCookieConsentComponent { @Input() title = 'Cookie preferences'; @Input() description = ''; @Input() acceptLabel = 'Accept optional cookies'; @Input() rejectLabel = 'Reject optional cookies'; @Input() preferencesLabel = 'Manage preferences'; @Input({transform: booleanAttribute}) visible = true; @Output() readonly visibleChange = new EventEmitter<boolean>(); @Output() readonly consent = new EventEmitter<'accepted' | 'rejected'>(); @Output() readonly preferences = new EventEmitter<void>(); choose(value: 'accepted' | 'rejected') { this.visible = false; this.visibleChange.emit(false); this.consent.emit(value); } }\n@Component({selector: 'hw-notification-list', standalone: true, template: `<section class=\"hw-notification-list\" [attr.aria-label]=\"label\"><ul>@for (item of items; track item.id) {<li class=\"hw-notification\" [attr.data-unread]=\"item.unread\"><div>@if (item.href) {<a class=\"hw-link\" [href]=\"item.href\">{{ item.title }}</a>} @else {<strong>{{ item.title }}</strong>}@if (item.unread) {<span class=\"hw-sr-only\">{{ unreadLabel }}</span>}@if (item.description) {<p>{{ item.description }}</p>}@if (item.time) {<span>{{ item.time }}</span>}</div><button type=\"button\" class=\"hw-button\" data-variant=\"ghost\" [attr.aria-label]=\"dismissLabel + ': ' + item.title\" (click)=\"dismissed.emit(item.id)\">×</button></li>} @empty {<li>{{ emptyMessage }}</li>}</ul></section>`})\nexport class HwNotificationListComponent { @Input() label = 'Notifications'; @Input() items: readonly HwNotification[] = []; @Input() emptyMessage = 'No notifications'; @Input() unreadLabel = 'Unread'; @Input() dismissLabel = 'Dismiss'; @Output() readonly dismissed = new EventEmitter<string>(); }\n","import { Component, Directive, Input } from '@angular/core';\nimport { NgStyle } from '@angular/common';\nimport { layoutStyles, type LayoutSpacing, type Responsive } from '@hawiyah/core';\n\n/** Responsive sizing is expressed as CSS custom properties; no viewport script. */\n@Directive()\nexport abstract class HwLayout {\n @Input() gap?: Responsive<LayoutSpacing>;\n @Input() padding?: Responsive<LayoutSpacing>;\n @Input() align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n @Input() justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n @Input() wrap?: boolean;\n @Input() columns?: Responsive<number>;\n @Input() minItemWidth?: string;\n @Input() maxWidth?: string;\n @Input() sidebarWidth?: string;\n @Input() ratio?: number;\n get styles(): Record<string, string | number> { return layoutStyles(this); }\n}\n\n@Component({selector: 'hw-container', standalone: true, imports: [NgStyle], template: `<div class=\"hw-container\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwContainerComponent extends HwLayout {}\n@Component({selector: 'hw-stack', standalone: true, imports: [NgStyle], template: `<div class=\"hw-stack\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwStackComponent extends HwLayout {}\n@Component({selector: 'hw-inline', standalone: true, imports: [NgStyle], template: `<div class=\"hw-inline\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwInlineComponent extends HwLayout {}\n@Component({selector: 'hw-grid', standalone: true, imports: [NgStyle], template: `<div class=\"hw-grid\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwGridComponent extends HwLayout {}\n@Component({selector: 'hw-columns', standalone: true, imports: [NgStyle], template: `<div class=\"hw-columns\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwColumnsComponent extends HwLayout {}\n@Component({selector: 'hw-sidebar', standalone: true, imports: [NgStyle], template: `<div class=\"hw-sidebar\" [ngStyle]=\"styles\" [attr.data-side]=\"side\" [attr.data-collapse-at]=\"collapseAt\"><aside><ng-content select=\"[hwSidebar]\" /></aside><div><ng-content /></div></div>`})\nexport class HwSidebarComponent extends HwLayout { @Input() side: 'start' | 'end' = 'start'; @Input() collapseAt: 'sm' | 'md' | 'lg' = 'md'; }\n@Component({selector: 'hw-center', standalone: true, imports: [NgStyle], template: `<div class=\"hw-center\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwCenterComponent extends HwLayout {}\n@Component({selector: 'hw-spacer', standalone: true, host: {class: 'hw-spacer', 'aria-hidden': 'true', '[style]': 'styles'}, template: ''})\nexport class HwSpacerComponent extends HwLayout {}\n@Component({selector: 'hw-aspect-ratio', standalone: true, imports: [NgStyle], template: `<div class=\"hw-aspect-ratio\" [ngStyle]=\"styles\"><ng-content /></div>`})\nexport class HwAspectRatioComponent extends HwLayout { override ratio = 16 / 9; }\n@Component({selector: 'hw-section', standalone: true, imports: [NgStyle], template: `<section class=\"hw-section\" [ngStyle]=\"styles\" [attr.aria-label]=\"label || null\"><ng-content /></section>`})\nexport class HwSectionComponent extends HwLayout { @Input() label = ''; }\n@Component({selector: 'hw-app-shell', standalone: true, imports: [NgStyle], template: `<div class=\"hw-app-shell\" [ngStyle]=\"styles\" [attr.data-side]=\"side\"><a class=\"hw-skip-link\" [href]=\"'#' + mainId\">{{ skipLabel }}</a><header class=\"hw-app-shell-header\"><ng-content select=\"[hwShellHeader]\" /></header><aside class=\"hw-app-shell-sidebar\"><ng-content select=\"[hwShellSidebar]\" /></aside><main class=\"hw-app-shell-main\" [id]=\"mainId\" tabindex=\"-1\"><ng-content /></main><footer class=\"hw-app-shell-footer\"><ng-content select=\"[hwShellFooter]\" /></footer></div>`})\nexport class HwAppShellComponent extends HwLayout { @Input() mainId = 'main-content'; @Input() skipLabel = 'انتقل إلى المحتوى'; @Input() side: 'start' | 'end' = 'start'; }\n@Component({selector: 'hw-page-header', standalone: true, imports: [NgStyle], template: `<header class=\"hw-page-header\" [ngStyle]=\"styles\"><ng-content select=\"[hwBreadcrumb]\" /><div class=\"hw-page-header-main\"><div><h1>{{ title }}</h1>@if (description) {<p>{{ description }}</p>}</div><div class=\"hw-page-header-actions\"><ng-content /></div></div></header>`})\nexport class HwPageHeaderComponent extends HwLayout { @Input({required: true}) title = ''; @Input() description = ''; }\n","import { Component, Input } from '@angular/core';\nimport { HwPortalFooterComponent, HwPortalHeaderComponent } from './content';\nimport type { HwLinkItem, HwPortalNavItem } from './content';\nimport { HwBreadcrumbComponent } from './navigation';\nimport type { HwBreadcrumbItem } from './navigation';\n\nexport interface HwSecondaryNavItem extends HwLinkItem { icon?: string }\n@Component({selector: 'hw-secondary-nav', standalone: true, template: `<nav class=\"hw-secondary-nav\" [attr.aria-label]=\"label\" [attr.data-variant]=\"variant\"><ul>@for (item of items; track $index) {<li><a [href]=\"item.href\" [attr.aria-current]=\"item.current ? 'page' : null\">@if (variant === 'mobile' && item.icon) {<span class=\"hw-icon\" [attr.data-icon]=\"item.icon\" aria-hidden=\"true\"></span>}<span>{{ item.label }}</span></a></li>}</ul></nav>`})\nexport class HwSecondaryNavComponent { @Input() variant: 'default' | 'mobile' = 'default'; @Input() items: readonly HwSecondaryNavItem[] = []; @Input() label = 'التنقل الثانوي'; }\nlet nextLayoutId = 0;\n@Component({selector: 'hw-portal-layout', standalone: true, imports: [HwPortalHeaderComponent, HwPortalFooterComponent, HwBreadcrumbComponent, HwSecondaryNavComponent], template: `\n <div class=\"hw-portal-layout\" [attr.lang]=\"lang\" [attr.dir]=\"dir\">\n <hw-portal-header [brand]=\"brand\" [homeHref]=\"homeHref\" [links]=\"links\" [mainId]=\"mainId\" [skipLabel]=\"skipLabel\" [menuLabel]=\"menuLabel\" [navigationLabel]=\"navigationLabel\"><ng-content select=\"[hwBrand]\" ngProjectAs=\"[hwBrand]\" /><ng-content select=\"[hwPortalActions]\" /></hw-portal-header>\n @if (secondaryNavigation.length) {<hw-secondary-nav [items]=\"secondaryNavigation\" [label]=\"secondaryLabel\" />}\n <main [id]=\"mainId\" tabindex=\"-1\" class=\"hw-portal-layout-main hw-container\">@if (breadcrumbs.length) {<hw-breadcrumb [items]=\"breadcrumbs\" [label]=\"breadcrumbLabel\" />}<ng-content /></main>\n <hw-portal-footer [brand]=\"brand\" [links]=\"footerLinks\" [copyright]=\"copyright\" [navigationLabel]=\"footerLabel\"><ng-content select=\"[hwPortalFooter]\" /></hw-portal-footer>\n </div>`})\nexport class HwPortalLayoutComponent {\n @Input({required: true}) brand = ''; @Input() homeHref = '/'; @Input() lang = 'ar'; @Input() dir: 'rtl' | 'ltr' = 'rtl';\n @Input() mainId = `hw-portal-main-${++nextLayoutId}`; @Input() links: readonly HwPortalNavItem[] = [];\n @Input() secondaryNavigation: readonly HwLinkItem[] = []; @Input() footerLinks: readonly HwLinkItem[] = []; @Input() breadcrumbs: readonly HwBreadcrumbItem[] = []; @Input() copyright = '';\n @Input() skipLabel = 'انتقل إلى المحتوى'; @Input() menuLabel = 'القائمة'; @Input() navigationLabel = 'التنقل الرئيسي';\n @Input() secondaryLabel = 'التنقل الثانوي'; @Input() breadcrumbLabel = 'مسار التنقل'; @Input() footerLabel = 'روابط التذييل';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({ selector: 'hw-mobile-top-bar', standalone: true, template: `\n <header class=\"hw-mobile-top-bar\" [attr.data-variant]=\"variant\">\n <div class=\"hw-mobile-top-bar-leading\"><ng-content select=\"[hwTopBarLeading]\">@if (backHref) {<a class=\"hw-mobile-top-bar-back\" [href]=\"backHref\" [attr.aria-label]=\"backLabel\"><span class=\"hw-icon\" data-icon=\"arrow-left-01\" data-directional=\"true\" aria-hidden=\"true\"></span></a>}</ng-content></div>\n <div class=\"hw-mobile-top-bar-copy\">@switch (headingLevel) {@case (2) {<h2 class=\"hw-mobile-top-bar-title\">{{ title }}</h2>} @case (3) {<h3 class=\"hw-mobile-top-bar-title\">{{ title }}</h3>} @default {<h1 class=\"hw-mobile-top-bar-title\">{{ title }}</h1>}}@if (subtitle) {<p class=\"hw-mobile-top-bar-subtitle\">{{ subtitle }}</p>}</div>\n <div class=\"hw-mobile-top-bar-actions\"><ng-content select=\"[hwTopBarActions]\" /></div>\n </header>` })\nexport class HwMobileTopBarComponent {\n @Input({ required: true }) title = ''; @Input() subtitle = '';\n @Input() variant: 'main' | 'internal' = 'internal'; @Input() headingLevel: 1 | 2 | 3 = 1;\n @Input() backHref = ''; @Input() backLabel = 'رجوع';\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { HwDrawerComponent } from './interactions';\n\nexport interface HwNavigationDrawerItem {\n id: string; label: string; href?: string; icon?: string; current?: boolean;\n disabled?: boolean; children?: readonly HwNavigationDrawerItem[];\n}\n@Component({ selector: 'hw-navigation-drawer', standalone: true, imports: [HwDrawerComponent, NgTemplateOutlet], host: { class: 'hw-navigation-drawer-host' }, template: `\n <hw-drawer #drawer [title]=\"title\" [open]=\"open\" [side]=\"side\" [closeLabel]=\"closeLabel\" [closeOnBackdrop]=\"closeOnBackdrop\" (openChange)=\"changed($event)\">\n <div class=\"hw-navigation-drawer-user\"><ng-content select=\"[hwNavigationDrawerUser]\" /></div>\n <nav class=\"hw-navigation-drawer-nav\" [attr.aria-label]=\"navigationLabel\" (click)=\"routeActivation($event)\"><ng-container [ngTemplateOutlet]=\"list\" [ngTemplateOutletContext]=\"{ $implicit: items }\" /></nav>\n <div hwDrawerFooter><ng-content select=\"[hwNavigationDrawerFooter]\" /></div>\n </hw-drawer>\n <ng-template #label let-item>@if (item.icon) {<span class=\"hw-icon\" [attr.data-icon]=\"item.icon\" aria-hidden=\"true\"></span>}<span class=\"hw-navigation-drawer-label\">{{ item.label }}</span></ng-template>\n <ng-template #list let-entries><ul>@for (item of entries; track item.id) {<li [attr.data-hw-value]=\"item.id\">\n @if (item.disabled) {<span class=\"hw-navigation-drawer-row\" aria-disabled=\"true\"><ng-container [ngTemplateOutlet]=\"label\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /></span>}\n @else if (item.children?.length) {<details class=\"hw-navigation-drawer-group\"><summary class=\"hw-navigation-drawer-row\"><ng-container [ngTemplateOutlet]=\"label\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /></summary><ng-container [ngTemplateOutlet]=\"list\" [ngTemplateOutletContext]=\"{ $implicit: groupEntries(item) }\" /></details>}\n @else if (item.href) {<a class=\"hw-navigation-drawer-row\" [href]=\"item.href\" [attr.aria-current]=\"item.current ? 'page' : null\"><ng-container [ngTemplateOutlet]=\"label\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /></a>}\n @else {<span class=\"hw-navigation-drawer-row\"><ng-container [ngTemplateOutlet]=\"label\" [ngTemplateOutletContext]=\"{ $implicit: item }\" /></span>}\n </li>}</ul></ng-template>` })\nexport class HwNavigationDrawerComponent {\n @Input({ required: true }) title = '';\n @Input() items: readonly HwNavigationDrawerItem[] = [];\n @Input() navigationLabel = 'التنقل الرئيسي';\n @Input() closeLabel = 'إغلاق القائمة';\n @Input() side: 'start' | 'end' = 'start';\n @Input({ transform: booleanAttribute }) open = false;\n @Input({ transform: booleanAttribute }) closeOnBackdrop = true;\n @Output() readonly openChange = new EventEmitter<boolean>();\n @ViewChild('drawer') drawer?: HwDrawerComponent;\n changed(open: boolean) { this.open = open; this.openChange.emit(open); }\n show(trigger?: HTMLElement) { this.drawer?.show(trigger); }\n close() { this.drawer?.close(); }\n groupEntries(item: HwNavigationDrawerItem): readonly HwNavigationDrawerItem[] {\n const children = item.children ?? [];\n if (!item.href) return children;\n let id = item.id + '-page';\n while (children.some(child => child.id === id)) id += '-page';\n return [{ ...item, id, children: undefined }, ...children];\n }\n routeActivation(event: MouseEvent) {\n const link = (event.target as Element).closest<HTMLAnchorElement>('a[href]');\n if (!link || !(event.currentTarget as Element).contains(link) || link.closest('[aria-disabled=\"true\"], [inert]')) return;\n if (event.button !== 0 || event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || link.hasAttribute('download') || (link.target && link.target !== '_self')) return;\n queueMicrotask(() => { if (!event.defaultPrevented && link.isConnected) this.close(); });\n }\n}\n","import {Component,Input,Output,EventEmitter} from '@angular/core';\nimport {getSiteVerificationLabels} from '@hawiyah/core';\n\n@Component({selector:'hw-site-verification',standalone:true,template:`\n <aside class=\"hw-site-verification\" [attr.aria-label]=\"label || copy.label\">\n <details [open]=\"open\" (toggle)=\"toggled($event)\">\n <summary><span class=\"hw-verification-mark\"><ng-content select=\"[hwVerificationMark]\" /></span><span>{{label || copy.label}}</span><span class=\"hw-verification-toggle\">{{detailsLabel || copy.detailsLabel}}<span class=\"hw-icon\" data-icon=\"arrow-down-01\" aria-hidden=\"true\"></span></span></summary>\n <div class=\"hw-verification-content\"><div class=\"hw-verification-checks\">\n @if(domain){<section><span class=\"hw-icon\" data-icon=\"link-04\" aria-hidden=\"true\"></span><div><h2>{{domainLabel || copy.domainLabel}} <bdi>{{domain}}</bdi></h2><p>{{domainDescription || copy.domainDescription}}</p></div></section>}\n <section><span class=\"hw-icon\" data-icon=\"lock-password\" aria-hidden=\"true\"></span><div><h2>{{httpsLabel || copy.httpsLabel}} <bdi>HTTPS</bdi></h2><p>{{httpsDescription || copy.httpsDescription}}</p></div></section>\n </div>\n @if(registrationHref){<p class=\"hw-verification-registration\"><a [href]=\"registrationHref\" [attr.target]=\"registrationExternal ? '_blank' : null\" [attr.rel]=\"registrationExternal ? 'noopener noreferrer' : null\">{{registrationLabel || copy.registrationLabel}} @if(registrationNumber){<bdi>{{registrationNumber}}</bdi>}@if(registrationExternal){<span class=\"hw-sr-only\"> · {{externalLabel || copy.externalLabel}}</span>}</a></p>}\n <ng-content />\n </div>\n </details>\n </aside>`})\nexport class HwSiteVerificationComponent {\n @Input() locale='ar'; @Input() label=''; @Input() detailsLabel='';\n @Input() domain=''; @Input() domainLabel=''; @Input() domainDescription='';\n @Input() httpsLabel=''; @Input() httpsDescription='';\n @Input() registrationHref=''; @Input() registrationLabel=''; @Input() registrationNumber='';\n @Input() registrationExternal=true; @Input() externalLabel='';\n @Input() open=false; @Output() readonly openChange=new EventEmitter<boolean>();\n get copy(){return getSiteVerificationLabels(this.locale);}\n toggled(event:Event){const next=(event.currentTarget as HTMLDetailsElement).open;if(next!==this.open){this.open=next;this.openChange.emit(next);}}\n}\n","import {booleanAttribute, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject} from '@angular/core';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {observeContentNavigation} from '@hawiyah/core';\nimport type {ContentNavigationItem} from '@hawiyah/core';\n\nexport type {ContentNavigationItem} from '@hawiyah/core';\n@Component({selector: 'hw-content-navigation', standalone: true, imports: [NgTemplateOutlet], template: `\n<nav #navigation class=\"hw-content-nav\" [attr.aria-label]=\"label\" [attr.data-sticky]=\"sticky || null\">\n @if (showHeading) {<h2 class=\"hw-content-nav-heading\">{{ label }}</h2>}\n <ng-container [ngTemplateOutlet]=\"list\" [ngTemplateOutletContext]=\"{items: items, nested: false}\" />\n</nav>\n<ng-template #list let-entries=\"items\" let-nested=\"nested\"><ul [class]=\"nested ? 'hw-content-nav-sublist' : 'hw-content-nav-list'\">\n @for (item of entries; track item.id) {<li>\n @if (item.disabled) {<span class=\"hw-content-nav-link\" role=\"link\" aria-disabled=\"true\" [attr.data-hw-section]=\"item.id\"><span class=\"hw-content-nav-marker\" aria-hidden=\"true\"></span><span class=\"hw-content-nav-label\">{{ item.label }}</span></span>}\n @else {<a class=\"hw-content-nav-link\" [href]=\"fragment(item.id)\" [attr.data-hw-section]=\"item.id\" [attr.aria-current]=\"current === item.id ? 'location' : null\" (click)=\"activate($event, item.id)\"><span class=\"hw-content-nav-marker\" aria-hidden=\"true\"></span><span class=\"hw-content-nav-label\">{{ item.label }}</span></a>}\n @if (item.children?.length) {<ng-container [ngTemplateOutlet]=\"list\" [ngTemplateOutletContext]=\"{items: item.children, nested: true}\" />}\n </li>}\n</ul></ng-template>`})\nexport class HwContentNavigationComponent {\n @Input({required: true}) items: readonly ContentNavigationItem[] = [];\n @Input() label = 'في هذه الصفحة';\n @Input({transform: booleanAttribute}) showHeading = true;\n @Input({transform: booleanAttribute}) sticky = false;\n @Input() scrollRoot: HTMLElement | null = null;\n @Input() offset = 80;\n @Output() readonly currentChange = new EventEmitter<string>();\n @ViewChild('navigation') navigation?: ElementRef<HTMLElement>;\n private readonly changeDetector = inject(ChangeDetectorRef);\n private observer?: ReturnType<typeof observeContentNavigation>;\n current = '';\n fragment(id: string): string {return `#${encodeURIComponent(id)}`;}\n ngAfterViewInit(): void {this.observer = observeContentNavigation({navigation: this.navigation!.nativeElement, getItems: () => this.items, getScrollRoot: () => this.scrollRoot, offset: () => this.offset, onCurrentChange: id => {this.current = id; this.currentChange.emit(id); this.changeDetector.markForCheck();}});}\n ngOnChanges(): void {this.observer?.refresh();}\n ngOnDestroy(): void {this.observer?.destroy();}\n activate(event: MouseEvent, id: string): void {\n if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n event.preventDefault(); this.observer?.navigate(id, {focus: event.detail === 0});\n }\n}\n","import { Component, EventEmitter, Input, Output, booleanAttribute } from '@angular/core';\nimport { fileUploadLabels, fileUploadProgress, type FileUploadItem, type FileUploadLabels } from '@hawiyah/core';\n\n@Component({\n selector: 'hw-file-upload-list', standalone: true,\n template: `<ul class=\"hw-upload-list\">@for (item of items; track item.id) {\n <li class=\"hw-upload-item\" [attr.data-status]=\"item.status\" [attr.data-message]=\"item.message ? true : null\">\n <span class=\"hw-upload-name\">{{item.name}}</span>\n <span class=\"hw-upload-status\" role=\"status\">{{item.message || labels[item.status]}}</span>\n @if (item.status === 'uploading') {<progress max=\"100\" [attr.value]=\"progress(item.progress)\" [attr.aria-label]=\"labels.uploading + ' ' + item.name\"></progress>}\n @if (removable && item.removable !== false) {<button type=\"button\" class=\"hw-button\" data-variant=\"subtle\" [disabled]=\"disabled\" [attr.aria-label]=\"labels.remove + ' ' + item.name\" (click)=\"remove.emit(item.id)\">{{labels.remove}}</button>}\n </li>\n }</ul>`,\n})\nexport class HwFileUploadListComponent {\n @Input() items: readonly FileUploadItem[] = [];\n @Input() labels: FileUploadLabels = fileUploadLabels;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) removable = false;\n @Output() remove = new EventEmitter<string>();\n readonly progress = fileUploadProgress;\n}\n"],"mappings":"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"}