@uni-design-system/uni-angular 7.2.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/position/anchor.ts","../../src/lib/cdk/datasource/base-datasource.ts","../../src/lib/cdk/datasource/record-datasource.ts","../../src/lib/cdk/datasource/server-side-datasource.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/local-storage/local-storage.service.ts","../../src/lib/cdk/notification/notification.service.ts","../../src/lib/cdk/timer/timer.ts","../../src/lib/cdk/file/file.helper.ts","../../src/lib/theming/theme.token.ts","../../src/lib/cdk/helpers/number.helper.ts","../../src/lib/theming/theme.service.ts","../../src/lib/components/base/base.component.ts","../../src/lib/components/app-bar/app-bar.component.ts","../../src/lib/components/symbol/symbol.component.ts","../../src/lib/components/avatar/avatar.component.ts","../../src/lib/components/avatar/avatar-group.component.ts","../../src/lib/components/background/background.component.ts","../../src/lib/components/background/index.ts","../../src/lib/components/badge/badge.component.ts","../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../src/lib/components/icon/icon.component.ts","../../src/lib/components/layout/box/box.component.ts","../../src/lib/components/layout/center/center.component.ts","../../src/lib/components/layout/grid/grid-area/grid-area.component.ts","../../src/lib/components/layout/grid/grid.component.ts","../../src/lib/components/layout/row/row.component.ts","../../src/lib/components/layout/stack/stack.component.ts","../../src/lib/components/layout/wrap/wrap.component.ts","../../src/lib/directives/ripple/ripple.directive.ts","../../src/lib/components/button/button.component.ts","../../src/lib/components/button-group/button-group.component.ts","../../src/lib/components/button-group/index.ts","../../src/lib/components/card/card-content/card-content.component.ts","../../src/lib/components/card/card-content/card-content.component.html","../../src/lib/components/text/text.component.ts","../../src/lib/components/card/card.component.ts","../../src/lib/components/card/card.component.html","../../src/lib/components/card/card-header/card-header.component.ts","../../src/lib/components/card/card-header/card-header.component.html","../../src/lib/components/checkbox/checkbox.component.ts","../../src/lib/components/checkbox/checkbox.component.html","../../src/lib/directives/body-render/body-render.directive.ts","../../src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../src/lib/components/icon-button/icon-button.component.ts","../../src/lib/components/data-search/data-search.component.ts","../../src/lib/components/data-search/data-search.component.html","../../src/lib/components/data-search/index.ts","../../src/lib/components/scroll-area/scroll-area.component.ts","../../src/lib/components/sort-header/sort-header.component.ts","../../src/lib/components/sort-header/sort-header.component.html","../../src/lib/components/data-table/data-table.component.ts","../../src/lib/components/data-table/data-table.component.html","../../src/lib/components/data-table/index.ts","../../src/lib/components/dialog/dialog.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.html","../../src/lib/components/dialog/dialog-header/dialog-header.component.ts","../../src/lib/components/dialog/dialog-header/dialog-header.component.html","../../src/lib/components/divider/divider.component.ts","../../src/lib/components/drawer/drawer.component.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/expand/expand.component.ts","../../src/lib/components/expand/index.ts","../../src/lib/components/tooltip/tooltip.component.ts","../../src/lib/components/expand-toggle/expand-toggle.component.ts","../../src/lib/components/expand-area/expand-area.component.ts","../../src/lib/components/expand-area/index.ts","../../src/lib/components/expand-toggle/index.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.html","../../src/lib/components/file-drop-zone/index.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/forms/debounce-input/debounce-input.component.ts","../../src/lib/components/forms/debounce-input/debounce-input.component.html","../../src/lib/components/input/input.component.ts","../../src/lib/components/input/input.component.html","../../src/lib/components/json-view/json-view.component.ts","../../src/lib/components/json-view/json-view.component.html","../../src/lib/components/json-view/index.ts","../../src/lib/components/menu/menu-item/menu-item.component.ts","../../src/lib/components/menu/menu-item/menu-item.component.html","../../src/lib/components/menu/menu.component.ts","../../src/lib/components/multi-select/multi-select.component.ts","../../src/lib/components/multi-select/multi-select.component.html","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.ts","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.html","../../src/lib/components/notification-badge/notification-badge.ts","../../src/lib/components/notification-badge/notification-badge.html","../../src/lib/components/notifications/alert/alert.component.ts","../../src/lib/components/notifications/alert/alert.component.html","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.ts","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.html","../../src/lib/components/notifications/snackbar/snackbar.component.ts","../../src/lib/components/notifications/snackbar/snackbar.component.html","../../src/lib/components/notifications/notifications/notifications.component.ts","../../src/lib/components/notifications/notifications/notifications.component.html","../../src/lib/components/paginator/paginator.component.ts","../../src/lib/components/paginator/paginator.component.html","../../src/lib/components/paginator/index.ts","../../src/lib/components/popover/popover.component.ts","../../src/lib/components/popover/popover.component.html","../../src/lib/components/popover/index.ts","../../src/lib/components/progress-bar/progress-bar.component.ts","../../src/lib/components/progress-bar/progress-bar.component.html","../../src/lib/components/progress-bar/index.ts","../../src/lib/components/progress-gauge/progress-gauge.component.ts","../../src/lib/components/progress-gauge/progress-gauge.component.html","../../src/lib/components/progress-gauge/index.ts","../../src/lib/components/radio/radio.component.ts","../../src/lib/components/radio/radio.component.html","../../src/lib/components/scroll-area/index.ts","../../src/lib/components/search-input/search-input.component.ts","../../src/lib/components/search-input/search-input.component.html","../../src/lib/components/search-input/index.ts","../../src/lib/components/select-input/select-input.component.ts","../../src/lib/components/select-input/select-input.component.html","../../src/lib/components/skeleton/skeleton.component.ts","../../src/lib/components/slider/slider.component.ts","../../src/lib/components/stat/stat.component.ts","../../src/lib/components/tabs/tab.component.ts","../../src/lib/components/tabs/tabs.component.ts","../../src/lib/components/textarea/textarea.component.ts","../../src/lib/components/textarea/textarea.component.html","../../src/lib/components/sort-header/index.ts","../../src/lib/components/tag/tag.component.ts","../../src/lib/components/tag/tag.component.html","../../src/lib/components/tag/index.ts","../../src/lib/components/theme-builder/theme-builder.component.ts","../../src/lib/components/theme-switch/theme-switch.component.ts","../../src/lib/components/toggle/toggle.component.ts","../../src/lib/components/toggle/toggle.component.html","../../src/uni-design-system-uni-angular.ts"],"sourcesContent":["let nextUniqueId = 0;\n\n/**\n * Returns a document-unique id for wiring ARIA relationships\n * (aria-controls, aria-describedby, aria-labelledby, ...).\n */\nexport function uniqueId(prefix = 'uni'): string {\n return `${prefix}-${nextUniqueId++}`;\n}\n\n/**\n * Selector matching natively focusable elements. Used to locate the\n * interactive element inside a projected trigger so ARIA attributes land\n * on the element that actually receives focus.\n */\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Resolves the element that should carry ARIA state for a trigger:\n * the element itself when focusable, otherwise its first focusable descendant.\n */\nexport function resolveFocusTarget(element: HTMLElement): HTMLElement {\n if (element.matches(FOCUSABLE_SELECTOR)) return element;\n return element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? element;\n}\n\n/**\n * Visually hides content while keeping it available to screen readers.\n * Use for text alternatives (e.g. badge counts, icon-only affordances).\n */\nexport const visuallyHidden = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const;\n\n/**\n * Wraps animation/transition styles so they only apply when the user has\n * not requested reduced motion (WCAG 2.3.3).\n */\nexport function motionSafe<T extends object>(styles: T) {\n return { '@media (prefers-reduced-motion: no-preference)': styles };\n}\n","import { uniqueId } from '../a11y/a11y';\n\n/**\n * Native CSS Anchor Positioning helpers (Baseline 2026). These replace the\n * former @floating-ui/dom dependency: the browser tracks the anchor natively\n * (no scroll/resize listeners), and `position-try-fallbacks` flips the panel\n * at viewport edges where supported (Chrome 125+, Firefox 147+, Safari 26+;\n * older Baseline browsers still position correctly but do not auto-flip).\n */\n\nexport type Placement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'right-start'\n | 'bottom-start'\n | 'left-start'\n | 'top-end'\n | 'right-end'\n | 'bottom-end'\n | 'left-end';\n\n/** Distances between the anchor and the positioned panel, in px. */\nexport interface AnchorOffset {\n /** Gap along the placement axis (anchor → panel). */\n mainAxis?: number;\n /** Shift along the cross axis, from the aligned edge. */\n alignmentAxis?: number;\n}\n\n/** Returns a document-unique dashed-ident usable as a CSS `anchor-name`. */\nexport function newAnchorName(): string {\n return `--${uniqueId('uni-anchor')}`;\n}\n\nconst POSITION_AREA: Record<Placement, string> = {\n top: 'top',\n bottom: 'bottom',\n left: 'left',\n right: 'right',\n 'top-start': 'top span-right',\n 'top-end': 'top span-left',\n 'bottom-start': 'bottom span-right',\n 'bottom-end': 'bottom span-left',\n 'left-start': 'left span-bottom',\n 'left-end': 'left span-top',\n 'right-start': 'right span-bottom',\n 'right-end': 'right span-top',\n};\n\nconst MAIN_MARGIN: Record<string, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft',\n};\n\n/**\n * Emotion style object anchoring a panel to `anchor` at `placement`.\n * Spread into the panel's `css()` styles. The trigger element must carry\n * `anchor-name: <anchor>` (see `newAnchorName`).\n */\nexport function anchorStyles(\n anchor: string,\n placement: Placement,\n offset: AnchorOffset = {}\n): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n\n const styles: Record<string, string | number> = {\n position: 'fixed',\n positionAnchor: anchor,\n positionArea: POSITION_AREA[placement],\n positionTryFallbacks: 'flip-block, flip-inline, flip-block flip-inline',\n // Popover UA styles set inset:0 + margin:auto; anchored elements must not\n inset: 'auto',\n margin: 0,\n };\n\n styles[MAIN_MARGIN[side]] = offset.mainAxis ?? 0;\n\n const cross = offset.alignmentAxis ?? 0;\n if (align && cross) {\n const horizontal = side === 'top' || side === 'bottom';\n const crossMargin = horizontal\n ? align === 'start'\n ? 'marginLeft'\n : 'marginRight'\n : align === 'start'\n ? 'marginTop'\n : 'marginBottom';\n styles[crossMargin] = cross;\n }\n\n return styles;\n}\n\n/**\n * Absolute positioning for a rotated-square arrow sitting on the panel edge\n * that faces the anchor. Static per placement: if the browser flips the panel\n * via position-try, the arrow stays on the configured side (cosmetic-only\n * degradation, matching the flip-support caveat above).\n */\nexport function anchorArrowStyles(placement: Placement, size = 8): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n const overlap = -(size / 2);\n const styles: Record<string, string | number> = {\n position: 'absolute',\n width: size,\n height: size,\n transform: 'rotate(45deg)',\n };\n\n // Edge facing the anchor\n const facing: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n styles[facing[side]] = overlap;\n\n // Cross-axis position along that edge\n const horizontal = side === 'top' || side === 'bottom';\n const crossProp = horizontal ? 'left' : 'top';\n const crossPropEnd = horizontal ? 'right' : 'bottom';\n if (!align) {\n styles[crossProp] = `calc(50% - ${size / 2}px)`;\n } else if (align === 'start') {\n styles[crossProp] = size * 1.5;\n } else {\n styles[crossPropEnd] = size * 1.5;\n }\n\n return styles;\n}\n","import { computed, signal, Signal, WritableSignal } from '@angular/core';\n\nexport type SortDirection = 'asc' | 'desc' | 'indet';\n\nexport interface Sort<T> {\n column?: keyof T;\n direction: SortDirection;\n}\n\nexport abstract class UniBaseDatasource<T> {\n abstract records: Signal<T[]>;\n abstract recordCount: Signal<number>;\n\n selections = signal<T[]>([]);\n\n sort: WritableSignal<Sort<T>> = signal({\n column: undefined,\n direction: 'indet',\n });\n\n sortColumn = computed(() => this.sort().column);\n sortDirection = computed(() => this.sort().direction);\n\n abstract pageIndex: Signal<number>;\n abstract pageSize: Signal<number>;\n abstract pageCount: Signal<number>;\n\n pages = computed(() => Array.from({ length: this.pageCount() }, (_, index) => index + 1));\n\n startIndex = computed(() => {\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n return pageSize > 0 ? pageIndex * pageSize : 0;\n });\n\n endIndex = computed(() => {\n const pageSize = this.pageSize();\n const total = this.recordCount();\n\n // If unpaginated (pageSize = 0), return total count\n if (pageSize === 0) {\n return total;\n }\n\n const start = this.startIndex();\n return Math.min(start + pageSize, total);\n });\n\n disablePrevious = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() === 0;\n });\n\n disableNext = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() + 1 >= this.pageCount();\n });\n\n truncatedPages = computed(() => {\n const currentPage = this.pageIndex() + 1;\n const displayRange = 3;\n const totalPages = this.pageCount();\n\n const pages: (number | string)[] = [];\n const startPage = Math.max(1, currentPage - displayRange);\n const endPage = Math.min(totalPages, currentPage + displayRange);\n\n if (startPage > 1) {\n pages.push(1);\n if (startPage > 2) {\n pages.push('...');\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) {\n pages.push('...');\n }\n pages.push(totalPages);\n }\n return pages;\n });\n\n isSelected(row: T): boolean {\n return this.selections().some((selection) => selection === row);\n }\n\n toggleSelection(row: T) {\n this.selections.update((selections) => {\n return selections.includes(row) ? selections.filter((i) => i !== row) : [...selections, row];\n });\n }\n\n clearSelections() {\n this.selections.set([]);\n }\n\n selectAll() {\n this.selections.set([...this.records()]);\n }\n\n abstract sortRecords(sort: Sort<T>): void;\n abstract firstPage(): void;\n abstract nextPage(): void;\n abstract previousPage(): void;\n abstract lastPage(): void;\n abstract jumpToPage(page: number): void;\n abstract setPageSize(size: number): void;\n}\n","import { computed, signal } from '@angular/core';\nimport { UniBaseDatasource, Sort } from './base-datasource';\n\nexport class UniRecordDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal<number>(0); // 0 = unpaginated (show all)\n\n initialRecords = signal<T[]>([]);\n override recordCount = computed((): number => this.initialRecords().filter(this.filter()).length);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter = signal<(value: T) => boolean>((value) => true);\n\n override pageIndex = signal<number>(0);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const pageSize = this.pageSize();\n return pageSize > 0 ? Math.ceil(this.recordCount() / pageSize) : 1;\n });\n\n override records = computed(() => {\n const { column, direction } = this.sort();\n const filter = this.filter();\n const pageSize = this.pageSize();\n\n let filteredRecords = this.initialRecords().filter(filter);\n\n // Apply sorting if specified\n if (column && direction !== 'indet') {\n filteredRecords = [...filteredRecords].sort((a, b) => {\n const valueA = a[column];\n const valueB = b[column];\n\n const isString = typeof valueA === 'string';\n const isAsc = direction === 'asc';\n\n return isString\n ? stringCompare(valueA as string, valueB as string, isAsc)\n : numberCompare(valueA as number, valueB as number, isAsc);\n });\n }\n\n // Apply pagination only if pageSize > 0\n if (pageSize > 0) {\n return filteredRecords.slice(this.startIndex(), this.endIndex());\n }\n\n // Return all records (unpaginated)\n return filteredRecords;\n });\n\n constructor(data: T[]) {\n super();\n this.initialRecords.set(data);\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n }\n\n override firstPage() {\n this.pageIndex.set(0);\n }\n\n override nextPage() {\n if (this.pageIndex() < this.pageCount() - 1) {\n this.pageIndex.update((i) => i + 1);\n }\n }\n\n override previousPage() {\n this.pageIndex.update((i) => (i > 1 ? i - 1 : 0));\n }\n\n override lastPage() {\n this.pageIndex.set(this.pageCount() - 1);\n }\n\n override jumpToPage(page: number) {\n const i = page - 1;\n if (i >= 0 && i < this.pageCount()) {\n this.pageIndex.set(i);\n }\n }\n\n override setPageSize(size: number) {\n this._pageSize.set(size);\n if (size > 0) {\n this._pageNumber.set(1);\n this.pageIndex.set(0);\n }\n }\n\n setFilter(filter: (value: T) => boolean) {\n this.filter.set(filter);\n }\n\n clearFilter() {\n this.filter.set(() => true);\n }\n}\n\nfunction stringCompare(a = 'zzz', b = 'zzz', isAsc: boolean): number {\n a = a.toString();\n b = b.toString();\n\n return isAsc\n ? a.localeCompare(b, undefined, { sensitivity: 'base' })\n : b.localeCompare(a, undefined, { sensitivity: 'base' });\n}\n\nfunction numberCompare(a = 0, b = 0, isAsc: boolean): number {\n return isAsc ? a - b : b - a;\n}\n","import {\n computed,\n linkedSignal,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n type ResourceStatus,\n signal,\n} from '@angular/core';\nimport { UniBaseDatasource, Sort, SortDirection } from './base-datasource';\n\nexport interface PageRequest {\n pageNumber: number;\n pageSize: number;\n sortColumn?: string;\n sortDirection?: SortDirection;\n filter?: Record<string, any>;\n}\n\nexport interface PageResponse<T> {\n data: T[];\n totalRecords: number;\n pageNumber: number;\n pageSize: number;\n}\n\nexport type DataLoader<T> = (request: PageRequest) => Promise<PageResponse<T>>;\n\nexport class UniServerSideDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal(10);\n private _sortColumn = signal<keyof T | undefined>(undefined);\n private _sortDirection = signal<SortDirection>('indet');\n private filter = signal<Record<string, any>>({});\n\n override sortColumn = computed(() => this._sortColumn());\n override sortDirection = computed(() => this._sortDirection());\n\n private totalRecords = signal(0);\n\n private dataResource: ResourceRef<PageResponse<T> | undefined>;\n\n override pageIndex = computed(() => this._pageNumber() - 1);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const total = this.totalRecords();\n const size = this.pageSize();\n return total > 0 ? Math.ceil(total / size) : 0;\n });\n\n private readonly _records = linkedSignal<\n {\n val: PageResponse<T> | undefined;\n status: ResourceStatus;\n },\n T[]\n >({\n source: () => ({\n val: this.dataResource.value(),\n status: this.dataResource.status(),\n }),\n computation: (source, previous) => {\n if (source.status === 'loading' && previous) {\n return previous.value;\n }\n return source.val?.data ?? [];\n },\n });\n\n override records = this._records.asReadonly();\n\n override recordCount = computed(() => this.totalRecords());\n\n isLoading = computed(() => this.dataResource.isLoading());\n\n error = computed(() => this.dataResource.error());\n\n hasError = computed(() => this.dataResource.hasValue() === false && this.error() !== undefined);\n\n constructor(\n private dataLoader: DataLoader<T>,\n initialPageSize = 10\n ) {\n super();\n this._pageSize.set(initialPageSize);\n\n this.dataResource = resource({\n params: () => ({\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n }),\n loader: async (params: ResourceLoaderParams<PageRequest>) => {\n const request = params.params;\n const response = await this.dataLoader(request);\n\n if (request.pageNumber === 1 || this.totalRecords() === 0) {\n this.totalRecords.set(response.totalRecords);\n }\n\n return response;\n },\n });\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n this._sortColumn.set(sort.column);\n this._sortDirection.set(sort.direction);\n this._pageNumber.set(1);\n }\n\n override firstPage() {\n this._pageNumber.set(1);\n }\n\n override nextPage() {\n if (this._pageNumber() < this.pageCount()) {\n this._pageNumber.update((n) => n + 1);\n }\n }\n\n override previousPage() {\n if (this._pageNumber() > 1) {\n this._pageNumber.update((n) => n - 1);\n }\n }\n\n override lastPage() {\n this._pageNumber.set(this.pageCount());\n }\n\n override jumpToPage(page: number) {\n if (page >= 1 && page <= this.pageCount()) {\n this._pageNumber.set(page);\n }\n }\n\n override setPageSize(size: number) {\n if (size > 0) {\n this._pageSize.set(size);\n this._pageNumber.set(1);\n }\n }\n\n setFilter(filterValues: Record<string, any>) {\n this.filter.set(filterValues);\n this._pageNumber.set(1);\n }\n\n clearFilter() {\n this.filter.set({});\n this._pageNumber.set(1);\n }\n\n refresh() {\n this.dataResource.reload();\n }\n\n getPageRequest(): PageRequest {\n return {\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n };\n }\n}\n","export function memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n","import { Injectable } from '@angular/core';\nimport { memoize } from '../helpers/memoize.helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n private isLocalStorageAvailable = memoize((): boolean => {\n try {\n const test = '__localStorage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n });\n\n setItem<T>(key: string, value: T): boolean {\n if (!this.isLocalStorageAvailable()) {\n console.warn('LocalStorage is not available');\n return false;\n }\n\n try {\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n localStorage.setItem(key, stringValue);\n return true;\n } catch (error) {\n console.error('Error saving to localStorage:', error);\n return false;\n }\n }\n\n getItem<T>(key: string): T | null {\n if (!this.isLocalStorageAvailable()) {\n return null;\n }\n\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch {\n return item as T;\n }\n } catch (error) {\n console.error('Error reading from localStorage:', error);\n return null;\n }\n }\n\n removeItem(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.removeItem(key);\n return true;\n } catch (error) {\n console.error('Error removing from localStorage:', error);\n return false;\n }\n }\n\n clear(): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.clear();\n return true;\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n return false;\n }\n }\n\n hasKey(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n return localStorage.getItem(key) !== null;\n }\n\n getAllKeys(): string[] {\n if (!this.isLocalStorageAvailable()) {\n return [];\n }\n\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n getSize(): number {\n if (!this.isLocalStorageAvailable()) {\n return 0;\n }\n\n try {\n let total = 0;\n for (const key in localStorage) {\n if (Object.prototype.hasOwnProperty.call(localStorage, key)) {\n total += localStorage[key].length + key.length;\n }\n }\n return total;\n } catch (error) {\n console.error('Error calculating localStorage size:', error);\n return 0;\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Alert, Confirmation, Snackbar } from './notification.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n /* Alert */\n alert = signal<Alert | undefined>(undefined);\n showAlert = (alert: Alert) => this.alert.set(alert);\n hideAlert = () => this.alert.set(undefined);\n\n /* Snackbar */\n snackbar = signal<Snackbar | undefined>(undefined);\n showSnackbar = (snackbar: Snackbar) => this.snackbar.set(snackbar);\n hideSnackbar = () => this.snackbar.set(undefined);\n\n /* Confirmation */\n confirmation = signal<Confirmation | undefined>(undefined);\n showConfirmation = (confirmation: Confirmation) => this.confirmation.set(confirmation);\n hideConfirmation = () => this.confirmation.set(undefined);\n}\n","import { computed, DestroyRef, inject, signal } from '@angular/core';\n\nexport function useTimer() {\n const destroyRef = inject(DestroyRef);\n\n const msRemaining = signal<number>(0);\n const isPaused = signal<boolean>(false);\n const isActive = computed(() => msRemaining() > 0);\n\n let intervalId: any = null;\n let endTime = 0;\n let onCompleteCallback: (() => void) | undefined;\n\n const stop = () => {\n if (intervalId) clearInterval(intervalId);\n intervalId = null;\n };\n\n const tick = () => {\n const remaining = Math.max(0, endTime - Date.now());\n msRemaining.set(remaining);\n\n if (remaining <= 0) {\n stop();\n if (onCompleteCallback) onCompleteCallback();\n }\n };\n\n const start = (durationMs: number, onComplete?: () => void) => {\n stop();\n onCompleteCallback = onComplete;\n isPaused.set(false);\n msRemaining.set(durationMs);\n endTime = Date.now() + durationMs;\n intervalId = setInterval(tick, 100);\n };\n\n const pause = () => {\n if (!isActive() || isPaused()) return;\n stop();\n isPaused.set(true);\n };\n\n const resume = () => {\n if (!isActive() || !isPaused()) return;\n isPaused.set(false);\n endTime = Date.now() + msRemaining();\n intervalId = setInterval(tick, 100);\n };\n\n destroyRef.onDestroy(() => stop());\n\n return {\n start,\n pause,\n resume,\n stop: () => {\n stop();\n msRemaining.set(0);\n },\n msRemaining,\n isPaused,\n isActive,\n secondsRemaining: computed(() => Math.ceil(msRemaining() / 1000)),\n };\n}\n","export const acceptableFile = (\n file: File,\n acceptedFileExtensions: string[] | undefined\n): boolean => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length < 1) return true;\n return acceptedFileExtensions.includes(getFileExtension(file));\n};\n\nexport const getFileExtension = (file: File): string => '.' + file.name.split('.').pop();\n","import { InjectionToken } from '@angular/core';\nimport { type UniTheme, UniThemes } from '@uni-design-system/uni-core';\n\nexport const UNI_THEMES = new InjectionToken<Record<string, UniTheme>>('', {\n providedIn: 'root',\n factory: () => UniThemes,\n});\n","export const safeParseInt = (n: string | number) => (typeof n === 'number' ? n : parseInt(n));\n","// noinspection JSUnusedGlobalSymbols\n\nimport { computed, inject, Injectable, linkedSignal, Signal, signal } from '@angular/core';\nimport { css, injectGlobal } from '@emotion/css';\nimport { LocalStorageService, Options } from '../cdk';\nimport {\n LightTheme,\n type NullableSize,\n type ThemeName,\n type Typeface,\n type UniTheme,\n Z_INDEX,\n type ZIndexableElements,\n ColorToken,\n ComponentName,\n ComponentTheme,\n ContainerColorToken,\n ContentColorToken,\n NullableStyleExpression,\n OptionalSize,\n Size,\n TextRole,\n Thickness,\n Variant,\n toTypefaces,\n createThemeFromPalette,\n type GenerateColorsConfig,\n type PaletteConfig,\n type Radii,\n type ColorKey,\n type Radius,\n type Border,\n type Shadow,\n} from '@uni-design-system/uni-core';\n\nimport { UNI_THEMES } from './theme.token';\nimport { safeParseInt } from '../cdk/helpers/number.helper';\n\n/**\n * The editable shape a theme builder manipulates: a seed + scheme + category\n * (plus optional saturation floor, brand colors, and light/dark mode).\n * Everything else in a theme is derived from this. Brand colors come in two\n * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`\n * are brand-faithful but the WCAG guard-rail may adjust their lightness.\n */\nexport type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> &\n Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'> & {\n /** Radii override (e.g. a `ShapeRadii` shape-language preset). */\n radii?: Radii;\n };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /** localStorage key marking the custom brand theme as active. */\n static readonly CUSTOM_KEY = 'CustomTheme';\n /** localStorage key holding the serialized brand palette config. */\n static readonly PALETTE_KEY = 'uni-custom-palette';\n\n private themes = inject(UNI_THEMES);\n private localStorage = inject(LocalStorageService);\n\n theme = signal<UniTheme>(LightTheme);\n themeOptions = signal<Options<ThemeName>>([]);\n\n components = computed(() => this.theme().components);\n component = <T>(componentName: ComponentName): Signal<ComponentTheme<T>> =>\n computed(() => (this.components()[componentName] as ComponentTheme<T>) || {});\n colors = computed(() => this.theme().colors);\n // CSS-ready typefaces are derived from the theme's numeric type scale,\n // never stored twice on the theme.\n typeFaces = computed(() => toTypefaces(this.theme().typography));\n spacing = computed(() => this.theme().spacing);\n thicknesses = computed(() => this.theme().thicknesses);\n radii = computed(() => this.theme().radii);\n borders = computed(() => this.theme().borders);\n shadows = computed(() => this.theme().shadows);\n icons = computed(() => this.theme().icons);\n\n constructor() {\n // Honor the user's reduced-motion preference across every component\n // (WCAG 2.3.3): collapse all animations/transitions to a single frame.\n injectGlobal`\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n }\n `;\n\n this.themeOptions.set(\n Object.keys(this.themes).map((key) => {\n return { label: this.themes[key].name, value: key };\n })\n );\n\n // Rehydrate a custom brand theme if one is active — this is what lets a\n // palette built in one story reskin every other story: each story spins up\n // a fresh ThemeService, and it reads the persisted config here on init.\n const savedTheme = this.localStorage.getItem<string>('theme');\n const savedPalette = this.localStorage.getItem<BrandPaletteConfig>(ThemeService.PALETTE_KEY);\n if (savedTheme === ThemeService.CUSTOM_KEY && savedPalette) {\n this.applyPalette(savedPalette, false);\n } else {\n this.selectTheme(savedTheme || Object.keys(this.themes)[0] || 'base');\n }\n }\n\n public selectTheme(themeName: ThemeName): void {\n this.selectedThemeKey.set(themeName);\n if (this.themes[themeName]) this.theme.set(this.themes[themeName]);\n this.localStorage.setItem('theme', themeName);\n }\n\n /** The live brand palette config, when a custom theme is active. */\n public customPalette = signal<BrandPaletteConfig | null>(null);\n public isCustomTheme = computed(() => this.selectedThemeKey() === ThemeService.CUSTOM_KEY);\n\n /**\n * Generate a full theme from a brand palette config and make it active. When\n * `persist` is true the config is saved so every subsequent story (and\n * reload) renders with the same brand.\n */\n public applyPalette(config: BrandPaletteConfig, persist = true): void {\n this.customPalette.set(config);\n this.theme.set(\n createThemeFromPalette({ ...config, id: ThemeService.CUSTOM_KEY, name: 'Your Brand' })\n );\n this.selectedThemeKey.set(ThemeService.CUSTOM_KEY);\n if (persist) {\n this.localStorage.setItem(ThemeService.PALETTE_KEY, config);\n this.localStorage.setItem('theme', ThemeService.CUSTOM_KEY);\n }\n }\n\n /** Drop the custom brand theme and fall back to the first built-in theme. */\n public clearCustomPalette(): void {\n this.customPalette.set(null);\n this.localStorage.removeItem(ThemeService.PALETTE_KEY);\n this.selectTheme(Object.keys(this.themes)[0] || 'base');\n }\n\n public selectedThemeName = computed(() => this.theme().name);\n public selectedThemeKey = signal<string>('');\n\n textClass = (textRole: TextRole, textColor?: ContentColorToken) => {\n return css([\n {\n ...this.typeFaces()[textRole],\n },\n textColor && {\n color: this.colors()[textColor],\n },\n ]);\n };\n\n componentStyle = (componentName: ComponentName, variant: Variant, size: Size) =>\n computed(() => {\n const component = this.component(componentName)();\n const { fixed, variants, sizes } = component;\n const variantStyle = variants && variants[variant];\n const sizeStyle = sizes && sizes[size];\n return { ...fixed, ...variantStyle, ...sizeStyle };\n });\n\n getSpacing = (size: NullableSize) => {\n return size === 'none' ? 'none' : this.spacing()[size];\n };\n\n getThickness = (thickness: Thickness) => this.theme().thicknesses[thickness];\n\n getContentColor = (token: ContainerColorToken, useVariant?: boolean) =>\n useVariant\n ? this.colors()[`on-${token}-variant` as ColorToken]\n : this.colors()[`on-${token}` as ColorToken];\n\n colorPair = (token?: ContainerColorToken, colorVariant?: boolean): NullableStyleExpression => {\n if (!token) return;\n const backgroundColor = this.colors()[token];\n const color = this.getContentColor(token, colorVariant);\n return { color, backgroundColor };\n };\n\n backgroundColor = (token?: ColorKey): NullableStyleExpression => {\n return !token ? undefined : { backgroundColor: this.colors()[token] };\n };\n\n backgroundImage = (url?: string): NullableStyleExpression => {\n return !url ? undefined : { backgroundImage: `url(${url})` };\n };\n\n getContainerColors = (color: Variant, useVariant?: boolean) => {\n const token = (color + '-container') as ContainerColorToken;\n return this.colorPair(token, useVariant);\n };\n\n /**\n * Shared keyboard-focus indicator (WCAG 2.4.7). Spread into a component's\n * Emotion styles: `...this.theme.focusRing()` or `focusRing('primary')`.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': {\n outline: `2px solid ${token ? this.colors()[token] : 'currentColor'}`,\n outlineOffset: '2px',\n },\n });\n\n typeface = (typeface?: Typeface) => {\n const typefaces = this.typeFaces();\n return typeface && typefaces[typeface];\n };\n\n colorPalette = () => this.colors();\n\n color(color?: ColorKey): NullableStyleExpression {\n return !color ? undefined : { color: this.colors()[color] };\n }\n\n getDashedBorder(\n color: ColorKey | undefined,\n radius: Radius | undefined\n ): NullableStyleExpression {\n if (!color) return;\n\n const r = radius && this.radii()[radius];\n const borderRadius = r ? safeParseInt(r) : 0;\n const colors = this.colors()[color];\n const strokeColor = colors?.replace('#', '%23');\n\n return {\n backgroundImage: `url(\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='${borderRadius}' ry='${borderRadius}' stroke='${strokeColor}' stroke-width='4' stroke-dasharray='6%2c 14' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e\")`,\n borderRadius,\n };\n }\n\n radius(size: Radius | undefined): NullableStyleExpression {\n return !size ? undefined : { borderRadius: this.radii()[size] };\n }\n\n getRadiusLeft(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderTopLeftRadius: this.radii()[size],\n };\n }\n\n getRadiusRight(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomRightRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusTop(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderTopLeftRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusBottom(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderBottomRightRadius: this.radii()[size],\n };\n }\n\n padding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { padding: this.spacing()[size] };\n }\n\n horizontalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingInline: this.spacing()[size] };\n }\n\n verticalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBlock: this.spacing()[size] };\n }\n\n paddingLeft(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingLeft: this.spacing()[size] };\n }\n\n paddingRight(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingRight: this.spacing()[size] };\n }\n\n paddingTop(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingTop: this.spacing()[size] };\n }\n\n paddingBottom(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBottom: this.spacing()[size] };\n }\n\n border(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { border: this.borders()[border] };\n }\n\n borderTop(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderTop: this.borders()[border] };\n }\n\n borderBottom(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderBottom: this.borders()[border] };\n }\n\n borderLeft(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderLeft: this.borders()[border] };\n }\n\n borderRight(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderRight: this.borders()[border] };\n }\n\n boxShadow(shadow: Shadow | undefined) {\n return !shadow ? undefined : { boxShadow: this.shadows()[shadow] };\n }\n\n gap(gap: OptionalSize): NullableStyleExpression {\n return !gap || gap === 'none' ? undefined : { gap: this.spacing()[gap] };\n }\n\n zIndex(element: ZIndexableElements | undefined): NullableStyleExpression {\n return !element ? undefined : { zIndex: Z_INDEX[element] };\n }\n\n borderColor(borderColor: ColorToken): NullableStyleExpression {\n return { borderColor: this.colors()[borderColor] };\n }\n\n getComponentTheme<T>(componentName: ComponentName) {\n return this.component<T>(componentName);\n }\n\n // Used to get an \"always-defined\" options object from a component theme.\n getComponentOptions = <T>(componentName: ComponentName) =>\n linkedSignal({\n source: this.getComponentTheme<T>(componentName),\n computation: () => {\n return this.getComponentTheme<T>(componentName)().options || ({} as T);\n },\n });\n\n componentOptions = (componentName: ComponentName) =>\n computed(() => this.component(componentName)().options || {});\n\n style(prop: string, value: string | number | undefined): NullableStyleExpression {\n return !value ? undefined : { [prop]: value };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n} from '@angular/core';\nimport type { ComponentName, Size, Variant } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\nexport const COMPONENT_NAME = new InjectionToken<ComponentName>('');\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n template: ``,\n})\nexport class BaseComponent<T = unknown> {\n protected componentName = inject(COMPONENT_NAME);\n theme = inject(ThemeService);\n\n variant = input<Variant>('primary'); // TODO: Make Variant support undefined\n size = input<Size>('lg');\n\n componentTheme = computed(() => this.theme.getComponentTheme<T>(this.componentName)());\n\n componentOptions = computed(() => this.theme.getComponentOptions<T>(this.componentName)());\n\n style = computed(() =>\n this.theme.componentStyle(this.componentName, this.variant(), this.size())()\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniAppBarOptions } from './app-bar.model';\n\n/**\n * Horizontal application bar: project leading controls (menu button, logo)\n * with the `leading` attribute, actions with `trailing` (pushed to the far\n * edge), and either pass `title` or project custom center content. Surface,\n * divider, height, typography and spacing all resolve from `appBar` tokens.\n * Place it inside your page's `<header>` landmark.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-app-bar',\n providers: [{ provide: COMPONENT_NAME, useValue: 'appBar' }],\n host: { '[class]': 'className()' },\n template: `\n <ng-content select=\"[leading]\" />\n @if (title()) {\n <span class=\"uni-app-bar-title\">{{ title() }}</span>\n }\n <ng-content />\n <span class=\"uni-app-bar-spacer\"></span>\n <ng-content select=\"[trailing]\" />\n `,\n})\nexport class UniAppBarComponent extends BaseComponent<UniAppBarOptions> {\n /** Bar title; alternatively project your own center content. */\n title = input<string>();\n /** Stick the bar to the top of its scroll container. */\n sticky = input(false);\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n width: '100%',\n height: options.height ?? 56,\n flex: 'none',\n ...this.theme.colorPair(options.color),\n ...this.theme.gap(options.gap),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.borderBottom(options.divider),\n ...this.theme.boxShadow(options.elevation),\n '& .uni-app-bar-title': {\n ...this.theme.typeface(options.typeface),\n whiteSpace: 'nowrap',\n },\n '& .uni-app-bar-spacer': { flexGrow: 1 },\n ...(this.sticky() && { position: 'sticky', top: 0, zIndex: 10 }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport type { SymbolFill, SymbolGrade, SymbolOptions, SymbolWeight } from './symbol.model';\nimport { COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-symbol',\n imports: [],\n template: `{{ name() }}`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'symbol' }],\n // Icons are decorative: hide the ligature text (e.g. \"chevron_left\") from\n // screen readers. Meaningful icons get their name from the parent control.\n host: {\n '[class]': 'className()',\n 'aria-hidden': 'true',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSymbolComponent extends BaseComponent<SymbolOptions> {\n name = input.required<string>();\n\n fill = input<SymbolFill>();\n weight = input<SymbolWeight>();\n grade = input<SymbolGrade>();\n opticalSize = input<number>();\n\n protected readonly className = computed(() => {\n const settings =\n `'FILL' ${this.fill() || this.componentOptions().fill || 0}, ` +\n `'wght' ${this.weight() || this.componentOptions().weight || 400}, ` +\n `'GRAD' ${this.grade() || this.componentOptions().grade || 0}, ` +\n `'opsz' ${this.opticalSize() || this.componentOptions().opticalSize || 24}`;\n\n return (\n 'material-symbols-rounded ' +\n css({\n fontVariationSettings: settings,\n fontSize: `${this.opticalSize() || this.componentOptions().opticalSize || 24}px`,\n })\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniAvatarOptions } from './avatar.model';\n\n/**\n * Identity avatar with a graceful fallback chain: image → initials from\n * `name` → themed symbol. Coloring, radius, typeface and sizes all resolve\n * from `avatar` theme tokens; `variant` picks the container palette.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatar' }],\n host: {\n '[class]': 'className()',\n '[attr.role]': \"label() ? 'img' : null\",\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': \"label() ? null : 'true'\",\n },\n template: `\n @if (showImage()) {\n <img [src]=\"src()\" alt=\"\" (error)=\"imageFailed.set(true)\" />\n } @else if (text()) {\n <span>{{ text() }}</span>\n } @else if (initials()) {\n <span>{{ initials() }}</span>\n } @else {\n <uni-symbol [name]=\"componentOptions().fallbackSymbol ?? 'person'\" />\n }\n `,\n})\nexport class UniAvatarComponent extends BaseComponent<UniAvatarOptions> {\n /** Image URL; on load error the avatar falls back to initials/symbol. */\n src = input<string>();\n /** Person's name: drives the initials and the accessible label. */\n name = input<string>();\n /** Verbatim text instead of derived initials (e.g. a group's “+3”). */\n text = input<string>();\n\n protected readonly imageFailed = signal(false);\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed());\n\n protected readonly initials = computed(() => {\n const name = this.name()?.trim();\n if (!name) return '';\n const words = name.split(/\\s+/);\n const first = words[0]?.[0] ?? '';\n const last = words.length > 1 ? (words[words.length - 1][0] ?? '') : '';\n return (first + last).toUpperCase();\n });\n\n protected readonly label = computed(() => this.name() ?? this.text());\n\n protected readonly className = computed(() =>\n css([\n // Typeface (family/weight) before the merged theme style, so the size\n // record's fontSize wins over the typeface's.\n {\n ...this.theme.typeface(this.componentOptions().typeface),\n ...this.theme.radius(this.componentOptions().borderRadius),\n },\n this.style(),\n {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 'none',\n overflow: 'hidden',\n userSelect: 'none',\n lineHeight: 1,\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n '& symbol': { fontSize: '1.4em' },\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniAvatarComponent } from './avatar.component';\nimport type { UniAvatarGroupOptions } from './avatar.model';\n\n/**\n * Overlapping stack of avatars. `max` collapses the overflow into a themed\n * “+N” chip (itself a `uni-avatar`). Overlap and separator ring resolve from\n * `avatarGroup` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar-group',\n imports: [UniAvatarComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatarGroup' }],\n host: { '[class]': 'className()', role: 'group' },\n template: `\n <ng-content />\n @if (surplus() > 0) {\n <uni-avatar\n class=\"uni-surplus\"\n [text]=\"'+' + surplus()\"\n variant=\"quaternary\"\n [size]=\"size()\"\n />\n }\n `,\n})\nexport class UniAvatarGroupComponent extends BaseComponent<UniAvatarGroupOptions> {\n /** Show at most this many avatars; the rest collapse into a “+N” chip. */\n max = input<number | undefined>(undefined);\n\n private readonly avatars = contentChildren(UniAvatarComponent);\n\n protected readonly surplus = computed(() => {\n const max = this.max();\n if (max === undefined) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const overlap = this.theme.spacing()[options.overlap ?? 'sm'] ?? '8px';\n const ring = `${options.ringWidth ?? 2}px solid ${\n this.theme.colors()[options.ringColor ?? 'surface'] ?? 'transparent'\n }`;\n const max = this.max();\n return css({\n display: 'inline-flex',\n alignItems: 'center',\n '& uni-avatar': {\n border: ring,\n marginLeft: `calc(-1 * ${overlap})`,\n '&:first-child': { marginLeft: 0 },\n },\n // Collapse the overflow: hide projected avatars past `max`, but never\n // the surplus chip this component renders itself.\n ...(max !== undefined && {\n [`& uni-avatar:nth-of-type(n + ${max + 1}):not(.uni-surplus)`]: { display: 'none' },\n }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\nexport type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;\n\n@Component({\n selector: 'uni-background',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBackgroundComponent {\n theme = inject(ThemeService);\n\n image = input<string>();\n imagePosition = input<ImagePosition>();\n imageSize = input<'cover' | 'contain' | number | string>();\n height = input<number | string>('100%');\n width = input<number | string>();\n\n protected readonly className = computed(() => {\n return css([\n {\n backgroundRepeat: 'no-repeat',\n display: 'block',\n ...this.theme.backgroundImage(this.image()),\n },\n this.theme.style('backgroundPosition', this.imagePosition()),\n this.theme.style('backgroundSize', this.imageSize()),\n this.theme.style('height', this.height()),\n this.theme.style('width', this.width()),\n ]);\n });\n}\n","/**\n * Background Component Barrel File\n *\n * This file exports all public-facing elements of the background component.\n */\n\nexport { UniBackgroundComponent } from './background.component';\nexport type { ImagePosition } from './background.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniBadgeOptions } from './badge.model';\nimport type { Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-badge]',\n imports: [],\n template: `<ng-content></ng-content>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'badge' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {\n color = input<Variant | undefined>(undefined);\n useVariant = input<boolean>(false);\n width = input<number>();\n\n protected readonly className = computed(() => {\n const width = this.width();\n\n return css([\n {\n ...this.theme.getContainerColors(this.color() || 'primary', this.useVariant()),\n ...this.theme.typeface('badge'),\n display: 'inline-block',\n padding: '0 16px',\n ...this.theme.radius(this.componentOptions().borderRadius),\n textAlign: 'center',\n letterSpacing: 1,\n },\n width !== undefined && {\n minWidth: width - 32,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { BreadcrumbItem, UniBreadcrumbOptions } from './breadcrumb.model';\n\n/**\n * WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last\n * item is the current page (`aria-current=\"page\"`), separators are decorative.\n * Items with `href` render as real links; without one they render as\n * link-styled buttons emitting `itemClicked` — wire that to your router.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-breadcrumb',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'breadcrumb' }],\n template: `\n <nav [attr.aria-label]=\"ariaLabel()\" [class]=\"className()\">\n <ol>\n @for (item of items(); track item.label; let last = $last; let i = $index) {\n <li>\n @if (last) {\n <span aria-current=\"page\">{{ item.label }}</span>\n } @else if (item.href) {\n <a [href]=\"item.href\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</a>\n } @else {\n <button type=\"button\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</button>\n }\n @if (!last) {\n <uni-symbol\n aria-hidden=\"true\"\n [name]=\"componentOptions().separatorSymbol ?? 'chevron_right'\"\n />\n }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class UniBreadcrumbComponent extends BaseComponent<UniBreadcrumbOptions> {\n /** The trail, root first; the last item is the current page. */\n items = input.required<BreadcrumbItem[]>();\n /** Landmark label distinguishing this nav from others on the page. */\n ariaLabel = input('Breadcrumb');\n\n /** Emits the clicked ancestor item (also fires for `href` links). */\n itemClicked = output<BreadcrumbItem>();\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const linkColor = this.theme.colors()[options.color ?? 'on-background-variant'];\n return css({\n '& ol': {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.typeface(options.typeface),\n },\n '& li': {\n display: 'inline-flex',\n alignItems: 'center',\n ...this.theme.gap(options.gap),\n },\n '& a, & button': {\n background: 'none',\n border: 0,\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n textDecoration: 'none',\n color: linkColor,\n '&:hover': { textDecoration: 'underline' },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()['primary']}`,\n outlineOffset: 2,\n },\n },\n '& [aria-current]': {\n ...this.theme.color(options.currentColor),\n },\n '& symbol': { fontSize: '1.1em', ...this.theme.color(options.color) },\n ...this.theme.gap(options.gap),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { ThemeService } from '../../theming/theme.service';\nimport type { ColorToken, CssLength, IconName } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-icon',\n imports: [],\n template: '',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Icons are decorative; meaningful icons get their name from the parent control\n host: {\n 'aria-hidden': 'true',\n '[class]': 'className()',\n '[style.mask-image]': 'path()',\n '[style.-webkit-mask-image]': 'path()',\n // Inline styles, so an explicit size always beats the fill-the-container\n // rule in the stylesheet regardless of style injection order.\n '[style.width]': 'sizeValue()',\n '[style.height]': 'sizeValue()',\n },\n})\nexport class UniIconComponent {\n private themeService = inject(ThemeService);\n\n color = input<ColorToken>();\n name = input.required<IconName>();\n\n /**\n * Explicit square size. Bare numbers are px; strings pass through, so any CSS\n * length works (`'1.25rem'`, `'1em'`, `'clamp(…)'`).\n *\n * Leave it unset to keep the default behaviour — the icon fills its\n * container, which is what lets a themed control size its own glyph through\n * padding. Set it at call sites that would otherwise need a width/height\n * rule just to size one icon.\n */\n size = input<CssLength>();\n\n /** Resolved from the theme's icon primitives; unknown names render nothing. */\n protected readonly path = computed(() => {\n const icon = this.themeService.theme().icons[this.name()];\n return icon ? `url(\"${icon}\")` : 'none';\n });\n\n /** `null` leaves the styles off entirely, falling back to the stylesheet. */\n protected readonly sizeValue = computed(() => {\n const size = this.size();\n if (size === undefined || size === null || size === '') return null;\n if (typeof size === 'number') return `${size}px`;\n\n // A static attribute (`size=\"24\"`) arrives as a string, so a bare number\n // has to mean px here too — otherwise it emits the invalid `width: 24`,\n // which the browser drops, silently falling back to filling the container.\n const trimmed = size.trim();\n return /^-?\\d*\\.?\\d+$/.test(trimmed) ? `${trimmed}px` : trimmed;\n });\n\n protected readonly className = computed(() =>\n css([{ ...this.themeService.color(this.color()) }])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ContainerColorToken,\n OptionalAlignContent,\n OptionalAlignItems,\n OptionalAlignSelf,\n OptionalBorder,\n OptionalColor,\n OptionalDisplay,\n OptionalFlexDirection,\n OptionalJustifyContent,\n OptionalOverflow,\n OptionalPosition,\n OptionalRadius,\n OptionalSize,\n OptionalTextAlign,\n OptionalWrap,\n Shadow,\n Variant,\n ZIndexableElements,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService } from '../../../theming';\n\n/**\n * The base layout primitive, applied as an attribute to any element so\n * semantics stay yours: `<main box-layout [grow]=\"1\" padding=\"md\">`.\n * Exception: other components' host elements (`<uni-card box-layout>` would\n * put two components on one element) — wrap those in a `<div box-layout>`.\n *\n * Sizing convention (height/width/min/max/inset): a **number is px and needs\n * a binding** — `[height]=\"420\"`; a **plain attribute is a CSS length\n * string** — `height=\"420px\"`. Spacing/radius/color inputs take theme tokens.\n */\n@Component({\n selector: '[uni-box-layout], [box-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'boxClassName()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBoxComponent {\n theme = inject(ThemeService);\n\n color = input<ContainerColorToken>();\n backgroundColor = input<OptionalColor>();\n borderRadius = input<OptionalRadius>();\n borderRadiusLeft = input<OptionalRadius>();\n borderRadiusRight = input<OptionalRadius>();\n borderRadiusTop = input<OptionalRadius>();\n borderRadiusBottom = input<OptionalRadius>();\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<OptionalBorder>();\n borderTop = input<OptionalBorder>();\n borderBottom = input<OptionalBorder>();\n borderLeft = input<OptionalBorder>();\n borderRight = input<OptionalBorder>();\n dashBorder = input<boolean>(false);\n alignSelf = input<OptionalAlignSelf>();\n alignItems = input<OptionalAlignItems>();\n alignContent = input<OptionalAlignContent>();\n justifyContent = input<OptionalJustifyContent>();\n grow = input<number>();\n display = input<OptionalDisplay>();\n position = input<OptionalPosition>();\n inset = input<number | string>();\n /** Number = px via binding (`[height]=\"420\"`); string = CSS length (`height=\"420px\"`). */\n height = input<number | string>();\n minHeight = input<number | string>();\n maxHeight = input<number | string>();\n /** Number = px via binding (`[width]=\"420\"`); string = CSS length (`width=\"50%\"`). */\n width = input<number | string>();\n minWidth = input<number | string>();\n maxWidth = input<number | string>();\n ignoreDir = input(true);\n gridArea = input<string>();\n gridColumn = input<string>();\n gridRow = input<string>();\n overflow = input<OptionalOverflow>();\n elevation = input<Shadow>(); // Deprecated, use shadow instead\n shadow = input<Shadow>();\n gap = input<OptionalSize>();\n fullWidth = input<boolean>();\n fullHeight = input<boolean>();\n flexDirection = input<OptionalFlexDirection>();\n textAlign = input<OptionalTextAlign>();\n wrapItems = input<OptionalWrap>(undefined);\n zIndex = input<ZIndexableElements>();\n\n protected readonly boxClassName = computed(() => {\n return css([\n {\n ...this.theme.colorPair(this.color()),\n ...this.theme.backgroundColor(this.backgroundColor()),\n display: this.alignSelf() ? 'flex' : 'block',\n position: this.position(),\n inset: this.inset(),\n boxSizing: 'border-box',\n height: this.height(),\n minHeight: this.minHeight(),\n maxHeight: this.maxHeight(),\n width: this.width(),\n minWidth: this.minWidth(),\n maxWidth: this.maxWidth(),\n flexWrap: this.wrapItems(),\n overflow: this.overflow(),\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n ...this.theme.boxShadow(this.elevation()),\n ...this.theme.boxShadow(this.shadow()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.getRadiusLeft(this.borderRadiusLeft()),\n ...this.theme.getRadiusRight(this.borderRadiusRight()),\n ...this.theme.getRadiusTop(this.borderRadiusTop()),\n ...this.theme.getRadiusBottom(this.borderRadiusBottom()),\n ...this.theme.borderTop(this.borderTop()),\n ...this.theme.borderBottom(this.borderBottom()),\n ...this.theme.borderLeft(this.borderLeft()),\n ...this.theme.borderRight(this.borderRight()),\n ...this.theme.gap(this.gap()),\n ...this.theme.style('display', this.display()),\n ...this.theme.style('alignSelf', this.alignSelf()),\n ...this.theme.style('alignItems', this.alignItems()),\n ...this.theme.style('justifyContent', this.justifyContent()),\n ...this.theme.style('alignContent', this.alignContent()),\n ...this.theme.style('flexGrow', this.grow()),\n ...this.theme.style('flexDirection', this.flexDirection()),\n ...this.theme.style('gridArea', this.gridArea()),\n ...this.theme.style('gridColumn', this.gridColumn()),\n ...this.theme.style('gridRow', this.gridRow()),\n ...this.theme.style('textAlign', this.textAlign()),\n ...this.theme.zIndex(this.zIndex()),\n },\n this.border() &&\n !this.dashBorder() && {\n ...this.theme.border(this.border()),\n },\n this.border() &&\n this.dashBorder() && {\n ...this.theme.getDashedBorder(this.border() as Variant, this.borderRadius()),\n },\n\n this.fullWidth() && {\n width: '100%',\n },\n this.fullHeight() && {\n height: '100%',\n },\n\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row' && {\n '&:dir(rtl)': {\n flexDirection: 'row-reverse',\n },\n },\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row-reverse' && {\n '&:dir(rtl)': {\n flexDirection: 'row',\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type {\n OptionalAlignItems,\n OptionalDisplay,\n OptionalJustifyContent,\n} from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-center-layout], [center-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniCenterComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override justifyContent = input<OptionalJustifyContent>('center');\n override alignItems = input<OptionalAlignItems>('center');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Component({\n selector: '[uni-grid-area-layout], [grid-area-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniGridAreaComponent {\n area = input.required<string>();\n\n protected readonly className = computed(() => css({ gridArea: this.area() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, Thickness, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-grid-layout], [grid-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'gridClassName()' },\n})\nexport class UniGridComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('grid');\n\n templateAreas = input<string>();\n templateColumns = input<string>();\n templateRows = input<string>();\n outline = input<Thickness>();\n outlineColor = input<Variant>();\n\n protected readonly gridClassName = computed(() =>\n css([\n this.templateAreas() && {\n gridTemplateAreas: this.templateAreas(),\n },\n this.templateColumns() && {\n gridTemplateColumns: this.templateColumns(),\n },\n this.templateRows() && {\n gridTemplateRows: this.templateRows(),\n },\n this.outline() && {\n gap: this.theme.getThickness(this.outline()!),\n },\n this.outlineColor() && {\n backgroundColor: this.theme.colorPalette()[this.outlineColor()!],\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-row-layout], [row-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniRowComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('row');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minWidth]=\"0\"`\n * when the row must shrink inside a constrained flex parent (scroll or\n * text truncation containment).\n */\n override minWidth = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-stack-layout], [stack-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniStackComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('column');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minHeight]=\"0\"`\n * when the stack must shrink inside a constrained flex parent (scroll\n * containment).\n */\n override minHeight = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalWrap } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-wrap-layout], [wrap-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniWrapComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override wrapItems = input<OptionalWrap>('wrap');\n\n constructor() {\n super();\n }\n}\n","// https://css-tricks.com/how-to-recreate-the-ripple-effect-of-material-design-buttons/\nimport { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Directive({\n selector: '[uniRipple]',\n host: {\n '(click)': 'onClick($event)',\n },\n})\nexport class RippleDirective {\n private renderer = inject(Renderer2);\n el = inject(ElementRef);\n\n hostEl;\n\n constructor() {\n this.hostEl = this.el.nativeElement;\n }\n\n onClick(e: MouseEvent) {\n if (!e) return;\n let ripple, d;\n if (this.hostEl.querySelector(`.${this.rippleClass}`) === null) {\n ripple = this.renderer.createElement('span');\n this.renderer.addClass(ripple, this.rippleClass);\n this.renderer.appendChild(this.hostEl, ripple);\n }\n\n ripple = this.hostEl.querySelector(`.${this.rippleClass}`);\n this.renderer.appendChild(this.hostEl, ripple);\n this.renderer.removeClass(ripple, this.animateClass);\n\n if (!ripple.offsetHeight && !ripple.offsetWidth) {\n d = Math.max(this.hostEl.offsetWidth, this.hostEl.offsetHeight);\n this.renderer.setStyle(ripple, 'width', d + 'px');\n this.renderer.setStyle(ripple, 'height', d + 'px');\n }\n\n const x = e.pageX - this.hostEl.offsetLeft - ripple.offsetWidth / 2;\n const y = e.pageY - this.hostEl.offsetTop - ripple.offsetHeight / 2;\n\n this.renderer.setStyle(ripple, 'top', y + 'px');\n this.renderer.setStyle(ripple, 'left', x + 'px');\n this.renderer.addClass(ripple, this.animateClass);\n }\n\n rippleClass = css({\n display: 'block',\n position: 'absolute',\n background: 'rgba(255, 255, 255, 0.3)',\n borderRadius: '100%',\n transform: 'scale(0)',\n });\n\n animateClass = css({\n animation: 'ripple 0.65s linear',\n\n '@keyframes ripple': {\n '100%': {\n opacity: 0,\n transform: 'scale(2.5)',\n },\n },\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniButtonOptions } from './button.model';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent } from '../layout';\nimport { UniSymbolComponent } from '../symbol';\nimport { RippleDirective } from '../../directives/ripple';\n\n@Component({\n selector: 'button[uni-text-button], button[text-button]',\n template: `@if (loading()) {\n <div box-layout [class]=\"spinnerBox\"><uni-icon name=\"spinner\" /></div>\n }\n @if (symbolLeft()) {\n <uni-symbol [name]=\"symbolLeft()!\" class=\"symbolLeft\" />\n }\n <span><ng-content></ng-content></span>\n @if (symbolRight()) {\n <uni-symbol [name]=\"symbolRight()!\" class=\"symbolRight\" />\n } `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'button' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RippleDirective, // Keep this import\n UniIconComponent,\n UniBoxComponent,\n UniSymbolComponent,\n ],\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniButtonComponent extends BaseComponent<UniButtonOptions> {\n readonly disable = input<boolean | undefined>(false);\n readonly loading = input<boolean | undefined>(false);\n readonly fullWidth = input<boolean>(false);\n\n readonly symbolLeft = input<string>();\n readonly symbolRight = input<string>();\n\n spinnerBox = css({\n position: 'absolute',\n left: 0,\n width: '100%',\n height: '100%',\n paddingTop: '6%',\n paddingBottom: '6%',\n });\n\n protected readonly className = computed(() =>\n css([\n // Token-driven radius + typeface from component options. Applied before\n // `style()` so theme `sizes`/`fixed` (per-size fontSize, or hand-set\n // radii/families in older themes) keep winning.\n this.theme.radius(this.componentOptions().borderRadius),\n { ...this.theme.typeface(this.componentOptions().typeface) },\n this.style() && {\n ...this.style(), // TODO: Set priority on theme-defined styles\n },\n {\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n '& .symbolLeft': {\n marginLeft: -6,\n marginRight: 4,\n fontSize: this.symbolSize(),\n },\n '& span': {\n alignContent: 'center',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n },\n '& .symbolRight': {\n marginRight: -6,\n marginLeft: 4,\n fontSize: this.symbolSize(),\n },\n },\n // Hover/pressed styling now lives in the theme's button variants\n // (solid vs. hollow, per-variant states). Only the keyboard-focus\n // indicator (WCAG 2.4.7) stays component-owned.\n {\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.variant()]}`,\n outlineOffset: '2px',\n },\n },\n this.fullWidth() && {\n width: '100%',\n },\n !this.loading() && {\n '&:disabled': {\n ...this.componentTheme().variants?.disabled,\n },\n },\n this.loading() && {\n '&:disabled symbol': {\n opacity: 0,\n },\n '&:disabled span': {\n opacity: 0,\n },\n },\n ])\n );\n\n symbolSize = computed(() => {\n const fontSize = parseFloat(String(this.style()['fontSize'] ?? ''));\n // Fall back to the default icon size when the theme defines no fontSize\n return (Number.isNaN(fontSize) ? 16 : fontSize) + 4;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-button-group',\n imports: [],\n template: ` <ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniButtonGroupComponent {\n private themeService = inject(ThemeService);\n\n protected readonly className = computed(() => {\n return css({\n display: 'inline-flex',\n\n '& button': {\n ...this.themeService.border('quaternary'),\n marginRight: -1,\n },\n\n '& button:first-child': {\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:not(:first-child):not(:last-child)': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 4,\n borderBottomRightRadius: 4,\n marginRight: 0,\n },\n });\n });\n}\n","/**\n * UniButtonGroupComponent Barrel File\n *\n * This file exports all public-facing elements of the button-group component.\n */\n\nexport { UniButtonGroupComponent } from './button-group.component';\nexport type { ButtonGroupConfig, ButtonGroupItem } from './button-group.model';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-content',\n imports: [],\n templateUrl: './card-content.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardContent' }],\n styleUrls: ['./card-content.component.scss'],\n})\nexport class UniCardContentComponent extends BaseComponent {}\n","<div [style]=\"style()\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ColorKey,\n OptionalDisplay,\n OptionalTextAlign,\n Typeface,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\n/**\n * Typeface defaults by host element, so semantic HTML and the type scale\n * reinforce each other: `<h1 uni-text>` is already headline-large.\n */\nconst TagTypefaces: Record<string, Typeface> = {\n h1: 'headline-large',\n h2: 'headline-medium',\n h3: 'headline-small',\n h4: 'title-large',\n h5: 'title-medium',\n h6: 'title-small',\n p: 'body-1-long',\n small: 'caption',\n figcaption: 'caption',\n blockquote: 'quote',\n label: 'label',\n};\n\n/**\n * The typography primitive, applied as an attribute to any element so\n * semantics stay yours. The attribute value is the typeface:\n * `<h1 uni-text=\"display-small\">`, `<span uni-text=\"caption\">`, dynamic via\n * `[uni-text]=\"role()\"`. With no value, the typeface is inferred from the\n * host element (h1 → headline-large, p → body-1-long, …), falling back to\n * `title-small`; the `typeface` input remains as an explicit override.\n */\n@Component({\n selector: '[uni-text]',\n imports: [],\n template: '<ng-content></ng-content>',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniTextComponent {\n theme = inject(ThemeService);\n private readonly tag = (inject(ElementRef).nativeElement as HTMLElement).tagName.toLowerCase();\n\n /** Typeface via the selector attribute: `uni-text=\"headline-large\"`. */\n readonly uniText = input<Typeface | ''>('', { alias: 'uni-text' });\n /** Explicit typeface; the attribute value wins when both are set. */\n typeface = input<Typeface | undefined>(undefined);\n color = input<ColorKey>();\n display = input<OptionalDisplay>();\n align = input<OptionalTextAlign>();\n nowrap = input<boolean>();\n maxWidth = input<number>();\n ellipsis = input<boolean>(false);\n\n protected readonly resolvedTypeface = computed<Typeface>(\n () => this.uniText() || this.typeface() || TagTypefaces[this.tag] || 'title-small'\n );\n\n protected readonly className = computed(() => {\n return css([\n {\n ...this.theme.typeface(this.resolvedTypeface()),\n ...this.theme.color(this.color()),\n display: this.display(),\n },\n this.align() && {\n textAlign: this.align(),\n },\n this.nowrap() && {\n whiteSpace: 'nowrap',\n },\n this.maxWidth() && {\n maxWidth: this.maxWidth(),\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'inline-block',\n },\n this.ellipsis() && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCardOptions } from './card.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card',\n imports: [],\n templateUrl: './card.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'card' }],\n})\nexport class UniCardComponent extends BaseComponent<UniCardOptions> {\n /**\n * Token-resolved frame (variant-named border primitive, radii, elevation)\n * under the merged theme style, so hand-authored fixed/variant styles from\n * older themes keep winning.\n */\n protected readonly cardStyle = computed(() => ({\n ...this.theme.border(this.componentOptions().border ?? this.variant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.style(),\n }));\n}\n","<div [style]=\"cardStyle()\">\n <ng-content></ng-content>\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniTextComponent } from '../../text';\nimport { UniCardComponent } from '../card.component';\nimport type { Typeface } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-header',\n imports: [UniTextComponent, NgClass],\n templateUrl: './card-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardHeader' }],\n styleUrls: ['./card-header.component.scss'],\n})\nexport class UniCardHeaderComponent extends BaseComponent {\n private card = inject(UniCardComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n title = input<string>('');\n titleTextRole = input<Typeface>('title-large');\n\n constructor() {\n super();\n\n // this.variant = this.card?.variant;\n }\n\n className = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n });\n}\n","<div [style]=\"style()\" [ngClass]=\"className\">\n <span uni-text [typeface]=\"titleTextRole()\">{{ title() }}</span>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniCheckboxOptions } from './checkbox.model';\n\n@Component({\n selector: 'uni-checkbox',\n imports: [UniTextComponent],\n templateUrl: './checkbox.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'checkbox' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniCheckboxComponent\n extends BaseComponent<UniCheckboxOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n /**\n * Mixed state for \"select all\"-style parent checkboxes. Cleared\n * automatically on the next user interaction, matching native behavior.\n */\n readonly indeterminate = model<boolean>(false);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.indeterminate.set(false);\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n protected readonly checkboxLabel = computed(() =>\n css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '&:hover .checkbox svg path': this.disabled()\n ? {}\n : {\n strokeDashoffset: 0,\n },\n\n '& .checkbox': {\n height: this.componentOptions().size,\n width: this.componentOptions().size,\n },\n\n '& .checkbox svg': {\n display: 'block',\n },\n\n '& .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.componentOptions().boxColor ?? 'surface'),\n stroke: this.getThemeColor(this.variant()),\n strokeWidth: 2,\n rx: this.componentOptions().borderRadius || 2,\n ry: this.componentOptions().borderRadius || 2,\n transition: 'all 0.2s ease',\n },\n\n // Check/dash draw on the variant-filled box, so they wear its on-color.\n '& .checkbox svg .checkbox-check': {\n fill: 'none',\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n strokeDasharray: 18,\n strokeDashoffset: 18,\n transition: 'all 0.5s ease',\n },\n\n '& .checkbox svg .checkbox-dash': {\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n opacity: 0,\n transition: 'opacity 0.2s ease',\n },\n })\n );\n\n protected readonly checkboxInput = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .checkbox': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-check': {\n strokeDashoffset: 0,\n },\n\n '&:indeterminate + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:indeterminate + .checkbox svg .checkbox-dash': {\n opacity: 1,\n },\n\n '&:disabled + .checkbox': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .checkbox': {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '-4px',\n left: '-4px',\n right: '-4px',\n bottom: '-4px',\n border: `2px solid ${this.getThemeColor(this.variant())}`,\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 4}px`,\n pointerEvents: 'none',\n },\n },\n })\n );\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n\n /** The content color paired with a variant fill (on-primary, on-warn, …). */\n getOnColor(variant: ColorToken) {\n const colors = this.theme.colors();\n return colors[`on-${variant}`] ?? colors['on-primary'];\n }\n}\n","<label [class]=\"checkboxLabel()\">\n <input\n type=\"checkbox\"\n [class]=\"checkboxInput()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"checkbox\">\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <rect class=\"checkbox-box\" x=\"1\" y=\"1\" width=\"18\" height=\"18\"></rect>\n <polyline class=\"checkbox-check\" points=\"4 11 8 15 16 6\"></polyline>\n <line class=\"checkbox-dash\" x1=\"5\" y1=\"10\" x2=\"15\" y2=\"10\"></line>\n </svg>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import { Directive, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[uniBodyRender]',\n})\nexport class BodyRenderDirective implements OnInit {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngOnInit() {\n const element = this.el.nativeElement;\n this.renderer.appendChild(document.body, element);\n }\n}\n","import { Directive, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[uni-drag-n-drop], [dragAndDrop]',\n host: {\n '[style.opacity]': 'workspaceOpacity()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class DragAndDropDirective {\n // TODO(v4): rename to fileDropped — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFileDropped = output<FileList>();\n\n protected workspaceOpacity = signal('1');\n\n // Dragover listener, when files are dragged over our host element\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('0.5');\n }\n\n // Dragleave listener, when files are dragged away from our host element\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n }\n\n // Drop listener, when files are dropped on our host element\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { type IconName } from '../icon/icon.record';\nimport { RippleDirective } from '../../directives';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniIconComponent } from '../icon';\nimport { ThemeService } from '../../theming/theme.service';\nimport { visuallyHidden } from '../../cdk';\nimport type { RadiiSize, Size, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'button[uni-icon-button], button[icon-button]',\n imports: [UniSymbolComponent, UniIconComponent],\n template: `\n @if (loading()) {\n <uni-icon name=\"spinner\" />\n } @else if (symbolName()) {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"opticalSize()\" />\n } @else if (iconName()) {\n <uni-icon [name]=\"iconName()!\" [size]=\"glyphSize()\" />\n }\n <!-- Projected text is the button's accessible name (visually hidden) -->\n <span [class]=\"srOnlyClass\"><ng-content /></span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniIconButtonComponent {\n private theme = inject(ThemeService);\n config = this.theme.component<{ borderRadius?: RadiiSize }>('iconButton');\n\n /**\n * Accessible name for the button. Alternative to projecting text content\n * (`<button icon-button>Close</button>`); one of the two is required for\n * an icon-only button to be announced correctly.\n */\n ariaLabel = input<string>();\n\n iconName = input<IconName>();\n symbolName = input<string>();\n variant = input<Variant>('ghost');\n size = input<Size>('lg');\n disable = input<boolean>();\n loading = input<boolean>();\n opticalSize = input(24);\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n /**\n * Sizes `iconName` from the size token's `fontSize`, the same value that sizes\n * a `symbolName` ligature — so the two paths render the same glyph size and\n * `symbolName` → `iconName` is a like-for-like swap. Without it a masked icon\n * fills the whole button box, since the base size tokens carry no padding.\n * Themes that do use padding (Carbon) set a matching `fontSize`, so they land\n * on the same glyph either way.\n */\n protected readonly glyphSize = computed(() => {\n // Size tokens are Emotion style objects, so `fontSize` is typed wider than\n // a CSS length; anything exotic falls back to filling the button as before.\n const fontSize = this.config().sizes?.[this.size()]?.fontSize;\n return typeof fontSize === 'number' || typeof fontSize === 'string' ? fontSize : undefined;\n });\n\n protected readonly className = computed(() => {\n const { sizes, variants } = this.config();\n const sizeConfig = sizes && sizes[this.size()];\n const colorConfig = variants && variants[this.variant()];\n\n return css([\n {\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n // Token-driven radius (`max` = circle) with the legacy 999 fallback\n // for hand-authored themes that predate iconButton options.\n ...(this.theme.radius(this.config().options?.borderRadius) ?? { borderRadius: 999 }),\n // Block-level, but centring: the size tokens make the box bigger than\n // the glyph (an `sm` button is 22px around an 18px icon), so a plain\n // `display: block` parks the glyph in the top-left corner. Flex is\n // still block-level, so nothing about the button's own layout changes.\n // The accessible-name span is absolutely positioned and so stays out\n // of the flex flow.\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '& symbol': {\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n },\n sizeConfig && {\n ...sizeConfig,\n },\n colorConfig && {\n ...colorConfig,\n },\n this.symbolName() &&\n !this.loading() && {\n padding: 0,\n },\n this.variant() !== 'ghost' && {\n '&:hover': {\n ...this.theme.boxShadow('raised'),\n },\n },\n this.variant() === 'ghost' && {\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n },\n !this.loading() && {\n '&:disabled': {\n ...this.config().variants?.disabled,\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniRecordDatasource, UniServerSideDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniCenterComponent, UniRowComponent } from '../layout';\nimport type { UniDataSearchOptions } from './data-search.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-data-search',\n imports: [UniRowComponent, UniIconButtonComponent, UniIconComponent, UniCenterComponent],\n templateUrl: './data-search.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataSearch' }],\n})\nexport class UniDataSearchComponent<T> extends BaseComponent<UniDataSearchOptions> {\n datasource = input<UniDatasource<T>>();\n placeholder = input<string>('Search');\n fields = input<string[]>();\n\n searchValue = signal('');\n\n inputClassName!: string;\n\n constructor() {\n super();\n\n effect(() => {\n this.inputClassName = css({\n border: 'none',\n padding: 0,\n fontSize: 16,\n flexGrow: 1,\n height: 18,\n\n '&:focus-visible': {\n outline: 'none',\n },\n\n '&::placeholder': {\n ...this.theme.color(this.componentOptions().placeholderColor),\n },\n });\n });\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue.set(value);\n this.filterData(value);\n }\n\n filterData(value: string) {\n const datasource = this.datasource();\n if (!datasource) return;\n\n const fields = this.fields();\n\n if (datasource instanceof UniRecordDatasource) {\n // Client-side filtering with predicate function\n datasource.setFilter((object) => {\n let searchObject = object;\n if (fields && fields.length > 0) {\n searchObject = pick(object as Record<string, unknown>, fields) as T;\n }\n\n return Object.values(searchObject as object)\n .join(' ')\n .toLowerCase()\n .includes(value.toLowerCase());\n });\n } else if (datasource instanceof UniServerSideDatasource) {\n // Server-side filtering with filter object\n const filterObject: Record<string, unknown> = {};\n\n if (fields && fields.length > 0) {\n // Apply search to specific fields\n fields.forEach((field) => {\n filterObject[field] = value;\n });\n } else {\n // Generic search filter\n filterObject['search'] = value;\n }\n\n datasource.setFilter(filterObject);\n }\n }\n\n clearFilter() {\n const datasource = this.datasource();\n if (!datasource) return;\n\n if (datasource instanceof UniRecordDatasource) {\n datasource.setFilter(() => true);\n } else if (datasource instanceof UniServerSideDatasource) {\n datasource.clearFilter();\n }\n\n this.searchValue.set('');\n }\n}\n\nfunction pick(obj: Record<string, unknown>, keys: string[]) {\n return keys.reduce<Record<string, unknown>>((acc, key) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\n","<div\n row-layout\n alignItems=\"center\"\n [border]=\"componentOptions().border\"\n [height]=\"26\"\n [borderRadius]=\"componentOptions().borderRadius\"\n paddingLeft=\"xs\"\n>\n <div center-layout [height]=\"18\" [width]=\"18\" paddingRight=\"xs\">\n <uni-icon name=\"search\" />\n </div>\n <input\n type=\"text\"\n (input)=\"onInput($event)\"\n [class]=\"inputClassName\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchValue()\"\n />\n <div row-layout alignItems=\"center\" [width]=\"22\">\n @if (!!searchValue()) {\n <button icon-button (click)=\"clearFilter()\" symbolName=\"close\" size=\"sm\">Clear Search</button>\n }\n </div>\n</div>\n","/**\n * UniDataSearchComponent Barrel File\n *\n * This file exports all public-facing elements of the data-search component.\n */\n\nexport { UniDataSearchComponent } from './data-search.component';\nexport type { UniDataSearchOptions } from './data-search.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport type {\n ContainerColorToken,\n OptionalSize,\n Radius,\n Variant,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport type { ScrollbarAppearance } from './scroll-area.types';\n\ntype OptionalValue = string | number | undefined;\n\n/**\n * Native scroll area with theme-driven scrollbar styling.\n *\n * Scrollbars are styled entirely through Emotion-generated CSS:\n * `::-webkit-scrollbar` rules cover Chromium/Safari, with a\n * `scrollbar-width`/`scrollbar-color` fallback for Firefox.\n */\n@Component({\n selector: '[uni-scroll-area], [scroll-area]',\n imports: [],\n template: `<div #viewport [class]=\"viewportClassName()\">\n <div\n #content\n [class]=\"contentClassName()\"\n [class.isVerticallyScrollable]=\"isVerticallyScrollable()\"\n >\n <ng-content></ng-content>\n </div>\n </div>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniScrollAreaComponent {\n theme = inject(ThemeService);\n\n isVerticallyScrollable = signal<boolean>(false);\n\n viewport = viewChild.required<ElementRef<HTMLDivElement>>('viewport');\n content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n color = input<ContainerColorToken>();\n borderRadius = input<Radius>('sm');\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<Variant>();\n height = input<OptionalValue>();\n width = input<OptionalValue>();\n appearance = input<ScrollbarAppearance>('compact');\n autoHeightDisabled = input<boolean>(false);\n verticalScrollPadding = input<number>(29);\n\n scrollable = output<boolean>();\n\n public scrollToBottom() {\n const viewport = this.viewport().nativeElement;\n viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });\n }\n\n public scrollToTop() {\n this.viewport().nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n overflow: 'hidden',\n height: this.height(),\n width: this.width(),\n\n ...this.theme.colorPair(this.color()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.border(this.border()),\n });\n });\n\n protected viewportClassName = computed(() => {\n const palette = this.theme.colors();\n const thumbColor = palette['on-primary-surface'];\n const trackColor = palette['primary-surface'];\n const thickness = this.appearance() === 'standard' ? 13 : 8;\n\n return css([\n {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n\n '&::-webkit-scrollbar': {\n width: thickness,\n height: thickness,\n },\n\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: thumbColor,\n borderRadius: 7,\n border: `3px solid ${trackColor}`,\n boxSizing: 'border-box',\n },\n\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n },\n\n // Firefox has no ::-webkit-scrollbar support; fall back to the\n // standard scrollbar properties there.\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: this.appearance() === 'standard' ? 'auto' : 'thin',\n scrollbarColor: `${thumbColor} ${trackColor}`,\n },\n },\n this.appearance() === 'standard' && {\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n ...this.theme.border('quaternary'),\n },\n },\n ]);\n });\n\n protected contentClassName = computed(() =>\n css({\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n\n '&.isVerticallyScrollable': {\n paddingRight: this.verticalScrollPadding(),\n },\n })\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const viewport = this.viewport().nativeElement;\n const content = this.content().nativeElement;\n\n const updateScrollable = () => {\n const scrollable = viewport.scrollHeight > viewport.clientHeight;\n if (scrollable !== this.isVerticallyScrollable()) {\n this.isVerticallyScrollable.set(scrollable);\n this.scrollable.emit(scrollable);\n }\n };\n\n const observer = new ResizeObserver(updateScrollable);\n observer.observe(viewport);\n observer.observe(content);\n destroyRef.onDestroy(() => observer.disconnect());\n\n updateScrollable();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource, SortDirection } from '../../cdk';\nimport { UniSymbolComponent } from '../symbol/symbol.component';\n\n@Component({\n selector: 'uni-sort-header',\n imports: [UniSymbolComponent],\n templateUrl: './sort-header.component.html',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSortHeaderComponent<T> {\n column = input<keyof T>();\n datasource = input<UniDatasource<T>>();\n\n // A real <button> makes sorting keyboard-operable (Enter/Space) for free\n protected readonly buttonClass = css({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-block',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 2,\n },\n });\n\n direction = computed(() => {\n const ds = this.datasource();\n if (!ds) return 'indet';\n\n return ds.sortColumn() === this.column() ? ds.sortDirection() : 'indet';\n });\n\n protected readonly className = computed(() => {\n return css({\n cursor: 'pointer',\n position: 'relative',\n height: 24,\n\n '& .sort-icon': {\n position: 'absolute',\n right: -24,\n top: -4,\n height: 24,\n width: 24,\n\n transition: 'all 350ms ease-in-out',\n transform: 'rotate(0)',\n },\n\n '& .sort-icon.asc': {\n transform: 'rotate(-180deg)',\n },\n\n '& .sort-icon.indet': {\n opacity: 0,\n transform: 'rotate(0)',\n },\n });\n });\n\n cycleSort() {\n const cycle: SortDirection[] = ['asc', 'desc', 'indet'];\n this.sortDatasource(cycle[cycle.indexOf(this.direction()) + 1] || cycle[0]);\n }\n\n sortDatasource(direction: SortDirection) {\n this.datasource()?.sortRecords({\n column: this.column(),\n direction,\n });\n }\n}\n","<button type=\"button\" [class]=\"buttonClass\" (click)=\"cycleSort()\">\n <ng-content></ng-content>\n <div class=\"sort-icon\" [class]=\"direction()\">\n <uni-symbol name=\"arrow_upward\" />\n </div>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n type TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniServerSideDatasource } from '../../cdk';\nimport { fadeIn, Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent, UniCenterComponent } from '../layout';\nimport { UniScrollAreaComponent } from '../scroll-area/scroll-area.component';\nimport { UniSortHeaderComponent } from '../sort-header/sort-header.component';\nimport { UniTextComponent } from '../text/text.component';\nimport { ColumnDefinition, type UniDataTableOptions } from './data-table.models';\n\n@Component({\n selector: 'uni-data-table',\n imports: [\n NgTemplateOutlet,\n UniBoxComponent,\n UniScrollAreaComponent,\n UniTextComponent,\n UniSortHeaderComponent,\n UniIconComponent,\n UniCenterComponent,\n ],\n templateUrl: './data-table.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataTable' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions> {\n datasource = input.required<UniDatasource<T>>();\n columns = input.required<ColumnDefinition<T>[]>();\n\n detailRowTemplate = input<TemplateRef<{ $implicit: T; index: number }>>();\n expandedIndex = signal<number | null>(null);\n\n useMultiSelect = input<boolean>(false);\n useRowClick = input<boolean>(true);\n highlight? = input<(row: T) => boolean>();\n\n height = input<string>();\n scrollable = signal(false);\n\n loadingOverlayClass = css({\n animation: 'fadeIn 350ms ease-in-out',\n '@keyframes fadeIn': { ...fadeIn },\n });\n\n rowSelect = output<T>();\n rowClick = output<T>();\n\n protected readonly tableClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n width: '100%',\n borderSpacing: 0,\n })\n );\n\n protected readonly headerClass = computed(() =>\n css({\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly footerClass = computed(() =>\n css({\n borderTop: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly thClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().thColor),\n\n position: 'sticky',\n top: 0,\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n\n ...this.theme.padding(this.componentOptions().thPadding),\n\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().thVerticalBorder),\n },\n '&:last-child.scrollable': {\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n },\n })\n );\n\n protected readonly tdClass = computed(() =>\n css([\n {\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().tdVerticalBorder),\n },\n '&:last-child.scrollable': {\n // The last scrollable column allows space for the scrollbar.\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n ...this.theme.colorPair(this.componentOptions().tdStickyColor),\n },\n '&:not(.template)': {\n // Allow templates to define their own styles\n ...this.theme.padding(this.componentOptions().tdPadding),\n },\n },\n ])\n );\n\n protected readonly trClass = computed(() =>\n css(\n {\n '& td': {\n ...this.theme.backgroundColor('transparent'),\n transition: 'all 0.28s ease',\n },\n ':not(:last-child) td': {\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n },\n this.useRowClick() && {\n '&:hover td': {\n ...this.theme.backgroundColor(this.componentOptions().rowHoverColor),\n cursor: 'pointer',\n },\n }\n )\n );\n\n protected readonly detailRowClass = computed(() =>\n css({\n display: 'table-row',\n visibility: 'hidden',\n '&.expanded': {\n visibility: 'visible',\n },\n '& td': {\n padding: 0,\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n '& td .detail-content-wrapper': {\n display: 'grid',\n gridTemplateRows: '0fr',\n transition: 'grid-template-rows 0.3s ease',\n overflow: 'hidden',\n\n '& .detail-inner': {\n minHeight: 0,\n },\n },\n '&.expanded td .detail-content-wrapper': {\n gridTemplateRows: '1fr',\n },\n })\n );\n\n // Loading state detection\n isLoading = linkedSignal(() => {\n const datasource = this.datasource();\n if (datasource && datasource instanceof UniServerSideDatasource) {\n // For server-side datasource, use the built-in loading state\n return datasource.isLoading();\n } else {\n // For client-side datasource, no loading state needed\n return false;\n }\n });\n\n toggleRow(index: number) {\n this.expandedIndex.update((current) => (current === index ? null : index));\n }\n\n handleRowClick(row: T, index: number) {\n this.rowClick.emit(row);\n\n this.toggleRow(index);\n }\n\n /** aria-sort value for a column header, or null when the column is unsorted. */\n protected ariaSort(column: ColumnDefinition<T>): 'ascending' | 'descending' | null {\n const ds = this.datasource();\n if (!ds || ds.sortColumn() !== column.columnDef) return null;\n const direction = ds.sortDirection();\n return direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : null;\n }\n\n isHighlighted(row: T) {\n const callback = this.highlight && this.highlight();\n if (!callback) return false;\n return callback(row);\n }\n\n protected readonly String = String;\n\n handleScrollable(scrollable: boolean) {\n this.scrollable.set(scrollable);\n }\n\n getBorder(name: string | undefined) {\n return name ? this.theme.theme().borders[name] : undefined;\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div\n box-layout\n [color]=\"componentOptions().color\"\n [border]=\"componentOptions().border\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [elevation]=\"componentOptions().elevation\"\n overflow=\"hidden\"\n >\n <div\n box-layout\n [padding]=\"componentOptions().headerPadding\"\n [color]=\"componentOptions().headerColor\"\n [class]=\"headerClass()\"\n >\n <ng-content select=\"data-table-header\"></ng-content>\n </div>\n\n <div box-layout [height]=\"height()\" position=\"relative\" [attr.aria-busy]=\"isLoading()\">\n <div scroll-area [verticalScrollPadding]=\"0\" (scrollable)=\"handleScrollable($event)\">\n <table [class]=\"tableClass()\">\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n [class]=\"thClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [style.text-align]=\"column.textAlign\"\n >\n <uni-sort-header [datasource]=\"datasource()\" [column]=\"column.columnDef\">\n <span uni-text [typeface]=\"componentOptions().thTextRole\">{{ column.header }}</span>\n </uni-sort-header>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (record of ds.records(); track record; let i = $index) {\n <tr\n [class]=\"trClass()\"\n [attr.tabindex]=\"useRowClick() ? 0 : null\"\n (click)=\"handleRowClick(record, $index)\"\n (keydown.enter)=\"useRowClick() && handleRowClick(record, $index)\"\n (keydown.space)=\"\n useRowClick() && handleRowClick(record, $index);\n useRowClick() && $event.preventDefault()\n \"\n >\n @for (column of columns(); track column) {\n <td\n [class]=\"tdClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [class.template]=\"!!column.template\"\n [style.text-align]=\"column.textAlign\"\n >\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"record\"\n ></ng-container>\n } @else {\n <span uni-text [typeface]=\"componentOptions().tdTextRole\">\n @if (!column.cell) {\n {{ record[column.columnDef] }}\n } @else {\n {{ column.cell(record) }}\n }\n </span>\n }\n </td>\n }\n </tr>\n @if (detailRowTemplate()) {\n <!-- Collapsed detail rows are inert: invisible to screen\n readers and unreachable by keyboard until expanded -->\n <tr\n [class]=\"detailRowClass()\"\n [class.expanded]=\"expandedIndex() === $index\"\n [attr.inert]=\"expandedIndex() === $index ? null : ''\"\n >\n <td [attr.colspan]=\"columns().length\">\n <div class=\"detail-content-wrapper\">\n <div class=\"detail-inner\">\n <ng-container\n [ngTemplateOutlet]=\"detailRowTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: record,\n index: i,\n }\"\n ></ng-container>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Loading Overlay -->\n @if (isLoading()) {\n <div\n uni-center-layout\n role=\"status\"\n aria-label=\"Loading\"\n position=\"absolute\"\n [inset]=\"0\"\n [backgroundColor]=\"componentOptions().loadingOverlayColor\"\n [class]=\"loadingOverlayClass\"\n zIndex=\"overlay\"\n >\n <!-- Loading Spinner -->\n <div\n uni-box-layout\n [height]=\"componentOptions().loadingSpinnerSize\"\n [width]=\"componentOptions().loadingSpinnerSize\"\n >\n <uni-icon name=\"spinner\" [color]=\"componentOptions().loadingSpinnerColor\" />\n </div>\n </div>\n }\n </div>\n\n <div\n box-layout\n [padding]=\"componentOptions().footerPadding\"\n [color]=\"componentOptions().footerColor\"\n [class]=\"footerClass()\"\n >\n <ng-content select=\"data-table-footer\"></ng-content>\n </div>\n </div>\n}\n","/**\n * UniDataTableComponent Barrel File\n *\n * This file exports all public-facing elements of the data-table component.\n */\n\nexport { UniDataTableComponent } from './data-table.component';\nexport type { ColumnDefinition, UniDataTableOptions } from './data-table.models';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button';\nimport type { UniDialogOptions } from './dialog.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'dialog[uni-dialog]',\n imports: [UniIconButtonComponent, CommonModule],\n template: `\n @if (defaultCloseButton()) {\n <button\n icon-button\n iconName=\"close\"\n variant=\"ghost\"\n (click)=\"close()\"\n [class]=\"closeButton\"\n size=\"md\"\n >\n Close\n </button>\n }\n <ng-content></ng-content>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialog' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-labelledby]': 'hasTitle() ? titleId : null',\n '[attr.aria-label]': 'ariaLabel() ?? null',\n '[class]': 'className()',\n '(click)': 'backdropClick($event)',\n '(cancel)': 'escapeCancel($event)',\n '(animationend)': 'closingAnimation($event)',\n },\n})\nexport class UniDialogComponent extends BaseComponent<UniDialogOptions> {\n private elem = inject(ElementRef);\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>(false);\n\n /**\n * Accessible name for dialogs without a DialogHeader. When a DialogHeader\n * is present it labels the dialog automatically via aria-labelledby.\n */\n ariaLabel = input<string>();\n\n /**\n * CSS selector for the element to focus when the dialog opens. Defaults to\n * the browser's native behavior (first focusable element).\n */\n initialFocus = input<string>();\n\n defaultCloseButton = input<boolean>();\n\n /** Id referenced by aria-labelledby; DialogHeader attaches it to the title. */\n readonly titleId = uniqueId('uni-dialog-title');\n readonly hasTitle = signal(false);\n\n /** Emits true once opened and false once the closing animation finishes. */\n showing = output<boolean>();\n\n constructor() {\n super();\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n private get _dialog(): HTMLDialogElement {\n return this.elem.nativeElement;\n }\n\n protected readonly className = computed(() =>\n css([\n {\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.border(this.componentOptions().border),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.theme.padding(this.componentOptions().padding || 'none'),\n\n '&::backdrop': {\n ...this.componentOptions().backdrop,\n },\n\n '&[open], &::backdrop': {\n animation: `${this.dialogFadeIn} ease-in 350ms`,\n },\n\n '&[closing], &[closing]::backdrop': {\n animation: `${this.dialogFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected backdropClick(event: Event) {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') {\n this.close();\n }\n }\n\n /**\n * Escape fires the native 'cancel' event, which would close the dialog\n * instantly and leave our show-state out of sync. Route it through the\n * animated close() instead.\n */\n protected escapeCancel(event: Event) {\n event.preventDefault();\n this.close();\n }\n\n protected closingAnimation(e: AnimationEvent) {\n // Close the dialog if the animation is finished\n if (e.animationName.includes(this.dialogFadeOut)) {\n this._dialog.close();\n this._dialog.removeAttribute('closing');\n this.showing.emit(false);\n }\n }\n\n closeButton = css({\n position: 'absolute',\n right: 12,\n top: 12,\n });\n\n private dialogFadeIn = keyframes({ ...fadeIn });\n private dialogFadeOut = keyframes({ ...fadeOut });\n\n open() {\n if (this._dialog.open) return;\n\n this._dialog.removeAttribute('closing');\n this._dialog.showModal();\n\n // Native showModal focuses the first focusable element; allow consumers\n // to direct initial focus somewhere more useful (e.g. past the close\n // button, onto a primary action or first form field).\n const selector = this.initialFocus();\n if (selector) {\n this._dialog.querySelector<HTMLElement>(selector)?.focus();\n }\n\n this.show.set(true);\n this.showing.emit(true);\n }\n\n close() {\n // Strict check: outside a real <dialog> host (e.g. unit tests) `open`\n // is undefined and close() should still run.\n if (this._dialog.open === false) return;\n\n this._dialog.setAttribute('closing', 'true');\n this.show.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniButtonComponent } from '../../button';\nimport { UniRowComponent } from '../../layout';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { JustifyContent, NullableSize, Size, Variant } from '@uni-design-system/uni-core';\nimport type { UniDialogButtonsOptions } from './dialog-buttons.model';\n\n@Component({\n selector: '[uni-dialog-buttons], [dialog-buttons]',\n imports: [UniRowComponent, UniButtonComponent],\n templateUrl: './dialog-buttons.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogButtons' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDialogButtonsComponent extends BaseComponent<UniDialogButtonsOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n confirmButtonText = input<string>();\n confirmButtonVariant = input<Variant>();\n cancelButtonText = input<string>();\n cancelButtonVariant = input<Variant>();\n disableConfirm = input<boolean>();\n padding = input<NullableSize>();\n paddingBottom = input<NullableSize>();\n justifyContent = input<JustifyContent>();\n\n confirmed = output();\n\n // Inputs win over theme options; the trailing literal is the legacy default.\n protected confirmVariant = computed(\n () => this.confirmButtonVariant() ?? this.componentOptions().confirmButtonVariant ?? 'primary'\n );\n protected cancelVariant = computed(\n () => this.cancelButtonVariant() ?? this.componentOptions().cancelButtonVariant ?? 'warn'\n );\n protected paddingValue = computed(() => this.padding() ?? this.componentOptions().padding ?? 'md');\n protected paddingBottomValue = computed(\n () => this.paddingBottom() ?? this.componentOptions().paddingBottom ?? 'lg'\n );\n protected justifyContentValue = computed(\n () => this.justifyContent() ?? this.componentOptions().justifyContent ?? 'center'\n );\n protected gapValue = computed(() => this.componentOptions().gap ?? 'md');\n protected buttonSize = computed<Size>(() => this.componentOptions().buttonSize ?? 'lg');\n\n protected readonly className = computed(() =>\n css([\n this.componentTheme().fixed,\n this.componentOptions().stretch && {\n width: '100%',\n minWidth: '100%',\n '& > button': { flex: '1 1 50%', maxWidth: '50%' },\n },\n ])\n );\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [gap]=\"gapValue()\"\n [padding]=\"paddingValue()\"\n [paddingBottom]=\"paddingBottomValue()\"\n [justifyContent]=\"justifyContentValue()\"\n [flexDirection]=\"componentOptions().reverseOrder ? 'row-reverse' : 'row'\"\n [class]=\"className()\"\n>\n <button\n text-button\n [variant]=\"confirmVariant()\"\n [size]=\"buttonSize()\"\n (click)=\"confirmed.emit(); closeDialog()\"\n [disable]=\"disableConfirm()\"\n >\n {{ confirmButtonText() || 'Confirm' }}\n </button>\n <button text-button [variant]=\"cancelVariant()\" [size]=\"buttonSize()\" (click)=\"closeDialog()\">\n {{ cancelButtonText() || 'Cancel' }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { UniDialogHeaderOptions } from './dialog-header.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-dialog-header]',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './dialog-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogHeader' }],\n})\nexport class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n /** Attached to the title element so the parent dialog is labelled by it. */\n protected readonly titleId = this.dialog?.titleId ?? null;\n\n constructor() {\n super();\n this.dialog?.hasTitle.set(true);\n }\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [color]=\"componentOptions().color\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [height]=\"componentOptions().height\"\n alignItems=\"center\"\n [paddingHorizontal]=\"componentOptions().paddingHorizontal ?? 'sm'\"\n>\n <!-- Balance spacer: only centered titles need to offset the close button. -->\n @if ((componentOptions().textAlign || 'center') === 'center') {\n <div box-layout [width]=\"26\"></div>\n }\n <div box-layout [grow]=\"1\" [attr.id]=\"titleId\">\n <span uni-text\n [typeface]=\"componentOptions().textRole\"\n [color]=\"componentOptions().textColor\"\n display=\"block\"\n [align]=\"componentOptions().textAlign || 'center'\"\n ><ng-content></ng-content\n ></span>\n </div>\n <button\n icon-button\n [iconName]=\"componentOptions().closeButtonIcon\"\n [symbolName]=\"componentOptions().closeButtonSymbol\"\n variant=\"ghost\"\n (click)=\"closeDialog()\"\n [size]=\"componentOptions().closeButtonSize || 'md'\"\n >\n Close\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport type { Border, Orientation } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-divider',\n imports: [],\n template: ``,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDividerComponent {\n themeService = inject(ThemeService);\n\n orientation = input<Orientation>('horizontal');\n border = input<Border>('primary');\n\n protected readonly className = computed(() => {\n return css([\n {\n display: 'block',\n },\n this.orientation() === 'horizontal' && {\n ...this.themeService.borderBottom(this.border()),\n width: '100%',\n },\n this.orientation() === 'vertical' && {\n ...this.themeService.borderLeft(this.border()),\n height: '100%',\n },\n ]);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { DrawerMode, DrawerPosition, UniDrawerOptions } from './drawer.model';\n\n/**\n * Navigation drawer with two modes sharing one content slot:\n *\n * - `side` — an in-flow `<aside>` that pushes content (dashboard sidenav);\n * opening/closing animates its width, and the divider border primitive\n * separates it from the page.\n * - `over` — a native `<dialog>` in the top layer: focus trap, Escape and\n * scrim backdrop come from the platform (same machinery as `uni-dialog`),\n * sliding in from its edge.\n *\n * Surface, width, divider, elevation, padding and backdrop all resolve from\n * `drawer` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-drawer',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'drawer' }],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @if (mode() === 'side') {\n <aside [class]=\"sideClass()\" [attr.aria-hidden]=\"open() ? null : 'true'\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </aside>\n } @else {\n <!-- Click handles the ::backdrop only (target check); keyboard closing\n is the native dialog cancel event, and focus is trapped by\n showModal — the element needs no tabindex of its own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #overlay\n [class]=\"overClass()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onBackdropClick($event)\"\n (cancel)=\"onCancel($event)\"\n (animationend)=\"onAnimationEnd($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </dialog>\n }\n `,\n})\nexport class UniDrawerComponent extends BaseComponent<UniDrawerOptions> {\n /** Two-way bindable open state: [(open)]. */\n readonly open = model(false);\n\n mode = input<DrawerMode>('side');\n position = input<DrawerPosition>('start');\n /** Accessible name for the overlay mode's dialog. */\n ariaLabel = input('Navigation');\n\n protected readonly contentTemplate = viewChild.required<TemplateRef<unknown>>('content');\n private readonly overlay = viewChild<ElementRef<HTMLDialogElement>>('overlay');\n\n constructor() {\n super();\n effect(() => {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n if (!dialog.open) {\n dialog.removeAttribute('closing');\n dialog.showModal();\n }\n } else if (dialog.open) {\n // Slide out first; the dialog closes when the animation reports done.\n dialog.setAttribute('closing', 'true');\n }\n });\n }\n\n protected onBackdropClick(event: Event): void {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') this.open.set(false);\n }\n\n /** Route Escape through the animated close, keeping `open` in sync. */\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onAnimationEnd(event: AnimationEvent): void {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog || !dialog.hasAttribute('closing')) return;\n if (event.animationName.includes(this.slideOut())) {\n dialog.close();\n dialog.removeAttribute('closing');\n }\n }\n\n private readonly edge = computed(() => (this.position() === 'start' ? '-100%' : '100%'));\n\n private readonly slideIn = computed(() =>\n keyframes({ from: { transform: `translateX(${this.edge()})` }, to: { transform: 'translateX(0)' } })\n );\n private readonly slideOut = computed(() =>\n keyframes({ from: { transform: 'translateX(0)' }, to: { transform: `translateX(${this.edge()})` } })\n );\n\n protected readonly sideClass = computed(() => {\n const options = this.componentOptions();\n const width = options.width ?? 280;\n const start = this.position() === 'start';\n return css({\n display: 'block',\n boxSizing: 'border-box',\n height: '100%',\n flex: 'none',\n overflowX: 'hidden',\n overflowY: 'auto',\n transition: 'width 0.25s ease, visibility 0.25s',\n ...this.theme.colorPair(options.color),\n ...(start\n ? this.theme.borderRight(options.divider)\n : this.theme.borderLeft(options.divider)),\n ...(this.open()\n ? { width, visibility: 'visible', ...this.theme.padding(options.padding) }\n : { width: 0, visibility: 'hidden', padding: 0, border: 'none' }),\n });\n });\n\n protected readonly overClass = computed(() => {\n const options = this.componentOptions();\n const start = this.position() === 'start';\n return css({\n boxSizing: 'border-box',\n width: options.width ?? 280,\n maxWidth: '90vw',\n height: '100dvh',\n maxHeight: '100dvh',\n border: 'none',\n margin: start ? '0 auto 0 0' : '0 0 0 auto',\n overflowY: 'auto',\n ...this.theme.colorPair(options.color),\n ...this.theme.padding(options.padding),\n ...this.theme.boxShadow(options.elevation),\n '&::backdrop': { ...options.backdrop },\n '&[open]': { animation: `${this.slideIn()} 250ms ease-out` },\n '&[closing]': { animation: `${this.slideOut()} 250ms ease-in` },\n });\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniBoxComponent } from '../layout';\nimport type { UniDropdownOptions } from './dropdown.model';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport {\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type AnchorOffset,\n type Placement,\n} from '../../cdk';\n\nexport type AriaHasPopup = 'menu' | 'listbox' | 'dialog' | 'grid' | 'tree' | 'true';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-dropdown',\n imports: [UniBoxComponent],\n template: `\n <!-- 1. The native 'popover' attribute brings it to the top layer with native light-dismiss -->\n <div #dropdown popover=\"auto\" [id]=\"popoverId\" [class]=\"dropdownClass()\">\n <div\n box-layout\n [border]=\"componentOptions().border\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [paddingVertical]=\"paddingVertical()\"\n [paddingHorizontal]=\"paddingHorizontal()\"\n [color]=\"componentOptions().color\"\n [shadow]=\"componentOptions().shadow\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dropdown' }],\n})\nexport class UniDropdownComponent\n extends BaseComponent<UniDropdownOptions>\n implements OnInit, OnDestroy\n{\n private renderer = inject(Renderer2);\n private delay = 100;\n\n // Reactively track visibility status using Signals\n showing = signal<boolean>(false);\n\n trigger = input.required<HTMLElement>();\n placement = input<Placement>('bottom-start');\n offset = input<AnchorOffset>({ mainAxis: 4, alignmentAxis: 12 });\n\n /** CSS anchor-name linking the trigger to the popover panel. */\n private readonly anchorName = newAnchorName();\n\n /**\n * Value for aria-haspopup on the trigger, describing what the popover\n * contains (e.g. 'menu' for Menu, 'dialog' for rich content). When unset,\n * only aria-expanded/aria-controls are managed.\n */\n ariaHasPopup = input<AriaHasPopup | null>(null);\n\n /** Document-unique id of the popover element, for aria-controls wiring. */\n readonly popoverId = uniqueId('uni-dropdown');\n\n paddingVertical = input<NullableSize>();\n paddingHorizontal = input<NullableSize>();\n\n dropdownShowing = output<boolean>();\n dropdownHiding = output<boolean>();\n\n @ViewChild('dropdown', { static: true })\n dropdownRef!: ElementRef<HTMLDivElement>;\n\n private get _trigger(): HTMLElement {\n return this.trigger();\n }\n private get _dropdown(): HTMLDivElement {\n return this.dropdownRef.nativeElement;\n }\n\n private transformOriginMap: Record<Placement, string> = {\n top: 'bottom center',\n right: 'center left',\n bottom: 'top center',\n left: 'center right',\n 'top-start': 'bottom left',\n 'top-end': 'bottom right',\n 'right-start': 'top left',\n 'right-end': 'bottom left',\n 'bottom-start': 'top left',\n 'bottom-end': 'top right',\n 'left-start': 'top right',\n 'left-end': 'bottom right',\n };\n\n dropdownClass = computed(() => {\n const currentPlacement = this.placement();\n\n return css([\n {\n // Reset browser agent default popover styles\n border: 'none',\n background: 'transparent',\n padding: 0,\n overflow: 'visible',\n width: 'max-content',\n\n // Native anchor positioning: the browser keeps the panel attached to\n // the trigger (no scroll/resize listeners needed)\n ...anchorStyles(this.anchorName, currentPlacement, this.offset()),\n\n // 2. Animate discrete properties across top layer layout contexts\n transitionProperty: 'transform, opacity, display, overlay',\n transitionDuration: `${this.delay}ms`,\n transitionTimingFunction: 'linear',\n transitionBehavior: 'allow-discrete',\n\n // Hidden State (Closed)\n opacity: 0,\n transform: 'scale(0.8)',\n transformOrigin: this.transformOriginMap[currentPlacement],\n\n // 3. Active state styling controlled via the native browser pseudo-class\n ['&:popover-open']: {\n opacity: 1,\n transform: 'scale(1)',\n },\n\n // 4. Starting-style rules what properties animate *from* when transitioning in\n ['@starting-style']: {\n ['&:popover-open']: {\n opacity: 0,\n transform: 'scale(0.8)',\n },\n },\n },\n ]);\n });\n\n /** The element that receives focus and carries the ARIA popup state. */\n private get _focusTarget(): HTMLElement {\n return resolveFocusTarget(this._trigger);\n }\n\n ngOnInit(): void {\n // Single native click binding to manage open/close commands\n this.renderer.listen(this._trigger, 'click', (e: Event) => {\n e.stopPropagation();\n this.toggleDropdown();\n });\n\n // Anchor the popover panel to the trigger element\n this.renderer.setStyle(this._trigger, 'anchor-name', this.anchorName);\n\n // Wire the ARIA popup contract onto the focusable trigger element\n const focusTarget = this._focusTarget;\n this.renderer.setAttribute(focusTarget, 'aria-expanded', 'false');\n this.renderer.setAttribute(focusTarget, 'aria-controls', this.popoverId);\n if (this.ariaHasPopup()) {\n this.renderer.setAttribute(focusTarget, 'aria-haspopup', this.ariaHasPopup()!);\n }\n\n // Sync state if user invokes light-dismiss via outside click or Escape key\n this.renderer.listen(this._dropdown, 'toggle', (event: any) => {\n const isOpened = event.newState === 'open';\n this.showing.set(isOpened);\n this.renderer.setAttribute(this._focusTarget, 'aria-expanded', `${isOpened}`);\n\n if (isOpened) {\n this.dropdownShowing.emit(true);\n } else {\n this.dropdownHiding.emit(true);\n this.restoreFocus();\n }\n });\n }\n\n /**\n * Returns focus to the trigger when the popover closes while focus was\n * inside it (or was dropped on <body> by the top layer closing), so\n * keyboard users are never stranded (WCAG 2.4.3).\n */\n private restoreFocus() {\n const active = document.activeElement;\n if (active === document.body || (active && this._dropdown.contains(active))) {\n this._focusTarget.focus();\n }\n }\n\n toggleDropdown() {\n if (this.showing()) {\n this._dropdown.hidePopover();\n } else {\n this._dropdown.showPopover();\n }\n }\n\n hideDropdown() {\n this._dropdown.hidePopover();\n }\n\n ngOnDestroy() {\n try {\n this._dropdown.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n }\n}\n","import { afterNextRender, ChangeDetectionStrategy, Component, model, signal } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { collapseFadeOut, expandFadeIn } from '@uni-design-system/uni-core';\nimport { motionSafe, uniqueId } from '../../cdk';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand',\n imports: [],\n template: `@if (!collapsed()) {\n <div\n [animate.enter]=\"ready() ? expandAnimation : ''\"\n [animate.leave]=\"collapseAnimation\"\n [class]=\"expandClassName\"\n >\n <div [class]=\"contentClassName\">\n <ng-content></ng-content>\n </div>\n </div>\n }`,\n host: {\n '[attr.id]': 'regionId',\n '[class]': 'hostClassName',\n },\n})\nexport class UniExpandComponent {\n collapsed = model(true);\n\n /** Referenced by the controlling toggle's aria-controls. */\n readonly regionId = uniqueId('uni-expand');\n\n /**\n * animate.enter has no initial-render guard, so an expand initialized with\n * collapsed = false would play the enter animation on load. Enable\n * animations only after the first render, i.e. on real state changes.\n */\n protected readonly ready = signal(false);\n\n constructor() {\n afterNextRender(() => this.ready.set(true));\n }\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * A custom element is `display: inline` by default, which would lay the\n * animated grid out as a block-in-inline box and distort the revealed\n * content's spacing. Every consumer would otherwise have to write\n * `uni-expand { display: block }` themselves.\n */\n protected readonly hostClassName = css({\n display: 'block',\n });\n\n expandClassName = css({\n display: 'grid',\n });\n\n contentClassName = css({\n minHeight: 0,\n });\n\n private expand = keyframes({ ...expandFadeIn });\n private collapse = keyframes({ ...collapseFadeOut });\n\n /**\n * Reveal is motion-safe (WCAG 2.3.3): under `prefers-reduced-motion` these\n * classes are empty, so the region appears and disappears instantly.\n * `overflow: hidden` rides inside the guard deliberately — it exists to clip\n * the growing box mid-animation, and leaving it applied at rest would crop\n * decorations that legitimately paint outside the region (focus rings,\n * offset outlines). Angular removes a leaving node on the next frame when it\n * detects no animation, so nothing hangs when the guard strips them.\n */\n expandAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.expand} ease-in 350ms`,\n }),\n );\n\n collapseAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.collapse} ease-in 350ms`,\n }),\n );\n}\n","/**\n * UniExpandComponent Barrel File\n *\n * This file exports all public-facing elements of the expand component.\n */\n\nexport { UniExpandComponent } from './expand.component';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniTooltipOptions } from './tooltip.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n useTimer,\n FOCUSABLE_SELECTOR,\n type Placement,\n} from '../../cdk';\n\n@Component({\n selector: 'uni-tooltip',\n imports: [],\n // The bubble lives declaratively in the template as a manual popover: the\n // top layer escapes any overflow context (which made appendToBody obsolete)\n // and native CSS anchor positioning keeps it attached to the host.\n template: `<ng-content></ng-content\n ><span\n #tip\n popover=\"manual\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [class]=\"tooltipClassName()\"\n (mouseenter)=\"isMouseInside.set(true)\"\n (mouseleave)=\"isMouseInside.set(false)\"\n (animationend)=\"onAnimationEnd($event)\"\n >{{ label() }}<span [class]=\"arrowClassName()\"></span\n ></span>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'tooltip' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n '(click)': 'toggleTooltip()',\n '(mouseenter)': 'mouseenter()',\n '(mouseleave)': 'mouseleave()',\n '(focusin)': 'onFocusIn($event)',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape($event)',\n },\n})\nexport class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private timer = useTimer();\n isMouseInside = signal(false);\n\n /** Whether the bubble is currently shown (or fading out). */\n private readonly visible = signal(false);\n\n readonly tooltipId = uniqueId('uni-tooltip');\n private readonly anchorName = newAnchorName();\n\n hoverDelay = input<number>(500);\n label = input.required<string>();\n placement = input<Placement>('top');\n inlineText = input<boolean>(false);\n\n /** @deprecated The tooltip renders in the native top layer; ignored. */\n appendToBody = input<boolean>(false);\n\n private tipRef = viewChild.required<ElementRef<HTMLElement>>('tip');\n\n constructor() {\n super();\n\n effect(() => {\n const timerActive = this.timer.isActive();\n const mouseInside = this.isMouseInside();\n\n // If the timer finished and the mouse is still inside, show tooltip\n if (!timerActive && mouseInside) {\n this.showTooltip();\n }\n // If the mouse left and the timer is not running, hide tooltip\n else if (!mouseInside) {\n this.hideTooltip();\n }\n });\n\n // A tooltip must be reachable by keyboard (WCAG 1.4.13): when the\n // projected content has no focusable element, the host itself joins\n // the tab sequence. The bubble is always in the DOM, so the describedby\n // relationship is wired once, on the element that receives focus.\n afterNextRender(() => {\n const host = this.elRef.nativeElement as HTMLElement;\n if (!host.querySelector(FOCUSABLE_SELECTOR) && !host.matches(FOCUSABLE_SELECTOR)) {\n this.renderer.setAttribute(host, 'tabindex', '0');\n }\n this.renderer.setAttribute(resolveFocusTarget(host), 'aria-describedby', this.tooltipId);\n });\n }\n\n onFocusIn(event: FocusEvent) {\n // Only keyboard-driven focus shows the tooltip immediately; mouse\n // interaction keeps the hover-delay behavior.\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.showTooltip();\n }\n }\n\n onFocusOut() {\n if (!this.isMouseInside()) {\n this.hideTooltip();\n }\n }\n\n onEscape(event: Event) {\n if (this.visible()) {\n // Dismiss only the tooltip, not an enclosing dialog/popover\n event.stopPropagation();\n this.hideTooltip();\n }\n }\n\n toggleTooltip() {\n if (this.visible()) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n mouseenter() {\n this.isMouseInside.set(true);\n this.timer.start(this.hoverDelay());\n }\n\n mouseleave() {\n this.isMouseInside.set(false);\n this.timer.stop();\n }\n\n showTooltip() {\n if (this.visible()) return;\n const tip = this.tipRef().nativeElement;\n tip.showPopover();\n this.renderer.setAttribute(tip, 'fade', 'in');\n this.visible.set(true);\n }\n\n hideTooltip() {\n if (!this.visible()) return;\n this.renderer.setAttribute(this.tipRef().nativeElement, 'fade', 'out');\n }\n\n protected onAnimationEnd(event: AnimationEvent) {\n if (event.animationName.includes(this.tooltipFadeOut)) {\n this.tipRef().nativeElement.hidePopover();\n this.visible.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css(\n {\n display: 'inline-flex',\n anchorName: this.anchorName,\n },\n this.inlineText() && {\n cursor: 'help',\n textDecoration: 'underline',\n textDecorationStyle: 'dotted',\n }\n )\n );\n\n private tooltipFadeIn = keyframes({ ...fadeIn });\n private tooltipFadeOut = keyframes({ ...fadeOut });\n\n protected readonly tooltipClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().shadow),\n ...this.theme.typeface(this.componentOptions().typeface),\n border: 'none',\n padding: 5,\n width: 'max-content',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 6 }),\n\n '&[fade=\"in\"]': {\n animation: `${this.tooltipFadeIn} ease-in 350ms`,\n },\n\n '&[fade=\"out\"]': {\n animation: `${this.tooltipFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n ...anchorArrowStyles(this.placement()),\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { motionSafe } from '../../cdk';\nimport { UniIconComponent } from '../icon/icon.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniTextComponent } from '../text/text.component';\nimport { UniTooltipComponent } from '../tooltip/tooltip.component';\n\n/**\n * Trigger for a {@link UniExpandComponent} region.\n *\n * Two shapes, chosen by whether `label` is set:\n * - **Icon only** (default) — the bare chevron, sized for a Card Header.\n * - **Labelled** — chevron plus a label and optional muted sublabel, as a\n * single full-width button. Most real disclosures need a name for the\n * section, and building that row by hand is the thing this saves; it also\n * makes the label the button's accessible name rather than adjacent text.\n */\n@Component({\n selector: 'uni-expand-toggle',\n imports: [UniIconComponent, UniIconButtonComponent, UniTextComponent, UniTooltipComponent],\n template: `\n @if (label()) {\n <button\n type=\"button\"\n [class]=\"triggerClassName\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n <uni-icon name=\"chevronUp\" size=\"1em\" />\n <span [class]=\"labelClassName\">\n <span uni-text=\"label\">{{ label() }}</span>\n @if (sublabel()) {\n <span uni-text=\"caption\" color=\"on-background-variant\">{{ sublabel() }}</span>\n }\n </span>\n </button>\n } @else {\n <uni-tooltip [label]=\"collapsed() ? 'Expand' : 'Collapse'\" placement=\"right\">\n <button\n icon-button\n iconName=\"chevronUp\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n {{ collapsed() ? 'Expand' : 'Collapse' }}\n </button>\n </uni-tooltip>\n }\n `,\n host: {\n '[class]': 'className()',\n '[attr.toggled]': 'collapsed() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniExpandToggleComponent {\n collapsed = model(true);\n\n /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */\n ariaControls = input<string>();\n\n /** Names the region. Setting it switches the toggle to its labelled shape. */\n label = input<string>();\n\n /** Muted qualifier beside the label (\"for POs & custom orders\"). Needs `label`. */\n sublabel = input<string>();\n\n /**\n * The glyph rotates, never the host.\n *\n * The host is the tooltip's positioning box — `uni-tooltip` puts its\n * `anchor-name` on its own element, nested inside ours — so rotating the\n * host swings the anchor through the turn and the bubble visibly bobs. The\n * host is also taller than the glyph (an inline-level box reserves baseline\n * descender space), so spinning it about its own centre walks the glyph\n * off-centre. `uni-icon` is a centred square sized to the glyph, which makes\n * it the only box here that rotates symmetrically. It also keeps a label\n * from turning upside down with the chevron.\n */\n private readonly glyphStyles = computed(() => ({\n '& uni-icon': {\n flexShrink: 0,\n ...motionSafe({ transition: 'transform 350ms ease-in-out' }),\n transform: this.collapsed() ? 'rotate(-180deg)' : 'rotate(0)',\n },\n }));\n\n protected readonly className = computed(() => {\n if (this.label()) {\n return css({ display: 'block', ...this.glyphStyles() });\n }\n\n return css({\n display: 'inline-flex',\n cursor: 'pointer',\n ...this.glyphStyles(),\n });\n });\n\n protected readonly triggerClassName = css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n width: '100%',\n padding: 0,\n border: 0,\n background: 'none',\n font: 'inherit',\n color: 'inherit',\n textAlign: 'left',\n cursor: 'pointer',\n });\n\n protected readonly labelClassName = css({\n display: 'flex',\n alignItems: 'baseline',\n gap: 6,\n minWidth: 0,\n });\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, output, viewChild } from '@angular/core';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniExpandToggleComponent } from '../expand-toggle/expand-toggle.component';\nimport { UniExpandComponent } from '../expand/expand.component';\nimport { UniBoxComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand-area',\n imports: [UniBoxComponent, UniTextComponent, UniExpandToggleComponent, UniExpandComponent],\n template: `\n <div box-layout color=\"tertiary-surface\" borderRadius=\"sm\" border=\"quaternary\" overflow=\"hidden\">\n <div box-layout\n border=\"quaternary\"\n borderRadius=\"sm\"\n color=\"primary-surface\"\n style=\"margin-top: -1px; margin-left: -1px; margin-right: -1px\"\n [style.margin-bottom]=\"toggle.collapsed() ? '-1px' : 0\"\n justifyContent=\"space-between\"\n display=\"flex\"\n alignItems=\"center\"\n >\n <div box-layout [width]=\"36\"></div>\n <div box-layout paddingHorizontal=\"md\">\n <span uni-text=\"title-small\" display=\"block\">\n {{ title() }}\n </span>\n </div>\n\n <uni-expand-toggle\n #toggle\n style=\"display: inline-flex; margin: -2px\"\n [collapsed]=\"initCollapsed()\"\n [ariaControls]=\"expand.regionId\"\n />\n </div>\n\n <uni-expand #expand [collapsed]=\"toggle.collapsed()\">\n <div box-layout [padding]=\"padding()\">\n <ng-content></ng-content>\n </div>\n </uni-expand>\n </div>\n `,\n})\nexport class UniExpandAreaComponent {\n title = input.required<string>();\n initCollapsed = input(false, { transform: booleanAttribute });\n padding = input<NullableSize>('md');\n\n collapsed = output<boolean>();\n\n toggleRef = viewChild.required<UniExpandToggleComponent>('toggle');\n\n public toggleExpand() {\n this.toggleRef().toggle();\n }\n}\n","/**\n * UniExpandAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-area component.\n */\n\nexport { UniExpandAreaComponent } from './expand-area.component';\n","/**\n * UniExpandToggleComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-toggle component.\n */\n\nexport { UniExpandToggleComponent } from './expand-toggle.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { acceptableFile } from '../../cdk';\nimport { DragAndDropDirective } from '../../directives/drag-and-drop/drag-and-drop.directive';\nimport type { NullableSize, Radius, Variant } from '@uni-design-system/uni-core';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniBoxComponent, UniStackComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-file-drop-zone',\n imports: [\n DragAndDropDirective,\n UniBoxComponent,\n UniButtonComponent,\n UniStackComponent,\n UniTextComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './file-drop-zone.component.html',\n})\nexport class UniFileDropZoneComponent {\n selectedFile = signal<File | undefined>(undefined);\n selectedFileName = computed(() => this.selectedFile()?.name);\n attachmentState = signal<'upload' | undefined>(undefined);\n\n fileSelectorRef = viewChild.required<ElementRef<HTMLInputElement>>('fileSelector');\n\n get fileSelectorElement() {\n return this.fileSelectorRef().nativeElement;\n }\n\n height = input<number | string>();\n borderRadius = input<Radius>('md');\n border = input<Variant>('light');\n padding = input<NullableSize>('lg');\n useBrowseButton = input<boolean>(false);\n browseButtonText = input<string>('Browse for file');\n allowedFileExtensions = input<string[]>([]);\n label = input<string>();\n\n helpTemplate = input<TemplateRef<unknown> | null>(null);\n helpTemplateContext = input<unknown | null>(null);\n\n fileAttached = output<File | undefined>();\n fileRemoved = output();\n\n /**\n * The zone acts as the keyboard-reachable file picker only when no browse\n * button is rendered (nesting a button inside a button-role zone would be\n * invalid ARIA) and no file is attached yet.\n */\n zoneIsInteractive = computed(() => !this.useBrowseButton() && !this.attachmentState());\n\n sanitizedFileExtensions = computed(() =>\n this.allowedFileExtensions().map((ext) => (ext.includes('.') ? ext : '.' + ext))\n );\n\n helpText = computed(() => {\n const extensions = this.sanitizedFileExtensions();\n let text = '';\n\n if (extensions.length === 1) {\n text = `${extensions[0]} format allowed`;\n }\n\n if (extensions.length > 1) {\n text = extensions.join(', ') + ' formats allowed';\n }\n\n return text;\n });\n\n constructor() {\n effect(() => {\n const files = this.selectedFile();\n\n if (files) {\n this.attachmentState.set('upload');\n } else {\n this.attachmentState.set(undefined);\n }\n });\n }\n\n openFileSelector() {\n this.fileSelectorElement.click();\n }\n\n selectFiles(fileList: FileList | null): void {\n if (!fileList) return;\n if (!acceptableFile(fileList[0], this.sanitizedFileExtensions())) return;\n this.selectedFile.set(fileList[0]);\n this.fileAttached.emit(fileList[0]);\n }\n\n onFileInputChange() {\n this.selectFiles(this.fileSelectorElement.files);\n this.fileSelectorElement.value = '';\n }\n\n cancelUpload() {\n this.selectedFile.set(undefined);\n this.fileAttached.emit(undefined);\n this.fileRemoved.emit();\n }\n\n removeAttachment() {\n this.selectedFile.set(undefined);\n }\n}\n","<!-- Without a browse button the zone itself is the keyboard path to the\n native file picker; with one, the button already provides it -->\n<div\n box-layout\n [border]=\"border()\"\n [borderRadius]=\"borderRadius()\"\n [dashBorder]=\"[undefined, 'replace'].includes(attachmentState())\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n [padding]=\"padding()\"\n dragAndDrop\n (onFileDropped)=\"selectFiles($event)\"\n [height]=\"height()\"\n [attr.role]=\"zoneIsInteractive() ? 'button' : null\"\n [attr.tabindex]=\"zoneIsInteractive() ? 0 : null\"\n [attr.aria-label]=\"zoneIsInteractive() ? label() || 'Choose a file' : null\"\n (keydown.enter)=\"zoneIsInteractive() && openFileSelector()\"\n (keydown.space)=\"\n zoneIsInteractive() && openFileSelector(); zoneIsInteractive() && $event.preventDefault()\n \"\n>\n <div stack-layout gap=\"md\" alignItems=\"center\">\n @switch (attachmentState()) {\n @case ('upload') {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">{{ label() }}</span>\n <span uni-text=\"title-small\">{{ selectedFileName() }}</span>\n </div>\n <button text-button (click)=\"removeAttachment()\" variant=\"warn\">Cancel</button>\n }\n\n @default {\n @if (useBrowseButton()) {\n <button text-button (click)=\"openFileSelector()\">\n {{ browseButtonText() }}\n </button>\n <span uni-text>OR</span>\n }\n\n @if (!helpTemplate()) {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">Drag and drop the file here</span>\n @if (helpText()) {\n <span uni-text=\"title-small\">{{ helpText() }}</span>\n }\n </div>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"helpTemplate()\"\n [ngTemplateOutletContext]=\"helpTemplateContext()\"\n ></ng-container>\n }\n }\n }\n </div>\n\n <input\n #fileSelector\n type=\"file\"\n style=\"display: none\"\n (change)=\"onFileInputChange()\"\n [accept]=\"sanitizedFileExtensions().join(',')\"\n [multiple]=\"false\"\n />\n</div>\n","/**\n * UniFileDropZoneComponent Barrel File\n *\n * This file exports all public-facing elements of the file-drop-zone component.\n */\n\nexport { UniFileDropZoneComponent } from './file-drop-zone.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniRowComponent } from '../layout';\nimport type { UniInputBoxOptions } from './input-box.model';\n\n@Component({\n selector: 'uni-input-box',\n imports: [UniRowComponent],\n templateUrl: './input-box.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'input' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {\n protected readonly className = css({ display: 'contents' });\n\n disabled = input<boolean>(false);\n error = input<boolean>(false);\n minWidth = input<string>('0');\n /** Override the themed field height, e.g. `'auto'` for multi-line fields. */\n height = input<string | number | undefined>(undefined);\n\n protected readonly color = computed(() =>\n this.error() ? this.componentOptions().errorColor : this.componentOptions().color\n );\n\n protected readonly border = computed(() =>\n this.error() ? this.componentOptions().errorBorder : this.componentOptions().border\n );\n\n protected readonly shadow = computed(() =>\n this.error() ? this.componentOptions().errorShadow : this.componentOptions().shadow\n );\n\n protected readonly inputBoxClass = computed(() =>\n css([\n this.disabled() && {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n cursor: 'not-allowed !important',\n },\n {\n '& input, select, textarea': {\n ...removeInputPlatformStyling,\n height: '100%',\n ...this.theme.paddingLeft(this.componentOptions().paddingLeft),\n ...this.theme.color(this.componentOptions().textColor),\n ...this.theme.typeface(this.componentOptions().typeFace),\n },\n\n // Multi-line fields size themselves (rows/resize), not from the box.\n '& textarea': {\n height: 'auto',\n ...this.theme.paddingTop('xs'),\n ...this.theme.paddingBottom('xs'),\n },\n\n '&:has(input:disabled, select:disabled, textarea:disabled)': {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n },\n\n '& input:disabled, select:disabled, textarea:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '&:has(input:focus, select:focus, textarea:focus)': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n },\n ])\n );\n}\n","<div\n row-layout\n alignItems=\"center\"\n [height]=\"height() ?? componentOptions().height\"\n [color]=\"color()\"\n [border]=\"border()\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [shadow]=\"shadow()\"\n [minWidth]=\"minWidth()\"\n [class]=\"inputBoxClass()\"\n position=\"relative\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../../input-box/input-box.component';\n\n/**\n * Text input that emits `change` only after the user pauses typing. Wears the\n * shared input chrome (themed color, border, typeface, focus ring) via\n * `uni-input-box`; project adornments with the `pre-input` / `post-input`\n * slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a\n * wrapping composite (e.g. SearchInput's combobox) annotate the real input\n * element.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-debounce-input',\n imports: [UniInputBoxComponent],\n templateUrl: './debounce-input.component.html',\n})\nexport class UniDebounceInputComponent {\n inputName = input<string>();\n inputId = input<string>();\n debounceTime = input<number>(400);\n /** Accessible name for the input. */\n label = input<string>();\n placeholder = input('');\n disabled = input(false);\n\n // ARIA passthroughs for composite widgets (combobox etc.).\n role = input<string>();\n ariaExpanded = input<boolean | undefined>(undefined);\n ariaControls = input<string>();\n ariaActivedescendant = input<string>();\n\n // TODO(v4): rename to valueChange — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n\n value = signal<string | undefined>(undefined);\n\n private readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private lastEmitted: string | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n });\n }\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n\n // Debounce, emitting only when the value actually changed.\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n if (value !== this.lastEmitted) {\n this.lastEmitted = value;\n this.change.emit(value);\n }\n }, this.debounceTime());\n }\n\n /** Empty the field immediately, cancelling any pending emit. */\n clear() {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.value.set('');\n if (this.lastEmitted !== '') {\n this.lastEmitted = '';\n this.change.emit('');\n }\n }\n\n focus() {\n this.inputElement().nativeElement.focus();\n }\n\n inputClass = css({\n flexGrow: 1,\n width: '100%',\n minWidth: 0,\n });\n}\n","<uni-input-box>\n <ng-content select=\"[pre-input]\" />\n <input\n #field\n [class]=\"inputClass\"\n type=\"text\"\n [name]=\"inputName()\"\n [id]=\"inputId()\"\n [value]=\"value() ?? ''\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label() || null\"\n [attr.role]=\"role() || null\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() || null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() || null\"\n [attr.aria-autocomplete]=\"role() === 'combobox' ? 'list' : null\"\n />\n <ng-content select=\"[post-input]\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-input',\n imports: [UniInputBoxComponent],\n templateUrl: './input.component.html',\n})\nexport class UniInputComponent implements FormValueControl<string> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLInputElement).value);\n }\n\n inputClass = css({});\n}\n","<uni-input-box [error]=\"showError()\">\n <ng-content select=\"pre-input\" />\n <input\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [class]=\"inputClass\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <ng-content select=\"post-input\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { AbsoluteSize } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-json-view',\n imports: [],\n templateUrl: './json-view.component.html',\n})\nexport class UniJsonViewComponent {\n json = input<unknown>();\n rows = input<number>(6);\n fontSize = input<AbsoluteSize | string>('medium');\n width = input<string | number>('100%');\n selectOnClick = input<boolean>(true);\n\n jsonString = computed(() => JSON.stringify(this.json(), null, 2));\n\n className = computed(() =>\n css({\n fontSize: this.fontSize(),\n width: this.width(),\n })\n );\n\n selectContents(jsonArea: HTMLTextAreaElement) {\n if (!this.selectOnClick()) return;\n jsonArea.select();\n }\n}\n","<textarea #jsonArea (click)=\"selectContents(jsonArea)\" [class]=\"className()\" [rows]=\"rows()\">{{\n jsonString()\n}}</textarea>\n","/**\n * UniJsonViewComponent Barrel File\n *\n * This file exports all public-facing elements of the json-view component.\n */\n\nexport { UniJsonViewComponent } from './json-view.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport { UniSymbolComponent } from '../../symbol';\nimport type {\n ContainerColorToken,\n OptionalAlignItems,\n OptionalDisplay,\n OptionalFlexDirection,\n OptionalSize,\n} from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-menu-item], [menu-item]',\n imports: [UniTextComponent, UniSymbolComponent, UniBoxComponent, NgTemplateOutlet],\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.aria-current]': \"active() ? 'true' : null\",\n '[class]': 'menuItemClassName()',\n },\n styles: [\n `\n :host.disabled {\n color: #ddd;\n pointer-events: none;\n }\n `,\n ],\n})\nexport class UniMenuItemComponent<T = any> extends UniBoxComponent {\n private _elementRef = inject(ElementRef);\n\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('row');\n override alignItems = input<OptionalAlignItems>('center');\n override paddingHorizontal = input<OptionalSize>('md');\n override gap = input<OptionalSize>('md');\n\n label = input<string>();\n template = input<TemplateRef<T>>();\n context = input<T>();\n symbolName = input<string>();\n active = input<boolean>();\n hoverColor = input<ContainerColorToken>('primary-container');\n disabled = input<boolean>(false);\n\n protected readonly menuItemClassName = computed(() =>\n css([\n {\n cursor: 'pointer',\n transition: 'all 0.35s ease',\n height: 38,\n\n // Roving focus highlights items the same way hover does\n '&:hover, &:focus': {\n ...this.theme.colorPair(this.hoverColor()),\n outline: 'none',\n },\n },\n ])\n );\n\n /** Host element, used by Menu for roving-focus bookkeeping. */\n get host(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n","@let tpl = template();\n@let symbol = symbolName();\n@if (symbol) {\n <uni-symbol [name]=\"symbol\"></uni-symbol>\n}\n<div box-layout [grow]=\"1\">\n @if (tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"context()\"></ng-container>\n } @else {\n <span uni-text=\"label\" display=\"block\" [nowrap]=\"true\">\n {{ label() }}\n </span>\n }\n</div>\n@if (active()) {\n <uni-symbol name=\"check\"></uni-symbol>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type Placement } from '../../cdk';\n\nimport { UniMenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuItem } from './menu-item/menu-item.model';\nimport { UniDropdownComponent } from '../dropdown';\n\n@Component({\n selector: 'uni-menu',\n imports: [UniMenuItemComponent, UniDropdownComponent],\n changeDetection: ChangeDetectionStrategy.OnPush, // Crucial for zoneless\n template: `\n <!-- Keydown listens for arrow keys bubbling from the projected (focusable)\n trigger; the wrapper itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #trigger [class]=\"TriggerClassName\" (keydown)=\"onTriggerKeydown($event)\">\n <ng-content></ng-content>\n </div>\n\n @if (menuItems()) {\n <uni-dropdown\n [trigger]=\"trigger\"\n [placement]=\"placement()\"\n ariaHasPopup=\"menu\"\n paddingVertical=\"xs\"\n #dropdown\n (dropdownShowing)=\"onOpened()\"\n >\n <!-- Roving-focus composite: the container handles keys bubbling from\n the focused item (menu-item hosts carry tabindex=\"-1\"), and\n Enter/Space activation is dispatched from onMenuKeydown. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"menu\" (keydown)=\"onMenuKeydown($event, dropdown)\">\n @for (item of menuItems(); track item) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n menu-item\n [label]=\"item.label\"\n [symbolName]=\"item.symbolName\"\n [active]=\"activeItem() === item\"\n [template]=\"item.template\"\n [context]=\"item.context\"\n (click)=\"handleMenuItemClick(item, dropdown)\"\n ></div>\n }\n </div>\n </uni-dropdown>\n }\n `,\n host: { '[class]': 'className()' },\n})\nexport class UniMenuComponent {\n // Modern Signal Inputs for perfect Zoneless tracking\n menuItems = input.required<MenuItem[]>();\n activeItem = input<MenuItem>();\n placement = input<Placement>('bottom-start');\n\n // Modern Signal Output\n menuItemClicked = output<MenuItem>();\n\n TriggerClassName = css({ display: 'inline-block' });\n\n private itemComponents = viewChildren(UniMenuItemComponent);\n private dropdownComponent = viewChild(UniDropdownComponent);\n\n /** Which item receives focus when the menu opens (ArrowUp opens onto the last item). */\n private pendingFocus: 'first' | 'last' = 'first';\n\n protected readonly className = computed(() => {\n return css({\n margin: 'unset',\n padding: 'unset',\n });\n });\n\n handleMenuItemClick(item: MenuItem, dropdown: UniDropdownComponent) {\n if (item.action) {\n item.action();\n }\n\n this.menuItemClicked.emit(item);\n dropdown.hideDropdown();\n }\n\n /** Enabled items participating in keyboard navigation. */\n private get navigableItems(): UniMenuItemComponent[] {\n return this.itemComponents().filter((item) => !item.disabled());\n }\n\n onOpened() {\n const items = this.navigableItems;\n if (items.length === 0) return;\n const target = this.pendingFocus === 'last' ? items[items.length - 1] : items[0];\n this.pendingFocus = 'first';\n target.focus();\n }\n\n onTriggerKeydown(event: KeyboardEvent) {\n const dropdown = this.dropdownComponent();\n if (!dropdown || (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')) return;\n event.preventDefault();\n\n this.pendingFocus = event.key === 'ArrowUp' ? 'last' : 'first';\n if (dropdown.showing()) {\n this.onOpened();\n } else {\n dropdown.toggleDropdown();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent, dropdown: UniDropdownComponent) {\n const items = this.navigableItems;\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.host === event.target);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n items[(currentIndex + 1) % items.length].focus();\n break;\n case 'ArrowUp':\n event.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n event.preventDefault();\n items[0].focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n (event.target as HTMLElement).click();\n break;\n case 'Tab':\n // A menu is not part of the page tab sequence: close and let focus\n // return to the trigger, then continue tabbing naturally.\n dropdown.hideDropdown();\n break;\n default:\n this.typeahead(event, items, currentIndex);\n }\n }\n\n /** First-character matching, starting after the focused item and wrapping. */\n private typeahead(event: KeyboardEvent, items: UniMenuItemComponent[], currentIndex: number) {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n const char = event.key.toLowerCase();\n if (char === ' ') return;\n\n for (let i = 1; i <= items.length; i++) {\n const item = items[(currentIndex + i) % items.length];\n if (item.label()?.toLowerCase().startsWith(char)) {\n event.preventDefault();\n item.focus();\n return;\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { Option } from '../../cdk';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniBoxComponent } from '../layout';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'uni-multi-select',\n imports: [UniCheckboxComponent, UniBoxComponent],\n templateUrl: './multi-select.component.html',\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectComponent<T = unknown> {\n // Data Inputs\n options = input<Option<T>[]>([]);\n selections = input<T[] | null | undefined>(undefined);\n updates = output<T[] | undefined>();\n\n // Styling Inputs\n flexDirection = input<'row' | 'row-reverse' | 'column' | 'column-reverse'>('column');\n checkboxGap = input<NullableSize | undefined>('sm');\n\n protected readonly values = computed<unknown[]>(() => this.selections() || []);\n\n protected readonly optionsWithSelections = computed<Option<T>[]>(() =>\n this.options().map((option) => ({\n ...option,\n selected: this.values().includes(option.value),\n }))\n );\n\n protected readonly className = css({ display: 'contents' });\n\n handleCheck(checked: boolean, value: T) {\n const selections = this.selections();\n\n if (!selections && !checked) return;\n\n if (selections && !checked) {\n const filteredSelections = selections.filter((item) => item != value);\n const isEmpty = filteredSelections.length === 0;\n this.updates.emit(isEmpty ? undefined : filteredSelections);\n return;\n }\n\n if (checked) {\n this.updates.emit([...(selections || []), value]);\n return;\n }\n }\n\n selectAll() {\n const allValues = this.options().map((option) => option.value);\n this.updates.emit(allValues);\n }\n\n deselectAll() {\n this.updates.emit(undefined);\n }\n\n optionWrapper = css({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n });\n}\n","<div box-layout display=\"flex\" [flexDirection]=\"flexDirection()\" [gap]=\"checkboxGap()\">\n @for (option of options(); track option) {\n <div [class]=\"optionWrapper\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"values().indexOf(option.value) > -1\"\n (checkedChange)=\"handleCheck($event, option.value)\"\n variant=\"primary\"\n >\n </uni-checkbox>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { Option, type Options } from '../../cdk';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { UniBoxComponent, UniRowComponent, UniStackComponent } from '../layout';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniDividerComponent } from '../divider';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniTextComponent } from '../text/text.component';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniMultiSelectDropdownOptions } from './multi-select-dropdown.model';\n\n@Component({\n selector: 'uni-multi-select-dropdown',\n imports: [\n UniCheckboxComponent,\n UniBoxComponent,\n UniDropdownComponent,\n UniStackComponent,\n UniDividerComponent,\n UniButtonComponent,\n UniTextComponent,\n UniSymbolComponent,\n UniRowComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './multi-select-dropdown.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'multiSelectDropdown' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectDropdownComponent<T = unknown>\n extends BaseComponent<UniMultiSelectDropdownOptions>\n implements FormValueControl<T[]>\n{\n protected readonly className = css({ display: 'contents' });\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input.required<Options<T>>();\n readonly placeholder = input<string>('');\n\n protected readonly query = signal('');\n\n protected readonly filteredOptions = computed<Options<T>>(() => {\n const filterText = this.query().toLowerCase();\n return this.options().filter((opt) => opt.label.toLowerCase().includes(filterText));\n });\n\n // Derived display string\n readonly selectedLabelsText = computed(() => {\n const selections = this.value();\n const allOptions = this.options();\n\n // Find labels for each selected ID\n const labels = selections\n .map((value) => allOptions.find((opt) => opt.value === value)?.label)\n .filter((label) => !!label); // Remove undefined if an ID isn't found\n\n return labels.length > 0 ? labels.join(', ') : this.placeholder();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textColor = computed(() => {\n return this.selectedLabelsText() === this.placeholder()\n ? this.componentOptions().placeholderTextColor\n : this.componentOptions().textColor;\n });\n\n triggerClass = css({\n all: 'unset',\n display: 'block',\n cursor: 'pointer',\n width: '100%',\n\n '&:focus > :first-child > :first-child': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n });\n\n protected readonly searchInputClass = computed(() =>\n css({\n ...removeInputPlatformStyling,\n ...this.theme.border(this.componentOptions().searchInputBorder),\n ...this.theme.radius(this.componentOptions().searchInputBorderRadius),\n paddingBlock: 4,\n paddingInline: 8,\n width: 'auto',\n\n '&:focus': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n })\n );\n\n protected handleQueryInput(event: Event) {\n this.query.set((event.target as HTMLInputElement).value);\n }\n\n selectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const allValues = this.options().map((option) => option.value);\n this.value.set(allValues);\n }\n\n deselectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n this.value.set([]);\n }\n\n protected isOptionSelected(option: Option<T>) {\n return computed(() => this.value().includes(option.value));\n }\n\n toggleOption(option: Option<T>, checked: boolean) {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const { value } = option;\n this.value.update((current) => {\n if (checked) {\n // Add selection if not already present\n return current.includes(value) ? current : [...current, value];\n } else {\n // Remove selection\n return current.filter((item) => item !== value);\n }\n });\n }\n}\n","<button\n [class]=\"triggerClass\"\n #trigger\n [style.cursor]=\"disabled() ? 'default' : 'pointer'\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n (click)=\"!disabled() && touched.set(true)\"\n>\n <uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div\n row-layout\n alignItems=\"center\"\n justifyContent=\"space-between\"\n [fullWidth]=\"true\"\n [minWidth]=\"0\"\n paddingLeft=\"sm\"\n >\n <span uni-text\n display=\"block\"\n [typeface]=\"componentOptions().textRole\"\n [color]=\"textColor()\"\n [ellipsis]=\"true\"\n [style.flex-grow]=\"1\"\n >{{ selectedLabelsText() }}</span>\n <uni-symbol name=\"keyboard_arrow_down\" [style.flex-shrink]=\"0\"></uni-symbol>\n </div>\n </uni-input-box>\n</button>\n<uni-dropdown\n #dropdown\n [trigger]=\"trigger\"\n ariaHasPopup=\"dialog\"\n (dropdownShowing)=\"$event && searchInput.focus()\"\n (dropdownHiding)=\"$event && trigger.focus()\"\n>\n <div box-layout gap=\"xs\" padding=\"xs\">\n <input\n #searchInput\n type=\"text\"\n [class]=\"searchInputClass()\"\n [value]=\"query()\"\n (input)=\"handleQueryInput($event)\"\n placeholder=\"Search...\"\n aria-label=\"Filter options\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div stack-layout gap=\"xs\" padding=\"xs\">\n @for (option of filteredOptions(); track option.value) {\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"isOptionSelected(option)()\"\n (checkedChange)=\"toggleOption(option, $event)\"\n variant=\"primary\"\n [disabled]=\"disabled()\"\n >\n </uni-checkbox>\n }\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div row-layout gap=\"xs\" justifyContent=\"space-around\" padding=\"xs\">\n <button text-button (click)=\"dropdown.hideDropdown()\" size=\"sm\" variant=\"ghost\">Done</button>\n </div>\n</uni-dropdown>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { Variant } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniNotificationBadgeOptions } from './notification-badge.model';\n\n@Component({\n selector: 'uni-notification-badge',\n imports: [UniTextComponent],\n templateUrl: './notification-badge.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'notificationBadge' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniNotificationBadgeComponent extends BaseComponent<UniNotificationBadgeOptions> {\n count = input<number | undefined>(undefined);\n maxCount = input<number>(99);\n badgeVariant = input<'dot' | 'count' | 'pill'>('count');\n color = input<Variant | undefined>(undefined);\n position = input<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>('top-right');\n show = input<boolean>(true);\n\n /**\n * Screen-reader text for the badge (e.g. \"5 unread messages\"). Without it\n * a sensible default is announced; a bare number or dot carries no meaning.\n */\n ariaLabel = input<string>();\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n protected readonly announcement = computed(() => {\n const label = this.ariaLabel();\n if (label) return label;\n if (this.badgeVariant() === 'dot') return 'New notifications';\n return `${this.displayValue()} notifications`;\n });\n\n displayValue = computed(() => {\n const count = this.count();\n const maxCount = this.maxCount();\n const variant = this.badgeVariant();\n\n if (variant === 'dot') {\n return '';\n }\n\n if (count === undefined || count <= 0) {\n return '';\n }\n\n if (count > maxCount) {\n return `${maxCount}+`;\n }\n\n return count.toString();\n });\n\n shouldShow = computed(() => {\n const show = this.show();\n const count = this.count();\n const variant = this.badgeVariant();\n\n if (!show) return false;\n\n if (variant === 'dot') return true;\n\n return count !== undefined && count > 0;\n });\n\n protected readonly className = computed(() => {\n const variant = this.badgeVariant();\n const color = this.color();\n const position = this.position();\n const offset = this.componentOptions().offset + 'px';\n\n const positionStyles = {\n 'top-right': { top: offset, right: offset },\n 'top-left': { top: offset, left: offset },\n 'bottom-right': { bottom: offset, right: offset },\n 'bottom-left': { bottom: offset, left: offset },\n }[position];\n\n const variantStyles = {\n dot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n minWidth: 'unset',\n },\n count: {\n width: 20,\n height: 20,\n borderRadius: 10,\n },\n pill: {\n minWidth: '24px',\n height: '20px',\n borderRadius: '10px',\n padding: '0 8px',\n },\n }[variant];\n\n return css({\n position: 'relative',\n display: 'inline-block',\n\n '& .notification-badge-indicator': {\n position: 'absolute',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.getContainerColors(color || 'warn'),\n zIndex: 1,\n\n ...positionStyles,\n ...variantStyles,\n },\n });\n });\n}\n","<ng-content></ng-content>\n@if (shouldShow()) {\n<div class=\"notification-badge-indicator\" aria-hidden=\"true\">\n <span uni-text\n typeface=\"overline\"\n align=\"center\"\n [style.max-width]=\"badgeVariant() !== 'pill' ? (displayValue().length * 5 + 'px') : ''\"\n >{{ displayValue() }}</span>\n</div>\n<span [class]=\"srOnlyClass\">{{ announcement() }}</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { fadeOut, type Variant } from '@uni-design-system/uni-core';\n\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniAlertOptions } from './alert.model';\n\n@Component({\n selector: 'uni-alert',\n imports: [\n UniRowComponent,\n UniIconButtonComponent,\n UniTextComponent,\n UniBoxComponent,\n UniIconComponent,\n UniSymbolComponent,\n ],\n templateUrl: './alert.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'alert' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniAlertComponent extends BaseComponent<UniAlertOptions> implements AfterViewInit {\n show = model<boolean>();\n iconName = input<IconName | undefined>(undefined);\n symbolName = input<string | undefined>(undefined);\n useVariant = input<boolean>(false);\n\n showing = output<boolean>();\n\n @ViewChild('alert') alertRef?: ElementRef<HTMLDialogElement>;\n\n private readonly alertState = signal<'open' | 'closing' | 'closed'>('closed');\n\n private readonly effectiveVariant = computed<Variant>(\n () => this.variant() || this.componentOptions().defaultVariant\n );\n\n protected readonly alertClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.effectiveVariant(), this.useVariant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.border(this.effectiveVariant()),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n\n transition: `all ${this.componentOptions().transitionSpeed}s ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n top: this.componentOptions().topPosition,\n\n '&[open]': {\n '@starting-style': {\n top: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n private readonly fadeOut = keyframes({ ...fadeOut });\n\n constructor() {\n super();\n effect(() => {\n if (this.show() === true) {\n this.open();\n } else if (this.show() === false) {\n this.close();\n }\n });\n }\n\n ngAfterViewInit() {\n this.alertRef?.nativeElement.addEventListener('animationend', (e) => {\n if (e.animationName === this.fadeOut.toString()) {\n this.alertRef?.nativeElement.close();\n this.showing.emit(false);\n this.alertState.set('closed');\n }\n });\n }\n\n open() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.removeAttribute('closing');\n this.alertRef.nativeElement.show();\n this.alertState.set('open');\n this.showing.emit(true);\n }\n\n close() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.setAttribute('closing', 'true');\n this.alertState.set('closing');\n this.show.set(false);\n }\n\n protected readonly effectiveIconName = computed<IconName | undefined>(() => this.iconName());\n}\n","<!-- role=\"alert\" makes the message announce immediately when shown -->\n<dialog #alert [class]=\"alertClass()\" role=\"alert\">\n <div row-layout gap=\"md\">\n @if (iconName() || symbolName()) {\n <div box-layout [height]=\"26\" [width]=\"26\">\n @if (effectiveIconName()) {\n <uni-icon [name]=\"effectiveIconName()!\" />\n } @else {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"26\" />\n }\n </div>\n }\n <span uni-text>\n <ng-content></ng-content>\n </span>\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">close</button>\n </div>\n</dialog>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport {\n UniDialogButtonsComponent,\n UniDialogComponent,\n UniDialogHeaderComponent,\n} from '../../dialog';\nimport { UniBoxComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport type { Confirmation } from '../../../cdk/notification';\n\n@Component({\n selector: 'uni-confirmation-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n UniDialogComponent,\n UniDialogHeaderComponent,\n UniBoxComponent,\n UniTextComponent,\n UniDialogButtonsComponent,\n ],\n templateUrl: './confirmation-dialog.component.html',\n})\nexport class ConfirmationDialogComponent {\n show = input(false);\n confirmation = input<Confirmation>();\n showing = output<boolean>();\n}\n","<dialog uni-dialog [show]=\"show()\" (showing)=\"showing.emit($event)\">\n <div uni-dialog-header>\n {{ confirmation()?.title }}\n </div>\n <div box-layout padding=\"md\">\n <span uni-text>\n {{ confirmation()?.message }}\n </span>\n </div>\n <div\n dialog-buttons\n [confirmButtonText]=\"confirmation()?.actionLabel\"\n (confirmed)=\"confirmation()?.action()\"\n [cancelButtonText]=\"confirmation()?.dismissLabel\"\n ></div>\n</dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { useTimer } from '../../../cdk';\nimport { Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniButtonComponent } from '../../button';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniSnackbarOptions } from './snackbar.model';\n\n@Component({\n selector: 'uni-snackbar',\n imports: [\n UniRowComponent,\n UniBoxComponent,\n UniTextComponent,\n UniIconButtonComponent,\n UniSymbolComponent,\n UniIconComponent,\n UniButtonComponent,\n ],\n templateUrl: './snackbar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'snackbar' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSnackbarComponent\n extends BaseComponent<UniSnackbarOptions>\n implements AfterViewInit\n{\n timer = useTimer();\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>();\n iconName = input<IconName>();\n symbolName = input<string>();\n timeout = input<number | string | 'disabled'>();\n actionLabel = input<string>();\n\n useVariant = input<boolean>(false);\n\n action = output();\n showing = output<boolean>();\n\n snackbarRef = viewChild<ElementRef>('snackbar');\n\n private get _snackbar(): HTMLDialogElement | undefined {\n return this.snackbarRef()?.nativeElement;\n }\n\n constructor() {\n super();\n\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n protected readonly snackbarClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.variant() || 'primary', this.useVariant()),\n ...this.theme.radius('sm'),\n ...this.theme.border(this.variant() || 'primary'),\n ...this.theme.boxShadow('dialog'),\n padding: 0,\n transition: `all ${this.componentOptions().transitionDelay} ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n bottom: this.componentOptions().bottomPosition,\n zIndex: Z_INDEX.dialog,\n position: 'fixed',\n\n '&[open]': {\n '@starting-style': {\n bottom: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n fadeOut = keyframes({\n '0% ': {\n opacity: 1,\n },\n '100%': {\n opacity: 0,\n },\n });\n\n ngAfterViewInit() {\n this._snackbar?.addEventListener('animationend', (e) => {\n if (e.animationName == this.fadeOut) {\n this._snackbar?.close();\n this.showing.emit(false);\n }\n });\n }\n\n private get _timeout(): number | undefined {\n const timeout = this.timeout();\n if (timeout === 'disabled') return undefined;\n\n return typeof timeout === 'string'\n ? parseFloat(timeout)\n : timeout || this.componentOptions().autoCloseDelay;\n }\n\n open() {\n this._snackbar?.removeAttribute('closing');\n this._snackbar?.show();\n this.show.set(true);\n this.showing.emit(true);\n\n if (this._timeout) this.timer.start(this._timeout, () => this.close());\n }\n\n close() {\n this._snackbar?.setAttribute('closing', 'true');\n this.show.set(false);\n }\n\n protected pauseTimer() {\n this.timer.pause();\n }\n\n protected resumeTimer() {\n this.timer.resume();\n }\n}\n","@let icon = iconName();\n@let symbol = symbolName();\n<!-- role=\"status\" announces the message politely without stealing focus -->\n<dialog\n #snackbar\n [class]=\"snackbarClass()\"\n role=\"status\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n (focusin)=\"pauseTimer()\"\n (focusout)=\"resumeTimer()\"\n>\n <div row-layout alignItems=\"center\">\n @if (icon || symbol) {\n <div box-layout [height]=\"26\" [width]=\"26\" paddingLeft=\"sm\">\n @if (icon) {\n <uni-icon [name]=\"icon\"></uni-icon>\n } @else if (symbol) {\n <uni-symbol [name]=\"symbol\" [opticalSize]=\"26\"></uni-symbol>\n }\n </div>\n }\n <div box-layout padding=\"sm\">\n <span uni-text>\n <ng-content></ng-content>\n </span>\n </div>\n <div box-layout paddingRight=\"sm\">\n @if (!actionLabel()) {\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">Close</button>\n } @else {\n <button text-button variant=\"ghost\" (click)=\"this.action.emit(); close()\">\n {{ actionLabel() }}\n </button>\n }\n </div>\n </div>\n</dialog>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { Alert, Confirmation, NotificationService, Snackbar } from '../../../cdk';\nimport { UniAlertComponent } from '../alert/alert.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { UniSnackbarComponent } from '../snackbar/snackbar.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-notifications',\n imports: [UniAlertComponent, UniSnackbarComponent, ConfirmationDialogComponent],\n templateUrl: './notifications.component.html',\n})\nexport class NotificationsComponent {\n notifications = inject(NotificationService);\n\n private readonly alertState = signal<Alert | undefined>(undefined);\n private readonly snackbarState = signal<Snackbar | undefined>(undefined);\n private readonly confirmationState = signal<Confirmation | undefined>(undefined);\n\n // Computed values for the show states\n protected readonly showAlert = computed(() => !!this.alertState());\n protected readonly showSnackbar = computed(() => !!this.snackbarState());\n protected readonly showConfirmation = computed(() => !!this.confirmationState());\n\n // Expose the alert state\n protected readonly alert = computed(() => this.alertState());\n protected readonly snackbar = computed(() => this.snackbarState());\n protected readonly confirmation = computed(() => this.confirmationState());\n\n constructor() {\n effect(() => {\n this.alertState.set(this.notifications.alert());\n });\n effect(() => {\n this.snackbarState.set(this.notifications.snackbar());\n });\n effect(() => {\n this.confirmationState.set(this.notifications.confirmation());\n });\n }\n\n handleConfirmationShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideConfirmation();\n }\n\n handleSnackbarShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideSnackbar();\n }\n\n handleAlertShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideAlert();\n }\n}\n","<uni-alert\n [show]=\"showAlert()\"\n (showing)=\"handleAlertShowingEvent($event)\"\n [variant]=\"alert()?.variant || 'primary'\"\n [iconName]=\"alert()?.iconName\"\n [symbolName]=\"alert()?.symbolName\"\n >{{ alert()?.message }}</uni-alert>\n\n<uni-snackbar\n [show]=\"showSnackbar()\"\n (showing)=\"handleSnackbarShowingEvent($event)\"\n [variant]=\"snackbar()?.variant || 'primary'\"\n [actionLabel]=\"snackbar()?.actionLabel\"\n (action)=\"snackbar()?.action?.()\"\n [timeout]=\"snackbar()?.timeout\"\n [iconName]=\"snackbar()?.iconName\"\n [symbolName]=\"snackbar()?.symbolName\"\n >{{ snackbar()?.message }}</uni-snackbar>\n\n<uni-confirmation-dialog\n [show]=\"showConfirmation()\"\n (showing)=\"handleConfirmationShowingEvent($event)\"\n [confirmation]=\"confirmation()\"\n></uni-confirmation-dialog>\n","import { ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniPaginatorOptions } from './paginator.model';\n\n@Component({\n selector: 'uni-paginator',\n imports: [UniRowComponent, UniIconButtonComponent, UniTextComponent],\n templateUrl: './paginator.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'paginator' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'navigation',\n 'aria-label': 'Pagination',\n },\n})\nexport class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions> {\n datasource = input<UniDatasource<T>>();\n initPageSize = input<number>();\n\n showPageSize = input<boolean>(true);\n showPageJumper = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n\n constructor() {\n super();\n effect(() => {\n const pageSize = this.initPageSize();\n if (!pageSize) return;\n const ds = this.datasource();\n if (ds) ds.setPageSize(pageSize);\n });\n }\n\n protected readonly inputClass = computed(() =>\n css({\n textAlign: 'center',\n ...this.theme.border(this.componentOptions().inputBorder),\n ...this.theme.radius(this.componentOptions().inputBorderRadius),\n height: 22,\n fontSize: 16,\n padding: '2px 0 0 2px',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n })\n );\n\n protected readonly pageClass = computed(() =>\n css({\n all: 'unset',\n boxSizing: 'border-box',\n ...this.theme.radius(this.componentOptions().pageBorderRadius),\n padding: 2,\n width: 20,\n display: 'flex',\n justifyContent: 'center',\n cursor: 'pointer',\n border: 'solid 1px transparent',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n\n '&.current': {\n ...this.theme.border(this.componentOptions().currentPageBorder),\n ...this.theme.radius(this.componentOptions().currentPageBorderRadius),\n cursor: 'unset',\n },\n\n '&:hover:not(.current)': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n })\n );\n\n updatePageSize(event: Event) {\n const ds = this.datasource();\n const pageSize = (event.target as HTMLInputElement).value;\n if (ds) ds.setPageSize(parseInt(pageSize));\n }\n\n jumpToPage(event: Event) {\n const ds = this.datasource();\n const page = (event.target as HTMLInputElement).value;\n if (ds) ds.jumpToPage(parseInt(page));\n }\n\n isNumber(page: unknown) {\n return typeof page === 'number';\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div row-layout alignItems=\"center\" [gap]=\"componentOptions().gap\">\n @if (showPageSize()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingRight=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Show</span>\n <input\n type=\"number\"\n aria-label=\"Items per page\"\n [class]=\"inputClass()\"\n (change)=\"updatePageSize($event)\"\n min=\"1\"\n [max]=\"ds.recordCount()\"\n [value]=\"ds.pageSize()\"\n />\n </div>\n }\n\n @if (showPageNumbers()) {\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_left\"\n (click)=\"ds.firstPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n First Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_left\"\n (click)=\"ds.previousPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n Previous Page\n </button>\n\n @for (page of ds.truncatedPages(); track page) {\n @if (isNumber(page)) {\n <button\n type=\"button\"\n [class]=\"pageClass()\"\n [class.current]=\"page === ds.pageIndex() + 1\"\n [attr.aria-label]=\"'Page ' + page\"\n [attr.aria-current]=\"page === ds.pageIndex() + 1 ? 'page' : null\"\n (click)=\"ds.jumpToPage(page)\"\n >\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </button>\n } @else {\n <div>\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </div>\n }\n }\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_right\"\n (click)=\"ds.nextPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Next Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_right\"\n (click)=\"ds.lastPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Last Page\n </button>\n }\n\n @if (showPageJumper()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingLeft=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Jump to</span>\n <input\n type=\"number\"\n aria-label=\"Jump to page\"\n [class]=\"inputClass()\"\n (change)=\"jumpToPage($event)\"\n min=\"1\"\n [max]=\"ds.pageCount()\"\n [value]=\"ds.pageIndex() + 1\"\n />\n </div>\n }\n </div>\n}\n","/**\n * UniPaginatorComponent Barrel File\n *\n * This file exports all public-facing elements of the paginator component.\n */\n\nexport { UniPaginatorComponent } from './paginator.component';\nexport type { UniPaginatorOptions } from './paginator.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type Placement,\n} from '../../cdk';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-popover',\n imports: [],\n templateUrl: './popover.component.html',\n})\nexport class UniPopoverComponent {\n private renderer = inject(Renderer2);\n private theme = inject(ThemeService);\n\n placement = input<Placement>('bottom');\n\n /** Light-dismiss on outside click / Escape (native popover=\"auto\"). */\n autoClose = input(true);\n\n readonly panelId = uniqueId('uni-popover');\n private readonly anchorName = newAnchorName();\n private readonly showing = signal(false);\n\n private triggerRef = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n\n constructor() {\n // Wire the ARIA disclosure contract onto the focusable trigger element\n afterNextRender(() => {\n const target = resolveFocusTarget(this.triggerRef().nativeElement);\n this.renderer.setAttribute(target, 'aria-expanded', 'false');\n this.renderer.setAttribute(target, 'aria-controls', this.panelId);\n });\n }\n\n protected onToggle(event: Event) {\n const open = (event as ToggleEvent).newState === 'open';\n this.showing.set(open);\n this.renderer.setAttribute(\n resolveFocusTarget(this.triggerRef().nativeElement),\n 'aria-expanded',\n `${open}`\n );\n }\n\n showPopover() {\n this.panelRef().nativeElement.showPopover();\n }\n\n hidePopover() {\n this.panelRef().nativeElement.hidePopover();\n }\n\n togglePopover(event: MouseEvent) {\n if (this.showing()) {\n this.hidePopover();\n } else {\n this.showPopover();\n }\n event.stopPropagation();\n }\n\n protected readonly triggerClassName = css({\n display: 'inline-block',\n anchorName: this.anchorName,\n });\n\n protected readonly popoverClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair('primary-surface'),\n ...this.theme.radius('xs'),\n ...this.theme.boxShadow('raised'),\n ...this.theme.typeface('label'),\n ...this.theme.border('quaternary'),\n padding: '6px 12px',\n width: 'max-content',\n overflow: 'visible',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 7 }),\n\n // Fade via discrete transitions across the top layer\n transitionProperty: 'opacity, display, overlay',\n transitionDuration: '250ms',\n transitionBehavior: 'allow-discrete',\n opacity: 0,\n\n '&:popover-open': {\n opacity: 1,\n },\n\n '@starting-style': {\n '&:popover-open': {\n opacity: 0,\n },\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() => {\n const side = this.placement().split('-')[0];\n // Border on the two edges of the rotated square that face outward\n const borders: Record<string, object> = {\n top: { ...this.theme.borderRight('quaternary'), ...this.theme.borderBottom('quaternary') },\n bottom: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderTop('quaternary') },\n left: { ...this.theme.borderRight('quaternary'), ...this.theme.borderTop('quaternary') },\n right: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderBottom('quaternary') },\n };\n return css({\n ...this.theme.colorPair('primary-surface'),\n ...anchorArrowStyles(this.placement()),\n ...borders[side],\n });\n });\n}\n","<!-- Click bubbles up from the projected [trigger] content, which is expected\n to be focusable (a button); keyboard activation arrives as a click. -->\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<span #trigger (click)=\"togglePopover($event)\" [class]=\"triggerClassName\">\n <ng-content select=\"[trigger]\"></ng-content>\n</span>\n<div\n #panel\n [id]=\"panelId\"\n [attr.popover]=\"autoClose() ? 'auto' : 'manual'\"\n [class]=\"popoverClassName()\"\n (toggle)=\"onToggle($event)\"\n>\n <ng-content></ng-content>\n <span [class]=\"arrowClassName()\"></span>\n</div>\n","/**\n * UniPopoverComponent Barrel File\n *\n * This file exports all public-facing elements of the popover component.\n */\n\nexport { UniPopoverComponent } from './popover.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-progress-bar',\n imports: [],\n templateUrl: './progress-bar.component.html',\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressBarComponent {\n theme = inject(ThemeService);\n\n palette = this.theme.colors;\n\n width = input<number>(560);\n height = input<number>(24);\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing (e.g. \"Upload progress\"). */\n ariaLabel = input<string>();\n\n stroke = 1;\n\n protected readonly className = computed(() => {\n return css([{ display: 'block' }]);\n });\n\n protected readonly Math = Math;\n}\n","<svg aria-hidden=\"true\" [attr.width]=\"width()\" [attr.height]=\"height()\">\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"width() - stroke * 2\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"palette()['primary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"Math.max(height() - stroke * 2, (percent() / 100) * width() - stroke * 2)\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"percent() === 100 ? palette()['secondary'] : palette()['secondary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n</svg>\n","/**\n * UniProgressBarComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-bar component.\n */\n\nexport { UniProgressBarComponent } from './progress-bar.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-progress-gauge',\n imports: [],\n templateUrl: './progress-gauge.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'progressGauge' }],\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressGaugeComponent extends BaseComponent {\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing. */\n ariaLabel = input<string>();\n\n textStyle = computed(() => {\n const theme = this.componentTheme();\n return theme.fixed && theme.fixed['textFill'];\n });\n\n private progress = keyframes({\n '0%': { strokeDasharray: '0 100' },\n });\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n\n '& .circular-chart': {\n display: 'block',\n },\n\n '& .circle-bg': {\n fill: 'none',\n strokeWidth: 3.8,\n },\n\n '& .circle': {\n fill: 'none',\n strokeWidth: 3.8,\n animation: `${this.progress} 1s ease-out forwards`,\n },\n\n '& .percentage': {\n fontFamily: 'sans-serif',\n fontSize: '0.5em',\n textAnchor: 'middle',\n },\n });\n });\n}\n","<svg\n viewBox=\"0 0 36 36\"\n class=\"circular-chart\"\n aria-hidden=\"true\"\n [style.height]=\"style()['height']\"\n>\n <path\n class=\"circle-bg\"\n [attr.stroke]=\"style()['backgroundColor']\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path\n class=\"circle\"\n [attr.stroke]=\"style()['color']\"\n [attr.stroke-dasharray]=\"percent() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <text x=\"18.5\" y=\"20.82\" class=\"percentage\" [style.fill]=\"textStyle()\">{{ percent() }}%</text>\n</svg>\n","/**\n * UniProgressGaugeComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-gauge component.\n */\n\nexport { UniProgressGaugeComponent } from './progress-gauge.component';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniRadioOption, UniRadioOptions } from './radio.model';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'uni-radio',\n imports: [UniTextComponent],\n templateUrl: './radio.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'radio' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniRadioComponent\n extends BaseComponent<UniRadioOptions>\n implements FormValueControl<string>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<UniRadioOption[]>([]);\n readonly label = input<string>();\n // Unique default so multiple radio groups on a page never share a name\n readonly name = input<string>(uniqueId('uni-radio-group'));\n\n /** Links the group label to the radiogroup container. */\n protected readonly groupLabelId = uniqueId('uni-radio-label');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n private readonly metrics = computed(() => {\n const radioSize = (this.componentOptions().size as number) || 20;\n const innerCircleSize = radioSize * 0.6;\n return {\n outerCircleSize: radioSize,\n innerCircleSize,\n innerCircleOffset: (radioSize - innerCircleSize) / 2,\n };\n });\n\n protected readonly radioGroupClass = css({\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n });\n\n protected readonly radioOptionClass = computed(() => {\n const { outerCircleSize, innerCircleSize, innerCircleOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .radio-button': {\n width: outerCircleSize,\n height: outerCircleSize,\n borderRadius: '50%',\n border: `2px solid ${\n this.disabled()\n ? this.getThemeColor('on-disabled')\n : this.getThemeColor(this.componentOptions().ringColor ?? 'outline')\n }`,\n position: 'relative',\n transition: 'all 0.3s ease',\n backgroundColor: this.getThemeColor(this.componentOptions().fillColor ?? 'surface'),\n flexShrink: 0,\n },\n\n '& .radio-inner': {\n width: innerCircleSize,\n height: innerCircleSize,\n borderRadius: '50%',\n backgroundColor: this.getThemeColor(this.variant()),\n position: 'absolute',\n top: innerCircleOffset,\n left: innerCircleOffset,\n transform: 'scale(0)',\n transition: 'all 0.3s ease',\n },\n\n '&:hover .radio-button': this.disabled()\n ? {}\n : {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&.disabled': {\n cursor: 'not-allowed',\n opacity: 0.6,\n\n '& .radio-button': {\n borderColor: this.getThemeColor('on-disabled'),\n },\n },\n });\n });\n\n protected readonly radioInputClass = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .radio-button': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .radio-button .radio-inner': {\n transform: 'scale(1)',\n },\n\n '&:focus + .radio-button': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n })\n );\n\n handleRadioChange(optionValue: string) {\n this.value.set(optionValue);\n this.markAsTouched();\n }\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<div\n [class]=\"radioGroupClass\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? groupLabelId : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n>\n @if (label()) {\n <span uni-text=\"label\" [attr.id]=\"groupLabelId\">{{ label() }}</span>\n }\n\n @for (option of options(); track option.value) {\n <label [class]=\"radioOptionClass()\" [class.disabled]=\"disabled() || option.disabled\">\n <input\n type=\"radio\"\n [class]=\"radioInputClass()\"\n [value]=\"option.value\"\n [name]=\"name()\"\n [checked]=\"value() === option.value\"\n [disabled]=\"disabled() || option.disabled\"\n (change)=\"handleRadioChange(option.value)\"\n />\n <div class=\"radio-button\">\n <div class=\"radio-inner\"></div>\n </div>\n <span uni-text=\"label\">{{ option.label }}</span>\n </label>\n }\n</div>\n","/**\n * UniScrollAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the scroll-area component.\n */\n\nexport { UniScrollAreaComponent } from './scroll-area.component';\nexport type { ScrollbarAppearance } from './scroll-area.types';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { uniqueId } from '../../cdk';\nimport { UniDebounceInputComponent } from '../forms/debounce-input/debounce-input.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniSearchInputOptions } from './search-input.model';\n\n/**\n * Generic search field: shared input chrome with a leading magnifier, a clear\n * button while there's a query, Enter to submit, and optional type-ahead —\n * pass `suggestions` (refresh them from `change`) and the field becomes an\n * ARIA combobox with a keyboard-navigable listbox. Escape closes the list\n * first, then clears the query.\n */\n@Component({\n selector: 'uni-search-input',\n imports: [UniDebounceInputComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './search-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'searchInput' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSearchInputComponent extends BaseComponent<UniSearchInputOptions> {\n /** Accessible name for the field, also the placeholder fallback. */\n label = input.required<string>();\n placeholder = input<string>();\n width = input<string | number>('100%');\n debounceTime = input(400);\n /**\n * Type-ahead entries. Keep them fresh from `change` emissions; the list\n * shows while the field has focus and entries exist.\n */\n suggestions = input<string[]>([]);\n\n // TODO(v4): rename to searchChange/searchSubmit — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n search = output<string>();\n suggestionSelected = output<string>();\n\n protected readonly field = viewChild.required(UniDebounceInputComponent);\n\n readonly listboxId = uniqueId('uni-search-listbox');\n protected readonly listOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n\n protected readonly visibleSuggestions = computed(() =>\n this.suggestions().slice(0, this.componentOptions().maxSuggestions ?? 8)\n );\n\n protected readonly showList = computed(\n () => this.listOpen() && this.visibleSuggestions().length > 0\n );\n\n protected readonly activeOptionId = computed(() =>\n this.activeIndex() >= 0 ? `${this.listboxId}-${this.activeIndex()}` : undefined\n );\n\n protected readonly hasQuery = computed(() => !!this.field()?.value());\n\n protected handleChange(value: string) {\n this.listOpen.set(true);\n this.activeIndex.set(-1);\n this.change.emit(value);\n }\n\n protected submit() {\n const active = this.activeIndex();\n if (this.showList() && active >= 0) {\n this.select(this.visibleSuggestions()[active]);\n return;\n }\n this.listOpen.set(false);\n this.search.emit(this.field().value() ?? '');\n }\n\n protected select(suggestion: string) {\n this.field().value.set(suggestion);\n this.listOpen.set(false);\n this.activeIndex.set(-1);\n this.suggestionSelected.emit(suggestion);\n this.search.emit(suggestion);\n }\n\n protected clear() {\n this.field().clear();\n this.listOpen.set(false);\n this.activeIndex.set(-1);\n this.field().focus();\n }\n\n protected onKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.submit();\n break;\n case 'ArrowDown':\n case 'ArrowUp': {\n const count = this.visibleSuggestions().length;\n if (count === 0) return;\n event.preventDefault();\n this.listOpen.set(true);\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n this.activeIndex.set((this.activeIndex() + delta + count) % count);\n break;\n }\n case 'Escape':\n if (this.showList()) this.listOpen.set(false);\n else if (this.hasQuery()) this.clear();\n break;\n }\n }\n\n protected onFocusOut(event: FocusEvent) {\n // Close unless focus moved somewhere inside the component.\n const next = event.relatedTarget as Node | null;\n if (!next || !(event.currentTarget as HTMLElement).contains(next)) {\n this.listOpen.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css({\n display: 'block',\n position: 'relative',\n width: this.width(),\n '& .uni-search-lead': {\n fontSize: 20,\n ...this.theme.color('on-background-variant'),\n ...this.theme.paddingLeft('sm'),\n },\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Keydown/focusout ride the bubbling events from the inner input; the\n wrapper itself stays out of the tab order. -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div (keydown)=\"onKeydown($event)\" (focusout)=\"onFocusOut($event)\">\n <uni-debounce-input\n #searchField\n [label]=\"label()\"\n [placeholder]=\"placeholder() ?? label()\"\n [debounceTime]=\"debounceTime()\"\n role=\"combobox\"\n [ariaExpanded]=\"showList()\"\n [ariaControls]=\"listboxId\"\n [ariaActivedescendant]=\"activeOptionId()\"\n (change)=\"handleChange($event)\"\n >\n <uni-symbol pre-input class=\"uni-search-lead\" name=\"{{ componentOptions().searchSymbol ?? 'search' }}\" aria-hidden=\"true\" />\n @if (hasQuery()) {\n <button\n post-input\n icon-button\n [iconName]=\"componentOptions().clearSymbol ?? 'close'\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"clear()\"\n >\n Clear search\n </button>\n }\n </uni-debounce-input>\n\n @if (showList()) {\n <ul [id]=\"listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"listboxId + '-' + i\"\n [class.active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"select(suggestion)\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * UniSearchInputComponent Barrel File\n *\n * This file exports all public-facing elements of the search-input component.\n */\n\nexport { UniSearchInputComponent } from './search-input.component';\nexport type { UniSearchInputOptions } from './search-input.model';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Options } from '../../cdk';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniSymbolComponent } from '../symbol';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-select',\n imports: [UniInputBoxComponent, UniSymbolComponent],\n templateUrl: './select-input.component.html',\n})\nexport class UniSelectComponent<T> implements FormValueControl<T | null> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T | null>(null);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<Options<T>>([]);\n readonly placeholder = input<string>();\n\n /** Accessible name for the select; a placeholder is not a label. */\n readonly ariaLabel = input<string>();\n\n protected readonly UNSELECTED = -1;\n\n /**\n * We use the index as the HTML value to avoid issues with\n * stringifying complex objects or duplicate labels.\n */\n protected readonly currentSelectedIndex = computed(() => {\n const currentVal = this.value();\n if (currentVal === null || currentVal === undefined) return this.UNSELECTED;\n\n // Find the index of the option that contains our current value\n const index = this.options().findIndex((opt) => opt.value === currentVal);\n return index.toString();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected handleSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const index = parseInt(select.value, 10);\n\n if (index === this.UNSELECTED) {\n this.value.set(null);\n } else {\n const selectedOption = this.options()[index];\n // Update the model with the 'value' property of the Option interface\n this.value.set(selectedOption.value);\n }\n }\n\n selectClass = css({\n '& select': {\n paddingRight: 24, // Prevent arrow from overlapping\n cursor: 'pointer',\n '&::-ms-expand': { display: 'none' },\n },\n\n [`& select:has(option[value=\"${this.UNSELECTED}\"]:checked)`]: {\n color: 'color-mix(in srgb, currentColor 50%, transparent)',\n },\n });\n\n arrowClass = css({\n position: 'absolute',\n right: 0,\n pointerEvents: 'none' /* Crucial for clicking through */,\n });\n}\n","<uni-input-box [error]=\"showError()\" [class]=\"selectClass\">\n <select\n [disabled]=\"disabled()\"\n [value]=\"currentSelectedIndex()\"\n (change)=\"handleSelectChange($event)\"\n (blur)=\"touched.set(true)\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n @if (placeholder()) {\n <option [value]=\"UNSELECTED\" disabled selected>\n {{ placeholder() }}\n </option>\n }\n\n @for (opt of options(); track opt.label; let i = $index) {\n <option [value]=\"i\">\n {{ opt.label }}\n </option>\n }\n </select>\n <uni-symbol name=\"keyboard_arrow_down\" [class]=\"arrowClass\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport type { SkeletonShape, UniSkeletonOptions } from './skeleton.model';\n\n/**\n * Loading placeholder painted with surface tokens. `text` renders one or more\n * lines (the last line shortened, as real text would be), `rect` and `circle`\n * render fixed shapes. The shimmer only animates when the user allows motion;\n * it degrades to static blocks under `prefers-reduced-motion`.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-skeleton',\n providers: [{ provide: COMPONENT_NAME, useValue: 'skeleton' }],\n host: { '[class]': 'className()', 'aria-hidden': 'true' },\n template: `\n @for (line of lineWidths(); track $index) {\n <div class=\"uni-skeleton-block\" [style.width]=\"line\"></div>\n }\n `,\n})\nexport class UniSkeletonComponent extends BaseComponent<UniSkeletonOptions> {\n shape = input<SkeletonShape>('text');\n /** CSS width; defaults to 100% for text/rect and `height` for circles. */\n width = input<string | number | undefined>(undefined);\n /** CSS height per block; defaults to 1em (text), 96px (rect), 40px (circle). */\n height = input<string | number | undefined>(undefined);\n /** Number of text lines (text shape only). */\n lines = input(1);\n\n private readonly cssSize = (value: string | number): string =>\n typeof value === 'number' ? `${value}px` : value;\n\n protected readonly resolvedHeight = computed(() => {\n const height = this.height();\n if (height !== undefined) return this.cssSize(height);\n return { text: '1em', rect: '96px', circle: '40px' }[this.shape()];\n });\n\n protected readonly lineWidths = computed(() => {\n const width = this.width() !== undefined ? this.cssSize(this.width()!) : undefined;\n if (this.shape() === 'circle') return [width ?? this.resolvedHeight()];\n if (this.shape() === 'rect') return [width ?? '100%'];\n const lines = Math.max(1, this.lines());\n // Multi-line text blocks end on a short line, like real paragraphs do.\n return Array.from({ length: lines }, (_, i) =>\n lines > 1 && i === lines - 1 ? (width ?? '60%') : (width ?? '100%')\n );\n });\n\n private readonly sweep = keyframes({\n from: { backgroundPosition: '200% 0' },\n to: { backgroundPosition: '-200% 0' },\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const base = this.theme.colors()[options.color ?? 'surface-variant'];\n const highlight = this.theme.colors()[options.highlightColor ?? 'surface'];\n const animated = (options.animation ?? 'shimmer') === 'shimmer';\n return css({\n display: 'flex',\n flexDirection: 'column',\n ...this.theme.gap(options.gap),\n '& .uni-skeleton-block': {\n height: this.resolvedHeight(),\n backgroundColor: base,\n ...(this.shape() === 'circle'\n ? { borderRadius: '50%', flex: 'none' }\n : this.theme.radius(options.borderRadius)),\n ...(animated &&\n motionSafe({\n backgroundImage: `linear-gradient(90deg, ${base} 40%, ${highlight} 50%, ${base} 60%)`,\n backgroundSize: '200% 100%',\n animation: `${this.sweep} ${options.duration ?? 1.4}s ease-in-out infinite`,\n })),\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniSliderOptions } from './slider.model';\n\n/**\n * Range slider on a native `<input type=\"range\">` — keyboard interaction and\n * the ARIA slider contract come from the platform. Fill, track, thumb and\n * radii resolve from `slider` theme tokens; the fill percentage rides a CSS\n * custom property so dragging never regenerates styles.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-slider',\n providers: [{ provide: COMPONENT_NAME, useValue: 'slider' }],\n template: `\n <input\n type=\"range\"\n [class]=\"inputClass()\"\n [style.--uni-slider-fill]=\"fillPercent()\"\n [min]=\"resolvedMin()\"\n [max]=\"resolvedMax()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"handleInput($event)\"\n (blur)=\"markAsTouched()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n `,\n})\nexport class UniSliderComponent\n extends BaseComponent<UniSliderOptions>\n implements FormValueControl<number>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<number>(0);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered value or error text — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n // `min`/`max` are part of the FormValueControl contract (synced from\n // min()/max() validators), so their type must admit undefined.\n min = input<number | undefined>(0);\n max = input<number | undefined>(100);\n step = input(1);\n\n protected readonly resolvedMin = computed(() => this.min() ?? 0);\n protected readonly resolvedMax = computed(() => this.max() ?? 100);\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set(Number((event.target as HTMLInputElement).value));\n }\n\n protected readonly fillPercent = computed(() => {\n const min = this.resolvedMin();\n const range = this.resolvedMax() - min;\n if (range <= 0) return '0%';\n const ratio = (this.value() - min) / range;\n return `${Math.min(100, Math.max(0, ratio * 100))}%`;\n });\n\n protected readonly inputClass = computed(() => {\n const options = this.componentOptions();\n const fill = this.theme.colors()[options.color ?? 'primary'];\n const track = this.theme.colors()[options.trackColor ?? 'surface-variant'];\n const radius = this.theme.radii()[options.borderRadius ?? 'max'];\n const trackHeight = options.trackHeight ?? 4;\n const thumbSize = options.thumbSize ?? 16;\n // Webkit paints the fill via a gradient stopped at the custom property;\n // Firefox has a real ::-moz-range-progress.\n const trackFill = `linear-gradient(to right, ${fill} var(--uni-slider-fill), ${track} var(--uni-slider-fill))`;\n const thumb = {\n appearance: 'none' as const,\n width: thumbSize,\n height: thumbSize,\n borderRadius: radius,\n border: 'none',\n background: fill,\n cursor: 'pointer',\n };\n return css({\n appearance: 'none',\n width: '100%',\n height: thumbSize,\n margin: 0,\n background: 'transparent',\n cursor: 'pointer',\n '&::-webkit-slider-runnable-track': {\n height: trackHeight,\n borderRadius: radius,\n background: trackFill,\n },\n '&::-webkit-slider-thumb': {\n ...thumb,\n marginTop: (trackHeight - thumbSize) / 2,\n },\n '&::-moz-range-track': { height: trackHeight, borderRadius: radius, background: track },\n '&::-moz-range-progress': { height: trackHeight, borderRadius: radius, background: fill },\n '&::-moz-range-thumb': thumb,\n '&:focus-visible': { outline: `2px solid ${fill}`, outlineOffset: 2 },\n '&:disabled': {\n cursor: 'not-allowed',\n opacity: 0.5,\n '&::-webkit-slider-thumb': { cursor: 'not-allowed' },\n '&::-moz-range-thumb': { cursor: 'not-allowed' },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniStatOptions } from './stat.model';\n\nconst SPARK_WIDTH = 96;\nconst SPARK_HEIGHT = 28;\n\n/**\n * KPI stat tile: muted label, large value (numbers auto-compact: 48234 →\n * \"48.2K\"), an optional delta whose ink is decided by *direction × whether up\n * is good* (never direction alone — churn going down is good news), and an\n * optional decorative sparkline. Frame, typography and inks are all `stat`\n * theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-stat',\n providers: [{ provide: COMPONENT_NAME, useValue: 'stat' }],\n host: { '[class]': 'className()' },\n template: `\n <span class=\"uni-stat-label\">{{ label() }}</span>\n <span class=\"uni-stat-value\">{{ displayValue() }}</span>\n @if (delta()) {\n <span class=\"uni-stat-meta\">\n <span class=\"uni-stat-delta\" [class.good]=\"deltaIsGood()\">\n <span aria-hidden=\"true\">{{ deltaIsUp() ? '▴' : '▾' }}</span>\n <span [class]=\"srOnly\">{{ deltaIsUp() ? 'up' : 'down' }}</span>\n {{ deltaMagnitude() }}\n </span>\n @if (caption()) {\n <span class=\"uni-stat-caption\">{{ caption() }}</span>\n }\n </span>\n }\n @if (sparkline(); as spark) {\n <svg\n class=\"uni-stat-trend\"\n aria-hidden=\"true\"\n [attr.width]=\"spark.width\"\n [attr.height]=\"spark.height\"\n [attr.viewBox]=\"'0 0 ' + spark.width + ' ' + spark.height\"\n >\n <path\n [attr.d]=\"spark.path\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle [attr.cx]=\"spark.endX\" [attr.cy]=\"spark.endY\" r=\"3.5\" />\n </svg>\n }\n `,\n})\nexport class UniStatComponent extends BaseComponent<UniStatOptions> {\n /** What is being measured, sentence case. */\n label = input.required<string>();\n /** The headline number: strings render verbatim, numbers auto-compact. */\n value = input.required<string | number>();\n /** Signed change, e.g. \"+12.4%\" or \"-0.4%\". The sign drives the arrow. */\n delta = input<string>();\n /** Whether an upward movement is good news. Flip for churn, errors, cost. */\n upIsGood = input(true);\n /** Names the comparison period, e.g. \"vs last month\". */\n caption = input<string>();\n /** Recent values for the decorative sparkline (12 points reads best). */\n trend = input<number[] | undefined>(undefined);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly displayValue = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value;\n return new Intl.NumberFormat(undefined, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value);\n });\n\n protected readonly deltaIsUp = computed(() => !this.delta()?.trim().startsWith('-'));\n protected readonly deltaIsGood = computed(() => this.deltaIsUp() === this.upIsGood());\n protected readonly deltaMagnitude = computed(() => this.delta()?.trim().replace(/^[-+]/, '') ?? '');\n\n protected readonly sparkline = computed(() => {\n const points = this.trend();\n if (!points || points.length < 2) return undefined;\n const min = Math.min(...points);\n const range = Math.max(...points) - min || 1;\n const step = SPARK_WIDTH / (points.length - 1);\n const xy = points.map((p, i): [number, number] => [\n i * step,\n SPARK_HEIGHT - 3 - ((p - min) / range) * (SPARK_HEIGHT - 6),\n ]);\n const [endX, endY] = xy[xy.length - 1];\n return {\n width: SPARK_WIDTH,\n height: SPARK_HEIGHT,\n path: xy.map(([x, y], i) => `${i ? 'L' : 'M'}${x.toFixed(1)},${y.toFixed(1)}`).join(' '),\n endX: endX.toFixed(1),\n endY: endY.toFixed(1),\n };\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box',\n ...this.theme.gap(options.gap),\n ...this.theme.colorPair(options.color),\n ...this.theme.border(options.border),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.padding(options.padding),\n '& .uni-stat-label': {\n ...this.theme.typeface(options.labelTypeface),\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-value': {\n ...this.theme.typeface(options.valueTypeface),\n ...this.theme.color('on-background'),\n },\n '& .uni-stat-meta': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n columnGap: 8,\n },\n '& .uni-stat-delta': {\n fontSize: 13,\n fontWeight: 600,\n ...this.theme.color(options.negativeColor),\n '&.good': this.theme.color(options.positiveColor),\n },\n '& .uni-stat-caption': {\n fontSize: 11.5,\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-trend': {\n position: 'absolute',\n right: 16,\n bottom: 14,\n '& path': { stroke: this.theme.colors()[options.trendColor ?? 'outline'] },\n '& circle': { fill: this.theme.colors()[options.trendAccent ?? 'primary'] },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, input, viewChild, TemplateRef } from '@angular/core';\nimport { uniqueId } from '../../cdk';\n\n/**\n * One tab inside `uni-tabs`: a label for the tablist plus projected panel\n * content. Content is captured in a template and only instantiated while the\n * tab is selected, so inactive panels cost nothing.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tab',\n template: `<ng-template #content><ng-content /></ng-template>`,\n})\nexport class UniTabComponent {\n label = input.required<string>();\n disabled = input(false);\n\n /** Stable ids wiring tab ↔ panel ARIA relationships. */\n readonly id = uniqueId('uni-tab');\n readonly panelId = `${this.id}-panel`;\n\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n model,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport { UniTabComponent } from './tab.component';\nimport type { UniTabsOptions } from './tabs.model';\n\n/**\n * WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus\n * and select), Home/End, disabled tabs skipped. Only the selected panel is\n * instantiated. All styling resolves from `tabs` theme option tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tabs',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'tabs' }],\n template: `\n <!-- Roving-tabindex composite: focus lives on the tab buttons; keydown\n bubbles to the tablist, which itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"tablist\" [class]=\"tablistClass()\" (keydown)=\"onKeydown($event)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"tabClass()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n [class.active]=\"i === activeIndex()\"\n (click)=\"select(i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n @if (activeTab(); as tab) {\n <div\n role=\"tabpanel\"\n [id]=\"tab.panelId\"\n [attr.aria-labelledby]=\"tab.id\"\n tabindex=\"0\"\n [class]=\"panelClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n </div>\n }\n `,\n})\nexport class UniTabsComponent extends BaseComponent<UniTabsOptions> {\n /** Index of the selected tab; two-way bindable. */\n readonly selectedIndex = model(0);\n\n protected readonly tabs = contentChildren(UniTabComponent);\n private readonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n /** The selection, snapped to the nearest enabled tab. */\n protected readonly activeIndex = computed(() => {\n const tabs = this.tabs();\n const wanted = this.selectedIndex();\n if (tabs[wanted] && !tabs[wanted].disabled()) return wanted;\n const firstEnabled = tabs.findIndex((tab) => !tab.disabled());\n return firstEnabled === -1 ? 0 : firstEnabled;\n });\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (this.tabs()[index]?.disabled()) return;\n this.selectedIndex.set(index);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const enabled = this.tabs()\n .map((tab, index) => ({ tab, index }))\n .filter(({ tab }) => !tab.disabled())\n .map(({ index }) => index);\n if (enabled.length === 0) return;\n\n const position = enabled.indexOf(this.activeIndex());\n let next: number | undefined;\n switch (event.key) {\n case 'ArrowRight':\n next = enabled[(position + 1) % enabled.length];\n break;\n case 'ArrowLeft':\n next = enabled[(position - 1 + enabled.length) % enabled.length];\n break;\n case 'Home':\n next = enabled[0];\n break;\n case 'End':\n next = enabled[enabled.length - 1];\n break;\n default:\n return;\n }\n event.preventDefault();\n this.select(next);\n this.tabButtons()[next]?.nativeElement.focus();\n }\n\n protected readonly tablistClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'stretch',\n ...this.theme.gap(options.gap),\n ...this.theme.borderBottom(options.divider),\n });\n });\n\n protected readonly tabClass = computed(() => {\n const options = this.componentOptions();\n const thickness = options.indicatorThickness\n ? this.theme.getThickness(options.indicatorThickness)\n : 2;\n return css({\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n // The indicator overlays the divider: reserve its thickness on every\n // tab so labels don't shift when selection moves.\n borderBottom: `${thickness}px solid transparent`,\n marginBottom: -1,\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.paddingTop('sm'),\n ...this.theme.paddingBottom('sm'),\n ...this.theme.radius(options.borderRadius),\n ...motionSafe({ transition: 'color 0.15s ease, border-color 0.15s ease' }),\n '&.active': {\n ...this.theme.color(options.activeTextColor),\n ...this.theme.backgroundColor(options.activeColor),\n borderBottomColor: this.theme.colors()[options.indicatorColor ?? 'primary'],\n },\n '&:disabled': {\n ...this.theme.color('on-disabled'),\n cursor: 'not-allowed',\n },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[options.indicatorColor ?? 'primary']}`,\n outlineOffset: -2,\n },\n });\n });\n\n protected readonly panelClass = computed(() =>\n css({\n ...this.theme.paddingTop('md'),\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.componentOptions().indicatorColor ?? 'primary']}`,\n outlineOffset: 2,\n },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTextareaOptions } from './textarea.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-textarea',\n imports: [UniInputBoxComponent],\n templateUrl: './textarea.component.html',\n})\nexport class UniTextareaComponent implements FormValueControl<string> {\n private theme = inject(ThemeService);\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n /** Visible text rows. Defaults to the theme's `textarea` options. */\n rows = input<number | undefined>(undefined);\n\n private options = this.theme.getComponentOptions<UniTextareaOptions>('textarea');\n\n protected readonly resolvedRows = computed(() => this.rows() ?? this.options().rows ?? 3);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textareaClass = computed(() =>\n css({\n width: '100%',\n resize: this.options().resize ?? 'vertical',\n })\n );\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLTextAreaElement).value);\n }\n}\n","<uni-input-box [error]=\"showError()\" height=\"auto\">\n <textarea\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [rows]=\"resolvedRows()\"\n [class]=\"textareaClass()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n ></textarea>\n</uni-input-box>\n","/**\n * UniSortHeaderComponent Barrel File\n *\n * This file exports all public-facing elements of the sort-header component.\n */\n\nexport { UniSortHeaderComponent } from './sort-header.component';\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniBoxComponent, UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './tag.component.html',\n})\nexport class UniTagComponent {\n label = input<string>();\n value = input<string | number>();\n\n // TODO(v4): rename to closed — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n close = output<string | number>();\n\n handleClose() {\n const v = this.value();\n if (v) this.close.emit(v);\n }\n}\n","<div box-layout color=\"primary\" borderRadius=\"max\" display=\"inline-block\">\n <div row-layout paddingLeft=\"sm\" gap=\"xs\">\n <span uni-text display=\"block\" typeface=\"tag\">{{ label() }}</span>\n <button icon-button symbolName=\"close\" size=\"sm\" (click)=\"handleClose()\">\n Remove {{ label() }}\n </button>\n </div>\n</div>\n","/**\n * UniTagComponent Barrel File\n *\n * This file exports all public-facing elements of the tag component.\n */\n\nexport { UniTagComponent } from './tag.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n emitDtcgTokens,\n emitThemeFile,\n generatePalette,\n ShapeRadii,\n type ColorCategory,\n type ColorScheme,\n type Colors,\n type ColorToken,\n type ContrastCheck,\n type GenerationInput,\n type ThemeShape,\n type Variant,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService, type BrandPaletteConfig } from '../../theming';\nimport { UniButtonComponent } from '../button';\n\nconst SCHEMES: ColorScheme[] = [\n 'monochromatic',\n 'analogous',\n 'complimentary',\n 'splitComplimentary',\n 'triadic',\n];\nconst CATEGORIES: ColorCategory[] = ['jewel', 'pastel', 'earth', 'neutral', 'florescent', 'shades'];\nconst SHAPES: ThemeShape[] = ['sharp', 'modern', 'playful'];\nconst VARIANTS: Variant[] = ['primary', 'secondary', 'tertiary', 'warn', 'ghost'];\n\n// Representative tokens shown as swatches in each mode panel.\nconst SWATCHES: { label: string; token: ColorToken; on: ColorToken }[] = [\n { label: 'primary', token: 'primary', on: 'on-primary' },\n { label: 'secondary', token: 'secondary', on: 'on-secondary' },\n { label: 'tertiary', token: 'tertiary', on: 'on-tertiary' },\n { label: 'container', token: 'primary-container', on: 'on-primary-container' },\n { label: 'error', token: 'error', on: 'on-error' },\n { label: 'warn', token: 'warn', on: 'on-warn' },\n { label: 'success', token: 'success', on: 'on-success' },\n { label: 'surface', token: 'surface', on: 'on-surface' },\n];\n\ninterface Preset {\n label: string;\n config: BrandPaletteConfig;\n}\n\n// Curated presets for the OKLCH engine. Brand colors ride as soft `targets`:\n// emitted exactly where they already meet WCAG AA, lightness-adjusted (never\n// hue) where they don't — so every preset is AA-clean in both modes.\nconst PRESETS: Preset[] = [\n {\n label: 'Indigo',\n config: { seed: '#4F46E5', scheme: 'analogous', category: 'jewel', targets: { primary: '#4F46E5' } },\n },\n {\n label: 'Ocean',\n config: { seed: '#0066B2', scheme: 'complimentary', category: 'jewel', targets: { primary: '#0066B2' } },\n },\n {\n label: 'Emerald',\n config: { seed: '#047857', scheme: 'analogous', category: 'jewel', targets: { primary: '#047857' } },\n },\n {\n label: 'Sunset',\n config: { seed: '#DC2626', scheme: 'splitComplimentary', category: 'jewel', targets: { primary: '#DC2626' } },\n },\n {\n label: 'Berry',\n config: { seed: '#C2185B', scheme: 'triadic', category: 'jewel', targets: { primary: '#C2185B' } },\n },\n {\n label: 'Heritage',\n config: {\n seed: '#2C3E35',\n scheme: 'complimentary',\n category: 'earth',\n targets: { primary: '#2C3E35', secondary: '#D4A373' },\n },\n },\n {\n label: 'Sage & Clay',\n config: {\n seed: '#6B8F71',\n scheme: 'analogous',\n category: 'earth',\n targets: { primary: '#6B8F71', secondary: '#B3593C' },\n },\n },\n {\n label: 'Pastel',\n config: { seed: '#A78BFA', scheme: 'analogous', category: 'pastel', targets: { primary: '#A78BFA' } },\n },\n {\n label: 'Graphite',\n config: {\n seed: '#475569',\n scheme: 'monochromatic',\n category: 'neutral',\n accentSaturationFloor: 10,\n targets: { primary: '#475569' },\n },\n },\n];\n\n@Component({\n selector: 'uni-theme-builder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UniButtonComponent],\n host: { '[class]': 'shell()' },\n template: `\n <aside [class]=\"controls()\">\n <header class=\"tb-head\">\n <span class=\"tb-eyebrow\">Theme builder · Playground</span>\n <h2 class=\"tb-title\">Make Uni your brand</h2>\n <p class=\"tb-lede\">\n Every token is derived in OKLCH from a seed color, a scheme and a category — or bring\n exact brand colors. Presets are WCAG AA in light and dark. Changes apply to\n <b>every</b> component in this Storybook, live.\n </p>\n </header>\n\n <div class=\"tb-presets\">\n @for (p of presets; track p.label) {\n <button type=\"button\" class=\"tb-preset\" (click)=\"applyPreset(p.config)\">\n <span\n class=\"tb-dot\"\n [style.background]=\"p.config.targets?.primary ?? p.config.brand?.primary ?? p.config.seed\"\n ></span>\n {{ p.label }}\n </button>\n }\n </div>\n\n <label class=\"tb-field\">\n <span>Seed color</span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" />\n <input type=\"text\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field\">\n <span>Scheme</span>\n <select (change)=\"setScheme($any($event.target).value)\">\n @for (s of schemes; track s) {\n <option [value]=\"s\" [selected]=\"s === scheme()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Category</span>\n <select (change)=\"setCategory($any($event.target).value)\">\n @for (c of categories; track c) {\n <option [value]=\"c\" [selected]=\"c === category()\">{{ c }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Shape</span>\n <select (change)=\"setShape($any($event.target).value)\">\n @for (s of shapes; track s) {\n <option [value]=\"s\" [selected]=\"s === shape()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Accent saturation floor · {{ floor() }}</span>\n <input type=\"range\" min=\"0\" max=\"45\" [value]=\"floor()\" (input)=\"setFloor($any($event.target).value)\" />\n </label>\n\n <div class=\"tb-field\">\n <span>Storybook mode</span>\n <div class=\"tb-toggle\">\n <button type=\"button\" [class.on]=\"mode() === 'light'\" (click)=\"setMode('light')\">Light</button>\n <button type=\"button\" [class.on]=\"mode() === 'dark'\" (click)=\"setMode('dark')\">Dark</button>\n </div>\n </div>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinPrimary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinPrimary()\" (change)=\"setPinPrimary($any($event.target).checked)\" />\n Pin primary <em>{{ pinPrimary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinSecondary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinSecondary()\" (change)=\"setPinSecondary($any($event.target).checked)\" />\n Pin secondary <em>{{ pinSecondary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <div class=\"tb-field\">\n <span>Export</span>\n <div class=\"tb-exports\">\n <button type=\"button\" (click)=\"copyThemeFile()\">\n {{ copied() === 'file' ? 'Copied ✓' : 'Copy uni-theme.ts' }}\n </button>\n <button type=\"button\" (click)=\"copyNgAdd()\">\n {{ copied() === 'ngadd' ? 'Copied ✓' : 'Copy ng add command' }}\n </button>\n <button type=\"button\" (click)=\"copyDtcg()\">\n {{ copied() === 'dtcg' ? 'Copied ✓' : 'Copy DTCG JSON' }}\n </button>\n </div>\n </div>\n\n <div class=\"tb-actions\">\n <button type=\"button\" class=\"tb-reset\" (click)=\"reset()\">Reset to default</button>\n </div>\n <code class=\"tb-snippet\">{{ snippet() }}</code>\n </aside>\n\n <section [class]=\"preview()\">\n <p class=\"tb-group\">Light & dark — generated together, side by side</p>\n <div class=\"tb-modes\">\n @for (m of modePanels(); track m.label) {\n <div class=\"tb-panel\" [style.background]=\"m.colors['background']\" [style.borderColor]=\"m.colors['outline']\">\n <span class=\"tb-panel-tag\" [style.color]=\"m.colors['on-background-variant']\">{{ m.label }}</span>\n <div class=\"tb-mode-swatches\">\n @for (s of swatches; track s.label) {\n <div class=\"tb-swatch\" [style.background]=\"m.colors[s.token]\" [style.color]=\"m.colors[s.on]\">\n <span>{{ s.label }}</span>\n <code>{{ m.colors[s.token] }}</code>\n </div>\n }\n </div>\n <div class=\"tb-mini-card\" [style.background]=\"m.colors['surface']\" [style.borderColor]=\"m.colors['outline']\">\n <div class=\"tb-mini-head\" [style.background]=\"m.colors['primary']\" [style.color]=\"m.colors['on-primary']\">\n Card header\n </div>\n <div class=\"tb-mini-body\" [style.color]=\"m.colors['on-surface']\">\n Semantic inks stay legible:\n <b [style.color]=\"m.colors['error']\">error</b> ·\n <b [style.color]=\"m.colors['warn']\">warn</b> ·\n <b [style.color]=\"m.colors['success']\">success</b>.\n </div>\n </div>\n </div>\n }\n </div>\n\n <p class=\"tb-group\">Real components — your brand, live ({{ mode() }})</p>\n <div class=\"tb-buttons\">\n @for (v of variants; track v) {\n <button text-button [variant]=\"v\" size=\"lg\">{{ v }}</button>\n }\n </div>\n <div class=\"tb-buttons\">\n @for (sz of sizes; track sz) {\n <button text-button variant=\"primary\" [size]=\"sz\">{{ sz }}</button>\n }\n </div>\n\n <p class=\"tb-group\">\n Contrast report — {{ report().checks.length }} pairs ·\n worst {{ report().worst }}:1 ·\n @if (report().failing.length === 0) {\n <span class=\"tb-pass\">all AA</span>\n } @else {\n <span class=\"tb-fail\">{{ report().failing.length }} failing</span>\n }\n <button type=\"button\" class=\"tb-link\" (click)=\"showAllPairs.set(!showAllPairs())\">\n {{ showAllPairs() ? 'hide detail' : 'show all pairs' }}\n </button>\n </p>\n @if (report().failing.length > 0 || showAllPairs()) {\n <div class=\"tb-matrix\">\n <table>\n <thead>\n <tr><th>mode</th><th>foreground</th><th>on</th><th>ratio</th><th>needs</th><th>level</th></tr>\n </thead>\n <tbody>\n @for (c of visibleChecks(); track $index) {\n <tr [class.bad]=\"!c.pass\">\n <td>{{ c.mode }}</td>\n <td><code>{{ c.foreground }}</code></td>\n <td><code>{{ c.background }}</code></td>\n <td>{{ c.ratio }}</td>\n <td>{{ c.required }}</td>\n <td>{{ c.level }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (report().failing.length > 0) {\n <p class=\"tb-hint\">\n Failing pairs come from hard-pinned brand colors (pins are emitted verbatim). Un-pin, or\n use a preset — soft targets keep brand hue while the guard-rail restores AA.\n </p>\n }\n\n <p class=\"tb-hint\">Tip: browse to any component story in the sidebar — it's wearing your brand now.</p>\n </section>\n `,\n})\nexport class UniThemeBuilderComponent {\n protected theme = inject(ThemeService);\n\n protected readonly schemes = SCHEMES;\n protected readonly categories = CATEGORIES;\n protected readonly shapes = SHAPES;\n protected readonly variants = VARIANTS;\n protected readonly sizes = ['sm', 'md', 'lg', 'xl'] as const;\n protected readonly swatches = SWATCHES;\n protected readonly presets = PRESETS;\n\n protected seed = signal('#4F46E5');\n protected scheme = signal<ColorScheme>('triadic');\n protected category = signal<ColorCategory>('neutral');\n protected shape = signal<ThemeShape>('modern');\n protected floor = signal(18);\n protected mode = signal<'light' | 'dark'>('light');\n protected pinPrimary = signal(false);\n protected primaryHex = signal('#2C3E35');\n protected pinSecondary = signal(false);\n protected secondaryHex = signal('#D4A373');\n /** Soft brand targets carried by the active preset (cleared on seed edits). */\n protected targets = signal<BrandPaletteConfig['targets']>(undefined);\n\n protected copied = signal<'file' | 'ngadd' | 'dtcg' | null>(null);\n protected showAllPairs = signal(false);\n\n constructor() {\n // Seed the controls from an already-active custom palette, if any.\n const existing = this.theme.customPalette();\n if (existing) {\n this.seed.set(existing.seed);\n this.scheme.set(existing.scheme);\n this.category.set(existing.category);\n this.floor.set(existing.accentSaturationFloor ?? 18);\n this.mode.set(existing.mode ?? 'light');\n if (existing.brand?.primary) {\n this.pinPrimary.set(true);\n this.primaryHex.set(existing.brand.primary);\n }\n if (existing.brand?.secondary) {\n this.pinSecondary.set(true);\n this.secondaryHex.set(existing.brand.secondary);\n }\n this.targets.set(existing.targets);\n }\n }\n\n protected config = computed<BrandPaletteConfig>(() => ({\n seed: this.seed(),\n scheme: this.scheme(),\n category: this.category(),\n mode: this.mode(),\n accentSaturationFloor: this.floor(),\n radii: ShapeRadii[this.shape()],\n ...(this.targets() ? { targets: this.targets() } : {}),\n brand: {\n ...(this.pinPrimary() ? { primary: this.primaryHex() } : {}),\n ...(this.pinSecondary() ? { secondary: this.secondaryHex() } : {}),\n },\n }));\n\n /**\n * Both modes generated on every input change (< 15 ms each), independent of\n * the storybook-wide theme — the side-by-side preview and the contrast\n * report always show the full light+dark picture.\n */\n protected palettes = computed(() => {\n const base = { ...this.config() };\n const checks: ContrastCheck[] = [];\n const light = generatePalette({ ...base, mode: 'light', checks });\n const dark = generatePalette({ ...base, mode: 'dark', checks });\n return { light, dark, checks };\n });\n\n protected modePanels = computed((): { label: 'light' | 'dark'; colors: Colors }[] => [\n { label: 'light', colors: this.palettes().light },\n { label: 'dark', colors: this.palettes().dark },\n ]);\n\n protected report = computed(() => {\n const { checks } = this.palettes();\n return {\n checks,\n failing: checks.filter((c) => !c.pass),\n worst: checks.reduce((worst, c) => Math.min(worst, c.ratio), 21),\n };\n });\n\n protected visibleChecks = computed(() =>\n this.showAllPairs() ? this.report().checks : this.report().failing\n );\n\n protected snippet = computed(() => {\n const { radii: _radii, ...rest } = this.config();\n return JSON.stringify(rest);\n });\n\n /** The builder state expressed as engine input — drives all three exports. */\n protected generationInput = computed<GenerationInput>(() => {\n const targets = this.targets();\n const seeds = [this.pinPrimary() ? this.primaryHex() : (targets?.primary ?? this.seed())];\n const secondary = this.pinSecondary() ? this.secondaryHex() : targets?.secondary;\n if (secondary) seeds.push(secondary);\n if (targets?.tertiary) seeds.push(targets.tertiary);\n return {\n seed: seeds.length === 1 ? seeds[0] : seeds,\n scheme: this.scheme(),\n vibe: this.category(),\n shape: this.shape(),\n name: 'Brand',\n };\n });\n\n protected color(token: ColorToken): string {\n return this.theme.colors()[token] ?? 'transparent';\n }\n\n private apply(): void {\n this.theme.applyPalette(this.config());\n }\n\n private copyToClipboard(kind: 'file' | 'ngadd' | 'dtcg', text: string): void {\n void navigator.clipboard?.writeText(text).then(() => {\n this.copied.set(kind);\n setTimeout(() => this.copied.set(null), 1600);\n });\n }\n\n protected copyThemeFile(): void {\n this.copyToClipboard('file', emitThemeFile(this.generationInput()).content);\n }\n\n protected copyNgAdd(): void {\n const input = this.generationInput();\n const seeds = Array.isArray(input.seed) ? input.seed.join(',') : input.seed;\n this.copyToClipboard(\n 'ngadd',\n `ng add @uni-design-system/uni-angular --brand=${seeds} --shape=${input.shape}`\n );\n }\n\n protected copyDtcg(): void {\n const { light, dark } = this.palettes();\n const radii = ShapeRadii[this.shape()];\n const spacing = this.theme.spacing();\n this.copyToClipboard(\n 'dtcg',\n JSON.stringify(\n {\n light: emitDtcgTokens({ colors: light, radii, spacing }),\n dark: emitDtcgTokens({ colors: dark, radii, spacing }),\n },\n null,\n 2\n )\n );\n }\n\n protected setSeed(v: string) {\n if (/^#?[0-9a-fA-F]{6}$/.test(v.replace('#', ''))) {\n this.seed.set(v.startsWith('#') ? v : `#${v}`);\n // A hand-edited seed takes over from any preset's soft brand targets.\n this.targets.set(undefined);\n this.apply();\n }\n }\n protected setScheme(v: ColorScheme) {\n this.scheme.set(v);\n this.apply();\n }\n protected setCategory(v: ColorCategory) {\n this.category.set(v);\n this.apply();\n }\n protected setShape(v: ThemeShape) {\n this.shape.set(v);\n this.apply();\n }\n protected setFloor(v: string) {\n this.floor.set(Number(v));\n this.apply();\n }\n protected setMode(v: 'light' | 'dark') {\n this.mode.set(v);\n this.apply();\n }\n protected setPinPrimary(v: boolean) {\n this.pinPrimary.set(v);\n this.apply();\n }\n protected setPrimaryHex(v: string) {\n this.primaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinPrimary()) this.apply();\n }\n protected setPinSecondary(v: boolean) {\n this.pinSecondary.set(v);\n this.apply();\n }\n protected setSecondaryHex(v: string) {\n this.secondaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinSecondary()) this.apply();\n }\n\n protected applyPreset(config: BrandPaletteConfig) {\n this.seed.set(config.seed);\n this.scheme.set(config.scheme);\n this.category.set(config.category);\n this.floor.set(config.accentSaturationFloor ?? 18);\n this.targets.set(config.targets);\n this.pinPrimary.set(!!config.brand?.primary);\n if (config.brand?.primary) this.primaryHex.set(config.brand.primary);\n this.pinSecondary.set(!!config.brand?.secondary);\n if (config.brand?.secondary) this.secondaryHex.set(config.brand.secondary);\n this.apply();\n }\n\n protected reset() {\n this.theme.clearCustomPalette();\n this.seed.set('#4F46E5');\n this.scheme.set('triadic');\n this.category.set('neutral');\n this.shape.set('modern');\n this.floor.set(18);\n this.mode.set('light');\n this.targets.set(undefined);\n this.pinPrimary.set(false);\n this.pinSecondary.set(false);\n }\n\n // ── Styling (reads live theme tokens so the builder wears the brand too) ──\n private c = (token: ColorToken) => this.theme.colors()[token] ?? 'transparent';\n\n protected shell = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'minmax(280px, 340px) 1fr',\n gap: 24,\n alignItems: 'start',\n padding: 24,\n background: this.c('background'),\n color: this.c('on-background'),\n minHeight: '100vh',\n fontFamily: 'Red Hat Display, system-ui, sans-serif',\n '@media (max-width: 820px)': { gridTemplateColumns: '1fr' },\n '& .tb-eyebrow': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.6,\n },\n '& .tb-title': { fontSize: 26, margin: '6px 0 8px', letterSpacing: '-0.02em' },\n '& .tb-lede': { fontSize: 14, lineHeight: 1.5, opacity: 0.8, margin: 0 },\n '& .tb-group': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.55,\n margin: '4px 0 12px',\n },\n })\n );\n\n protected controls = computed(() =>\n css({\n position: 'sticky',\n top: 16,\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n padding: 20,\n borderRadius: 14,\n background: this.c('surface'),\n border: `1px solid ${this.c('outline')}`,\n '& .tb-head': { display: 'flex', flexDirection: 'column' },\n '& .tb-presets': { display: 'flex', flexWrap: 'wrap', gap: 8 },\n '& .tb-preset': {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n cursor: 'pointer',\n borderRadius: 999,\n padding: '5px 11px 5px 6px',\n fontSize: 12.5,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('surface'),\n color: this.c('on-surface'),\n },\n '& .tb-dot': { width: 13, height: 13, borderRadius: '50%' },\n '& .tb-field': { display: 'flex', flexDirection: 'column', gap: 6, fontSize: 13 },\n '& .tb-field > span': { fontSize: 12, opacity: 0.7 },\n '& .tb-row': { display: 'flex', gap: 8, alignItems: 'center' },\n '& input[type=color]': {\n width: 40,\n height: 34,\n padding: 0,\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 8,\n background: 'none',\n cursor: 'pointer',\n },\n '& input[type=text], & select': {\n width: '100%',\n height: 34,\n padding: '0 10px',\n borderRadius: 8,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& input[type=range]': { width: '100%', accentColor: this.c('primary') },\n '& .tb-toggle': { display: 'flex', gap: 6 },\n '& .tb-toggle button': {\n flex: 1,\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n },\n '& .tb-toggle button.on': {\n background: this.c('primary'),\n color: this.c('on-primary'),\n borderColor: this.c('primary'),\n },\n '& .tb-exports': { display: 'flex', flexDirection: 'column', gap: 6 },\n '& .tb-exports button': {\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 12.5,\n border: `1px solid ${this.c('primary')}`,\n background: this.c('primary-surface'),\n color: this.c('on-primary-surface'),\n },\n '& .tb-pin.dim input[type=color], & .tb-pin.dim input[type=text]': { opacity: 0.45 },\n '& .tb-pin em': {\n fontStyle: 'normal',\n fontSize: 10,\n padding: '1px 6px',\n borderRadius: 5,\n marginLeft: 4,\n background: this.c('primary-container'),\n color: this.c('on-primary-container'),\n },\n '& .tb-reset': {\n cursor: 'pointer',\n borderRadius: 8,\n padding: '8px 14px',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& .tb-snippet': {\n display: 'block',\n fontFamily: 'monospace',\n fontSize: 10.5,\n lineHeight: 1.5,\n wordBreak: 'break-all',\n opacity: 0.6,\n },\n })\n );\n\n protected preview = computed(() =>\n css({\n display: 'flex',\n flexDirection: 'column',\n gap: 10,\n '& .tb-modes': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: 14,\n marginBottom: 20,\n },\n '& .tb-panel': {\n border: '1px solid',\n borderRadius: 14,\n padding: 14,\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n '& .tb-panel-tag': {\n fontSize: 10.5,\n letterSpacing: '0.12em',\n textTransform: 'uppercase',\n },\n '& .tb-mode-swatches': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(110px, 1fr))',\n gap: 8,\n },\n '& .tb-swatch': {\n borderRadius: 10,\n padding: '12px 12px',\n minHeight: 60,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n '& .tb-swatch span': { fontSize: 12.5, fontWeight: 600 },\n '& .tb-swatch code': { fontFamily: 'monospace', fontSize: 10.5, opacity: 0.85 },\n '& .tb-mini-card': { borderRadius: 10, overflow: 'hidden', border: '1px solid' },\n '& .tb-mini-head': { padding: '8px 14px', fontWeight: 600, fontSize: 13 },\n '& .tb-mini-body': { padding: '10px 14px', fontSize: 12.5, lineHeight: 1.5 },\n '& .tb-buttons': { display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center', marginBottom: 14 },\n '& .tb-pass': { color: this.c('success'), fontWeight: 700 },\n '& .tb-fail': { color: this.c('error'), fontWeight: 700 },\n '& .tb-link': {\n marginLeft: 10,\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n color: this.c('primary'),\n fontSize: 11,\n textTransform: 'none',\n letterSpacing: 'normal',\n textDecoration: 'underline',\n },\n '& .tb-matrix': {\n maxHeight: 320,\n overflow: 'auto',\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 10,\n marginBottom: 12,\n '& table': { width: '100%', borderCollapse: 'collapse', fontSize: 12 },\n '& th': {\n position: 'sticky',\n top: 0,\n textAlign: 'left',\n padding: '8px 10px',\n background: this.c('surface-variant'),\n color: this.c('on-surface-variant'),\n fontSize: 10.5,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n },\n '& td': { padding: '6px 10px', borderTop: `1px solid ${this.c('outline')}` },\n '& td code': { fontFamily: 'monospace', fontSize: 11.5 },\n '& tr.bad td': { background: this.c('error-container'), color: this.c('on-error-container') },\n },\n '& .tb-hint': { fontSize: 12.5, opacity: 0.6, marginTop: 8 },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport type { ThemeName } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport { UniSelectComponent } from '../select-input';\n\n/**\n * Drop-in switcher for the themes registered via `UNI_THEMES`: a select over\n * `ThemeService.themeOptions` that applies the choice through `selectTheme`\n * (so it persists across reloads like any other theme selection).\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-theme-switch',\n imports: [UniSelectComponent],\n template: `\n <uni-select\n [options]=\"theme.themeOptions()\"\n [value]=\"selected()\"\n (valueChange)=\"select($event)\"\n [ariaLabel]=\"ariaLabel()\"\n />\n `,\n})\nexport class UniThemeSwitchComponent {\n protected theme = inject(ThemeService);\n\n /** Accessible name for the underlying select. */\n ariaLabel = input('Theme');\n\n /** Emits the selected theme key after it has been applied. */\n themeChanged = output<ThemeName>();\n\n protected selected = computed<ThemeName | null>(() => this.theme.selectedThemeKey() || null);\n\n protected select(themeName: ThemeName | null): void {\n if (!themeName) return;\n this.theme.selectTheme(themeName);\n this.themeChanged.emit(themeName);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniToggleOptions } from './toggle.model';\n\n@Component({\n selector: 'uni-toggle',\n imports: [UniTextComponent],\n templateUrl: './toggle.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'toggle' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniToggleComponent\n extends BaseComponent<UniToggleOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n private readonly metrics = computed(() => {\n const toggleSize = (this.componentOptions().size as number) || 20;\n const sliderSize = toggleSize * 0.8;\n return {\n toggleSize,\n toggleWidth: toggleSize * 2,\n sliderSize,\n sliderOffset: (toggleSize - sliderSize) / 2,\n };\n });\n\n protected readonly toggleLabel = computed(() => {\n const { toggleSize, toggleWidth, sliderSize, sliderOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .toggle-switch': {\n width: toggleWidth,\n height: toggleSize,\n backgroundColor: this.disabled()\n ? this.getThemeColor('disabled')\n : this.getThemeColor(this.componentOptions().trackColor ?? 'surface-variant'),\n borderRadius: toggleSize / 2,\n position: 'relative',\n transition: 'all 0.3s ease',\n },\n\n '& .toggle-slider': {\n width: sliderSize,\n height: sliderSize,\n backgroundColor: this.getThemeColor(this.componentOptions().knobColor ?? 'surface'),\n borderRadius: '50%',\n position: 'absolute',\n top: sliderOffset,\n left: sliderOffset,\n transition: 'all 0.3s ease',\n ...this.theme.boxShadow('raised'),\n },\n\n // Hover darkens whatever the token resolves to — the button convention.\n '&:hover .toggle-switch': this.disabled()\n ? {}\n : {\n filter: 'brightness(0.95)',\n },\n });\n });\n\n protected readonly toggleInput = computed(() => {\n const { toggleSize } = this.metrics();\n return css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .toggle-switch': {\n backgroundColor: this.getThemeColor(this.variant()),\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .toggle-switch .toggle-slider': {\n transform: `translateX(${toggleSize}px)`,\n },\n\n '&:disabled + .toggle-switch': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .toggle-switch': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n });\n });\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<label [class]=\"toggleLabel()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [class]=\"toggleInput()\"\n [checked]=\"checked()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"toggle-switch\">\n <div class=\"toggle-slider\"></div>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RippleDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/listbox/listbox-navigation.ts","../../src/lib/cdk/position/anchor.ts","../../src/lib/cdk/datasource/base-datasource.ts","../../src/lib/cdk/datasource/record-datasource.ts","../../src/lib/cdk/datasource/server-side-datasource.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/local-storage/local-storage.service.ts","../../src/lib/cdk/notification/notification.service.ts","../../src/lib/cdk/timer/timer.ts","../../src/lib/cdk/file/file.helper.ts","../../src/lib/theming/theme.token.ts","../../src/lib/cdk/helpers/number.helper.ts","../../src/lib/theming/theme.service.ts","../../src/lib/components/base/base.component.ts","../../src/lib/components/app-bar/app-bar.component.ts","../../src/lib/components/symbol/symbol.component.ts","../../src/lib/components/avatar/avatar.component.ts","../../src/lib/components/avatar/avatar-group.component.ts","../../src/lib/components/background/background.component.ts","../../src/lib/components/background/index.ts","../../src/lib/components/badge/badge.component.ts","../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../src/lib/components/icon/icon.component.ts","../../src/lib/components/layout/box/box.component.ts","../../src/lib/components/layout/center/center.component.ts","../../src/lib/components/layout/grid/grid-area/grid-area.component.ts","../../src/lib/components/layout/grid/grid.component.ts","../../src/lib/components/layout/row/row.component.ts","../../src/lib/components/layout/stack/stack.component.ts","../../src/lib/components/layout/wrap/wrap.component.ts","../../src/lib/directives/ripple/ripple.directive.ts","../../src/lib/components/button/button.component.ts","../../src/lib/components/button-group/button-group.component.ts","../../src/lib/components/button-group/index.ts","../../src/lib/components/card/card-content/card-content.component.ts","../../src/lib/components/card/card-content/card-content.component.html","../../src/lib/components/text/text.component.ts","../../src/lib/components/card/card.component.ts","../../src/lib/components/card/card.component.html","../../src/lib/components/card/card-header/card-header.component.ts","../../src/lib/components/card/card-header/card-header.component.html","../../src/lib/components/checkbox/checkbox.component.ts","../../src/lib/components/checkbox/checkbox.component.html","../../src/lib/directives/body-render/body-render.directive.ts","../../src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../src/lib/components/icon-button/icon-button.component.ts","../../src/lib/components/data-search/data-search.component.ts","../../src/lib/components/data-search/data-search.component.html","../../src/lib/components/data-search/index.ts","../../src/lib/components/scroll-area/scroll-area.component.ts","../../src/lib/components/sort-header/sort-header.component.ts","../../src/lib/components/sort-header/sort-header.component.html","../../src/lib/components/data-table/data-table.component.ts","../../src/lib/components/data-table/data-table.component.html","../../src/lib/components/data-table/index.ts","../../src/lib/components/dialog/dialog.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.ts","../../src/lib/components/dialog/dialog-buttons/dialog-buttons.component.html","../../src/lib/components/dialog/dialog-header/dialog-header.component.ts","../../src/lib/components/dialog/dialog-header/dialog-header.component.html","../../src/lib/components/divider/divider.component.ts","../../src/lib/components/drawer/drawer.component.ts","../../src/lib/components/dropdown/dropdown.component.ts","../../src/lib/components/expand/expand.component.ts","../../src/lib/components/expand/index.ts","../../src/lib/components/expand-toggle/expand-toggle.component.ts","../../src/lib/components/expand-area/expand-area.component.ts","../../src/lib/components/expand-area/index.ts","../../src/lib/components/expand-toggle/index.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.ts","../../src/lib/components/file-drop-zone/file-drop-zone.component.html","../../src/lib/components/file-drop-zone/index.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/forms/debounce-input/debounce-input.component.ts","../../src/lib/components/forms/debounce-input/debounce-input.component.html","../../src/lib/components/input/input.component.ts","../../src/lib/components/input/input.component.html","../../src/lib/components/json-view/json-view.component.ts","../../src/lib/components/json-view/json-view.component.html","../../src/lib/components/json-view/index.ts","../../src/lib/components/menu/menu-item/menu-item.model.ts","../../src/lib/components/menu/menu-item/menu-item.component.ts","../../src/lib/components/menu/menu-item/menu-item.component.html","../../src/lib/components/menu/menu.component.ts","../../src/lib/components/multi-select/multi-select.component.ts","../../src/lib/components/multi-select/multi-select.component.html","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.ts","../../src/lib/components/multi-select-dropdown/multi-select-dropdown.component.html","../../src/lib/components/notification-badge/notification-badge.ts","../../src/lib/components/notification-badge/notification-badge.html","../../src/lib/components/notifications/alert/alert.component.ts","../../src/lib/components/notifications/alert/alert.component.html","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.ts","../../src/lib/components/notifications/confirmation-dialog/confirmation-dialog.component.html","../../src/lib/components/notifications/snackbar/snackbar.component.ts","../../src/lib/components/notifications/snackbar/snackbar.component.html","../../src/lib/components/notifications/notifications/notifications.component.ts","../../src/lib/components/notifications/notifications/notifications.component.html","../../src/lib/components/paginator/paginator.component.ts","../../src/lib/components/paginator/paginator.component.html","../../src/lib/components/paginator/index.ts","../../src/lib/components/popover/popover.component.ts","../../src/lib/components/popover/popover.component.html","../../src/lib/components/popover/index.ts","../../src/lib/components/progress-bar/progress-bar.component.ts","../../src/lib/components/progress-bar/progress-bar.component.html","../../src/lib/components/progress-bar/index.ts","../../src/lib/components/progress-gauge/progress-gauge.component.ts","../../src/lib/components/progress-gauge/progress-gauge.component.html","../../src/lib/components/progress-gauge/index.ts","../../src/lib/components/radio/radio.component.ts","../../src/lib/components/radio/radio.component.html","../../src/lib/components/scroll-area/index.ts","../../src/lib/components/search-input/search-input.component.ts","../../src/lib/components/search-input/search-input.component.html","../../src/lib/components/search-input/index.ts","../../src/lib/components/select-input/select-input.component.ts","../../src/lib/components/select-input/select-input.component.html","../../src/lib/components/skeleton/skeleton.component.ts","../../src/lib/components/slider/slider.component.ts","../../src/lib/components/stat/stat.component.ts","../../src/lib/components/tabs/tab.component.ts","../../src/lib/components/tabs/tabs.component.ts","../../src/lib/components/textarea/textarea.component.ts","../../src/lib/components/textarea/textarea.component.html","../../src/lib/components/sort-header/index.ts","../../src/lib/components/tag/tag.component.ts","../../src/lib/components/tag/tag.component.html","../../src/lib/components/tag/index.ts","../../src/lib/components/tag-input/tag-input.component.ts","../../src/lib/components/tag-input/tag-input.component.html","../../src/lib/components/tag-input/index.ts","../../src/lib/components/theme-builder/theme-builder.component.ts","../../src/lib/components/theme-switch/theme-switch.component.ts","../../src/lib/components/toggle/toggle.component.ts","../../src/lib/components/toggle/toggle.component.html","../../src/lib/components/tooltip/tooltip.component.ts","../../src/uni-design-system-uni-angular.ts"],"sourcesContent":["let nextUniqueId = 0;\n\n/**\n * Returns a document-unique id for wiring ARIA relationships\n * (aria-controls, aria-describedby, aria-labelledby, ...).\n */\nexport function uniqueId(prefix = 'uni'): string {\n return `${prefix}-${nextUniqueId++}`;\n}\n\n/**\n * Selector matching natively focusable elements. Used to locate the\n * interactive element inside a projected trigger so ARIA attributes land\n * on the element that actually receives focus.\n */\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Resolves the element that should carry ARIA state for a trigger:\n * the element itself when focusable, otherwise its first focusable descendant.\n */\nexport function resolveFocusTarget(element: HTMLElement): HTMLElement {\n if (element.matches(FOCUSABLE_SELECTOR)) return element;\n return element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? element;\n}\n\n/**\n * Visually hides content while keeping it available to screen readers.\n * Use for text alternatives (e.g. badge counts, icon-only affordances).\n */\nexport const visuallyHidden = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: 0,\n} as const;\n\n/**\n * Wraps animation/transition styles so they only apply when the user has\n * not requested reduced motion (WCAG 2.3.3).\n */\nexport function motionSafe<T extends object>(styles: T) {\n return { '@media (prefers-reduced-motion: no-preference)': styles };\n}\n","import { computed, signal, type Signal } from '@angular/core';\n\nimport { uniqueId } from '../a11y/a11y';\n\nexport interface ListboxNavigationConfig {\n /** How many options are currently navigable. Read reactively. */\n count: () => number;\n /** Id prefix for the listbox and its options. */\n idPrefix?: string;\n /** Wrap past the ends. Default true. */\n wrap?: boolean;\n}\n\n/**\n * The keyboard and ARIA bookkeeping shared by every combobox-style popup:\n * open state, the active option index, and the `aria-activedescendant` id\n * wiring. Deliberately owns no markup and no filtering — each control renders\n * its own options and decides what a suggestion *is*.\n *\n * Extracted because three controls need the identical contract\n * (`uni-search-input`, `uni-tag-input`, and the multi-select upgrade), and the\n * parts that silently drift between hand-rolled copies all live here: the\n * wrap-around arithmetic, Home/End, and keeping the active id in sync with the\n * option list.\n *\n * `Enter` and `Escape` are deliberately *not* handled: what they mean depends\n * on the control (submit a search, commit a typed token, clear the field), and\n * `activeIndex()` is all a caller needs to decide.\n */\nexport class ListboxNavigation {\n /** Id for the `role=\"listbox\"` element; wire as `aria-controls`. */\n readonly listboxId: string;\n\n private readonly _open = signal(false);\n private readonly _activeIndex = signal(-1);\n private readonly wrap: boolean;\n\n /** Whether the popup is showing. Also false when there is nothing to show. */\n readonly open: Signal<boolean> = computed(() => this._open() && this.config.count() > 0);\n\n /** Index of the highlighted option, or -1 when none is active. */\n readonly activeIndex: Signal<number> = computed(() => {\n const index = this._activeIndex();\n // A shrinking option list must never leave the active id dangling.\n return index < this.config.count() ? index : -1;\n });\n\n /** Value for `aria-activedescendant`, or null when nothing is active. */\n readonly activeDescendantId: Signal<string | null> = computed(() => {\n const index = this.activeIndex();\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n\n constructor(private readonly config: ListboxNavigationConfig) {\n this.listboxId = uniqueId(config.idPrefix ?? 'uni-listbox');\n this.wrap = config.wrap ?? true;\n }\n\n /** Stable per-option id, for `role=\"option\"` elements. */\n optionId(index: number): string {\n return `${this.listboxId}-option-${index}`;\n }\n\n show(): void {\n this._open.set(true);\n }\n\n /** Close and drop the active option, so reopening starts clean. */\n hide(): void {\n this._open.set(false);\n this._activeIndex.set(-1);\n }\n\n setActive(index: number): void {\n this._activeIndex.set(index);\n }\n\n /**\n * Handle ArrowDown / ArrowUp / Home / End, opening the popup if needed.\n * Returns true when the key was consumed, so a caller can fall through to\n * its own handling for everything else.\n */\n navigate(event: KeyboardEvent): boolean {\n const count = this.config.count();\n if (count === 0) return false;\n\n const target = this.nextIndex(event.key, count);\n if (target === null) return false;\n\n event.preventDefault();\n this._open.set(true);\n this._activeIndex.set(target);\n return true;\n }\n\n private nextIndex(key: string, count: number): number | null {\n const current = this.activeIndex();\n\n switch (key) {\n case 'ArrowDown':\n return this.step(current, 1, count);\n case 'ArrowUp':\n // Opening with ArrowUp lands on the last option, matching menus.\n return current < 0 ? count - 1 : this.step(current, -1, count);\n case 'Home':\n return 0;\n case 'End':\n return count - 1;\n default:\n return null;\n }\n }\n\n private step(current: number, delta: number, count: number): number {\n const next = current + delta;\n if (this.wrap) return (next + count) % count;\n return Math.min(Math.max(next, 0), count - 1);\n }\n\n /** Close when focus leaves the control entirely (not on internal moves). */\n closeOnFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n const container = event.currentTarget as HTMLElement | null;\n if (!next || !container?.contains(next)) this.hide();\n }\n}\n\n/** Factory mirroring the signal-API style used elsewhere in the CDK. */\nexport const createListboxNavigation = (config: ListboxNavigationConfig): ListboxNavigation =>\n new ListboxNavigation(config);\n","import { uniqueId } from '../a11y/a11y';\n\n/**\n * Native CSS Anchor Positioning helpers (Baseline 2026). These replace the\n * former @floating-ui/dom dependency: the browser tracks the anchor natively\n * (no scroll/resize listeners), and `position-try-fallbacks` flips the panel\n * at viewport edges where supported (Chrome 125+, Firefox 147+, Safari 26+;\n * older Baseline browsers still position correctly but do not auto-flip).\n */\n\nexport type Placement =\n | 'top'\n | 'right'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'right-start'\n | 'bottom-start'\n | 'left-start'\n | 'top-end'\n | 'right-end'\n | 'bottom-end'\n | 'left-end';\n\n/** Distances between the anchor and the positioned panel, in px. */\nexport interface AnchorOffset {\n /** Gap along the placement axis (anchor → panel). */\n mainAxis?: number;\n /** Shift along the cross axis, from the aligned edge. */\n alignmentAxis?: number;\n}\n\n/** Returns a document-unique dashed-ident usable as a CSS `anchor-name`. */\nexport function newAnchorName(): string {\n return `--${uniqueId('uni-anchor')}`;\n}\n\nconst POSITION_AREA: Record<Placement, string> = {\n top: 'top',\n bottom: 'bottom',\n left: 'left',\n right: 'right',\n 'top-start': 'top span-right',\n 'top-end': 'top span-left',\n 'bottom-start': 'bottom span-right',\n 'bottom-end': 'bottom span-left',\n 'left-start': 'left span-bottom',\n 'left-end': 'left span-top',\n 'right-start': 'right span-bottom',\n 'right-end': 'right span-top',\n};\n\nconst MAIN_MARGIN: Record<string, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft',\n};\n\n/**\n * Emotion style object anchoring a panel to `anchor` at `placement`.\n * Spread into the panel's `css()` styles. The trigger element must carry\n * `anchor-name: <anchor>` (see `newAnchorName`).\n */\nexport function anchorStyles(\n anchor: string,\n placement: Placement,\n offset: AnchorOffset = {}\n): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n\n const styles: Record<string, string | number> = {\n position: 'fixed',\n positionAnchor: anchor,\n positionArea: POSITION_AREA[placement],\n positionTryFallbacks: 'flip-block, flip-inline, flip-block flip-inline',\n // Popover UA styles set inset:0 + margin:auto; anchored elements must not\n inset: 'auto',\n margin: 0,\n };\n\n styles[MAIN_MARGIN[side]] = offset.mainAxis ?? 0;\n\n const cross = offset.alignmentAxis ?? 0;\n if (align && cross) {\n const horizontal = side === 'top' || side === 'bottom';\n const crossMargin = horizontal\n ? align === 'start'\n ? 'marginLeft'\n : 'marginRight'\n : align === 'start'\n ? 'marginTop'\n : 'marginBottom';\n styles[crossMargin] = cross;\n }\n\n return styles;\n}\n\n/**\n * Absolute positioning for a rotated-square arrow sitting on the panel edge\n * that faces the anchor. Static per placement: if the browser flips the panel\n * via position-try, the arrow stays on the configured side (cosmetic-only\n * degradation, matching the flip-support caveat above).\n */\nexport function anchorArrowStyles(placement: Placement, size = 8): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n const overlap = -(size / 2);\n const styles: Record<string, string | number> = {\n position: 'absolute',\n width: size,\n height: size,\n transform: 'rotate(45deg)',\n };\n\n // Edge facing the anchor\n const facing: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n styles[facing[side]] = overlap;\n\n // Cross-axis position along that edge\n const horizontal = side === 'top' || side === 'bottom';\n const crossProp = horizontal ? 'left' : 'top';\n const crossPropEnd = horizontal ? 'right' : 'bottom';\n if (!align) {\n styles[crossProp] = `calc(50% - ${size / 2}px)`;\n } else if (align === 'start') {\n styles[crossProp] = size * 1.5;\n } else {\n styles[crossPropEnd] = size * 1.5;\n }\n\n return styles;\n}\n","import { computed, signal, Signal, WritableSignal } from '@angular/core';\n\nexport type SortDirection = 'asc' | 'desc' | 'indet';\n\nexport interface Sort<T> {\n column?: keyof T;\n direction: SortDirection;\n}\n\nexport abstract class UniBaseDatasource<T> {\n abstract records: Signal<T[]>;\n abstract recordCount: Signal<number>;\n\n selections = signal<T[]>([]);\n\n sort: WritableSignal<Sort<T>> = signal({\n column: undefined,\n direction: 'indet',\n });\n\n sortColumn = computed(() => this.sort().column);\n sortDirection = computed(() => this.sort().direction);\n\n abstract pageIndex: Signal<number>;\n abstract pageSize: Signal<number>;\n abstract pageCount: Signal<number>;\n\n pages = computed(() => Array.from({ length: this.pageCount() }, (_, index) => index + 1));\n\n startIndex = computed(() => {\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n return pageSize > 0 ? pageIndex * pageSize : 0;\n });\n\n endIndex = computed(() => {\n const pageSize = this.pageSize();\n const total = this.recordCount();\n\n // If unpaginated (pageSize = 0), return total count\n if (pageSize === 0) {\n return total;\n }\n\n const start = this.startIndex();\n return Math.min(start + pageSize, total);\n });\n\n disablePrevious = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() === 0;\n });\n\n disableNext = computed(() => {\n const pageSize = this.pageSize();\n return pageSize === 0 ? true : this.pageIndex() + 1 >= this.pageCount();\n });\n\n truncatedPages = computed(() => {\n const currentPage = this.pageIndex() + 1;\n const displayRange = 3;\n const totalPages = this.pageCount();\n\n const pages: (number | string)[] = [];\n const startPage = Math.max(1, currentPage - displayRange);\n const endPage = Math.min(totalPages, currentPage + displayRange);\n\n if (startPage > 1) {\n pages.push(1);\n if (startPage > 2) {\n pages.push('...');\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pages.push(i);\n }\n\n if (endPage < totalPages) {\n if (endPage < totalPages - 1) {\n pages.push('...');\n }\n pages.push(totalPages);\n }\n return pages;\n });\n\n isSelected(row: T): boolean {\n return this.selections().some((selection) => selection === row);\n }\n\n toggleSelection(row: T) {\n this.selections.update((selections) => {\n return selections.includes(row) ? selections.filter((i) => i !== row) : [...selections, row];\n });\n }\n\n clearSelections() {\n this.selections.set([]);\n }\n\n selectAll() {\n this.selections.set([...this.records()]);\n }\n\n abstract sortRecords(sort: Sort<T>): void;\n abstract firstPage(): void;\n abstract nextPage(): void;\n abstract previousPage(): void;\n abstract lastPage(): void;\n abstract jumpToPage(page: number): void;\n abstract setPageSize(size: number): void;\n}\n","import { computed, signal } from '@angular/core';\nimport { UniBaseDatasource, Sort } from './base-datasource';\n\nexport class UniRecordDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal<number>(0); // 0 = unpaginated (show all)\n\n initialRecords = signal<T[]>([]);\n override recordCount = computed((): number => this.initialRecords().filter(this.filter()).length);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter = signal<(value: T) => boolean>((value) => true);\n\n override pageIndex = signal<number>(0);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const pageSize = this.pageSize();\n return pageSize > 0 ? Math.ceil(this.recordCount() / pageSize) : 1;\n });\n\n override records = computed(() => {\n const { column, direction } = this.sort();\n const filter = this.filter();\n const pageSize = this.pageSize();\n\n let filteredRecords = this.initialRecords().filter(filter);\n\n // Apply sorting if specified\n if (column && direction !== 'indet') {\n filteredRecords = [...filteredRecords].sort((a, b) => {\n const valueA = a[column];\n const valueB = b[column];\n\n const isString = typeof valueA === 'string';\n const isAsc = direction === 'asc';\n\n return isString\n ? stringCompare(valueA as string, valueB as string, isAsc)\n : numberCompare(valueA as number, valueB as number, isAsc);\n });\n }\n\n // Apply pagination only if pageSize > 0\n if (pageSize > 0) {\n return filteredRecords.slice(this.startIndex(), this.endIndex());\n }\n\n // Return all records (unpaginated)\n return filteredRecords;\n });\n\n constructor(data: T[]) {\n super();\n this.initialRecords.set(data);\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n }\n\n override firstPage() {\n this.pageIndex.set(0);\n }\n\n override nextPage() {\n if (this.pageIndex() < this.pageCount() - 1) {\n this.pageIndex.update((i) => i + 1);\n }\n }\n\n override previousPage() {\n this.pageIndex.update((i) => (i > 1 ? i - 1 : 0));\n }\n\n override lastPage() {\n this.pageIndex.set(this.pageCount() - 1);\n }\n\n override jumpToPage(page: number) {\n const i = page - 1;\n if (i >= 0 && i < this.pageCount()) {\n this.pageIndex.set(i);\n }\n }\n\n override setPageSize(size: number) {\n this._pageSize.set(size);\n if (size > 0) {\n this._pageNumber.set(1);\n this.pageIndex.set(0);\n }\n }\n\n setFilter(filter: (value: T) => boolean) {\n this.filter.set(filter);\n }\n\n clearFilter() {\n this.filter.set(() => true);\n }\n}\n\nfunction stringCompare(a = 'zzz', b = 'zzz', isAsc: boolean): number {\n a = a.toString();\n b = b.toString();\n\n return isAsc\n ? a.localeCompare(b, undefined, { sensitivity: 'base' })\n : b.localeCompare(a, undefined, { sensitivity: 'base' });\n}\n\nfunction numberCompare(a = 0, b = 0, isAsc: boolean): number {\n return isAsc ? a - b : b - a;\n}\n","import {\n computed,\n linkedSignal,\n resource,\n ResourceLoaderParams,\n ResourceRef,\n type ResourceStatus,\n signal,\n} from '@angular/core';\nimport { UniBaseDatasource, Sort, SortDirection } from './base-datasource';\n\nexport interface PageRequest {\n pageNumber: number;\n pageSize: number;\n sortColumn?: string;\n sortDirection?: SortDirection;\n filter?: Record<string, any>;\n}\n\nexport interface PageResponse<T> {\n data: T[];\n totalRecords: number;\n pageNumber: number;\n pageSize: number;\n}\n\nexport type DataLoader<T> = (request: PageRequest) => Promise<PageResponse<T>>;\n\nexport class UniServerSideDatasource<T> extends UniBaseDatasource<T> {\n private _pageNumber = signal(1);\n private _pageSize = signal(10);\n private _sortColumn = signal<keyof T | undefined>(undefined);\n private _sortDirection = signal<SortDirection>('indet');\n private filter = signal<Record<string, any>>({});\n\n override sortColumn = computed(() => this._sortColumn());\n override sortDirection = computed(() => this._sortDirection());\n\n private totalRecords = signal(0);\n\n private dataResource: ResourceRef<PageResponse<T> | undefined>;\n\n override pageIndex = computed(() => this._pageNumber() - 1);\n override pageSize = computed(() => this._pageSize());\n\n override pageCount = computed(() => {\n const total = this.totalRecords();\n const size = this.pageSize();\n return total > 0 ? Math.ceil(total / size) : 0;\n });\n\n private readonly _records = linkedSignal<\n {\n val: PageResponse<T> | undefined;\n status: ResourceStatus;\n },\n T[]\n >({\n source: () => ({\n val: this.dataResource.value(),\n status: this.dataResource.status(),\n }),\n computation: (source, previous) => {\n if (source.status === 'loading' && previous) {\n return previous.value;\n }\n return source.val?.data ?? [];\n },\n });\n\n override records = this._records.asReadonly();\n\n override recordCount = computed(() => this.totalRecords());\n\n isLoading = computed(() => this.dataResource.isLoading());\n\n error = computed(() => this.dataResource.error());\n\n hasError = computed(() => this.dataResource.hasValue() === false && this.error() !== undefined);\n\n constructor(\n private dataLoader: DataLoader<T>,\n initialPageSize = 10\n ) {\n super();\n this._pageSize.set(initialPageSize);\n\n this.dataResource = resource({\n params: () => ({\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n }),\n loader: async (params: ResourceLoaderParams<PageRequest>) => {\n const request = params.params;\n const response = await this.dataLoader(request);\n\n if (request.pageNumber === 1 || this.totalRecords() === 0) {\n this.totalRecords.set(response.totalRecords);\n }\n\n return response;\n },\n });\n }\n\n override sortRecords(sort: Sort<T>) {\n this.sort.set(sort);\n this._sortColumn.set(sort.column);\n this._sortDirection.set(sort.direction);\n this._pageNumber.set(1);\n }\n\n override firstPage() {\n this._pageNumber.set(1);\n }\n\n override nextPage() {\n if (this._pageNumber() < this.pageCount()) {\n this._pageNumber.update((n) => n + 1);\n }\n }\n\n override previousPage() {\n if (this._pageNumber() > 1) {\n this._pageNumber.update((n) => n - 1);\n }\n }\n\n override lastPage() {\n this._pageNumber.set(this.pageCount());\n }\n\n override jumpToPage(page: number) {\n if (page >= 1 && page <= this.pageCount()) {\n this._pageNumber.set(page);\n }\n }\n\n override setPageSize(size: number) {\n if (size > 0) {\n this._pageSize.set(size);\n this._pageNumber.set(1);\n }\n }\n\n setFilter(filterValues: Record<string, any>) {\n this.filter.set(filterValues);\n this._pageNumber.set(1);\n }\n\n clearFilter() {\n this.filter.set({});\n this._pageNumber.set(1);\n }\n\n refresh() {\n this.dataResource.reload();\n }\n\n getPageRequest(): PageRequest {\n return {\n pageNumber: this._pageNumber(),\n pageSize: this._pageSize(),\n sortColumn: this._sortColumn() as string | undefined,\n sortDirection: this._sortDirection(),\n filter: this.filter(),\n };\n }\n}\n","export function memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n const key = JSON.stringify(args);\n\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n","import { Injectable } from '@angular/core';\nimport { memoize } from '../helpers/memoize.helper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService {\n private isLocalStorageAvailable = memoize((): boolean => {\n try {\n const test = '__localStorage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n });\n\n setItem<T>(key: string, value: T): boolean {\n if (!this.isLocalStorageAvailable()) {\n console.warn('LocalStorage is not available');\n return false;\n }\n\n try {\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n localStorage.setItem(key, stringValue);\n return true;\n } catch (error) {\n console.error('Error saving to localStorage:', error);\n return false;\n }\n }\n\n getItem<T>(key: string): T | null {\n if (!this.isLocalStorageAvailable()) {\n return null;\n }\n\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch {\n return item as T;\n }\n } catch (error) {\n console.error('Error reading from localStorage:', error);\n return null;\n }\n }\n\n removeItem(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.removeItem(key);\n return true;\n } catch (error) {\n console.error('Error removing from localStorage:', error);\n return false;\n }\n }\n\n clear(): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n try {\n localStorage.clear();\n return true;\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n return false;\n }\n }\n\n hasKey(key: string): boolean {\n if (!this.isLocalStorageAvailable()) {\n return false;\n }\n\n return localStorage.getItem(key) !== null;\n }\n\n getAllKeys(): string[] {\n if (!this.isLocalStorageAvailable()) {\n return [];\n }\n\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n getSize(): number {\n if (!this.isLocalStorageAvailable()) {\n return 0;\n }\n\n try {\n let total = 0;\n for (const key in localStorage) {\n if (Object.prototype.hasOwnProperty.call(localStorage, key)) {\n total += localStorage[key].length + key.length;\n }\n }\n return total;\n } catch (error) {\n console.error('Error calculating localStorage size:', error);\n return 0;\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Alert, Confirmation, Snackbar } from './notification.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n /* Alert */\n alert = signal<Alert | undefined>(undefined);\n showAlert = (alert: Alert) => this.alert.set(alert);\n hideAlert = () => this.alert.set(undefined);\n\n /* Snackbar */\n snackbar = signal<Snackbar | undefined>(undefined);\n showSnackbar = (snackbar: Snackbar) => this.snackbar.set(snackbar);\n hideSnackbar = () => this.snackbar.set(undefined);\n\n /* Confirmation */\n confirmation = signal<Confirmation | undefined>(undefined);\n showConfirmation = (confirmation: Confirmation) => this.confirmation.set(confirmation);\n hideConfirmation = () => this.confirmation.set(undefined);\n}\n","import { computed, DestroyRef, inject, signal } from '@angular/core';\n\nexport function useTimer() {\n const destroyRef = inject(DestroyRef);\n\n const msRemaining = signal<number>(0);\n const isPaused = signal<boolean>(false);\n const isActive = computed(() => msRemaining() > 0);\n\n let intervalId: any = null;\n let endTime = 0;\n let onCompleteCallback: (() => void) | undefined;\n\n const stop = () => {\n if (intervalId) clearInterval(intervalId);\n intervalId = null;\n };\n\n const tick = () => {\n const remaining = Math.max(0, endTime - Date.now());\n msRemaining.set(remaining);\n\n if (remaining <= 0) {\n stop();\n if (onCompleteCallback) onCompleteCallback();\n }\n };\n\n const start = (durationMs: number, onComplete?: () => void) => {\n stop();\n onCompleteCallback = onComplete;\n isPaused.set(false);\n msRemaining.set(durationMs);\n endTime = Date.now() + durationMs;\n intervalId = setInterval(tick, 100);\n };\n\n const pause = () => {\n if (!isActive() || isPaused()) return;\n stop();\n isPaused.set(true);\n };\n\n const resume = () => {\n if (!isActive() || !isPaused()) return;\n isPaused.set(false);\n endTime = Date.now() + msRemaining();\n intervalId = setInterval(tick, 100);\n };\n\n destroyRef.onDestroy(() => stop());\n\n return {\n start,\n pause,\n resume,\n stop: () => {\n stop();\n msRemaining.set(0);\n },\n msRemaining,\n isPaused,\n isActive,\n secondsRemaining: computed(() => Math.ceil(msRemaining() / 1000)),\n };\n}\n","export const acceptableFile = (\n file: File,\n acceptedFileExtensions: string[] | undefined\n): boolean => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length < 1) return true;\n return acceptedFileExtensions.includes(getFileExtension(file));\n};\n\nexport const getFileExtension = (file: File): string => '.' + file.name.split('.').pop();\n","import { InjectionToken } from '@angular/core';\nimport { type UniTheme, UniThemes } from '@uni-design-system/uni-core';\n\nexport const UNI_THEMES = new InjectionToken<Record<string, UniTheme>>('', {\n providedIn: 'root',\n factory: () => UniThemes,\n});\n","export const safeParseInt = (n: string | number) => (typeof n === 'number' ? n : parseInt(n));\n","// noinspection JSUnusedGlobalSymbols\n\nimport { computed, inject, Injectable, linkedSignal, Signal, signal } from '@angular/core';\nimport { css, injectGlobal } from '@emotion/css';\nimport { LocalStorageService, Options } from '../cdk';\nimport {\n LightTheme,\n type NullableSize,\n type ThemeName,\n type Typeface,\n type UniTheme,\n Z_INDEX,\n type ZIndexableElements,\n ColorToken,\n ComponentName,\n ComponentTheme,\n ContainerColorToken,\n ContentColorToken,\n NullableStyleExpression,\n OptionalSize,\n Size,\n TextRole,\n Thickness,\n Variant,\n toTypefaces,\n createThemeFromPalette,\n type GenerateColorsConfig,\n type PaletteConfig,\n type Radii,\n type ColorKey,\n type Radius,\n type Border,\n type Shadow,\n} from '@uni-design-system/uni-core';\n\nimport {\n formatThemeIssues,\n hydrateTheme,\n parseTheme,\n type Themes,\n type ThemeParseResult,\n} from '@uni-design-system/uni-core';\n\nimport { UNI_THEMES } from './theme.token';\nimport { safeParseInt } from '../cdk/helpers/number.helper';\n\n/**\n * The editable shape a theme builder manipulates: a seed + scheme + category\n * (plus optional saturation floor, brand colors, and light/dark mode).\n * Everything else in a theme is derived from this. Brand colors come in two\n * strengths: `brand` pins are emitted verbatim (may fail contrast), `targets`\n * are brand-faithful but the WCAG guard-rail may adjust their lightness.\n */\nexport type BrandPaletteConfig = Required<Pick<PaletteConfig, 'seed' | 'scheme' | 'category'>> &\n Pick<GenerateColorsConfig, 'mode' | 'accentSaturationFloor' | 'brand' | 'targets'> & {\n /** Radii override (e.g. a `ShapeRadii` shape-language preset). */\n radii?: Radii;\n };\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /** localStorage key marking the custom brand theme as active. */\n static readonly CUSTOM_KEY = 'CustomTheme';\n /** localStorage key holding the serialized brand palette config. */\n static readonly PALETTE_KEY = 'uni-custom-palette';\n\n private localStorage = inject(LocalStorageService);\n\n /**\n * The live theme registry: the injected {@link UNI_THEMES} map (validated\n * at construction) plus anything added via {@link registerTheme} — including\n * the custom brand theme, which registers under {@link CUSTOM_KEY} so it is\n * an ordinary, selectable entry.\n */\n private readonly registry = signal<Themes>({});\n\n private readonly _theme = signal<UniTheme>(LightTheme);\n /** The active theme. Write via {@link setTheme}/{@link selectTheme} — every write is validated. */\n readonly theme = this._theme.asReadonly();\n\n /** Selectable themes, derived from the registry — reactive to registration. */\n readonly themeOptions = computed<Options<ThemeName>>(() =>\n Object.entries(this.registry()).map(([value, theme]) => ({ label: theme.name, value }))\n );\n\n components = computed(() => this.theme().components);\n component = <T>(componentName: ComponentName): Signal<ComponentTheme<T>> =>\n computed(() => (this.components()[componentName] as ComponentTheme<T>) || {});\n colors = computed(() => this.theme().colors);\n // CSS-ready typefaces are derived from the theme's numeric type scale,\n // never stored twice on the theme.\n typeFaces = computed(() => toTypefaces(this.theme().typography));\n spacing = computed(() => this.theme().spacing);\n thicknesses = computed(() => this.theme().thicknesses);\n radii = computed(() => this.theme().radii);\n borders = computed(() => this.theme().borders);\n shadows = computed(() => this.theme().shadows);\n icons = computed(() => this.theme().icons);\n\n constructor() {\n // Honor the user's reduced-motion preference across every component\n // (WCAG 2.3.3): collapse all animations/transitions to a single frame.\n injectGlobal`\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n }\n `;\n\n // Seed the registry from the injected map, excluding (with reasons) any\n // theme that fails the structural contract — a malformed theme would\n // otherwise render as silent `undefined` CSS.\n const injected = inject(UNI_THEMES);\n const registry: Themes = {};\n for (const [key, candidate] of Object.entries(injected)) {\n const result = parseTheme(candidate);\n if (result.success) {\n registry[key] = result.theme;\n } else {\n console.warn(`Uni theme '${key}' rejected: ${formatThemeIssues(result.issues)}`);\n }\n }\n this.registry.set(registry);\n\n // Rehydrate a custom brand theme if one is active — this is what lets a\n // palette built in one story reskin every other story: each story spins up\n // a fresh ThemeService, and it reads the persisted config here on init.\n const savedTheme = this.localStorage.getItem<string>('theme');\n const savedPalette = this.localStorage.getItem<BrandPaletteConfig>(ThemeService.PALETTE_KEY);\n if (savedTheme === ThemeService.CUSTOM_KEY && savedPalette) {\n this.applyPalette(savedPalette, false);\n } else {\n this.selectTheme(savedTheme || Object.keys(registry)[0] || 'base');\n }\n }\n\n /**\n * Activate a registered theme. Returns false — touching nothing, persisting\n * nothing — when the name is unknown (previously this silently kept the old\n * theme while still recording the bad key).\n */\n public selectTheme(themeName: ThemeName): boolean {\n const theme = this.registry()[themeName];\n if (!theme) return false;\n\n // Registered themes were validated at registration; set directly.\n this._theme.set(theme);\n this.selectedThemeKey.set(themeName);\n this.localStorage.setItem('theme', themeName);\n return true;\n }\n\n /**\n * Validate and activate a theme without registering it. The result carries\n * acceptance or the complete list of rejection reasons; on rejection the\n * active theme is unchanged.\n */\n public setTheme(input: unknown): ThemeParseResult {\n const result = this.accept(input);\n if (result.success) {\n this._theme.set(result.theme);\n this.selectedThemeKey.set(result.theme.id);\n }\n return result;\n }\n\n /**\n * Validate and add a theme to the registry (keyed by its `id`), making it\n * selectable and listed in {@link themeOptions}. On rejection the registry\n * is unchanged and the result lists every reason.\n */\n public registerTheme(input: unknown, opts?: { select?: boolean }): ThemeParseResult {\n const result = this.accept(input);\n if (result.success) {\n const theme = result.theme;\n this.registry.update((themes) => ({ ...themes, [theme.id]: theme }));\n if (opts?.select) this.selectTheme(theme.id);\n }\n return result;\n }\n\n /**\n * The gate every externally-supplied theme passes: validate, then restore\n * any built-in icons the payload left out. Themes that travel as JSON (the\n * MCP theme tools, a theme registry) omit the built-in icon set — it is\n * ~71% of the bytes and every consumer already ships it — so hydration\n * applies the same `{...BaseIcons, ...icons}` contract `createTheme` uses:\n * the theme's own icons win, built-ins fill the rest.\n */\n private accept(input: unknown): ThemeParseResult {\n const result = parseTheme(input);\n return result.success ? { ...result, theme: hydrateTheme(result.theme) } : result;\n }\n\n /** Remove a registered theme; falls back to the first remaining theme if it was active. */\n public unregisterTheme(id: string): void {\n if (!(id in this.registry())) return;\n this.registry.update((themes) => {\n const { [id]: _removed, ...rest } = themes;\n return rest;\n });\n if (this.selectedThemeKey() === id) {\n this.selectTheme(Object.keys(this.registry())[0] || 'base');\n }\n }\n\n /** The live brand palette config, when a custom theme is active. */\n public customPalette = signal<BrandPaletteConfig | null>(null);\n public isCustomTheme = computed(() => this.selectedThemeKey() === ThemeService.CUSTOM_KEY);\n\n /**\n * Generate a full theme from a brand palette config and make it active. When\n * `persist` is true the config is saved so every subsequent story (and\n * reload) renders with the same brand.\n */\n public applyPalette(config: BrandPaletteConfig, persist = true): void {\n this.customPalette.set(config);\n // Registering (rather than only setting) makes 'Your Brand' an ordinary\n // registry entry: it appears in themeOptions/uni-theme-switch and can be\n // switched away from and back to.\n const result = this.registerTheme(\n createThemeFromPalette({ ...config, id: ThemeService.CUSTOM_KEY, name: 'Your Brand' })\n );\n if (!result.success) return;\n\n this._theme.set(result.theme);\n this.selectedThemeKey.set(ThemeService.CUSTOM_KEY);\n if (persist) {\n this.localStorage.setItem(ThemeService.PALETTE_KEY, config);\n this.localStorage.setItem('theme', ThemeService.CUSTOM_KEY);\n }\n }\n\n /** Drop the custom brand theme and fall back to the first registered theme. */\n public clearCustomPalette(): void {\n this.customPalette.set(null);\n this.localStorage.removeItem(ThemeService.PALETTE_KEY);\n this.unregisterTheme(ThemeService.CUSTOM_KEY);\n }\n\n public selectedThemeName = computed(() => this.theme().name);\n public selectedThemeKey = signal<string>('');\n\n textClass = (textRole: TextRole, textColor?: ContentColorToken) => {\n return css([\n {\n ...this.typeFaces()[textRole],\n },\n textColor && {\n color: this.colors()[textColor],\n },\n ]);\n };\n\n componentStyle = (componentName: ComponentName, variant: Variant, size: Size) =>\n computed(() => {\n const component = this.component(componentName)();\n const { fixed, variants, sizes } = component;\n const variantStyle = variants && variants[variant];\n const sizeStyle = sizes && sizes[size];\n return { ...fixed, ...variantStyle, ...sizeStyle };\n });\n\n getSpacing = (size: NullableSize) => {\n return size === 'none' ? 'none' : this.spacing()[size];\n };\n\n getThickness = (thickness: Thickness) => this.theme().thicknesses[thickness];\n\n getContentColor = (token: ContainerColorToken, useVariant?: boolean) =>\n useVariant\n ? this.colors()[`on-${token}-variant` as ColorToken]\n : this.colors()[`on-${token}` as ColorToken];\n\n colorPair = (token?: ContainerColorToken, colorVariant?: boolean): NullableStyleExpression => {\n if (!token) return;\n const backgroundColor = this.colors()[token];\n const color = this.getContentColor(token, colorVariant);\n return { color, backgroundColor };\n };\n\n backgroundColor = (token?: ColorKey): NullableStyleExpression => {\n return !token ? undefined : { backgroundColor: this.colors()[token] };\n };\n\n backgroundImage = (url?: string): NullableStyleExpression => {\n return !url ? undefined : { backgroundImage: `url(${url})` };\n };\n\n getContainerColors = (color: Variant, useVariant?: boolean) => {\n const token = (color + '-container') as ContainerColorToken;\n return this.colorPair(token, useVariant);\n };\n\n /**\n * Shared keyboard-focus indicator (WCAG 2.4.7). Spread into a component's\n * Emotion styles: `...this.theme.focusRing()` or `focusRing('primary')`.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': {\n outline: `2px solid ${token ? this.colors()[token] : 'currentColor'}`,\n outlineOffset: '2px',\n },\n });\n\n typeface = (typeface?: Typeface) => {\n const typefaces = this.typeFaces();\n return typeface && typefaces[typeface];\n };\n\n colorPalette = () => this.colors();\n\n color(color?: ColorKey): NullableStyleExpression {\n return !color ? undefined : { color: this.colors()[color] };\n }\n\n getDashedBorder(\n color: ColorKey | undefined,\n radius: Radius | undefined\n ): NullableStyleExpression {\n if (!color) return;\n\n const r = radius && this.radii()[radius];\n const borderRadius = r ? safeParseInt(r) : 0;\n const colors = this.colors()[color];\n const strokeColor = colors?.replace('#', '%23');\n\n return {\n backgroundImage: `url(\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='${borderRadius}' ry='${borderRadius}' stroke='${strokeColor}' stroke-width='4' stroke-dasharray='6%2c 14' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e\")`,\n borderRadius,\n };\n }\n\n radius(size: Radius | undefined): NullableStyleExpression {\n return !size ? undefined : { borderRadius: this.radii()[size] };\n }\n\n getRadiusLeft(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderTopLeftRadius: this.radii()[size],\n };\n }\n\n getRadiusRight(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomRightRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusTop(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderTopLeftRadius: this.radii()[size],\n borderTopRightRadius: this.radii()[size],\n };\n }\n\n getRadiusBottom(size: Radius | undefined): NullableStyleExpression {\n if (!size) return;\n return {\n borderBottomLeftRadius: this.radii()[size],\n borderBottomRightRadius: this.radii()[size],\n };\n }\n\n padding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { padding: this.spacing()[size] };\n }\n\n horizontalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingInline: this.spacing()[size] };\n }\n\n verticalPadding(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBlock: this.spacing()[size] };\n }\n\n paddingLeft(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingLeft: this.spacing()[size] };\n }\n\n paddingRight(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingRight: this.spacing()[size] };\n }\n\n paddingTop(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingTop: this.spacing()[size] };\n }\n\n paddingBottom(size: OptionalSize): NullableStyleExpression {\n return !size ? undefined : { paddingBottom: this.spacing()[size] };\n }\n\n border(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { border: this.borders()[border] };\n }\n\n borderTop(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderTop: this.borders()[border] };\n }\n\n borderBottom(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderBottom: this.borders()[border] };\n }\n\n borderLeft(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderLeft: this.borders()[border] };\n }\n\n borderRight(border: Border | undefined): NullableStyleExpression {\n return !border ? undefined : { borderRight: this.borders()[border] };\n }\n\n boxShadow(shadow: Shadow | undefined) {\n return !shadow ? undefined : { boxShadow: this.shadows()[shadow] };\n }\n\n gap(gap: OptionalSize): NullableStyleExpression {\n return !gap || gap === 'none' ? undefined : { gap: this.spacing()[gap] };\n }\n\n zIndex(element: ZIndexableElements | undefined): NullableStyleExpression {\n return !element ? undefined : { zIndex: Z_INDEX[element] };\n }\n\n borderColor(borderColor: ColorToken): NullableStyleExpression {\n return { borderColor: this.colors()[borderColor] };\n }\n\n getComponentTheme<T>(componentName: ComponentName) {\n return this.component<T>(componentName);\n }\n\n // Used to get an \"always-defined\" options object from a component theme.\n getComponentOptions = <T>(componentName: ComponentName) =>\n linkedSignal({\n source: this.getComponentTheme<T>(componentName),\n computation: () => {\n return this.getComponentTheme<T>(componentName)().options || ({} as T);\n },\n });\n\n componentOptions = (componentName: ComponentName) =>\n computed(() => this.component(componentName)().options || {});\n\n style(prop: string, value: string | number | undefined): NullableStyleExpression {\n return !value ? undefined : { [prop]: value };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n} from '@angular/core';\nimport type { ComponentName, Size, Variant } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\nexport const COMPONENT_NAME = new InjectionToken<ComponentName>('');\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n template: ``,\n})\nexport class BaseComponent<T = unknown> {\n protected componentName = inject(COMPONENT_NAME);\n theme = inject(ThemeService);\n\n variant = input<Variant>('primary'); // TODO: Make Variant support undefined\n size = input<Size>('lg');\n\n componentTheme = computed(() => this.theme.getComponentTheme<T>(this.componentName)());\n\n componentOptions = computed(() => this.theme.getComponentOptions<T>(this.componentName)());\n\n style = computed(() =>\n this.theme.componentStyle(this.componentName, this.variant(), this.size())()\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniAppBarOptions } from './app-bar.model';\n\n/**\n * Horizontal application bar: project leading controls (menu button, logo)\n * with the `leading` attribute, actions with `trailing` (pushed to the far\n * edge), and either pass `title` or project custom center content. Surface,\n * divider, height, typography and spacing all resolve from `appBar` tokens.\n * Place it inside your page's `<header>` landmark.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-app-bar',\n providers: [{ provide: COMPONENT_NAME, useValue: 'appBar' }],\n host: { '[class]': 'className()' },\n template: `\n <ng-content select=\"[leading]\" />\n @if (title()) {\n <span class=\"uni-app-bar-title\">{{ title() }}</span>\n }\n <ng-content />\n <span class=\"uni-app-bar-spacer\"></span>\n <ng-content select=\"[trailing]\" />\n `,\n})\nexport class UniAppBarComponent extends BaseComponent<UniAppBarOptions> {\n /** Bar title; alternatively project your own center content. */\n title = input<string>();\n /** Stick the bar to the top of its scroll container. */\n sticky = input(false);\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n width: '100%',\n height: options.height ?? 56,\n flex: 'none',\n ...this.theme.colorPair(options.color),\n ...this.theme.gap(options.gap),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.borderBottom(options.divider),\n ...this.theme.boxShadow(options.elevation),\n '& .uni-app-bar-title': {\n ...this.theme.typeface(options.typeface),\n whiteSpace: 'nowrap',\n },\n '& .uni-app-bar-spacer': { flexGrow: 1 },\n ...(this.sticky() && { position: 'sticky', top: 0, zIndex: 10 }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport type { SymbolFill, SymbolGrade, SymbolOptions, SymbolWeight } from './symbol.model';\nimport { COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-symbol',\n imports: [],\n template: `{{ name() }}`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'symbol' }],\n // Icons are decorative: hide the ligature text (e.g. \"chevron_left\") from\n // screen readers. Meaningful icons get their name from the parent control.\n host: {\n '[class]': 'className()',\n 'aria-hidden': 'true',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSymbolComponent extends BaseComponent<SymbolOptions> {\n name = input.required<string>();\n\n fill = input<SymbolFill>();\n weight = input<SymbolWeight>();\n grade = input<SymbolGrade>();\n opticalSize = input<number>();\n\n protected readonly className = computed(() => {\n const settings =\n `'FILL' ${this.fill() || this.componentOptions().fill || 0}, ` +\n `'wght' ${this.weight() || this.componentOptions().weight || 400}, ` +\n `'GRAD' ${this.grade() || this.componentOptions().grade || 0}, ` +\n `'opsz' ${this.opticalSize() || this.componentOptions().opticalSize || 24}`;\n\n return (\n 'material-symbols-rounded ' +\n css({\n fontVariationSettings: settings,\n fontSize: `${this.opticalSize() || this.componentOptions().opticalSize || 24}px`,\n })\n );\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniAvatarOptions } from './avatar.model';\n\n/**\n * Identity avatar with a graceful fallback chain: image → initials from\n * `name` → themed symbol. Coloring, radius, typeface and sizes all resolve\n * from `avatar` theme tokens; `variant` picks the container palette.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatar' }],\n host: {\n '[class]': 'className()',\n '[attr.role]': \"label() ? 'img' : null\",\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': \"label() ? null : 'true'\",\n },\n template: `\n @if (showImage()) {\n <img [src]=\"src()\" alt=\"\" (error)=\"imageFailed.set(true)\" />\n } @else if (text()) {\n <span>{{ text() }}</span>\n } @else if (initials()) {\n <span>{{ initials() }}</span>\n } @else {\n <uni-symbol [name]=\"componentOptions().fallbackSymbol ?? 'person'\" />\n }\n `,\n})\nexport class UniAvatarComponent extends BaseComponent<UniAvatarOptions> {\n /** Image URL; on load error the avatar falls back to initials/symbol. */\n src = input<string>();\n /** Person's name: drives the initials and the accessible label. */\n name = input<string>();\n /** Verbatim text instead of derived initials (e.g. a group's “+3”). */\n text = input<string>();\n\n protected readonly imageFailed = signal(false);\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed());\n\n protected readonly initials = computed(() => {\n const name = this.name()?.trim();\n if (!name) return '';\n const words = name.split(/\\s+/);\n const first = words[0]?.[0] ?? '';\n const last = words.length > 1 ? (words[words.length - 1][0] ?? '') : '';\n return (first + last).toUpperCase();\n });\n\n protected readonly label = computed(() => this.name() ?? this.text());\n\n protected readonly className = computed(() =>\n css([\n // Typeface (family/weight) before the merged theme style, so the size\n // record's fontSize wins over the typeface's.\n {\n ...this.theme.typeface(this.componentOptions().typeface),\n ...this.theme.radius(this.componentOptions().borderRadius),\n },\n this.style(),\n {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 'none',\n overflow: 'hidden',\n userSelect: 'none',\n lineHeight: 1,\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n '& symbol': { fontSize: '1.4em' },\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniAvatarComponent } from './avatar.component';\nimport type { UniAvatarGroupOptions } from './avatar.model';\n\n/**\n * Overlapping stack of avatars. `max` collapses the overflow into a themed\n * “+N” chip (itself a `uni-avatar`). Overlap and separator ring resolve from\n * `avatarGroup` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-avatar-group',\n imports: [UniAvatarComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'avatarGroup' }],\n host: { '[class]': 'className()', role: 'group' },\n template: `\n <ng-content />\n @if (surplus() > 0) {\n <uni-avatar\n class=\"uni-surplus\"\n [text]=\"'+' + surplus()\"\n variant=\"quaternary\"\n [size]=\"size()\"\n />\n }\n `,\n})\nexport class UniAvatarGroupComponent extends BaseComponent<UniAvatarGroupOptions> {\n /** Show at most this many avatars; the rest collapse into a “+N” chip. */\n max = input<number | undefined>(undefined);\n\n private readonly avatars = contentChildren(UniAvatarComponent);\n\n protected readonly surplus = computed(() => {\n const max = this.max();\n if (max === undefined) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const overlap = this.theme.spacing()[options.overlap ?? 'sm'] ?? '8px';\n const ring = `${options.ringWidth ?? 2}px solid ${\n this.theme.colors()[options.ringColor ?? 'surface'] ?? 'transparent'\n }`;\n const max = this.max();\n return css({\n display: 'inline-flex',\n alignItems: 'center',\n '& uni-avatar': {\n border: ring,\n marginLeft: `calc(-1 * ${overlap})`,\n '&:first-child': { marginLeft: 0 },\n },\n // Collapse the overflow: hide projected avatars past `max`, but never\n // the surplus chip this component renders itself.\n ...(max !== undefined && {\n [`& uni-avatar:nth-of-type(n + ${max + 1}):not(.uni-surplus)`]: { display: 'none' },\n }),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\nexport type ImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | string;\n\n@Component({\n selector: 'uni-background',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBackgroundComponent {\n theme = inject(ThemeService);\n\n image = input<string>();\n imagePosition = input<ImagePosition>();\n imageSize = input<'cover' | 'contain' | number | string>();\n height = input<number | string>('100%');\n width = input<number | string>();\n\n protected readonly className = computed(() => {\n return css([\n {\n backgroundRepeat: 'no-repeat',\n display: 'block',\n ...this.theme.backgroundImage(this.image()),\n },\n this.theme.style('backgroundPosition', this.imagePosition()),\n this.theme.style('backgroundSize', this.imageSize()),\n this.theme.style('height', this.height()),\n this.theme.style('width', this.width()),\n ]);\n });\n}\n","/**\n * Background Component Barrel File\n *\n * This file exports all public-facing elements of the background component.\n */\n\nexport { UniBackgroundComponent } from './background.component';\nexport type { ImagePosition } from './background.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniBadgeOptions } from './badge.model';\nimport type { Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-badge]',\n imports: [],\n template: `<ng-content></ng-content>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'badge' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniBadgeComponent extends BaseComponent<UniBadgeOptions> {\n color = input<Variant | undefined>(undefined);\n useVariant = input<boolean>(false);\n width = input<number>();\n\n protected readonly className = computed(() => {\n const width = this.width();\n\n return css([\n {\n ...this.theme.getContainerColors(this.color() || 'primary', this.useVariant()),\n ...this.theme.typeface('badge'),\n display: 'inline-block',\n padding: '0 16px',\n ...this.theme.radius(this.componentOptions().borderRadius),\n textAlign: 'center',\n letterSpacing: 1,\n },\n width !== undefined && {\n minWidth: width - 32,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { BreadcrumbItem, UniBreadcrumbOptions } from './breadcrumb.model';\n\n/**\n * WAI-ARIA breadcrumb: a `nav` landmark wrapping an ordered list; the last\n * item is the current page (`aria-current=\"page\"`), separators are decorative.\n * Items with `href` render as real links; without one they render as\n * link-styled buttons emitting `itemClicked` — wire that to your router.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-breadcrumb',\n imports: [UniSymbolComponent],\n providers: [{ provide: COMPONENT_NAME, useValue: 'breadcrumb' }],\n template: `\n <nav [attr.aria-label]=\"ariaLabel()\" [class]=\"className()\">\n <ol>\n @for (item of items(); track item.label; let last = $last; let i = $index) {\n <li>\n @if (last) {\n <span aria-current=\"page\">{{ item.label }}</span>\n } @else if (item.href) {\n <a [href]=\"item.href\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</a>\n } @else {\n <button type=\"button\" (click)=\"itemClicked.emit(item)\">{{ item.label }}</button>\n }\n @if (!last) {\n <uni-symbol\n aria-hidden=\"true\"\n [name]=\"componentOptions().separatorSymbol ?? 'chevron_right'\"\n />\n }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class UniBreadcrumbComponent extends BaseComponent<UniBreadcrumbOptions> {\n /** The trail, root first; the last item is the current page. */\n items = input.required<BreadcrumbItem[]>();\n /** Landmark label distinguishing this nav from others on the page. */\n ariaLabel = input('Breadcrumb');\n\n /** Emits the clicked ancestor item (also fires for `href` links). */\n itemClicked = output<BreadcrumbItem>();\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const linkColor = this.theme.colors()[options.color ?? 'on-background-variant'];\n return css({\n '& ol': {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.typeface(options.typeface),\n },\n '& li': {\n display: 'inline-flex',\n alignItems: 'center',\n ...this.theme.gap(options.gap),\n },\n '& a, & button': {\n background: 'none',\n border: 0,\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n textDecoration: 'none',\n color: linkColor,\n '&:hover': { textDecoration: 'underline' },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()['primary']}`,\n outlineOffset: 2,\n },\n },\n '& [aria-current]': {\n ...this.theme.color(options.currentColor),\n },\n '& symbol': { fontSize: '1.1em', ...this.theme.color(options.color) },\n ...this.theme.gap(options.gap),\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { ThemeService } from '../../theming/theme.service';\nimport type { ColorToken, CssLength, IconName } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-icon',\n imports: [],\n template: '',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Icons are decorative; meaningful icons get their name from the parent control\n host: {\n 'aria-hidden': 'true',\n '[class]': 'className()',\n '[style.mask-image]': 'path()',\n '[style.-webkit-mask-image]': 'path()',\n // Inline styles, so an explicit size always beats the fill-the-container\n // rule in the stylesheet regardless of style injection order.\n '[style.width]': 'sizeValue()',\n '[style.height]': 'sizeValue()',\n },\n})\nexport class UniIconComponent {\n private themeService = inject(ThemeService);\n\n color = input<ColorToken>();\n name = input.required<IconName>();\n\n /**\n * Explicit square size. Bare numbers are px; strings pass through, so any CSS\n * length works (`'1.25rem'`, `'1em'`, `'clamp(…)'`).\n *\n * Leave it unset to keep the default behaviour — the icon fills its\n * container, which is what lets a themed control size its own glyph through\n * padding. Set it at call sites that would otherwise need a width/height\n * rule just to size one icon.\n */\n size = input<CssLength>();\n\n /** Resolved from the theme's icon primitives; unknown names render nothing. */\n protected readonly path = computed(() => {\n const icon = this.themeService.theme().icons[this.name()];\n return icon ? `url(\"${icon}\")` : 'none';\n });\n\n /** `null` leaves the styles off entirely, falling back to the stylesheet. */\n protected readonly sizeValue = computed(() => {\n const size = this.size();\n if (size === undefined || size === null || size === '') return null;\n if (typeof size === 'number') return `${size}px`;\n\n // A static attribute (`size=\"24\"`) arrives as a string, so a bare number\n // has to mean px here too — otherwise it emits the invalid `width: 24`,\n // which the browser drops, silently falling back to filling the container.\n const trimmed = size.trim();\n return /^-?\\d*\\.?\\d+$/.test(trimmed) ? `${trimmed}px` : trimmed;\n });\n\n protected readonly className = computed(() =>\n css([{ ...this.themeService.color(this.color()) }])\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ContainerColorToken,\n OptionalAlignContent,\n OptionalAlignItems,\n OptionalAlignSelf,\n OptionalBorder,\n OptionalColor,\n OptionalDisplay,\n OptionalFlexDirection,\n OptionalJustifyContent,\n OptionalOverflow,\n OptionalPosition,\n OptionalRadius,\n OptionalSize,\n OptionalTextAlign,\n OptionalWrap,\n Shadow,\n Variant,\n ZIndexableElements,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService } from '../../../theming';\n\n/**\n * The base layout primitive, applied as an attribute to any element so\n * semantics stay yours: `<main box-layout [grow]=\"1\" padding=\"md\">`.\n * Exception: other components' host elements (`<uni-card box-layout>` would\n * put two components on one element) — wrap those in a `<div box-layout>`.\n *\n * Sizing convention (height/width/min/max/inset): a **number is px and needs\n * a binding** — `[height]=\"420\"`; a **plain attribute is a CSS length\n * string** — `height=\"420px\"`. Spacing/radius/color inputs take theme tokens.\n */\n@Component({\n selector: '[uni-box-layout], [box-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n host: { '[class]': 'boxClassName()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniBoxComponent {\n theme = inject(ThemeService);\n\n color = input<ContainerColorToken>();\n backgroundColor = input<OptionalColor>();\n borderRadius = input<OptionalRadius>();\n borderRadiusLeft = input<OptionalRadius>();\n borderRadiusRight = input<OptionalRadius>();\n borderRadiusTop = input<OptionalRadius>();\n borderRadiusBottom = input<OptionalRadius>();\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<OptionalBorder>();\n borderTop = input<OptionalBorder>();\n borderBottom = input<OptionalBorder>();\n borderLeft = input<OptionalBorder>();\n borderRight = input<OptionalBorder>();\n dashBorder = input<boolean>(false);\n alignSelf = input<OptionalAlignSelf>();\n alignItems = input<OptionalAlignItems>();\n alignContent = input<OptionalAlignContent>();\n justifyContent = input<OptionalJustifyContent>();\n grow = input<number>();\n display = input<OptionalDisplay>();\n position = input<OptionalPosition>();\n inset = input<number | string>();\n /** Number = px via binding (`[height]=\"420\"`); string = CSS length (`height=\"420px\"`). */\n height = input<number | string>();\n minHeight = input<number | string>();\n maxHeight = input<number | string>();\n /** Number = px via binding (`[width]=\"420\"`); string = CSS length (`width=\"50%\"`). */\n width = input<number | string>();\n minWidth = input<number | string>();\n maxWidth = input<number | string>();\n ignoreDir = input(true);\n gridArea = input<string>();\n gridColumn = input<string>();\n gridRow = input<string>();\n overflow = input<OptionalOverflow>();\n elevation = input<Shadow>(); // Deprecated, use shadow instead\n shadow = input<Shadow>();\n gap = input<OptionalSize>();\n fullWidth = input<boolean>();\n fullHeight = input<boolean>();\n flexDirection = input<OptionalFlexDirection>();\n textAlign = input<OptionalTextAlign>();\n wrapItems = input<OptionalWrap>(undefined);\n zIndex = input<ZIndexableElements>();\n\n protected readonly boxClassName = computed(() => {\n return css([\n {\n ...this.theme.colorPair(this.color()),\n ...this.theme.backgroundColor(this.backgroundColor()),\n display: this.alignSelf() ? 'flex' : 'block',\n position: this.position(),\n inset: this.inset(),\n boxSizing: 'border-box',\n height: this.height(),\n minHeight: this.minHeight(),\n maxHeight: this.maxHeight(),\n width: this.width(),\n minWidth: this.minWidth(),\n maxWidth: this.maxWidth(),\n flexWrap: this.wrapItems(),\n overflow: this.overflow(),\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n ...this.theme.boxShadow(this.elevation()),\n ...this.theme.boxShadow(this.shadow()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.getRadiusLeft(this.borderRadiusLeft()),\n ...this.theme.getRadiusRight(this.borderRadiusRight()),\n ...this.theme.getRadiusTop(this.borderRadiusTop()),\n ...this.theme.getRadiusBottom(this.borderRadiusBottom()),\n ...this.theme.borderTop(this.borderTop()),\n ...this.theme.borderBottom(this.borderBottom()),\n ...this.theme.borderLeft(this.borderLeft()),\n ...this.theme.borderRight(this.borderRight()),\n ...this.theme.gap(this.gap()),\n ...this.theme.style('display', this.display()),\n ...this.theme.style('alignSelf', this.alignSelf()),\n ...this.theme.style('alignItems', this.alignItems()),\n ...this.theme.style('justifyContent', this.justifyContent()),\n ...this.theme.style('alignContent', this.alignContent()),\n ...this.theme.style('flexGrow', this.grow()),\n ...this.theme.style('flexDirection', this.flexDirection()),\n ...this.theme.style('gridArea', this.gridArea()),\n ...this.theme.style('gridColumn', this.gridColumn()),\n ...this.theme.style('gridRow', this.gridRow()),\n ...this.theme.style('textAlign', this.textAlign()),\n ...this.theme.zIndex(this.zIndex()),\n },\n this.border() &&\n !this.dashBorder() && {\n ...this.theme.border(this.border()),\n },\n this.border() &&\n this.dashBorder() && {\n ...this.theme.getDashedBorder(this.border() as Variant, this.borderRadius()),\n },\n\n this.fullWidth() && {\n width: '100%',\n },\n this.fullHeight() && {\n height: '100%',\n },\n\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row' && {\n '&:dir(rtl)': {\n flexDirection: 'row-reverse',\n },\n },\n this.ignoreDir() &&\n (this.flexDirection() ?? 'row') === 'row-reverse' && {\n '&:dir(rtl)': {\n flexDirection: 'row',\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type {\n OptionalAlignItems,\n OptionalDisplay,\n OptionalJustifyContent,\n} from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-center-layout], [center-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniCenterComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override justifyContent = input<OptionalJustifyContent>('center');\n override alignItems = input<OptionalAlignItems>('center');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Component({\n selector: '[uni-grid-area-layout], [grid-area-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'className()' },\n})\nexport class UniGridAreaComponent {\n area = input.required<string>();\n\n protected readonly className = computed(() => css({ gridArea: this.area() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, Thickness, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: '[uni-grid-layout], [grid-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': 'gridClassName()' },\n})\nexport class UniGridComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('grid');\n\n templateAreas = input<string>();\n templateColumns = input<string>();\n templateRows = input<string>();\n outline = input<Thickness>();\n outlineColor = input<Variant>();\n\n protected readonly gridClassName = computed(() =>\n css([\n this.templateAreas() && {\n gridTemplateAreas: this.templateAreas(),\n },\n this.templateColumns() && {\n gridTemplateColumns: this.templateColumns(),\n },\n this.templateRows() && {\n gridTemplateRows: this.templateRows(),\n },\n this.outline() && {\n gap: this.theme.getThickness(this.outline()!),\n },\n this.outlineColor() && {\n backgroundColor: this.theme.colorPalette()[this.outlineColor()!],\n },\n ])\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-row-layout], [row-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniRowComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('row');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minWidth]=\"0\"`\n * when the row must shrink inside a constrained flex parent (scroll or\n * text truncation containment).\n */\n override minWidth = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalFlexDirection } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-stack-layout], [stack-layout]',\n template: `<ng-content></ng-content>`,\n})\nexport class UniStackComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override flexDirection = input<OptionalFlexDirection>('column');\n /**\n * Defaults to `fit-content` (guards content collapse). Set `[minHeight]=\"0\"`\n * when the stack must shrink inside a constrained flex parent (scroll\n * containment).\n */\n override minHeight = input<number | string | undefined>('fit-content');\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { UniBoxComponent } from '../box/box.component';\nimport type { OptionalDisplay, OptionalWrap } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-wrap-layout], [wrap-layout]',\n imports: [],\n template: `<ng-content></ng-content>`,\n})\nexport class UniWrapComponent extends UniBoxComponent {\n override display = input<OptionalDisplay>('flex');\n override wrapItems = input<OptionalWrap>('wrap');\n\n constructor() {\n super();\n }\n}\n","// https://css-tricks.com/how-to-recreate-the-ripple-effect-of-material-design-buttons/\nimport { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\nimport { css } from '@emotion/css';\n\n@Directive({\n selector: '[uniRipple]',\n host: {\n '(click)': 'onClick($event)',\n },\n})\nexport class RippleDirective {\n private renderer = inject(Renderer2);\n el = inject(ElementRef);\n\n hostEl;\n\n constructor() {\n this.hostEl = this.el.nativeElement;\n }\n\n onClick(e: MouseEvent) {\n if (!e) return;\n let ripple, d;\n if (this.hostEl.querySelector(`.${this.rippleClass}`) === null) {\n ripple = this.renderer.createElement('span');\n this.renderer.addClass(ripple, this.rippleClass);\n this.renderer.appendChild(this.hostEl, ripple);\n }\n\n ripple = this.hostEl.querySelector(`.${this.rippleClass}`);\n this.renderer.appendChild(this.hostEl, ripple);\n this.renderer.removeClass(ripple, this.animateClass);\n\n if (!ripple.offsetHeight && !ripple.offsetWidth) {\n d = Math.max(this.hostEl.offsetWidth, this.hostEl.offsetHeight);\n this.renderer.setStyle(ripple, 'width', d + 'px');\n this.renderer.setStyle(ripple, 'height', d + 'px');\n }\n\n const x = e.pageX - this.hostEl.offsetLeft - ripple.offsetWidth / 2;\n const y = e.pageY - this.hostEl.offsetTop - ripple.offsetHeight / 2;\n\n this.renderer.setStyle(ripple, 'top', y + 'px');\n this.renderer.setStyle(ripple, 'left', x + 'px');\n this.renderer.addClass(ripple, this.animateClass);\n }\n\n rippleClass = css({\n display: 'block',\n position: 'absolute',\n background: 'rgba(255, 255, 255, 0.3)',\n borderRadius: '100%',\n transform: 'scale(0)',\n });\n\n animateClass = css({\n animation: 'ripple 0.65s linear',\n\n '@keyframes ripple': {\n '100%': {\n opacity: 0,\n transform: 'scale(2.5)',\n },\n },\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniButtonOptions } from './button.model';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent } from '../layout';\nimport { UniSymbolComponent } from '../symbol';\nimport { RippleDirective } from '../../directives/ripple';\n\n@Component({\n selector: 'button[uni-text-button], button[text-button]',\n template: `@if (loading()) {\n <div box-layout [class]=\"spinnerBox\"><uni-icon name=\"spinner\" /></div>\n }\n @if (symbolLeft()) {\n <uni-symbol [name]=\"symbolLeft()!\" class=\"symbolLeft\" />\n }\n <span><ng-content></ng-content></span>\n @if (symbolRight()) {\n <uni-symbol [name]=\"symbolRight()!\" class=\"symbolRight\" />\n } `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'button' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RippleDirective, // Keep this import\n UniIconComponent,\n UniBoxComponent,\n UniSymbolComponent,\n ],\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniButtonComponent extends BaseComponent<UniButtonOptions> {\n readonly disable = input<boolean | undefined>(false);\n readonly loading = input<boolean | undefined>(false);\n readonly fullWidth = input<boolean>(false);\n\n readonly symbolLeft = input<string>();\n readonly symbolRight = input<string>();\n\n spinnerBox = css({\n position: 'absolute',\n left: 0,\n width: '100%',\n height: '100%',\n paddingTop: '6%',\n paddingBottom: '6%',\n });\n\n protected readonly className = computed(() =>\n css([\n // Token-driven radius + typeface from component options. Applied before\n // `style()` so theme `sizes`/`fixed` (per-size fontSize, or hand-set\n // radii/families in older themes) keep winning.\n this.theme.radius(this.componentOptions().borderRadius),\n { ...this.theme.typeface(this.componentOptions().typeface) },\n this.style() && {\n ...this.style(), // TODO: Set priority on theme-defined styles\n },\n {\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n '& .symbolLeft': {\n marginLeft: -6,\n marginRight: 4,\n fontSize: this.symbolSize(),\n },\n '& span': {\n alignContent: 'center',\n flexGrow: 1,\n whiteSpace: 'nowrap',\n },\n '& .symbolRight': {\n marginRight: -6,\n marginLeft: 4,\n fontSize: this.symbolSize(),\n },\n },\n // Hover/pressed styling now lives in the theme's button variants\n // (solid vs. hollow, per-variant states). Only the keyboard-focus\n // indicator (WCAG 2.4.7) stays component-owned.\n {\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.variant()]}`,\n outlineOffset: '2px',\n },\n },\n this.fullWidth() && {\n width: '100%',\n },\n !this.loading() && {\n '&:disabled': {\n ...this.componentTheme().variants?.disabled,\n },\n },\n this.loading() && {\n '&:disabled symbol': {\n opacity: 0,\n },\n '&:disabled span': {\n opacity: 0,\n },\n },\n ])\n );\n\n symbolSize = computed(() => {\n const fontSize = parseFloat(String(this.style()['fontSize'] ?? ''));\n // Fall back to the default icon size when the theme defines no fontSize\n return (Number.isNaN(fontSize) ? 16 : fontSize) + 4;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-button-group',\n imports: [],\n template: ` <ng-content></ng-content>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniButtonGroupComponent {\n private themeService = inject(ThemeService);\n\n protected readonly className = computed(() => {\n return css({\n display: 'inline-flex',\n\n '& button': {\n ...this.themeService.border('quaternary'),\n marginRight: -1,\n },\n\n '& button:first-child': {\n borderTopLeftRadius: 4,\n borderBottomLeftRadius: 4,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:not(:first-child):not(:last-child)': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '& button:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 4,\n borderBottomRightRadius: 4,\n marginRight: 0,\n },\n });\n });\n}\n","/**\n * UniButtonGroupComponent Barrel File\n *\n * This file exports all public-facing elements of the button-group component.\n */\n\nexport { UniButtonGroupComponent } from './button-group.component';\nexport type { ButtonGroupConfig, ButtonGroupItem } from './button-group.model';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-content',\n imports: [],\n templateUrl: './card-content.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardContent' }],\n styleUrls: ['./card-content.component.scss'],\n})\nexport class UniCardContentComponent extends BaseComponent {}\n","<div [style]=\"style()\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport type {\n ColorKey,\n OptionalDisplay,\n OptionalTextAlign,\n Typeface,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\n\n/**\n * Typeface defaults by host element, so semantic HTML and the type scale\n * reinforce each other: `<h1 uni-text>` is already headline-large.\n */\nconst TagTypefaces: Record<string, Typeface> = {\n h1: 'headline-large',\n h2: 'headline-medium',\n h3: 'headline-small',\n h4: 'title-large',\n h5: 'title-medium',\n h6: 'title-small',\n p: 'body-1-long',\n small: 'caption',\n figcaption: 'caption',\n blockquote: 'quote',\n label: 'label',\n};\n\n/**\n * The typography primitive, applied as an attribute to any element so\n * semantics stay yours. The attribute value is the typeface:\n * `<h1 uni-text=\"display-small\">`, `<span uni-text=\"caption\">`, dynamic via\n * `[uni-text]=\"role()\"`. With no value, the typeface is inferred from the\n * host element (h1 → headline-large, p → body-1-long, …), falling back to\n * `title-small`; the `typeface` input remains as an explicit override.\n */\n@Component({\n selector: '[uni-text]',\n imports: [],\n template: '<ng-content></ng-content>',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniTextComponent {\n theme = inject(ThemeService);\n private readonly tag = (inject(ElementRef).nativeElement as HTMLElement).tagName.toLowerCase();\n\n /** Typeface via the selector attribute: `uni-text=\"headline-large\"`. */\n readonly uniText = input<Typeface | ''>('', { alias: 'uni-text' });\n /** Explicit typeface; the attribute value wins when both are set. */\n typeface = input<Typeface | undefined>(undefined);\n color = input<ColorKey>();\n display = input<OptionalDisplay>();\n align = input<OptionalTextAlign>();\n nowrap = input<boolean>();\n maxWidth = input<number>();\n ellipsis = input<boolean>(false);\n\n protected readonly resolvedTypeface = computed<Typeface>(\n () => this.uniText() || this.typeface() || TagTypefaces[this.tag] || 'title-small'\n );\n\n protected readonly className = computed(() => {\n return css([\n {\n ...this.theme.typeface(this.resolvedTypeface()),\n ...this.theme.color(this.color()),\n display: this.display(),\n },\n this.align() && {\n textAlign: this.align(),\n },\n this.nowrap() && {\n whiteSpace: 'nowrap',\n },\n this.maxWidth() && {\n maxWidth: this.maxWidth(),\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n display: 'inline-block',\n },\n this.ellipsis() && {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCardOptions } from './card.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card',\n imports: [],\n templateUrl: './card.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'card' }],\n})\nexport class UniCardComponent extends BaseComponent<UniCardOptions> {\n /**\n * Token-resolved frame (variant-named border primitive, radii, elevation)\n * under the merged theme style, so hand-authored fixed/variant styles from\n * older themes keep winning.\n */\n protected readonly cardStyle = computed(() => ({\n ...this.theme.border(this.componentOptions().border ?? this.variant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.style(),\n }));\n}\n","<div [style]=\"cardStyle()\">\n <ng-content></ng-content>\n</div>\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniTextComponent } from '../../text';\nimport { UniCardComponent } from '../card.component';\nimport type { Typeface } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-card-header',\n imports: [UniTextComponent, NgClass],\n templateUrl: './card-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'cardHeader' }],\n styleUrls: ['./card-header.component.scss'],\n})\nexport class UniCardHeaderComponent extends BaseComponent {\n private card = inject(UniCardComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n title = input<string>('');\n titleTextRole = input<Typeface>('title-large');\n\n constructor() {\n super();\n\n // this.variant = this.card?.variant;\n }\n\n className = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n });\n}\n","<div [style]=\"style()\" [ngClass]=\"className\">\n <span uni-text [typeface]=\"titleTextRole()\">{{ title() }}</span>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniCheckboxOptions } from './checkbox.model';\n\n@Component({\n selector: 'uni-checkbox',\n imports: [UniTextComponent],\n templateUrl: './checkbox.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'checkbox' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniCheckboxComponent\n extends BaseComponent<UniCheckboxOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n /**\n * Mixed state for \"select all\"-style parent checkboxes. Cleared\n * automatically on the next user interaction, matching native behavior.\n */\n readonly indeterminate = model<boolean>(false);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.indeterminate.set(false);\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n protected readonly checkboxLabel = computed(() =>\n css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '&:hover .checkbox svg path': this.disabled()\n ? {}\n : {\n strokeDashoffset: 0,\n },\n\n '& .checkbox': {\n height: this.componentOptions().size,\n width: this.componentOptions().size,\n },\n\n '& .checkbox svg': {\n display: 'block',\n },\n\n '& .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.componentOptions().boxColor ?? 'surface'),\n stroke: this.getThemeColor(this.variant()),\n strokeWidth: 2,\n rx: this.componentOptions().borderRadius || 2,\n ry: this.componentOptions().borderRadius || 2,\n transition: 'all 0.2s ease',\n },\n\n // Check/dash draw on the variant-filled box, so they wear its on-color.\n '& .checkbox svg .checkbox-check': {\n fill: 'none',\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n strokeDasharray: 18,\n strokeDashoffset: 18,\n transition: 'all 0.5s ease',\n },\n\n '& .checkbox svg .checkbox-dash': {\n stroke: this.getOnColor(this.variant()),\n strokeWidth: 2,\n strokeLinecap: 'round',\n opacity: 0,\n transition: 'opacity 0.2s ease',\n },\n })\n );\n\n protected readonly checkboxInput = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .checkbox': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .checkbox svg .checkbox-check': {\n strokeDashoffset: 0,\n },\n\n '&:indeterminate + .checkbox svg .checkbox-box': {\n fill: this.getThemeColor(this.variant()),\n },\n\n '&:indeterminate + .checkbox svg .checkbox-dash': {\n opacity: 1,\n },\n\n '&:disabled + .checkbox': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .checkbox': {\n position: 'relative',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '-4px',\n left: '-4px',\n right: '-4px',\n bottom: '-4px',\n border: `2px solid ${this.getThemeColor(this.variant())}`,\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 4}px`,\n pointerEvents: 'none',\n },\n },\n })\n );\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n\n /** The content color paired with a variant fill (on-primary, on-warn, …). */\n getOnColor(variant: ColorToken) {\n const colors = this.theme.colors();\n return colors[`on-${variant}`] ?? colors['on-primary'];\n }\n}\n","<label [class]=\"checkboxLabel()\">\n <input\n type=\"checkbox\"\n [class]=\"checkboxInput()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"checkbox\">\n <svg viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <rect class=\"checkbox-box\" x=\"1\" y=\"1\" width=\"18\" height=\"18\"></rect>\n <polyline class=\"checkbox-check\" points=\"4 11 8 15 16 6\"></polyline>\n <line class=\"checkbox-dash\" x1=\"5\" y1=\"10\" x2=\"15\" y2=\"10\"></line>\n </svg>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import { Directive, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[uniBodyRender]',\n})\nexport class BodyRenderDirective implements OnInit {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngOnInit() {\n const element = this.el.nativeElement;\n this.renderer.appendChild(document.body, element);\n }\n}\n","import { Directive, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[uni-drag-n-drop], [dragAndDrop]',\n host: {\n '[style.opacity]': 'workspaceOpacity()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class DragAndDropDirective {\n // TODO(v4): rename to fileDropped — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFileDropped = output<FileList>();\n\n protected workspaceOpacity = signal('1');\n\n // Dragover listener, when files are dragged over our host element\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('0.5');\n }\n\n // Dragleave listener, when files are dragged away from our host element\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n }\n\n // Drop listener, when files are dropped on our host element\n onDrop(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.workspaceOpacity.set('1');\n const files = event.dataTransfer?.files;\n if (files && files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { type IconName } from '../icon/icon.record';\nimport { RippleDirective } from '../../directives';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniIconComponent } from '../icon';\nimport { ThemeService } from '../../theming/theme.service';\nimport { visuallyHidden } from '../../cdk';\nimport type { RadiiSize, Size, Variant } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'button[uni-icon-button], button[icon-button]',\n imports: [UniSymbolComponent, UniIconComponent],\n template: `\n @if (loading()) {\n <uni-icon name=\"spinner\" />\n } @else if (symbolName()) {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"opticalSize()\" />\n } @else if (iconName()) {\n <uni-icon [name]=\"iconName()!\" [size]=\"glyphSize()\" />\n }\n <!-- Projected text is the button's accessible name (visually hidden) -->\n <span [class]=\"srOnlyClass\"><ng-content /></span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disable() || loading() || null',\n '[attr.aria-busy]': \"loading() ? 'true' : null\",\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class]': 'className()',\n },\n hostDirectives: [{ directive: RippleDirective }],\n})\nexport class UniIconButtonComponent {\n private theme = inject(ThemeService);\n config = this.theme.component<{ borderRadius?: RadiiSize }>('iconButton');\n\n /**\n * Accessible name for the button. Alternative to projecting text content\n * (`<button icon-button>Close</button>`); one of the two is required for\n * an icon-only button to be announced correctly.\n */\n ariaLabel = input<string>();\n\n iconName = input<IconName>();\n symbolName = input<string>();\n variant = input<Variant>('ghost');\n size = input<Size>('lg');\n disable = input<boolean>();\n loading = input<boolean>();\n opticalSize = input(24);\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n /**\n * Sizes `iconName` from the size token's `fontSize`, the same value that sizes\n * a `symbolName` ligature — so the two paths render the same glyph size and\n * `symbolName` → `iconName` is a like-for-like swap. Without it a masked icon\n * fills the whole button box, since the base size tokens carry no padding.\n * Themes that do use padding (Carbon) set a matching `fontSize`, so they land\n * on the same glyph either way.\n */\n protected readonly glyphSize = computed(() => {\n // Size tokens are Emotion style objects, so `fontSize` is typed wider than\n // a CSS length; anything exotic falls back to filling the button as before.\n const fontSize = this.config().sizes?.[this.size()]?.fontSize;\n return typeof fontSize === 'number' || typeof fontSize === 'string' ? fontSize : undefined;\n });\n\n protected readonly className = computed(() => {\n const { sizes, variants } = this.config();\n const sizeConfig = sizes && sizes[this.size()];\n const colorConfig = variants && variants[this.variant()];\n\n return css([\n {\n position: 'relative',\n overflow: 'hidden',\n outline: 0,\n border: 0,\n cursor: 'pointer',\n transition: 'all 0.28s ease',\n // Token-driven radius (`max` = circle) with the legacy 999 fallback\n // for hand-authored themes that predate iconButton options.\n ...(this.theme.radius(this.config().options?.borderRadius) ?? { borderRadius: 999 }),\n // Block-level, but centring: the size tokens make the box bigger than\n // the glyph (an `sm` button is 22px around an 18px icon), so a plain\n // `display: block` parks the glyph in the top-left corner. Flex is\n // still block-level, so nothing about the button's own layout changes.\n // The accessible-name span is absolutely positioned and so stays out\n // of the flex flow.\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n '&:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '& symbol': {\n fontSize: 'inherit',\n lineHeight: 'inherit',\n },\n },\n sizeConfig && {\n ...sizeConfig,\n },\n colorConfig && {\n ...colorConfig,\n },\n this.symbolName() &&\n !this.loading() && {\n padding: 0,\n },\n this.variant() !== 'ghost' && {\n '&:hover': {\n ...this.theme.boxShadow('raised'),\n },\n },\n this.variant() === 'ghost' && {\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n },\n !this.loading() && {\n '&:disabled': {\n ...this.config().variants?.disabled,\n },\n },\n ]);\n });\n}\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniRecordDatasource, UniServerSideDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniCenterComponent, UniRowComponent } from '../layout';\nimport type { UniDataSearchOptions } from './data-search.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-data-search',\n imports: [UniRowComponent, UniIconButtonComponent, UniIconComponent, UniCenterComponent],\n templateUrl: './data-search.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataSearch' }],\n})\nexport class UniDataSearchComponent<T> extends BaseComponent<UniDataSearchOptions> {\n datasource = input<UniDatasource<T>>();\n placeholder = input<string>('Search');\n fields = input<string[]>();\n\n searchValue = signal('');\n\n inputClassName!: string;\n\n constructor() {\n super();\n\n effect(() => {\n this.inputClassName = css({\n border: 'none',\n padding: 0,\n fontSize: 16,\n flexGrow: 1,\n height: 18,\n\n '&:focus-visible': {\n outline: 'none',\n },\n\n '&::placeholder': {\n ...this.theme.color(this.componentOptions().placeholderColor),\n },\n });\n });\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchValue.set(value);\n this.filterData(value);\n }\n\n filterData(value: string) {\n const datasource = this.datasource();\n if (!datasource) return;\n\n const fields = this.fields();\n\n if (datasource instanceof UniRecordDatasource) {\n // Client-side filtering with predicate function\n datasource.setFilter((object) => {\n let searchObject = object;\n if (fields && fields.length > 0) {\n searchObject = pick(object as Record<string, unknown>, fields) as T;\n }\n\n return Object.values(searchObject as object)\n .join(' ')\n .toLowerCase()\n .includes(value.toLowerCase());\n });\n } else if (datasource instanceof UniServerSideDatasource) {\n // Server-side filtering with filter object\n const filterObject: Record<string, unknown> = {};\n\n if (fields && fields.length > 0) {\n // Apply search to specific fields\n fields.forEach((field) => {\n filterObject[field] = value;\n });\n } else {\n // Generic search filter\n filterObject['search'] = value;\n }\n\n datasource.setFilter(filterObject);\n }\n }\n\n clearFilter() {\n const datasource = this.datasource();\n if (!datasource) return;\n\n if (datasource instanceof UniRecordDatasource) {\n datasource.setFilter(() => true);\n } else if (datasource instanceof UniServerSideDatasource) {\n datasource.clearFilter();\n }\n\n this.searchValue.set('');\n }\n}\n\nfunction pick(obj: Record<string, unknown>, keys: string[]) {\n return keys.reduce<Record<string, unknown>>((acc, key) => {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\n","<div\n row-layout\n alignItems=\"center\"\n [border]=\"componentOptions().border\"\n [height]=\"26\"\n [borderRadius]=\"componentOptions().borderRadius\"\n paddingLeft=\"xs\"\n>\n <div center-layout [height]=\"18\" [width]=\"18\" paddingRight=\"xs\">\n <uni-icon name=\"search\" />\n </div>\n <input\n type=\"text\"\n (input)=\"onInput($event)\"\n [class]=\"inputClassName\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchValue()\"\n />\n <div row-layout alignItems=\"center\" [width]=\"22\">\n @if (!!searchValue()) {\n <button icon-button (click)=\"clearFilter()\" symbolName=\"close\" size=\"sm\">Clear Search</button>\n }\n </div>\n</div>\n","/**\n * UniDataSearchComponent Barrel File\n *\n * This file exports all public-facing elements of the data-search component.\n */\n\nexport { UniDataSearchComponent } from './data-search.component';\nexport type { UniDataSearchOptions } from './data-search.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport type {\n ContainerColorToken,\n OptionalSize,\n Radius,\n Variant,\n} from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport type { ScrollbarAppearance } from './scroll-area.types';\n\ntype OptionalValue = string | number | undefined;\n\n/**\n * Native scroll area with theme-driven scrollbar styling.\n *\n * Scrollbars are styled entirely through Emotion-generated CSS:\n * `::-webkit-scrollbar` rules cover Chromium/Safari, with a\n * `scrollbar-width`/`scrollbar-color` fallback for Firefox.\n */\n@Component({\n selector: '[uni-scroll-area], [scroll-area]',\n imports: [],\n template: `<div #viewport [class]=\"viewportClassName()\">\n <div\n #content\n [class]=\"contentClassName()\"\n [class.isVerticallyScrollable]=\"isVerticallyScrollable()\"\n >\n <ng-content></ng-content>\n </div>\n </div>`,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniScrollAreaComponent {\n theme = inject(ThemeService);\n\n isVerticallyScrollable = signal<boolean>(false);\n\n viewport = viewChild.required<ElementRef<HTMLDivElement>>('viewport');\n content = viewChild.required<ElementRef<HTMLDivElement>>('content');\n\n color = input<ContainerColorToken>();\n borderRadius = input<Radius>('sm');\n padding = input<OptionalSize>();\n paddingHorizontal = input<OptionalSize>();\n paddingVertical = input<OptionalSize>();\n paddingLeft = input<OptionalSize>();\n paddingRight = input<OptionalSize>();\n paddingTop = input<OptionalSize>();\n paddingBottom = input<OptionalSize>();\n border = input<Variant>();\n height = input<OptionalValue>();\n width = input<OptionalValue>();\n appearance = input<ScrollbarAppearance>('compact');\n autoHeightDisabled = input<boolean>(false);\n verticalScrollPadding = input<number>(29);\n\n scrollable = output<boolean>();\n\n public scrollToBottom() {\n const viewport = this.viewport().nativeElement;\n viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });\n }\n\n public scrollToTop() {\n this.viewport().nativeElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n overflow: 'hidden',\n height: this.height(),\n width: this.width(),\n\n ...this.theme.colorPair(this.color()),\n ...this.theme.radius(this.borderRadius()),\n ...this.theme.border(this.border()),\n });\n });\n\n protected viewportClassName = computed(() => {\n const palette = this.theme.colors();\n const thumbColor = palette['on-primary-surface'];\n const trackColor = palette['primary-surface'];\n const thickness = this.appearance() === 'standard' ? 13 : 8;\n\n return css([\n {\n height: '100%',\n width: '100%',\n overflow: 'auto',\n\n '&::-webkit-scrollbar': {\n width: thickness,\n height: thickness,\n },\n\n '&::-webkit-scrollbar-thumb': {\n backgroundColor: thumbColor,\n borderRadius: 7,\n border: `3px solid ${trackColor}`,\n boxSizing: 'border-box',\n },\n\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n },\n\n // Firefox has no ::-webkit-scrollbar support; fall back to the\n // standard scrollbar properties there.\n '@supports not selector(::-webkit-scrollbar)': {\n scrollbarWidth: this.appearance() === 'standard' ? 'auto' : 'thin',\n scrollbarColor: `${thumbColor} ${trackColor}`,\n },\n },\n this.appearance() === 'standard' && {\n '&::-webkit-scrollbar-track': {\n backgroundColor: trackColor,\n borderRadius: 12,\n ...this.theme.border('quaternary'),\n },\n },\n ]);\n });\n\n protected contentClassName = computed(() =>\n css({\n ...this.theme.padding(this.padding()),\n ...this.theme.horizontalPadding(this.paddingHorizontal()),\n ...this.theme.verticalPadding(this.paddingVertical()),\n ...this.theme.paddingLeft(this.paddingLeft()),\n ...this.theme.paddingRight(this.paddingRight()),\n ...this.theme.paddingTop(this.paddingTop()),\n ...this.theme.paddingBottom(this.paddingBottom()),\n\n '&.isVerticallyScrollable': {\n paddingRight: this.verticalScrollPadding(),\n },\n })\n );\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n afterNextRender(() => {\n const viewport = this.viewport().nativeElement;\n const content = this.content().nativeElement;\n\n const updateScrollable = () => {\n const scrollable = viewport.scrollHeight > viewport.clientHeight;\n if (scrollable !== this.isVerticallyScrollable()) {\n this.isVerticallyScrollable.set(scrollable);\n this.scrollable.emit(scrollable);\n }\n };\n\n const observer = new ResizeObserver(updateScrollable);\n observer.observe(viewport);\n observer.observe(content);\n destroyRef.onDestroy(() => observer.disconnect());\n\n updateScrollable();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource, SortDirection } from '../../cdk';\nimport { UniSymbolComponent } from '../symbol/symbol.component';\n\n@Component({\n selector: 'uni-sort-header',\n imports: [UniSymbolComponent],\n templateUrl: './sort-header.component.html',\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSortHeaderComponent<T> {\n column = input<keyof T>();\n datasource = input<UniDatasource<T>>();\n\n // A real <button> makes sorting keyboard-operable (Enter/Space) for free\n protected readonly buttonClass = css({\n all: 'unset',\n cursor: 'pointer',\n display: 'inline-block',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 2,\n },\n });\n\n direction = computed(() => {\n const ds = this.datasource();\n if (!ds) return 'indet';\n\n return ds.sortColumn() === this.column() ? ds.sortDirection() : 'indet';\n });\n\n protected readonly className = computed(() => {\n return css({\n cursor: 'pointer',\n position: 'relative',\n height: 24,\n\n '& .sort-icon': {\n position: 'absolute',\n right: -24,\n top: -4,\n height: 24,\n width: 24,\n\n transition: 'all 350ms ease-in-out',\n transform: 'rotate(0)',\n },\n\n '& .sort-icon.asc': {\n transform: 'rotate(-180deg)',\n },\n\n '& .sort-icon.indet': {\n opacity: 0,\n transform: 'rotate(0)',\n },\n });\n });\n\n cycleSort() {\n const cycle: SortDirection[] = ['asc', 'desc', 'indet'];\n this.sortDatasource(cycle[cycle.indexOf(this.direction()) + 1] || cycle[0]);\n }\n\n sortDatasource(direction: SortDirection) {\n this.datasource()?.sortRecords({\n column: this.column(),\n direction,\n });\n }\n}\n","<button type=\"button\" [class]=\"buttonClass\" (click)=\"cycleSort()\">\n <ng-content></ng-content>\n <div class=\"sort-icon\" [class]=\"direction()\">\n <uni-symbol name=\"arrow_upward\" />\n </div>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n type TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniDatasource, UniServerSideDatasource } from '../../cdk';\nimport { fadeIn, Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniBoxComponent, UniCenterComponent } from '../layout';\nimport { UniScrollAreaComponent } from '../scroll-area/scroll-area.component';\nimport { UniSortHeaderComponent } from '../sort-header/sort-header.component';\nimport { UniTextComponent } from '../text/text.component';\nimport { ColumnDefinition, type UniDataTableOptions } from './data-table.models';\n\n@Component({\n selector: 'uni-data-table',\n imports: [\n NgTemplateOutlet,\n UniBoxComponent,\n UniScrollAreaComponent,\n UniTextComponent,\n UniSortHeaderComponent,\n UniIconComponent,\n UniCenterComponent,\n ],\n templateUrl: './data-table.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dataTable' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDataTableComponent<T> extends BaseComponent<UniDataTableOptions> {\n datasource = input.required<UniDatasource<T>>();\n columns = input.required<ColumnDefinition<T>[]>();\n\n detailRowTemplate = input<TemplateRef<{ $implicit: T; index: number }>>();\n expandedIndex = signal<number | null>(null);\n\n useMultiSelect = input<boolean>(false);\n useRowClick = input<boolean>(true);\n highlight? = input<(row: T) => boolean>();\n\n height = input<string>();\n scrollable = signal(false);\n\n loadingOverlayClass = css({\n animation: 'fadeIn 350ms ease-in-out',\n '@keyframes fadeIn': { ...fadeIn },\n });\n\n rowSelect = output<T>();\n rowClick = output<T>();\n\n protected readonly tableClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n width: '100%',\n borderSpacing: 0,\n })\n );\n\n protected readonly headerClass = computed(() =>\n css({\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly footerClass = computed(() =>\n css({\n borderTop: this.getBorder(this.componentOptions().thHorizontalBorder),\n\n '&:empty': {\n display: 'none',\n },\n })\n );\n\n protected readonly thClass = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().thColor),\n\n position: 'sticky',\n top: 0,\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n\n ...this.theme.padding(this.componentOptions().thPadding),\n\n borderBottom: this.getBorder(this.componentOptions().thHorizontalBorder),\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().thVerticalBorder),\n },\n '&:last-child.scrollable': {\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n },\n })\n );\n\n protected readonly tdClass = computed(() =>\n css([\n {\n textAlign: 'center',\n padding: 0, // Reset renderers default padding\n '&:not(:last-child)': {\n borderRight: this.getBorder(this.componentOptions().tdVerticalBorder),\n },\n '&:last-child.scrollable': {\n // The last scrollable column allows space for the scrollbar.\n paddingRight: 29,\n },\n '&.sticky': {\n position: 'sticky',\n left: 0,\n zIndex: Z_INDEX.sticky,\n ...this.theme.colorPair(this.componentOptions().tdStickyColor),\n },\n '&:not(.template)': {\n // Allow templates to define their own styles\n ...this.theme.padding(this.componentOptions().tdPadding),\n },\n },\n ])\n );\n\n protected readonly trClass = computed(() =>\n css(\n {\n '& td': {\n ...this.theme.backgroundColor('transparent'),\n transition: 'all 0.28s ease',\n },\n ':not(:last-child) td': {\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n },\n this.useRowClick() && {\n '&:hover td': {\n ...this.theme.backgroundColor(this.componentOptions().rowHoverColor),\n cursor: 'pointer',\n },\n }\n )\n );\n\n protected readonly detailRowClass = computed(() =>\n css({\n display: 'table-row',\n visibility: 'hidden',\n '&.expanded': {\n visibility: 'visible',\n },\n '& td': {\n padding: 0,\n borderBottom: this.getBorder(this.componentOptions().tdHorizontalBorder),\n },\n '& td .detail-content-wrapper': {\n display: 'grid',\n gridTemplateRows: '0fr',\n transition: 'grid-template-rows 0.3s ease',\n overflow: 'hidden',\n\n '& .detail-inner': {\n minHeight: 0,\n },\n },\n '&.expanded td .detail-content-wrapper': {\n gridTemplateRows: '1fr',\n },\n })\n );\n\n // Loading state detection\n isLoading = linkedSignal(() => {\n const datasource = this.datasource();\n if (datasource && datasource instanceof UniServerSideDatasource) {\n // For server-side datasource, use the built-in loading state\n return datasource.isLoading();\n } else {\n // For client-side datasource, no loading state needed\n return false;\n }\n });\n\n toggleRow(index: number) {\n this.expandedIndex.update((current) => (current === index ? null : index));\n }\n\n handleRowClick(row: T, index: number) {\n this.rowClick.emit(row);\n\n this.toggleRow(index);\n }\n\n /** aria-sort value for a column header, or null when the column is unsorted. */\n protected ariaSort(column: ColumnDefinition<T>): 'ascending' | 'descending' | null {\n const ds = this.datasource();\n if (!ds || ds.sortColumn() !== column.columnDef) return null;\n const direction = ds.sortDirection();\n return direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : null;\n }\n\n isHighlighted(row: T) {\n const callback = this.highlight && this.highlight();\n if (!callback) return false;\n return callback(row);\n }\n\n protected readonly String = String;\n\n handleScrollable(scrollable: boolean) {\n this.scrollable.set(scrollable);\n }\n\n getBorder(name: string | undefined) {\n return name ? this.theme.theme().borders[name] : undefined;\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div\n box-layout\n [color]=\"componentOptions().color\"\n [border]=\"componentOptions().border\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [elevation]=\"componentOptions().elevation\"\n overflow=\"hidden\"\n >\n <div\n box-layout\n [padding]=\"componentOptions().headerPadding\"\n [color]=\"componentOptions().headerColor\"\n [class]=\"headerClass()\"\n >\n <ng-content select=\"data-table-header\"></ng-content>\n </div>\n\n <div box-layout [height]=\"height()\" position=\"relative\" [attr.aria-busy]=\"isLoading()\">\n <div scroll-area [verticalScrollPadding]=\"0\" (scrollable)=\"handleScrollable($event)\">\n <table [class]=\"tableClass()\">\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th\n scope=\"col\"\n [attr.aria-sort]=\"ariaSort(column)\"\n [class]=\"thClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [style.text-align]=\"column.textAlign\"\n >\n <uni-sort-header [datasource]=\"datasource()\" [column]=\"column.columnDef\">\n <span uni-text [typeface]=\"componentOptions().thTextRole\">{{ column.header }}</span>\n </uni-sort-header>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (record of ds.records(); track record; let i = $index) {\n <tr\n [class]=\"trClass()\"\n [attr.tabindex]=\"useRowClick() ? 0 : null\"\n (click)=\"handleRowClick(record, $index)\"\n (keydown.enter)=\"useRowClick() && handleRowClick(record, $index)\"\n (keydown.space)=\"\n useRowClick() && handleRowClick(record, $index);\n useRowClick() && $event.preventDefault()\n \"\n >\n @for (column of columns(); track column) {\n <td\n [class]=\"tdClass()\"\n [class.scrollable]=\"scrollable()\"\n [class.sticky]=\"column.isSticky\"\n [class.template]=\"!!column.template\"\n [style.text-align]=\"column.textAlign\"\n >\n @if (column.template) {\n <ng-container\n [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"record\"\n ></ng-container>\n } @else {\n <span uni-text [typeface]=\"componentOptions().tdTextRole\">\n @if (!column.cell) {\n {{ record[column.columnDef] }}\n } @else {\n {{ column.cell(record) }}\n }\n </span>\n }\n </td>\n }\n </tr>\n @if (detailRowTemplate()) {\n <!-- Collapsed detail rows are inert: invisible to screen\n readers and unreachable by keyboard until expanded -->\n <tr\n [class]=\"detailRowClass()\"\n [class.expanded]=\"expandedIndex() === $index\"\n [attr.inert]=\"expandedIndex() === $index ? null : ''\"\n >\n <td [attr.colspan]=\"columns().length\">\n <div class=\"detail-content-wrapper\">\n <div class=\"detail-inner\">\n <ng-container\n [ngTemplateOutlet]=\"detailRowTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: record,\n index: i,\n }\"\n ></ng-container>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Loading Overlay -->\n @if (isLoading()) {\n <div\n uni-center-layout\n role=\"status\"\n aria-label=\"Loading\"\n position=\"absolute\"\n [inset]=\"0\"\n [backgroundColor]=\"componentOptions().loadingOverlayColor\"\n [class]=\"loadingOverlayClass\"\n zIndex=\"overlay\"\n >\n <!-- Loading Spinner -->\n <div\n uni-box-layout\n [height]=\"componentOptions().loadingSpinnerSize\"\n [width]=\"componentOptions().loadingSpinnerSize\"\n >\n <uni-icon name=\"spinner\" [color]=\"componentOptions().loadingSpinnerColor\" />\n </div>\n </div>\n }\n </div>\n\n <div\n box-layout\n [padding]=\"componentOptions().footerPadding\"\n [color]=\"componentOptions().footerColor\"\n [class]=\"footerClass()\"\n >\n <ng-content select=\"data-table-footer\"></ng-content>\n </div>\n </div>\n}\n","/**\n * UniDataTableComponent Barrel File\n *\n * This file exports all public-facing elements of the data-table component.\n */\n\nexport { UniDataTableComponent } from './data-table.component';\nexport type { ColumnDefinition, UniDataTableOptions } from './data-table.models';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button';\nimport type { UniDialogOptions } from './dialog.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'dialog[uni-dialog]',\n imports: [UniIconButtonComponent, CommonModule],\n template: `\n @if (defaultCloseButton()) {\n <button\n icon-button\n iconName=\"close\"\n variant=\"ghost\"\n (click)=\"close()\"\n [class]=\"closeButton\"\n size=\"md\"\n >\n Close\n </button>\n }\n <ng-content></ng-content>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialog' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-labelledby]': 'hasTitle() ? titleId : null',\n '[attr.aria-label]': 'ariaLabel() ?? null',\n '[class]': 'className()',\n '(click)': 'backdropClick($event)',\n '(cancel)': 'escapeCancel($event)',\n '(animationend)': 'closingAnimation($event)',\n },\n})\nexport class UniDialogComponent extends BaseComponent<UniDialogOptions> {\n private elem = inject(ElementRef);\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>(false);\n\n /**\n * Accessible name for dialogs without a DialogHeader. When a DialogHeader\n * is present it labels the dialog automatically via aria-labelledby.\n */\n ariaLabel = input<string>();\n\n /**\n * CSS selector for the element to focus when the dialog opens. Defaults to\n * the browser's native behavior (first focusable element).\n */\n initialFocus = input<string>();\n\n defaultCloseButton = input<boolean>();\n\n /** Id referenced by aria-labelledby; DialogHeader attaches it to the title. */\n readonly titleId = uniqueId('uni-dialog-title');\n readonly hasTitle = signal(false);\n\n /** Emits true once opened and false once the closing animation finishes. */\n showing = output<boolean>();\n\n constructor() {\n super();\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n private get _dialog(): HTMLDialogElement {\n return this.elem.nativeElement;\n }\n\n protected readonly className = computed(() =>\n css([\n {\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.border(this.componentOptions().border),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n ...this.theme.padding(this.componentOptions().padding || 'none'),\n\n '&::backdrop': {\n ...this.componentOptions().backdrop,\n },\n\n '&[open], &::backdrop': {\n animation: `${this.dialogFadeIn} ease-in 350ms`,\n },\n\n '&[closing], &[closing]::backdrop': {\n animation: `${this.dialogFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected backdropClick(event: Event) {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') {\n this.close();\n }\n }\n\n /**\n * Escape fires the native 'cancel' event, which would close the dialog\n * instantly and leave our show-state out of sync. Route it through the\n * animated close() instead.\n */\n protected escapeCancel(event: Event) {\n event.preventDefault();\n this.close();\n }\n\n protected closingAnimation(e: AnimationEvent) {\n // Close the dialog if the animation is finished\n if (e.animationName.includes(this.dialogFadeOut)) {\n this._dialog.close();\n this._dialog.removeAttribute('closing');\n this.showing.emit(false);\n }\n }\n\n closeButton = css({\n position: 'absolute',\n right: 12,\n top: 12,\n });\n\n private dialogFadeIn = keyframes({ ...fadeIn });\n private dialogFadeOut = keyframes({ ...fadeOut });\n\n open() {\n if (this._dialog.open) return;\n\n this._dialog.removeAttribute('closing');\n this._dialog.showModal();\n\n // Native showModal focuses the first focusable element; allow consumers\n // to direct initial focus somewhere more useful (e.g. past the close\n // button, onto a primary action or first form field).\n const selector = this.initialFocus();\n if (selector) {\n this._dialog.querySelector<HTMLElement>(selector)?.focus();\n }\n\n this.show.set(true);\n this.showing.emit(true);\n }\n\n close() {\n // Strict check: outside a real <dialog> host (e.g. unit tests) `open`\n // is undefined and close() should still run.\n if (this._dialog.open === false) return;\n\n this._dialog.setAttribute('closing', 'true');\n this.show.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniButtonComponent } from '../../button';\nimport { UniRowComponent } from '../../layout';\nimport { BaseComponent, COMPONENT_NAME } from '../../base/base.component';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { JustifyContent, NullableSize, Size, Variant } from '@uni-design-system/uni-core';\nimport type { UniDialogButtonsOptions } from './dialog-buttons.model';\n\n@Component({\n selector: '[uni-dialog-buttons], [dialog-buttons]',\n imports: [UniRowComponent, UniButtonComponent],\n templateUrl: './dialog-buttons.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogButtons' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDialogButtonsComponent extends BaseComponent<UniDialogButtonsOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n confirmButtonText = input<string>();\n confirmButtonVariant = input<Variant>();\n cancelButtonText = input<string>();\n cancelButtonVariant = input<Variant>();\n disableConfirm = input<boolean>();\n padding = input<NullableSize>();\n paddingBottom = input<NullableSize>();\n justifyContent = input<JustifyContent>();\n\n confirmed = output();\n\n // Inputs win over theme options; the trailing literal is the legacy default.\n protected confirmVariant = computed(\n () => this.confirmButtonVariant() ?? this.componentOptions().confirmButtonVariant ?? 'primary'\n );\n protected cancelVariant = computed(\n () => this.cancelButtonVariant() ?? this.componentOptions().cancelButtonVariant ?? 'warn'\n );\n protected paddingValue = computed(() => this.padding() ?? this.componentOptions().padding ?? 'md');\n protected paddingBottomValue = computed(\n () => this.paddingBottom() ?? this.componentOptions().paddingBottom ?? 'lg'\n );\n protected justifyContentValue = computed(\n () => this.justifyContent() ?? this.componentOptions().justifyContent ?? 'center'\n );\n protected gapValue = computed(() => this.componentOptions().gap ?? 'md');\n protected buttonSize = computed<Size>(() => this.componentOptions().buttonSize ?? 'lg');\n\n protected readonly className = computed(() =>\n css([\n this.componentTheme().fixed,\n this.componentOptions().stretch && {\n width: '100%',\n minWidth: '100%',\n '& > button': { flex: '1 1 50%', maxWidth: '50%' },\n },\n ])\n );\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [gap]=\"gapValue()\"\n [padding]=\"paddingValue()\"\n [paddingBottom]=\"paddingBottomValue()\"\n [justifyContent]=\"justifyContentValue()\"\n [flexDirection]=\"componentOptions().reverseOrder ? 'row-reverse' : 'row'\"\n [class]=\"className()\"\n>\n <button\n text-button\n [variant]=\"confirmVariant()\"\n [size]=\"buttonSize()\"\n (click)=\"confirmed.emit(); closeDialog()\"\n [disable]=\"disableConfirm()\"\n >\n {{ confirmButtonText() || 'Confirm' }}\n </button>\n <button text-button [variant]=\"cancelVariant()\" [size]=\"buttonSize()\" (click)=\"closeDialog()\">\n {{ cancelButtonText() || 'Cancel' }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport { UniDialogComponent } from '../dialog.component';\nimport type { UniDialogHeaderOptions } from './dialog-header.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[uni-dialog-header]',\n imports: [UniBoxComponent, UniIconButtonComponent, UniTextComponent, UniRowComponent],\n templateUrl: './dialog-header.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dialogHeader' }],\n})\nexport class UniDialogHeaderComponent extends BaseComponent<UniDialogHeaderOptions> {\n private dialog = inject(UniDialogComponent, {\n optional: true,\n host: true,\n skipSelf: true,\n });\n\n /** Attached to the title element so the parent dialog is labelled by it. */\n protected readonly titleId = this.dialog?.titleId ?? null;\n\n constructor() {\n super();\n this.dialog?.hasTitle.set(true);\n }\n\n closeDialog() {\n this.dialog?.close();\n }\n}\n","<div\n row-layout\n [color]=\"componentOptions().color\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [height]=\"componentOptions().height\"\n alignItems=\"center\"\n [paddingHorizontal]=\"componentOptions().paddingHorizontal ?? 'sm'\"\n>\n <!-- Balance spacer: only centered titles need to offset the close button. -->\n @if ((componentOptions().textAlign || 'center') === 'center') {\n <div box-layout [width]=\"26\"></div>\n }\n <div box-layout [grow]=\"1\" [attr.id]=\"titleId\">\n <span uni-text\n [typeface]=\"componentOptions().textRole\"\n [color]=\"componentOptions().textColor\"\n display=\"block\"\n [align]=\"componentOptions().textAlign || 'center'\"\n ><ng-content></ng-content\n ></span>\n </div>\n <button\n icon-button\n [iconName]=\"componentOptions().closeButtonIcon\"\n [symbolName]=\"componentOptions().closeButtonSymbol\"\n variant=\"ghost\"\n (click)=\"closeDialog()\"\n [size]=\"componentOptions().closeButtonSize || 'md'\"\n >\n Close\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport type { Border, Orientation } from '@uni-design-system/uni-core';\n\n@Component({\n selector: 'uni-divider',\n imports: [],\n template: ``,\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniDividerComponent {\n themeService = inject(ThemeService);\n\n orientation = input<Orientation>('horizontal');\n border = input<Border>('primary');\n\n protected readonly className = computed(() => {\n return css([\n {\n display: 'block',\n },\n this.orientation() === 'horizontal' && {\n ...this.themeService.borderBottom(this.border()),\n width: '100%',\n },\n this.orientation() === 'vertical' && {\n ...this.themeService.borderLeft(this.border()),\n height: '100%',\n },\n ]);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n viewChild,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { DrawerMode, DrawerPosition, UniDrawerOptions } from './drawer.model';\n\n/**\n * Navigation drawer with two modes sharing one content slot:\n *\n * - `side` — an in-flow `<aside>` that pushes content (dashboard sidenav);\n * opening/closing animates its width, and the divider border primitive\n * separates it from the page.\n * - `over` — a native `<dialog>` in the top layer: focus trap, Escape and\n * scrim backdrop come from the platform (same machinery as `uni-dialog`),\n * sliding in from its edge.\n *\n * Surface, width, divider, elevation, padding and backdrop all resolve from\n * `drawer` theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-drawer',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'drawer' }],\n template: `\n <ng-template #content><ng-content /></ng-template>\n @if (mode() === 'side') {\n <aside [class]=\"sideClass()\" [attr.aria-hidden]=\"open() ? null : 'true'\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </aside>\n } @else {\n <!-- Click handles the ::backdrop only (target check); keyboard closing\n is the native dialog cancel event, and focus is trapped by\n showModal — the element needs no tabindex of its own. -->\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <dialog\n #overlay\n [class]=\"overClass()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onBackdropClick($event)\"\n (cancel)=\"onCancel($event)\"\n (animationend)=\"onAnimationEnd($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\n </dialog>\n }\n `,\n})\nexport class UniDrawerComponent extends BaseComponent<UniDrawerOptions> {\n /** Two-way bindable open state: [(open)]. */\n readonly open = model(false);\n\n mode = input<DrawerMode>('side');\n position = input<DrawerPosition>('start');\n /** Accessible name for the overlay mode's dialog. */\n ariaLabel = input('Navigation');\n\n protected readonly contentTemplate = viewChild.required<TemplateRef<unknown>>('content');\n private readonly overlay = viewChild<ElementRef<HTMLDialogElement>>('overlay');\n\n constructor() {\n super();\n effect(() => {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog) return;\n if (this.open()) {\n if (!dialog.open) {\n dialog.removeAttribute('closing');\n dialog.showModal();\n }\n } else if (dialog.open) {\n // Slide out first; the dialog closes when the animation reports done.\n dialog.setAttribute('closing', 'true');\n }\n });\n }\n\n protected onBackdropClick(event: Event): void {\n if ((event.target as HTMLElement).nodeName === 'DIALOG') this.open.set(false);\n }\n\n /** Route Escape through the animated close, keeping `open` in sync. */\n protected onCancel(event: Event): void {\n event.preventDefault();\n this.open.set(false);\n }\n\n protected onAnimationEnd(event: AnimationEvent): void {\n const dialog = this.overlay()?.nativeElement;\n if (!dialog || !dialog.hasAttribute('closing')) return;\n if (event.animationName.includes(this.slideOut())) {\n dialog.close();\n dialog.removeAttribute('closing');\n }\n }\n\n private readonly edge = computed(() => (this.position() === 'start' ? '-100%' : '100%'));\n\n private readonly slideIn = computed(() =>\n keyframes({ from: { transform: `translateX(${this.edge()})` }, to: { transform: 'translateX(0)' } })\n );\n private readonly slideOut = computed(() =>\n keyframes({ from: { transform: 'translateX(0)' }, to: { transform: `translateX(${this.edge()})` } })\n );\n\n protected readonly sideClass = computed(() => {\n const options = this.componentOptions();\n const width = options.width ?? 280;\n const start = this.position() === 'start';\n return css({\n display: 'block',\n boxSizing: 'border-box',\n height: '100%',\n flex: 'none',\n overflowX: 'hidden',\n overflowY: 'auto',\n transition: 'width 0.25s ease, visibility 0.25s',\n ...this.theme.colorPair(options.color),\n ...(start\n ? this.theme.borderRight(options.divider)\n : this.theme.borderLeft(options.divider)),\n ...(this.open()\n ? { width, visibility: 'visible', ...this.theme.padding(options.padding) }\n : { width: 0, visibility: 'hidden', padding: 0, border: 'none' }),\n });\n });\n\n protected readonly overClass = computed(() => {\n const options = this.componentOptions();\n const start = this.position() === 'start';\n return css({\n boxSizing: 'border-box',\n width: options.width ?? 280,\n maxWidth: '90vw',\n height: '100dvh',\n maxHeight: '100dvh',\n border: 'none',\n margin: start ? '0 auto 0 0' : '0 0 0 auto',\n overflowY: 'auto',\n ...this.theme.colorPair(options.color),\n ...this.theme.padding(options.padding),\n ...this.theme.boxShadow(options.elevation),\n '&::backdrop': { ...options.backdrop },\n '&[open]': { animation: `${this.slideIn()} 250ms ease-out` },\n '&[closing]': { animation: `${this.slideOut()} 250ms ease-in` },\n });\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniBoxComponent } from '../layout';\nimport type { UniDropdownOptions } from './dropdown.model';\nimport type {\n Border,\n ContainerColorToken,\n NullableSize,\n Radius,\n Shadow,\n} from '@uni-design-system/uni-core';\nimport {\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type AnchorOffset,\n type Placement,\n} from '../../cdk';\n\nexport type AriaHasPopup = 'menu' | 'listbox' | 'dialog' | 'grid' | 'tree' | 'true';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-dropdown',\n imports: [UniBoxComponent],\n template: `\n <!-- 1. The native 'popover' attribute brings it to the top layer with native light-dismiss -->\n <div #dropdown popover=\"auto\" [id]=\"popoverId\" [class]=\"dropdownClass()\">\n <div\n box-layout\n [border]=\"border() ?? componentOptions().border\"\n [borderRadius]=\"borderRadius() ?? componentOptions().borderRadius\"\n [paddingVertical]=\"paddingVertical()\"\n [paddingHorizontal]=\"paddingHorizontal()\"\n [color]=\"color() ?? componentOptions().color\"\n [shadow]=\"shadow() ?? componentOptions().shadow\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n providers: [{ provide: COMPONENT_NAME, useValue: 'dropdown' }],\n})\nexport class UniDropdownComponent\n extends BaseComponent<UniDropdownOptions>\n implements OnInit, OnDestroy\n{\n private renderer = inject(Renderer2);\n private delay = 100;\n\n // Reactively track visibility status using Signals\n showing = signal<boolean>(false);\n\n trigger = input.required<HTMLElement>();\n placement = input<Placement>('bottom-start');\n offset = input<AnchorOffset>({ mainAxis: 4, alignmentAxis: 12 });\n\n /** CSS anchor-name linking the trigger to the popover panel. */\n private readonly anchorName = newAnchorName();\n\n /**\n * Value for aria-haspopup on the trigger, describing what the popover\n * contains (e.g. 'menu' for Menu, 'dialog' for rich content). When unset,\n * only aria-expanded/aria-controls are managed.\n */\n ariaHasPopup = input<AriaHasPopup | null>(null);\n\n /** Document-unique id of the popover element, for aria-controls wiring. */\n readonly popoverId = uniqueId('uni-dropdown');\n\n paddingVertical = input<NullableSize>();\n paddingHorizontal = input<NullableSize>();\n\n // Per-instance panel-chrome overrides; undefined falls back to the theme's\n // `dropdown` options, so hosts like uni-menu can restyle their panel\n // without forking the shared dropdown entry.\n border = input<Border | undefined>();\n borderRadius = input<Radius | undefined>();\n shadow = input<Shadow | undefined>();\n color = input<ContainerColorToken | undefined>();\n\n dropdownShowing = output<boolean>();\n dropdownHiding = output<boolean>();\n\n @ViewChild('dropdown', { static: true })\n dropdownRef!: ElementRef<HTMLDivElement>;\n\n private get _trigger(): HTMLElement {\n return this.trigger();\n }\n private get _dropdown(): HTMLDivElement {\n return this.dropdownRef.nativeElement;\n }\n\n private transformOriginMap: Record<Placement, string> = {\n top: 'bottom center',\n right: 'center left',\n bottom: 'top center',\n left: 'center right',\n 'top-start': 'bottom left',\n 'top-end': 'bottom right',\n 'right-start': 'top left',\n 'right-end': 'bottom left',\n 'bottom-start': 'top left',\n 'bottom-end': 'top right',\n 'left-start': 'top right',\n 'left-end': 'bottom right',\n };\n\n dropdownClass = computed(() => {\n const currentPlacement = this.placement();\n\n return css([\n {\n // Reset browser agent default popover styles\n border: 'none',\n background: 'transparent',\n padding: 0,\n overflow: 'visible',\n width: 'max-content',\n\n // Native anchor positioning: the browser keeps the panel attached to\n // the trigger (no scroll/resize listeners needed)\n ...anchorStyles(this.anchorName, currentPlacement, this.offset()),\n\n // 2. Animate discrete properties across top layer layout contexts\n transitionProperty: 'transform, opacity, display, overlay',\n transitionDuration: `${this.delay}ms`,\n transitionTimingFunction: 'linear',\n transitionBehavior: 'allow-discrete',\n\n // Hidden State (Closed)\n opacity: 0,\n transform: 'scale(0.8)',\n transformOrigin: this.transformOriginMap[currentPlacement],\n\n // 3. Active state styling controlled via the native browser pseudo-class\n ['&:popover-open']: {\n opacity: 1,\n transform: 'scale(1)',\n },\n\n // 4. Starting-style rules what properties animate *from* when transitioning in\n ['@starting-style']: {\n ['&:popover-open']: {\n opacity: 0,\n transform: 'scale(0.8)',\n },\n },\n },\n ]);\n });\n\n /** The element that receives focus and carries the ARIA popup state. */\n private get _focusTarget(): HTMLElement {\n return resolveFocusTarget(this._trigger);\n }\n\n ngOnInit(): void {\n // Single native click binding to manage open/close commands\n this.renderer.listen(this._trigger, 'click', (e: Event) => {\n e.stopPropagation();\n this.toggleDropdown();\n });\n\n // Anchor the popover panel to the trigger element\n this.renderer.setStyle(this._trigger, 'anchor-name', this.anchorName);\n\n // Wire the ARIA popup contract onto the focusable trigger element\n const focusTarget = this._focusTarget;\n this.renderer.setAttribute(focusTarget, 'aria-expanded', 'false');\n this.renderer.setAttribute(focusTarget, 'aria-controls', this.popoverId);\n if (this.ariaHasPopup()) {\n this.renderer.setAttribute(focusTarget, 'aria-haspopup', this.ariaHasPopup()!);\n }\n\n // Sync state if user invokes light-dismiss via outside click or Escape key\n this.renderer.listen(this._dropdown, 'toggle', (event: any) => {\n const isOpened = event.newState === 'open';\n this.showing.set(isOpened);\n this.renderer.setAttribute(this._focusTarget, 'aria-expanded', `${isOpened}`);\n\n if (isOpened) {\n this.dropdownShowing.emit(true);\n } else {\n this.dropdownHiding.emit(true);\n this.restoreFocus();\n }\n });\n }\n\n /**\n * Returns focus to the trigger when the popover closes while focus was\n * inside it (or was dropped on <body> by the top layer closing), so\n * keyboard users are never stranded (WCAG 2.4.3).\n */\n private restoreFocus() {\n const active = document.activeElement;\n if (active === document.body || (active && this._dropdown.contains(active))) {\n this._focusTarget.focus();\n }\n }\n\n toggleDropdown() {\n if (this.showing()) {\n this._dropdown.hidePopover();\n } else {\n this._dropdown.showPopover();\n }\n }\n\n hideDropdown() {\n this._dropdown.hidePopover();\n }\n\n ngOnDestroy() {\n try {\n this._dropdown.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n }\n}\n","import {\n afterNextRender,\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport {\n collapseFadeOut,\n EXPAND_DEFAULT_SPEED,\n expandDuration,\n expandFadeIn,\n} from '@uni-design-system/uni-core';\nimport { motionSafe, uniqueId } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniExpandOptions } from './expand.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand',\n imports: [],\n providers: [{ provide: COMPONENT_NAME, useValue: 'expand' }],\n template: `@if (!collapsed()) {\n <div\n [animate.enter]=\"ready() ? expandAnimation : ''\"\n [animate.leave]=\"collapseAnimation\"\n [class]=\"expandClassName\"\n [style.animation-duration]=\"cssDuration()\"\n >\n <div #content [class]=\"contentClassName\">\n <ng-content></ng-content>\n </div>\n </div>\n }`,\n host: {\n '[attr.id]': 'regionId',\n '[class]': 'hostClassName',\n },\n})\nexport class UniExpandComponent extends BaseComponent<UniExpandOptions> {\n collapsed = model(true);\n\n /**\n * Exact per-instance duration in seconds. Bypasses size-aware scaling —\n * an explicit number means the consumer wants that number. Omitted, the\n * duration derives from the `expand` theme options' `transitionSpeed`\n * scaled by content height (see `duration`).\n */\n transitionSpeed = input<number>();\n\n /** Referenced by the controlling toggle's aria-controls. */\n readonly regionId = uniqueId('uni-expand');\n\n /**\n * animate.enter has no initial-render guard, so an expand initialized with\n * collapsed = false would play the enter animation on load. Enable\n * animations only after the first render, i.e. on real state changes.\n */\n protected readonly ready = signal(false);\n\n private readonly contentRef = viewChild<ElementRef<HTMLElement>>('content');\n\n /**\n * Last observed content height. Retained after collapse (the observer\n * disconnects but the signal keeps its value) so the leave animation and\n * the next reveal are timed to the real size. Until the first measurement\n * lands — one frame into the very first reveal — the duration falls back\n * to the unscaled token; CSS remaps animation progress when\n * `animation-duration` updates, so the retime is imperceptible that early.\n */\n private readonly contentHeight = signal<number | undefined>(undefined);\n\n constructor() {\n super();\n afterNextRender(() => this.ready.set(true));\n afterRenderEffect((onCleanup) => {\n const content = this.contentRef()?.nativeElement;\n if (!content) return;\n const observer = new ResizeObserver(() => this.contentHeight.set(content.scrollHeight));\n observer.observe(content);\n onCleanup(() => observer.disconnect());\n });\n }\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * The resolved duration in seconds: the `transitionSpeed` input verbatim,\n * or the `expand` theme options' `transitionSpeed` scaled by content height\n * (`expandDuration` — √-of-height, clamped) so short regions stay snappy\n * and tall ones aren't rushed. The public sync hook: Expand Area binds this\n * to its toggle so the chevron rotates on the region's clock, and consumers\n * can bind adjacent styling the same way\n * (`[style.transition-duration]=\"expand.duration() + 's'\"`).\n */\n readonly duration = computed(() => {\n const override = this.transitionSpeed();\n if (override !== undefined) return override;\n const speed = this.componentOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED;\n const height = this.contentHeight();\n return height === undefined ? speed : expandDuration(height, speed);\n });\n\n protected readonly cssDuration = computed(() => `${this.duration()}s`);\n\n /**\n * A custom element is `display: inline` by default, which would lay the\n * animated grid out as a block-in-inline box and distort the revealed\n * content's spacing. Every consumer would otherwise have to write\n * `uni-expand { display: block }` themselves.\n */\n protected readonly hostClassName = css({\n display: 'block',\n });\n\n expandClassName = css({\n display: 'grid',\n });\n\n contentClassName = css({\n minHeight: 0,\n });\n\n private expand = keyframes({ ...expandFadeIn });\n private collapse = keyframes({ ...collapseFadeOut });\n\n /**\n * Reveal is motion-safe (WCAG 2.3.3): under `prefers-reduced-motion` these\n * classes are empty, so the region appears and disappears instantly.\n * `overflow: hidden` rides inside the guard deliberately — it exists to clip\n * the growing box mid-animation, and leaving it applied at rest would crop\n * decorations that legitimately paint outside the region (focus rings,\n * offset outlines). Angular removes a leaving node on the next frame when it\n * detects no animation, so nothing hangs when the guard strips them.\n *\n * The classes carry the default duration; the animated div's\n * `[style.animation-duration]` binding overrides it with the resolved\n * `duration`, so the classes stay static while timing tracks the theme and\n * the content's size through signals alone.\n */\n expandAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.expand} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n\n collapseAnimation = css(\n motionSafe({\n overflow: 'hidden',\n animation: `${this.collapse} ease-in-out ${EXPAND_DEFAULT_SPEED}s`,\n }),\n );\n}\n","/**\n * UniExpandComponent Barrel File\n *\n * This file exports all public-facing elements of the expand component.\n */\n\nexport { UniExpandComponent } from './expand.component';\nexport type { UniExpandOptions } from './expand.model';\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { EXPAND_DEFAULT_SPEED } from '@uni-design-system/uni-core';\nimport { motionSafe } from '../../cdk';\nimport { ThemeService } from '../../theming';\nimport type { UniExpandOptions } from '../expand/expand.model';\nimport { UniIconComponent } from '../icon/icon.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniTextComponent } from '../text/text.component';\n\n/**\n * Trigger for a {@link UniExpandComponent} region.\n *\n * Two shapes, chosen by whether `label` is set:\n * - **Icon only** (default) — the bare chevron, sized for a Card Header.\n * - **Labelled** — chevron plus a label and optional muted sublabel, as a\n * single full-width button. Most real disclosures need a name for the\n * section, and building that row by hand is the thing this saves; it also\n * makes the label the button's accessible name rather than adjacent text.\n */\n@Component({\n selector: 'uni-expand-toggle',\n imports: [UniIconComponent, UniIconButtonComponent, UniTextComponent],\n template: `\n @if (label()) {\n <button\n type=\"button\"\n [class]=\"triggerClassName\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n <uni-icon name=\"chevronUp\" size=\"1em\" />\n <span [class]=\"labelClassName\">\n <span uni-text=\"label\">{{ label() }}</span>\n @if (sublabel()) {\n <span uni-text=\"caption\" color=\"on-background-variant\">{{ sublabel() }}</span>\n }\n </span>\n </button>\n } @else {\n <button\n icon-button\n iconName=\"chevronUp\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-controls]=\"ariaControls() || null\"\n >\n {{ collapsed() ? 'Expand' : 'Collapse' }}\n </button>\n }\n `,\n host: {\n '[class]': 'className()',\n '[attr.toggled]': 'collapsed() || null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniExpandToggleComponent {\n collapsed = model(true);\n\n /** Id of the Expand region this toggle controls (see UniExpandComponent.regionId). */\n ariaControls = input<string>();\n\n /** Names the region. Setting it switches the toggle to its labelled shape. */\n label = input<string>();\n\n /** Muted qualifier beside the label (\"for POs & custom orders\"). Needs `label`. */\n sublabel = input<string>();\n\n /**\n * Rotation duration in seconds. Expand Area binds the region's resolved\n * `duration` here so chevron and reveal share one clock even when the\n * region is size-scaled or overridden per instance.\n */\n transitionSpeed = input<number>();\n\n /** Fallback clock when no `transitionSpeed` is bound: the `expand` theme options' `transitionSpeed`. */\n private readonly expandOptions = inject(ThemeService).getComponentOptions<UniExpandOptions>('expand');\n\n private readonly speed = computed(\n () => this.transitionSpeed() ?? this.expandOptions().transitionSpeed ?? EXPAND_DEFAULT_SPEED,\n );\n\n /**\n * The glyph rotates, never the host.\n *\n * The host is taller than the glyph (an inline-level box reserves baseline\n * descender space), so spinning it about its own centre walks the glyph\n * off-centre. `uni-icon` is a centred square sized to the glyph, which makes\n * it the only box here that rotates symmetrically. It also keeps a label\n * from turning upside down with the chevron.\n */\n private readonly glyphStyles = computed(() => ({\n '& uni-icon': {\n flexShrink: 0,\n ...motionSafe({\n transition: `transform ${this.speed()}s ease-in-out`,\n }),\n transform: this.collapsed() ? 'rotate(-180deg)' : 'rotate(0)',\n },\n }));\n\n protected readonly className = computed(() => {\n if (this.label()) {\n return css({ display: 'block', ...this.glyphStyles() });\n }\n\n return css({\n display: 'inline-flex',\n cursor: 'pointer',\n ...this.glyphStyles(),\n });\n });\n\n protected readonly triggerClassName = css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n width: '100%',\n padding: 0,\n border: 0,\n background: 'none',\n font: 'inherit',\n color: 'inherit',\n textAlign: 'left',\n cursor: 'pointer',\n });\n\n protected readonly labelClassName = css({\n display: 'flex',\n alignItems: 'baseline',\n gap: 6,\n minWidth: 0,\n });\n\n toggle() {\n this.collapsed.update((collapsed) => !collapsed);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, output, viewChild } from '@angular/core';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniExpandToggleComponent } from '../expand-toggle/expand-toggle.component';\nimport { UniExpandComponent } from '../expand/expand.component';\nimport { UniBoxComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-expand-area',\n imports: [UniBoxComponent, UniTextComponent, UniExpandToggleComponent, UniExpandComponent],\n template: `\n <div box-layout color=\"tertiary-surface\" borderRadius=\"sm\" border=\"quaternary\" overflow=\"hidden\">\n <div box-layout\n border=\"quaternary\"\n borderRadius=\"sm\"\n color=\"primary-surface\"\n style=\"margin-top: -1px; margin-left: -1px; margin-right: -1px\"\n [style.margin-bottom]=\"toggle.collapsed() ? '-1px' : 0\"\n justifyContent=\"space-between\"\n display=\"flex\"\n alignItems=\"center\"\n >\n <div box-layout [width]=\"36\"></div>\n <div box-layout paddingHorizontal=\"md\">\n <span uni-text=\"title-small\" display=\"block\">\n {{ title() }}\n </span>\n </div>\n\n <uni-expand-toggle\n #toggle\n style=\"display: inline-flex; margin: -2px\"\n [collapsed]=\"initCollapsed()\"\n [ariaControls]=\"expand.regionId\"\n [transitionSpeed]=\"expand.duration()\"\n />\n </div>\n\n <uni-expand #expand [collapsed]=\"toggle.collapsed()\">\n <div box-layout [padding]=\"padding()\">\n <ng-content></ng-content>\n </div>\n </uni-expand>\n </div>\n `,\n})\nexport class UniExpandAreaComponent {\n title = input.required<string>();\n initCollapsed = input(false, { transform: booleanAttribute });\n padding = input<NullableSize>('md');\n\n collapsed = output<boolean>();\n\n toggleRef = viewChild.required<UniExpandToggleComponent>('toggle');\n\n public toggleExpand() {\n this.toggleRef().toggle();\n }\n}\n","/**\n * UniExpandAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-area component.\n */\n\nexport { UniExpandAreaComponent } from './expand-area.component';\n","/**\n * UniExpandToggleComponent Barrel File\n *\n * This file exports all public-facing elements of the expand-toggle component.\n */\n\nexport { UniExpandToggleComponent } from './expand-toggle.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { acceptableFile } from '../../cdk';\nimport { DragAndDropDirective } from '../../directives/drag-and-drop/drag-and-drop.directive';\nimport type { NullableSize, Radius, Variant } from '@uni-design-system/uni-core';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniBoxComponent, UniStackComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-file-drop-zone',\n imports: [\n DragAndDropDirective,\n UniBoxComponent,\n UniButtonComponent,\n UniStackComponent,\n UniTextComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './file-drop-zone.component.html',\n})\nexport class UniFileDropZoneComponent {\n selectedFile = signal<File | undefined>(undefined);\n selectedFileName = computed(() => this.selectedFile()?.name);\n attachmentState = signal<'upload' | undefined>(undefined);\n\n fileSelectorRef = viewChild.required<ElementRef<HTMLInputElement>>('fileSelector');\n\n get fileSelectorElement() {\n return this.fileSelectorRef().nativeElement;\n }\n\n height = input<number | string>();\n borderRadius = input<Radius>('md');\n border = input<Variant>('light');\n padding = input<NullableSize>('lg');\n useBrowseButton = input<boolean>(false);\n browseButtonText = input<string>('Browse for file');\n allowedFileExtensions = input<string[]>([]);\n label = input<string>();\n\n helpTemplate = input<TemplateRef<unknown> | null>(null);\n helpTemplateContext = input<unknown | null>(null);\n\n fileAttached = output<File | undefined>();\n fileRemoved = output();\n\n /**\n * The zone acts as the keyboard-reachable file picker only when no browse\n * button is rendered (nesting a button inside a button-role zone would be\n * invalid ARIA) and no file is attached yet.\n */\n zoneIsInteractive = computed(() => !this.useBrowseButton() && !this.attachmentState());\n\n sanitizedFileExtensions = computed(() =>\n this.allowedFileExtensions().map((ext) => (ext.includes('.') ? ext : '.' + ext))\n );\n\n helpText = computed(() => {\n const extensions = this.sanitizedFileExtensions();\n let text = '';\n\n if (extensions.length === 1) {\n text = `${extensions[0]} format allowed`;\n }\n\n if (extensions.length > 1) {\n text = extensions.join(', ') + ' formats allowed';\n }\n\n return text;\n });\n\n constructor() {\n effect(() => {\n const files = this.selectedFile();\n\n if (files) {\n this.attachmentState.set('upload');\n } else {\n this.attachmentState.set(undefined);\n }\n });\n }\n\n openFileSelector() {\n this.fileSelectorElement.click();\n }\n\n selectFiles(fileList: FileList | null): void {\n if (!fileList) return;\n if (!acceptableFile(fileList[0], this.sanitizedFileExtensions())) return;\n this.selectedFile.set(fileList[0]);\n this.fileAttached.emit(fileList[0]);\n }\n\n onFileInputChange() {\n this.selectFiles(this.fileSelectorElement.files);\n this.fileSelectorElement.value = '';\n }\n\n cancelUpload() {\n this.selectedFile.set(undefined);\n this.fileAttached.emit(undefined);\n this.fileRemoved.emit();\n }\n\n removeAttachment() {\n this.selectedFile.set(undefined);\n }\n}\n","<!-- Without a browse button the zone itself is the keyboard path to the\n native file picker; with one, the button already provides it -->\n<div\n box-layout\n [border]=\"border()\"\n [borderRadius]=\"borderRadius()\"\n [dashBorder]=\"[undefined, 'replace'].includes(attachmentState())\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n [padding]=\"padding()\"\n dragAndDrop\n (onFileDropped)=\"selectFiles($event)\"\n [height]=\"height()\"\n [attr.role]=\"zoneIsInteractive() ? 'button' : null\"\n [attr.tabindex]=\"zoneIsInteractive() ? 0 : null\"\n [attr.aria-label]=\"zoneIsInteractive() ? label() || 'Choose a file' : null\"\n (keydown.enter)=\"zoneIsInteractive() && openFileSelector()\"\n (keydown.space)=\"\n zoneIsInteractive() && openFileSelector(); zoneIsInteractive() && $event.preventDefault()\n \"\n>\n <div stack-layout gap=\"md\" alignItems=\"center\">\n @switch (attachmentState()) {\n @case ('upload') {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">{{ label() }}</span>\n <span uni-text=\"title-small\">{{ selectedFileName() }}</span>\n </div>\n <button text-button (click)=\"removeAttachment()\" variant=\"warn\">Cancel</button>\n }\n\n @default {\n @if (useBrowseButton()) {\n <button text-button (click)=\"openFileSelector()\">\n {{ browseButtonText() }}\n </button>\n <span uni-text>OR</span>\n }\n\n @if (!helpTemplate()) {\n <div stack-layout alignItems=\"center\">\n <span uni-text=\"headline-small\">Drag and drop the file here</span>\n @if (helpText()) {\n <span uni-text=\"title-small\">{{ helpText() }}</span>\n }\n </div>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"helpTemplate()\"\n [ngTemplateOutletContext]=\"helpTemplateContext()\"\n ></ng-container>\n }\n }\n }\n </div>\n\n <input\n #fileSelector\n type=\"file\"\n style=\"display: none\"\n (change)=\"onFileInputChange()\"\n [accept]=\"sanitizedFileExtensions().join(',')\"\n [multiple]=\"false\"\n />\n</div>\n","/**\n * UniFileDropZoneComponent Barrel File\n *\n * This file exports all public-facing elements of the file-drop-zone component.\n */\n\nexport { UniFileDropZoneComponent } from './file-drop-zone.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniRowComponent } from '../layout';\nimport type { UniInputBoxOptions } from './input-box.model';\n\n@Component({\n selector: 'uni-input-box',\n imports: [UniRowComponent],\n templateUrl: './input-box.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'input' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniInputBoxComponent extends BaseComponent<UniInputBoxOptions> {\n protected readonly className = css({ display: 'contents' });\n\n disabled = input<boolean>(false);\n error = input<boolean>(false);\n minWidth = input<string>('0');\n /** Override the themed field height, e.g. `'auto'` for multi-line fields. */\n height = input<string | number | undefined>(undefined);\n\n protected readonly color = computed(() =>\n this.error() ? this.componentOptions().errorColor : this.componentOptions().color\n );\n\n protected readonly border = computed(() =>\n this.error() ? this.componentOptions().errorBorder : this.componentOptions().border\n );\n\n protected readonly shadow = computed(() =>\n this.error() ? this.componentOptions().errorShadow : this.componentOptions().shadow\n );\n\n protected readonly inputBoxClass = computed(() =>\n css([\n this.disabled() && {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n cursor: 'not-allowed !important',\n },\n {\n '& input, select, textarea': {\n ...removeInputPlatformStyling,\n height: '100%',\n ...this.theme.paddingLeft(this.componentOptions().paddingLeft),\n ...this.theme.color(this.componentOptions().textColor),\n ...this.theme.typeface(this.componentOptions().typeFace),\n },\n\n // Multi-line fields size themselves (rows/resize), not from the box.\n '& textarea': {\n height: 'auto',\n ...this.theme.paddingTop('xs'),\n ...this.theme.paddingBottom('xs'),\n },\n\n '&:has(input:disabled, select:disabled, textarea:disabled)': {\n ...this.theme.color(this.componentOptions().disabledTextColor),\n ...this.theme.backgroundColor(this.componentOptions().disabledColor),\n },\n\n '& input:disabled, select:disabled, textarea:disabled': {\n cursor: 'not-allowed !important',\n },\n\n '&:has(input:focus, select:focus, textarea:focus)': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n },\n ])\n );\n}\n","<div\n row-layout\n alignItems=\"center\"\n [height]=\"height() ?? componentOptions().height\"\n [color]=\"color()\"\n [border]=\"border()\"\n [borderRadius]=\"componentOptions().borderRadius\"\n [shadow]=\"shadow()\"\n [minWidth]=\"minWidth()\"\n [class]=\"inputBoxClass()\"\n position=\"relative\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../../input-box/input-box.component';\n\n/**\n * Text input that emits `change` only after the user pauses typing. Wears the\n * shared input chrome (themed color, border, typeface, focus ring) via\n * `uni-input-box`; project adornments with the `pre-input` / `post-input`\n * slots, matching `uni-input`'s convention. The ARIA passthrough inputs let a\n * wrapping composite (e.g. SearchInput's combobox) annotate the real input\n * element.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-debounce-input',\n imports: [UniInputBoxComponent],\n templateUrl: './debounce-input.component.html',\n})\nexport class UniDebounceInputComponent {\n inputName = input<string>();\n inputId = input<string>();\n debounceTime = input<number>(400);\n /** Accessible name for the input. */\n label = input<string>();\n placeholder = input('');\n disabled = input(false);\n\n // ARIA passthroughs for composite widgets (combobox etc.).\n role = input<string>();\n ariaExpanded = input<boolean | undefined>(undefined);\n ariaControls = input<string>();\n ariaActivedescendant = input<string>();\n\n // TODO(v4): rename to valueChange — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n\n value = signal<string | undefined>(undefined);\n\n private readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private lastEmitted: string | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n });\n }\n\n handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n\n // Debounce, emitting only when the value actually changed.\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => {\n if (value !== this.lastEmitted) {\n this.lastEmitted = value;\n this.change.emit(value);\n }\n }, this.debounceTime());\n }\n\n /** Empty the field immediately, cancelling any pending emit. */\n clear() {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.value.set('');\n if (this.lastEmitted !== '') {\n this.lastEmitted = '';\n this.change.emit('');\n }\n }\n\n focus() {\n this.inputElement().nativeElement.focus();\n }\n\n inputClass = css({\n flexGrow: 1,\n width: '100%',\n minWidth: 0,\n });\n}\n","<uni-input-box>\n <ng-content select=\"[pre-input]\" />\n <input\n #field\n [class]=\"inputClass\"\n type=\"text\"\n [name]=\"inputName()\"\n [id]=\"inputId()\"\n [value]=\"value() ?? ''\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label() || null\"\n [attr.role]=\"role() || null\"\n [attr.aria-expanded]=\"ariaExpanded() ?? null\"\n [attr.aria-controls]=\"ariaControls() || null\"\n [attr.aria-activedescendant]=\"ariaActivedescendant() || null\"\n [attr.aria-autocomplete]=\"role() === 'combobox' ? 'list' : null\"\n />\n <ng-content select=\"[post-input]\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-input',\n imports: [UniInputBoxComponent],\n templateUrl: './input.component.html',\n})\nexport class UniInputComponent implements FormValueControl<string> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLInputElement).value);\n }\n\n inputClass = css({});\n}\n","<uni-input-box [error]=\"showError()\">\n <ng-content select=\"pre-input\" />\n <input\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [class]=\"inputClass\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <ng-content select=\"post-input\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { AbsoluteSize } from '@uni-design-system/uni-core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-json-view',\n imports: [],\n templateUrl: './json-view.component.html',\n})\nexport class UniJsonViewComponent {\n json = input<unknown>();\n rows = input<number>(6);\n fontSize = input<AbsoluteSize | string>('medium');\n width = input<string | number>('100%');\n selectOnClick = input<boolean>(true);\n\n jsonString = computed(() => JSON.stringify(this.json(), null, 2));\n\n className = computed(() =>\n css({\n fontSize: this.fontSize(),\n width: this.width(),\n })\n );\n\n selectContents(jsonArea: HTMLTextAreaElement) {\n if (!this.selectOnClick()) return;\n jsonArea.select();\n }\n}\n","<textarea #jsonArea (click)=\"selectContents(jsonArea)\" [class]=\"className()\" [rows]=\"rows()\">{{\n jsonString()\n}}</textarea>\n","/**\n * UniJsonViewComponent Barrel File\n *\n * This file exports all public-facing elements of the json-view component.\n */\n\nexport { UniJsonViewComponent } from './json-view.component';\n","import { TemplateRef } from '@angular/core';\nimport type {\n ColorKey,\n ContainerColorToken,\n NullableSize,\n Radius,\n Typeface,\n Variant,\n} from '@uni-design-system/uni-core';\n\ninterface BaseMenuItem {\n symbolName?: string;\n action?: () => void;\n /** Tone routed through the theme's `menuItem.variants` (e.g. 'warn' for destructive actions). */\n variant?: Variant;\n disabled?: boolean;\n}\n\nexport interface MenuItemWithLabel extends BaseMenuItem {\n label: string;\n template?: never;\n context?: never;\n divider?: never;\n}\n\nexport interface MenuItemWithTemplate<T = any> extends BaseMenuItem {\n label?: never;\n template: TemplateRef<T>;\n context: T;\n divider?: never;\n}\n\n/** A non-interactive separator between item groups; styled by the theme's `menu` options. */\nexport interface MenuDivider {\n divider: true;\n}\n\nexport type MenuItem<T = any> = MenuDivider | MenuItemWithLabel | MenuItemWithTemplate<T>;\n\nexport const isDivider = (item: MenuItem): item is MenuDivider => 'divider' in item;\n\n/** Theme options for the `menuItem` component entry. */\nexport interface UniMenuItemOptions {\n height?: number;\n paddingHorizontal?: NullableSize;\n gap?: NullableSize;\n borderRadius?: Radius;\n typeface?: Typeface;\n /** Resting text color; undefined inherits the panel's on-color. */\n textColor?: ColorKey;\n hoverColor?: ContainerColorToken;\n /** Trailing symbol marking the active item; undefined/'' renders none. */\n activeSymbol?: string;\n /** Hover/focus transition in seconds; 0 switches instantly. */\n transitionSpeed?: number;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { UniBoxComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { ThemeService } from '../../../theming';\nimport { HOVER_OR_KEYBOARD_FOCUS, type ContainerColorToken, type Variant } from '@uni-design-system/uni-core';\nimport type { UniMenuItemOptions } from './menu-item.model';\n\n@Component({\n selector: '[uni-menu-item], [menu-item]',\n imports: [UniSymbolComponent, UniBoxComponent, NgTemplateOutlet],\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '[attr.aria-current]': \"active() ? 'true' : null\",\n '[class]': 'menuItemClassName()',\n },\n})\nexport class UniMenuItemComponent<T = any> {\n theme = inject(ThemeService);\n private _elementRef = inject(ElementRef);\n\n label = input<string>();\n template = input<TemplateRef<T>>();\n context = input<T>();\n symbolName = input<string>();\n active = input<boolean>();\n /** Tone routed through the theme's `menuItem` variants (e.g. 'warn'). */\n variant = input<Variant | undefined>();\n /** Per-instance override of the theme's `menuItem.hoverColor`. */\n hoverColor = input<ContainerColorToken | undefined>();\n disabled = input<boolean>(false);\n\n protected readonly options = computed(() =>\n this.theme.getComponentOptions<UniMenuItemOptions>('menuItem')()\n );\n\n protected readonly activeSymbol = computed(() => this.options().activeSymbol);\n\n /** Typography comes from the host's themed typeface; the span only lays out. */\n protected readonly LabelClassName = css({ display: 'block', whiteSpace: 'nowrap' });\n\n protected readonly menuItemClassName = computed(() => {\n const options = this.options();\n const variant = this.variant();\n const variantStyle = variant\n ? this.theme.component('menuItem')().variants?.[variant]\n : undefined;\n const transitionSpeed = options.transitionSpeed ?? 0;\n\n return css([\n {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n height: options.height,\n ...this.theme.horizontalPadding(options.paddingHorizontal),\n ...this.theme.gap(options.gap),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n\n // Roving focus highlights items the same way hover does — but only\n // when focus is keyboard-driven. `onOpened()` focuses an item on every\n // open, including pointer opens, and plain `:focus` would paint that\n // as a highlight the mouse user never asked for, reading as a\n // preselected item. `:focus-visible` excludes programmatic focus that\n // follows a click while still matching keyboard navigation.\n [HOVER_OR_KEYBOARD_FOCUS]: {\n ...this.theme.colorPair(this.hoverColor() ?? options.hoverColor),\n outline: 'none',\n },\n\n '&[aria-disabled=\"true\"]': {\n color: this.theme.colors()['on-disabled-surface'],\n pointerEvents: 'none',\n },\n },\n transitionSpeed > 0 && { transition: `all ${transitionSpeed}s ease` },\n // Variant tones override the base look. A variant that restyles the\n // highlight must key it with HOVER_OR_KEYBOARD_FOCUS — Emotion merges by\n // exact selector text, so a variant spelling it `&:hover, &:focus`\n // would both miss the override and reintroduce the phantom highlight.\n { ...variantStyle },\n ]);\n });\n\n /** Host element, used by Menu for roving-focus bookkeeping. */\n get host(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n","@let tpl = template();\n@let symbol = symbolName();\n@if (symbol) {\n <uni-symbol [name]=\"symbol\"></uni-symbol>\n}\n<div box-layout [grow]=\"1\">\n @if (tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"context()\"></ng-container>\n } @else {\n <span [class]=\"LabelClassName\">{{ label() }}</span>\n }\n</div>\n@let activeSym = activeSymbol();\n@if (active() && activeSym) {\n <uni-symbol [name]=\"activeSym\"></uni-symbol>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type Placement } from '../../cdk';\n\nimport { UniMenuItemComponent } from './menu-item/menu-item.component';\nimport { isDivider, MenuItem } from './menu-item/menu-item.model';\nimport type { UniMenuOptions } from './menu.model';\nimport { UniDropdownComponent } from '../dropdown';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-menu',\n imports: [UniMenuItemComponent, UniDropdownComponent],\n changeDetection: ChangeDetectionStrategy.OnPush, // Crucial for zoneless\n template: `\n <!-- Keydown listens for arrow keys bubbling from the projected (focusable)\n trigger; the wrapper itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #trigger [class]=\"TriggerClassName\" (keydown)=\"onTriggerKeydown($event)\">\n <ng-content></ng-content>\n </div>\n\n @if (menuItems()) {\n <uni-dropdown\n [trigger]=\"trigger\"\n [placement]=\"placement()\"\n ariaHasPopup=\"menu\"\n [color]=\"menuOptions().color\"\n [border]=\"menuOptions().border\"\n [borderRadius]=\"menuOptions().borderRadius\"\n [shadow]=\"menuOptions().shadow\"\n [paddingVertical]=\"menuOptions().paddingVertical\"\n [paddingHorizontal]=\"menuOptions().paddingHorizontal\"\n #dropdown\n (dropdownShowing)=\"onOpened()\"\n >\n <!-- Roving-focus composite: the container handles keys bubbling from\n the focused item (menu-item hosts carry tabindex=\"-1\"), and\n Enter/Space activation is dispatched from onMenuKeydown. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"menu\" [class]=\"menuClassName()\" (keydown)=\"onMenuKeydown($event, dropdown)\">\n @for (item of menuItems(); track item) {\n @if (isDivider(item)) {\n <div role=\"separator\" [class]=\"dividerClassName()\"></div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n menu-item\n [label]=\"item.label\"\n [symbolName]=\"item.symbolName\"\n [active]=\"activeItem() === item\"\n [template]=\"item.template\"\n [context]=\"item.context\"\n [variant]=\"item.variant\"\n [disabled]=\"item.disabled ?? false\"\n (click)=\"handleMenuItemClick(item, dropdown)\"\n ></div>\n }\n }\n </div>\n </uni-dropdown>\n }\n `,\n host: { '[class]': 'className()' },\n})\nexport class UniMenuComponent {\n private theme = inject(ThemeService);\n\n // Modern Signal Inputs for perfect Zoneless tracking\n menuItems = input.required<MenuItem[]>();\n activeItem = input<MenuItem>();\n placement = input<Placement>('bottom-start');\n\n // Modern Signal Output\n menuItemClicked = output<MenuItem>();\n\n TriggerClassName = css({ display: 'inline-block' });\n\n /** Type guard for the template: dividers render as separators, not items. */\n protected readonly isDivider = isDivider;\n\n protected readonly menuOptions = computed(() =>\n this.theme.getComponentOptions<UniMenuOptions>('menu')()\n );\n\n protected readonly menuClassName = computed(() =>\n css({ minWidth: this.menuOptions().minWidth })\n );\n\n protected readonly dividerClassName = computed(() => {\n const { dividerBorder, dividerSpacing } = this.menuOptions();\n // Read spacing directly: getSpacing('none') yields the string 'none',\n // which is invalid as a margin and must resolve to 0 instead.\n const spacing = this.theme.spacing()[dividerSpacing ?? 'none'];\n return css({\n ...this.theme.borderTop(dividerBorder),\n marginBlock: spacing,\n marginInline: spacing,\n });\n });\n\n private itemComponents = viewChildren(UniMenuItemComponent);\n private dropdownComponent = viewChild(UniDropdownComponent);\n\n /** Which item receives focus when the menu opens (ArrowUp opens onto the last item). */\n private pendingFocus: 'first' | 'last' = 'first';\n\n protected readonly className = computed(() => {\n return css({\n margin: 'unset',\n padding: 'unset',\n });\n });\n\n handleMenuItemClick(item: MenuItem, dropdown: UniDropdownComponent) {\n if (!isDivider(item) && item.action) {\n item.action();\n }\n\n this.menuItemClicked.emit(item);\n dropdown.hideDropdown();\n }\n\n /** Enabled items participating in keyboard navigation. */\n private get navigableItems(): UniMenuItemComponent[] {\n return this.itemComponents().filter((item) => !item.disabled());\n }\n\n onOpened() {\n const items = this.navigableItems;\n if (items.length === 0) return;\n const target = this.pendingFocus === 'last' ? items[items.length - 1] : items[0];\n this.pendingFocus = 'first';\n target.focus();\n }\n\n onTriggerKeydown(event: KeyboardEvent) {\n const dropdown = this.dropdownComponent();\n if (!dropdown || (event.key !== 'ArrowDown' && event.key !== 'ArrowUp')) return;\n event.preventDefault();\n\n this.pendingFocus = event.key === 'ArrowUp' ? 'last' : 'first';\n if (dropdown.showing()) {\n this.onOpened();\n } else {\n dropdown.toggleDropdown();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent, dropdown: UniDropdownComponent) {\n const items = this.navigableItems;\n if (items.length === 0) return;\n\n const currentIndex = items.findIndex((item) => item.host === event.target);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n items[(currentIndex + 1) % items.length].focus();\n break;\n case 'ArrowUp':\n event.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n event.preventDefault();\n items[0].focus();\n break;\n case 'End':\n event.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n (event.target as HTMLElement).click();\n break;\n case 'Tab':\n // A menu is not part of the page tab sequence: close and let focus\n // return to the trigger, then continue tabbing naturally.\n dropdown.hideDropdown();\n break;\n default:\n this.typeahead(event, items, currentIndex);\n }\n }\n\n /** First-character matching, starting after the focused item and wrapping. */\n private typeahead(event: KeyboardEvent, items: UniMenuItemComponent[], currentIndex: number) {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n const char = event.key.toLowerCase();\n if (char === ' ') return;\n\n for (let i = 1; i <= items.length; i++) {\n const item = items[(currentIndex + i) % items.length];\n if (item.label()?.toLowerCase().startsWith(char)) {\n event.preventDefault();\n item.focus();\n return;\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\n\nimport { Option } from '../../cdk';\nimport type { NullableSize } from '@uni-design-system/uni-core';\nimport { UniBoxComponent } from '../layout';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'uni-multi-select',\n imports: [UniCheckboxComponent, UniBoxComponent],\n templateUrl: './multi-select.component.html',\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectComponent<T = unknown> {\n // Data Inputs\n options = input<Option<T>[]>([]);\n selections = input<T[] | null | undefined>(undefined);\n updates = output<T[] | undefined>();\n\n // Styling Inputs\n flexDirection = input<'row' | 'row-reverse' | 'column' | 'column-reverse'>('column');\n checkboxGap = input<NullableSize | undefined>('sm');\n\n protected readonly values = computed<unknown[]>(() => this.selections() || []);\n\n protected readonly optionsWithSelections = computed<Option<T>[]>(() =>\n this.options().map((option) => ({\n ...option,\n selected: this.values().includes(option.value),\n }))\n );\n\n protected readonly className = css({ display: 'contents' });\n\n handleCheck(checked: boolean, value: T) {\n const selections = this.selections();\n\n if (!selections && !checked) return;\n\n if (selections && !checked) {\n const filteredSelections = selections.filter((item) => item != value);\n const isEmpty = filteredSelections.length === 0;\n this.updates.emit(isEmpty ? undefined : filteredSelections);\n return;\n }\n\n if (checked) {\n this.updates.emit([...(selections || []), value]);\n return;\n }\n }\n\n selectAll() {\n const allValues = this.options().map((option) => option.value);\n this.updates.emit(allValues);\n }\n\n deselectAll() {\n this.updates.emit(undefined);\n }\n\n optionWrapper = css({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n });\n}\n","<div box-layout display=\"flex\" [flexDirection]=\"flexDirection()\" [gap]=\"checkboxGap()\">\n @for (option of options(); track option) {\n <div [class]=\"optionWrapper\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"values().indexOf(option.value) > -1\"\n (checkedChange)=\"handleCheck($event, option.value)\"\n variant=\"primary\"\n >\n </uni-checkbox>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { createListboxNavigation, Option, visuallyHidden, type Options } from '../../cdk';\nimport { removeInputPlatformStyling } from '@uni-design-system/uni-core';\nimport { UniBoxComponent, UniRowComponent, UniStackComponent } from '../layout';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniDividerComponent } from '../divider';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniSymbolComponent } from '../symbol';\nimport { UniTextComponent } from '../text/text.component';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCheckboxComponent } from '../checkbox/checkbox.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniMultiSelectDropdownOptions } from './multi-select-dropdown.model';\n\n@Component({\n selector: 'uni-multi-select-dropdown',\n imports: [\n UniCheckboxComponent,\n UniBoxComponent,\n UniDropdownComponent,\n UniStackComponent,\n UniDividerComponent,\n UniButtonComponent,\n UniTextComponent,\n UniSymbolComponent,\n UniRowComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './multi-select-dropdown.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'multiSelectDropdown' }],\n host: { '[class]': 'className' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniMultiSelectDropdownComponent<T = unknown>\n extends BaseComponent<UniMultiSelectDropdownOptions>\n implements FormValueControl<T[]>\n{\n protected readonly className = css({ display: 'contents' });\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input.required<Options<T>>();\n readonly placeholder = input<string>('');\n\n /**\n * What the field is for, e.g. \"Fruits\". Rendered visually hidden inside the\n * trigger so its accessible name reads \"Fruits, Apple, Pear\" — without it a\n * screen reader announces only the current selection, with no clue which\n * field it belongs to.\n */\n readonly label = input<string>();\n\n /** Debounce for the filter box, matching the library's input debounce. */\n readonly debounceTime = input(200);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly query = signal('');\n private queryTimer?: ReturnType<typeof setTimeout>;\n\n protected readonly filteredOptions = computed<Options<T>>(() => {\n const filterText = this.query().toLowerCase();\n return this.options().filter((opt) => opt.label.toLowerCase().includes(filterText));\n });\n\n private readonly optionRefs = viewChildren<ElementRef<HTMLElement>>('optionRow');\n\n /**\n * Roving focus over the options. The shared helper owns the index\n * arithmetic — wrapping, Home/End, and never pointing past a list the\n * filter has narrowed — the same contract `uni-search-input` and\n * `uni-tag-input` use, so the keys behave identically across all three.\n */\n protected readonly list = createListboxNavigation({\n count: () => this.filteredOptions().length,\n idPrefix: 'uni-multi-select',\n });\n\n /** Announced with the selection so the count is not left to guesswork. */\n readonly selectionSummary = computed(() => {\n const count = this.value().length;\n return count === 0 ? 'none selected' : `${count} selected`;\n });\n\n // Derived display string\n readonly selectedLabelsText = computed(() => {\n const selections = this.value();\n const allOptions = this.options();\n\n // Find labels for each selected ID\n const labels = selections\n .map((value) => allOptions.find((opt) => opt.value === value)?.label)\n .filter((label) => !!label); // Remove undefined if an ID isn't found\n\n return labels.length > 0 ? labels.join(', ') : this.placeholder();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textColor = computed(() => {\n return this.selectedLabelsText() === this.placeholder()\n ? this.componentOptions().placeholderTextColor\n : this.componentOptions().textColor;\n });\n\n triggerClass = css({\n all: 'unset',\n display: 'block',\n cursor: 'pointer',\n width: '100%',\n\n '&:focus > :first-child > :first-child': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n });\n\n protected readonly searchInputClass = computed(() =>\n css({\n ...removeInputPlatformStyling,\n ...this.theme.border(this.componentOptions().searchInputBorder),\n ...this.theme.radius(this.componentOptions().searchInputBorderRadius),\n paddingBlock: 4,\n paddingInline: 8,\n width: 'auto',\n\n '&:focus': {\n outline: this.componentOptions().focusOutline,\n outlineOffset: this.componentOptions().focusOutlineOffset,\n },\n })\n );\n\n protected handleQueryInput(event: Event) {\n const text = (event.target as HTMLInputElement).value;\n // Debounced so a long option list is not re-filtered on every keystroke.\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(() => this.query.set(text), this.debounceTime());\n }\n\n /**\n * Arrow keys walk the options from anywhere in the panel, including the\n * filter box — previously the only way in was to Tab through every\n * checkbox.\n */\n protected onPanelKeydown(event: KeyboardEvent) {\n if (!this.list.navigate(event)) return;\n const row = this.optionRefs()[this.list.activeIndex()]?.nativeElement;\n row?.querySelector<HTMLElement>('input, [tabindex]')?.focus();\n }\n\n /** Keeps the active index in step when focus lands on a row by pointer. */\n protected onOptionFocus(index: number) {\n this.list.show();\n this.list.setActive(index);\n }\n\n selectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const allValues = this.options().map((option) => option.value);\n this.value.set(allValues);\n }\n\n deselectAll() {\n if (this.disabled()) return;\n\n this.touched.set(true);\n this.value.set([]);\n }\n\n protected isOptionSelected(option: Option<T>) {\n return computed(() => this.value().includes(option.value));\n }\n\n toggleOption(option: Option<T>, checked: boolean) {\n if (this.disabled()) return;\n\n this.touched.set(true);\n const { value } = option;\n this.value.update((current) => {\n if (checked) {\n // Add selection if not already present\n return current.includes(value) ? current : [...current, value];\n } else {\n // Remove selection\n return current.filter((item) => item !== value);\n }\n });\n }\n}\n","<button\n [class]=\"triggerClass\"\n #trigger\n [style.cursor]=\"disabled() ? 'default' : 'pointer'\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n (click)=\"!disabled() && touched.set(true)\"\n>\n @if (label(); as fieldLabel) {\n <span [class]=\"srOnly\">{{ fieldLabel }},</span>\n }\n <span [class]=\"srOnly\">{{ selectionSummary() }}</span>\n <uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div\n row-layout\n alignItems=\"center\"\n justifyContent=\"space-between\"\n [fullWidth]=\"true\"\n [minWidth]=\"0\"\n paddingLeft=\"sm\"\n >\n <span uni-text\n display=\"block\"\n [typeface]=\"componentOptions().textRole\"\n [color]=\"textColor()\"\n [ellipsis]=\"true\"\n [style.flex-grow]=\"1\"\n >{{ selectedLabelsText() }}</span>\n <uni-symbol name=\"keyboard_arrow_down\" [style.flex-shrink]=\"0\"></uni-symbol>\n </div>\n </uni-input-box>\n</button>\n<uni-dropdown\n #dropdown\n [trigger]=\"trigger\"\n ariaHasPopup=\"dialog\"\n (dropdownShowing)=\"$event && searchInput.focus()\"\n (dropdownHiding)=\"$event && trigger.focus()\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div (keydown)=\"onPanelKeydown($event)\">\n <div box-layout gap=\"xs\" padding=\"xs\">\n <input\n #searchInput\n type=\"text\"\n [class]=\"searchInputClass()\"\n [value]=\"query()\"\n (input)=\"handleQueryInput($event)\"\n placeholder=\"Search...\"\n aria-label=\"Filter options\"\n (click)=\"$event.stopPropagation()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div\n stack-layout\n gap=\"xs\"\n padding=\"xs\"\n role=\"group\"\n [attr.aria-label]=\"label() ? label() + ' options' : 'Options'\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div #optionRow (focusin)=\"onOptionFocus(i)\">\n <uni-checkbox\n [label]=\"option.label\"\n [checked]=\"isOptionSelected(option)()\"\n (checkedChange)=\"toggleOption(option, $event)\"\n variant=\"primary\"\n [disabled]=\"disabled()\"\n >\n </uni-checkbox>\n </div>\n }\n @if (filteredOptions().length === 0) {\n <span uni-text=\"label\" role=\"status\">No options match.</span>\n }\n </div>\n\n <uni-divider [border]=\"componentOptions().dividerBorder\" />\n\n <div row-layout gap=\"xs\" justifyContent=\"space-around\" padding=\"xs\">\n <button text-button (click)=\"dropdown.hideDropdown()\" size=\"sm\" variant=\"ghost\">Done</button>\n </div>\n </div>\n</uni-dropdown>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { Variant } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniNotificationBadgeOptions } from './notification-badge.model';\n\n@Component({\n selector: 'uni-notification-badge',\n imports: [UniTextComponent],\n templateUrl: './notification-badge.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'notificationBadge' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniNotificationBadgeComponent extends BaseComponent<UniNotificationBadgeOptions> {\n count = input<number | undefined>(undefined);\n maxCount = input<number>(99);\n badgeVariant = input<'dot' | 'count' | 'pill'>('count');\n color = input<Variant | undefined>(undefined);\n position = input<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>('top-right');\n show = input<boolean>(true);\n\n /**\n * Screen-reader text for the badge (e.g. \"5 unread messages\"). Without it\n * a sensible default is announced; a bare number or dot carries no meaning.\n */\n ariaLabel = input<string>();\n\n protected readonly srOnlyClass = css(visuallyHidden);\n\n protected readonly announcement = computed(() => {\n const label = this.ariaLabel();\n if (label) return label;\n if (this.badgeVariant() === 'dot') return 'New notifications';\n return `${this.displayValue()} notifications`;\n });\n\n displayValue = computed(() => {\n const count = this.count();\n const maxCount = this.maxCount();\n const variant = this.badgeVariant();\n\n if (variant === 'dot') {\n return '';\n }\n\n if (count === undefined || count <= 0) {\n return '';\n }\n\n if (count > maxCount) {\n return `${maxCount}+`;\n }\n\n return count.toString();\n });\n\n shouldShow = computed(() => {\n const show = this.show();\n const count = this.count();\n const variant = this.badgeVariant();\n\n if (!show) return false;\n\n if (variant === 'dot') return true;\n\n return count !== undefined && count > 0;\n });\n\n protected readonly className = computed(() => {\n const variant = this.badgeVariant();\n const color = this.color();\n const position = this.position();\n const offset = this.componentOptions().offset + 'px';\n\n const positionStyles = {\n 'top-right': { top: offset, right: offset },\n 'top-left': { top: offset, left: offset },\n 'bottom-right': { bottom: offset, right: offset },\n 'bottom-left': { bottom: offset, left: offset },\n }[position];\n\n const variantStyles = {\n dot: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n minWidth: 'unset',\n },\n count: {\n width: 20,\n height: 20,\n borderRadius: 10,\n },\n pill: {\n minWidth: '24px',\n height: '20px',\n borderRadius: '10px',\n padding: '0 8px',\n },\n }[variant];\n\n return css({\n position: 'relative',\n display: 'inline-block',\n\n '& .notification-badge-indicator': {\n position: 'absolute',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.getContainerColors(color || 'warn'),\n zIndex: 1,\n\n ...positionStyles,\n ...variantStyles,\n },\n });\n });\n}\n","<ng-content></ng-content>\n@if (shouldShow()) {\n<div class=\"notification-badge-indicator\" aria-hidden=\"true\">\n <span uni-text\n typeface=\"overline\"\n align=\"center\"\n [style.max-width]=\"badgeVariant() !== 'pill' ? (displayValue().length * 5 + 'px') : ''\"\n >{{ displayValue() }}</span>\n</div>\n<span [class]=\"srOnlyClass\">{{ announcement() }}</span>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { fadeOut, type Variant } from '@uni-design-system/uni-core';\n\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniAlertOptions } from './alert.model';\n\n@Component({\n selector: 'uni-alert',\n imports: [\n UniRowComponent,\n UniIconButtonComponent,\n UniTextComponent,\n UniBoxComponent,\n UniIconComponent,\n UniSymbolComponent,\n ],\n templateUrl: './alert.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'alert' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniAlertComponent extends BaseComponent<UniAlertOptions> implements AfterViewInit {\n show = model<boolean>();\n iconName = input<IconName | undefined>(undefined);\n symbolName = input<string | undefined>(undefined);\n useVariant = input<boolean>(false);\n\n showing = output<boolean>();\n\n @ViewChild('alert') alertRef?: ElementRef<HTMLDialogElement>;\n\n private readonly alertState = signal<'open' | 'closing' | 'closed'>('closed');\n\n private readonly effectiveVariant = computed<Variant>(\n () => this.variant() || this.componentOptions().defaultVariant\n );\n\n protected readonly alertClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.effectiveVariant(), this.useVariant()),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.border(this.effectiveVariant()),\n ...this.theme.boxShadow(this.componentOptions().elevation),\n\n transition: `all ${this.componentOptions().transitionSpeed}s ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n top: this.componentOptions().topPosition,\n\n '&[open]': {\n '@starting-style': {\n top: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n private readonly fadeOut = keyframes({ ...fadeOut });\n\n constructor() {\n super();\n effect(() => {\n if (this.show() === true) {\n this.open();\n } else if (this.show() === false) {\n this.close();\n }\n });\n }\n\n ngAfterViewInit() {\n this.alertRef?.nativeElement.addEventListener('animationend', (e) => {\n if (e.animationName === this.fadeOut.toString()) {\n this.alertRef?.nativeElement.close();\n this.showing.emit(false);\n this.alertState.set('closed');\n }\n });\n }\n\n open() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.removeAttribute('closing');\n this.alertRef.nativeElement.show();\n this.alertState.set('open');\n this.showing.emit(true);\n }\n\n close() {\n if (!this.alertRef?.nativeElement) return;\n\n this.alertRef.nativeElement.setAttribute('closing', 'true');\n this.alertState.set('closing');\n this.show.set(false);\n }\n\n protected readonly effectiveIconName = computed<IconName | undefined>(() => this.iconName());\n}\n","<!-- role=\"alert\" makes the message announce immediately when shown -->\n<dialog #alert [class]=\"alertClass()\" role=\"alert\">\n <div row-layout gap=\"md\">\n @if (iconName() || symbolName()) {\n <div box-layout [height]=\"26\" [width]=\"26\">\n @if (effectiveIconName()) {\n <uni-icon [name]=\"effectiveIconName()!\" />\n } @else {\n <uni-symbol [name]=\"symbolName()!\" [opticalSize]=\"26\" />\n }\n </div>\n }\n <span uni-text>\n <ng-content></ng-content>\n </span>\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">close</button>\n </div>\n</dialog>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\nimport {\n UniDialogButtonsComponent,\n UniDialogComponent,\n UniDialogHeaderComponent,\n} from '../../dialog';\nimport { UniBoxComponent } from '../../layout';\nimport { UniTextComponent } from '../../text';\nimport type { Confirmation } from '../../../cdk/notification';\n\n@Component({\n selector: 'uni-confirmation-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n UniDialogComponent,\n UniDialogHeaderComponent,\n UniBoxComponent,\n UniTextComponent,\n UniDialogButtonsComponent,\n ],\n templateUrl: './confirmation-dialog.component.html',\n})\nexport class ConfirmationDialogComponent {\n show = input(false);\n confirmation = input<Confirmation>();\n showing = output<boolean>();\n}\n","<dialog uni-dialog [show]=\"show()\" (showing)=\"showing.emit($event)\">\n <div uni-dialog-header>\n {{ confirmation()?.title }}\n </div>\n <div box-layout padding=\"md\">\n <span uni-text>\n {{ confirmation()?.message }}\n </span>\n </div>\n <div\n dialog-buttons\n [confirmButtonText]=\"confirmation()?.actionLabel\"\n (confirmed)=\"confirmation()?.action()\"\n [cancelButtonText]=\"confirmation()?.dismissLabel\"\n ></div>\n</dialog>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { useTimer } from '../../../cdk';\nimport { Z_INDEX } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../../base';\nimport { COMPONENT_NAME } from '../../base/base.component';\nimport { UniButtonComponent } from '../../button';\nimport { UniIconButtonComponent } from '../../icon-button';\nimport { UniIconComponent } from '../../icon';\nimport { IconName } from '../../icon/icon.record';\nimport { UniBoxComponent, UniRowComponent } from '../../layout';\nimport { UniSymbolComponent } from '../../symbol';\nimport { UniTextComponent } from '../../text';\nimport type { UniSnackbarOptions } from './snackbar.model';\n\n@Component({\n selector: 'uni-snackbar',\n imports: [\n UniRowComponent,\n UniBoxComponent,\n UniTextComponent,\n UniIconButtonComponent,\n UniSymbolComponent,\n UniIconComponent,\n UniButtonComponent,\n ],\n templateUrl: './snackbar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'snackbar' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSnackbarComponent\n extends BaseComponent<UniSnackbarOptions>\n implements AfterViewInit\n{\n timer = useTimer();\n\n /** Two-way bindable open state: [(show)]. */\n show = model<boolean>();\n iconName = input<IconName>();\n symbolName = input<string>();\n timeout = input<number | string | 'disabled'>();\n actionLabel = input<string>();\n\n useVariant = input<boolean>(false);\n\n action = output();\n showing = output<boolean>();\n\n snackbarRef = viewChild<ElementRef>('snackbar');\n\n private get _snackbar(): HTMLDialogElement | undefined {\n return this.snackbarRef()?.nativeElement;\n }\n\n constructor() {\n super();\n\n effect(() => (this.show() ? this.open() : this.close()));\n }\n\n protected readonly snackbarClass = computed(() =>\n css({\n ...this.theme.getContainerColors(this.variant() || 'primary', this.useVariant()),\n ...this.theme.radius('sm'),\n ...this.theme.border(this.variant() || 'primary'),\n ...this.theme.boxShadow('dialog'),\n padding: 0,\n transition: `all ${this.componentOptions().transitionDelay} ease-in-out`,\n transitionBehavior: 'allow-discrete',\n opacity: 1,\n bottom: this.componentOptions().bottomPosition,\n zIndex: Z_INDEX.dialog,\n position: 'fixed',\n\n '&[open]': {\n '@starting-style': {\n bottom: 0,\n opacity: 0,\n },\n },\n\n '&[closing]': {\n animation: `${this.fadeOut} 0.3s forwards`,\n },\n })\n );\n\n fadeOut = keyframes({\n '0% ': {\n opacity: 1,\n },\n '100%': {\n opacity: 0,\n },\n });\n\n ngAfterViewInit() {\n this._snackbar?.addEventListener('animationend', (e) => {\n if (e.animationName == this.fadeOut) {\n this._snackbar?.close();\n this.showing.emit(false);\n }\n });\n }\n\n private get _timeout(): number | undefined {\n const timeout = this.timeout();\n if (timeout === 'disabled') return undefined;\n\n return typeof timeout === 'string'\n ? parseFloat(timeout)\n : timeout || this.componentOptions().autoCloseDelay;\n }\n\n open() {\n this._snackbar?.removeAttribute('closing');\n this._snackbar?.show();\n this.show.set(true);\n this.showing.emit(true);\n\n if (this._timeout) this.timer.start(this._timeout, () => this.close());\n }\n\n close() {\n this._snackbar?.setAttribute('closing', 'true');\n this.show.set(false);\n }\n\n protected pauseTimer() {\n this.timer.pause();\n }\n\n protected resumeTimer() {\n this.timer.resume();\n }\n}\n","@let icon = iconName();\n@let symbol = symbolName();\n<!-- role=\"status\" announces the message politely without stealing focus -->\n<dialog\n #snackbar\n [class]=\"snackbarClass()\"\n role=\"status\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n (focusin)=\"pauseTimer()\"\n (focusout)=\"resumeTimer()\"\n>\n <div row-layout alignItems=\"center\">\n @if (icon || symbol) {\n <div box-layout [height]=\"26\" [width]=\"26\" paddingLeft=\"sm\">\n @if (icon) {\n <uni-icon [name]=\"icon\"></uni-icon>\n } @else if (symbol) {\n <uni-symbol [name]=\"symbol\" [opticalSize]=\"26\"></uni-symbol>\n }\n </div>\n }\n <div box-layout padding=\"sm\">\n <span uni-text>\n <ng-content></ng-content>\n </span>\n </div>\n <div box-layout paddingRight=\"sm\">\n @if (!actionLabel()) {\n <button icon-button (click)=\"close()\" iconName=\"close\" size=\"md\">Close</button>\n } @else {\n <button text-button variant=\"ghost\" (click)=\"this.action.emit(); close()\">\n {{ actionLabel() }}\n </button>\n }\n </div>\n </div>\n</dialog>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { Alert, Confirmation, NotificationService, Snackbar } from '../../../cdk';\nimport { UniAlertComponent } from '../alert/alert.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\nimport { UniSnackbarComponent } from '../snackbar/snackbar.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-notifications',\n imports: [UniAlertComponent, UniSnackbarComponent, ConfirmationDialogComponent],\n templateUrl: './notifications.component.html',\n})\nexport class NotificationsComponent {\n notifications = inject(NotificationService);\n\n private readonly alertState = signal<Alert | undefined>(undefined);\n private readonly snackbarState = signal<Snackbar | undefined>(undefined);\n private readonly confirmationState = signal<Confirmation | undefined>(undefined);\n\n // Computed values for the show states\n protected readonly showAlert = computed(() => !!this.alertState());\n protected readonly showSnackbar = computed(() => !!this.snackbarState());\n protected readonly showConfirmation = computed(() => !!this.confirmationState());\n\n // Expose the alert state\n protected readonly alert = computed(() => this.alertState());\n protected readonly snackbar = computed(() => this.snackbarState());\n protected readonly confirmation = computed(() => this.confirmationState());\n\n constructor() {\n effect(() => {\n this.alertState.set(this.notifications.alert());\n });\n effect(() => {\n this.snackbarState.set(this.notifications.snackbar());\n });\n effect(() => {\n this.confirmationState.set(this.notifications.confirmation());\n });\n }\n\n handleConfirmationShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideConfirmation();\n }\n\n handleSnackbarShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideSnackbar();\n }\n\n handleAlertShowingEvent(showing: boolean) {\n if (!showing) this.notifications.hideAlert();\n }\n}\n","<uni-alert\n [show]=\"showAlert()\"\n (showing)=\"handleAlertShowingEvent($event)\"\n [variant]=\"alert()?.variant || 'primary'\"\n [iconName]=\"alert()?.iconName\"\n [symbolName]=\"alert()?.symbolName\"\n >{{ alert()?.message }}</uni-alert>\n\n<uni-snackbar\n [show]=\"showSnackbar()\"\n (showing)=\"handleSnackbarShowingEvent($event)\"\n [variant]=\"snackbar()?.variant || 'primary'\"\n [actionLabel]=\"snackbar()?.actionLabel\"\n (action)=\"snackbar()?.action?.()\"\n [timeout]=\"snackbar()?.timeout\"\n [iconName]=\"snackbar()?.iconName\"\n [symbolName]=\"snackbar()?.symbolName\"\n >{{ snackbar()?.message }}</uni-snackbar>\n\n<uni-confirmation-dialog\n [show]=\"showConfirmation()\"\n (showing)=\"handleConfirmationShowingEvent($event)\"\n [confirmation]=\"confirmation()\"\n></uni-confirmation-dialog>\n","import { ChangeDetectionStrategy, Component, computed, effect, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { type UniDatasource } from '../../cdk';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniRowComponent } from '../layout';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniPaginatorOptions } from './paginator.model';\n\n@Component({\n selector: 'uni-paginator',\n imports: [UniRowComponent, UniIconButtonComponent, UniTextComponent],\n templateUrl: './paginator.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'paginator' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'navigation',\n 'aria-label': 'Pagination',\n },\n})\nexport class UniPaginatorComponent<T> extends BaseComponent<UniPaginatorOptions> {\n datasource = input<UniDatasource<T>>();\n initPageSize = input<number>();\n\n showPageSize = input<boolean>(true);\n showPageJumper = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n\n constructor() {\n super();\n effect(() => {\n const pageSize = this.initPageSize();\n if (!pageSize) return;\n const ds = this.datasource();\n if (ds) ds.setPageSize(pageSize);\n });\n }\n\n protected readonly inputClass = computed(() =>\n css({\n textAlign: 'center',\n ...this.theme.border(this.componentOptions().inputBorder),\n ...this.theme.radius(this.componentOptions().inputBorderRadius),\n height: 22,\n fontSize: 16,\n padding: '2px 0 0 2px',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n })\n );\n\n protected readonly pageClass = computed(() =>\n css({\n all: 'unset',\n boxSizing: 'border-box',\n ...this.theme.radius(this.componentOptions().pageBorderRadius),\n padding: 2,\n width: 20,\n display: 'flex',\n justifyContent: 'center',\n cursor: 'pointer',\n border: 'solid 1px transparent',\n\n '&:focus-visible': {\n outline: '2px solid currentColor',\n outlineOffset: 1,\n },\n\n '&.current': {\n ...this.theme.border(this.componentOptions().currentPageBorder),\n ...this.theme.radius(this.componentOptions().currentPageBorderRadius),\n cursor: 'unset',\n },\n\n '&:hover:not(.current)': {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n })\n );\n\n updatePageSize(event: Event) {\n const ds = this.datasource();\n const pageSize = (event.target as HTMLInputElement).value;\n if (ds) ds.setPageSize(parseInt(pageSize));\n }\n\n jumpToPage(event: Event) {\n const ds = this.datasource();\n const page = (event.target as HTMLInputElement).value;\n if (ds) ds.jumpToPage(parseInt(page));\n }\n\n isNumber(page: unknown) {\n return typeof page === 'number';\n }\n}\n","@let ds = datasource();\n@if (ds) {\n <div row-layout alignItems=\"center\" [gap]=\"componentOptions().gap\">\n @if (showPageSize()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingRight=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Show</span>\n <input\n type=\"number\"\n aria-label=\"Items per page\"\n [class]=\"inputClass()\"\n (change)=\"updatePageSize($event)\"\n min=\"1\"\n [max]=\"ds.recordCount()\"\n [value]=\"ds.pageSize()\"\n />\n </div>\n }\n\n @if (showPageNumbers()) {\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_left\"\n (click)=\"ds.firstPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n First Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_left\"\n (click)=\"ds.previousPage()\"\n [disable]=\"ds.disablePrevious()\"\n >\n Previous Page\n </button>\n\n @for (page of ds.truncatedPages(); track page) {\n @if (isNumber(page)) {\n <button\n type=\"button\"\n [class]=\"pageClass()\"\n [class.current]=\"page === ds.pageIndex() + 1\"\n [attr.aria-label]=\"'Page ' + page\"\n [attr.aria-current]=\"page === ds.pageIndex() + 1 ? 'page' : null\"\n (click)=\"ds.jumpToPage(page)\"\n >\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </button>\n } @else {\n <div>\n <span uni-text [typeface]=\"componentOptions().textRole\" display=\"block\">\n {{ page }}\n </span>\n </div>\n }\n }\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"chevron_right\"\n (click)=\"ds.nextPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Next Page\n </button>\n\n <button\n icon-button\n variant=\"ghost\"\n size=\"md\"\n symbolName=\"keyboard_double_arrow_right\"\n (click)=\"ds.lastPage()\"\n [disable]=\"ds.disableNext()\"\n >\n Last Page\n </button>\n }\n\n @if (showPageJumper()) {\n <div row-layout alignItems=\"center\" gap=\"sm\" paddingLeft=\"sm\">\n <span uni-text [typeface]=\"componentOptions().textRole\">Jump to</span>\n <input\n type=\"number\"\n aria-label=\"Jump to page\"\n [class]=\"inputClass()\"\n (change)=\"jumpToPage($event)\"\n min=\"1\"\n [max]=\"ds.pageCount()\"\n [value]=\"ds.pageIndex() + 1\"\n />\n </div>\n }\n </div>\n}\n","/**\n * UniPaginatorComponent Barrel File\n *\n * This file exports all public-facing elements of the paginator component.\n */\n\nexport { UniPaginatorComponent } from './paginator.component';\nexport type { UniPaginatorOptions } from './paginator.model';\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n type Placement,\n} from '../../cdk';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-popover',\n imports: [],\n templateUrl: './popover.component.html',\n})\nexport class UniPopoverComponent {\n private renderer = inject(Renderer2);\n private theme = inject(ThemeService);\n\n placement = input<Placement>('bottom');\n\n /** Light-dismiss on outside click / Escape (native popover=\"auto\"). */\n autoClose = input(true);\n\n readonly panelId = uniqueId('uni-popover');\n private readonly anchorName = newAnchorName();\n private readonly showing = signal(false);\n\n private triggerRef = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n\n constructor() {\n // Wire the ARIA disclosure contract onto the focusable trigger element\n afterNextRender(() => {\n const target = resolveFocusTarget(this.triggerRef().nativeElement);\n this.renderer.setAttribute(target, 'aria-expanded', 'false');\n this.renderer.setAttribute(target, 'aria-controls', this.panelId);\n });\n }\n\n protected onToggle(event: Event) {\n const open = (event as ToggleEvent).newState === 'open';\n this.showing.set(open);\n this.renderer.setAttribute(\n resolveFocusTarget(this.triggerRef().nativeElement),\n 'aria-expanded',\n `${open}`\n );\n }\n\n showPopover() {\n this.panelRef().nativeElement.showPopover();\n }\n\n hidePopover() {\n this.panelRef().nativeElement.hidePopover();\n }\n\n togglePopover(event: MouseEvent) {\n if (this.showing()) {\n this.hidePopover();\n } else {\n this.showPopover();\n }\n event.stopPropagation();\n }\n\n protected readonly triggerClassName = css({\n display: 'inline-block',\n anchorName: this.anchorName,\n });\n\n protected readonly popoverClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair('primary-surface'),\n ...this.theme.radius('xs'),\n ...this.theme.boxShadow('raised'),\n ...this.theme.typeface('label'),\n ...this.theme.border('quaternary'),\n padding: '6px 12px',\n width: 'max-content',\n overflow: 'visible',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 7 }),\n\n // Fade via discrete transitions across the top layer\n transitionProperty: 'opacity, display, overlay',\n transitionDuration: '250ms',\n transitionBehavior: 'allow-discrete',\n opacity: 0,\n\n '&:popover-open': {\n opacity: 1,\n },\n\n '@starting-style': {\n '&:popover-open': {\n opacity: 0,\n },\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() => {\n const side = this.placement().split('-')[0];\n // Border on the two edges of the rotated square that face outward\n const borders: Record<string, object> = {\n top: { ...this.theme.borderRight('quaternary'), ...this.theme.borderBottom('quaternary') },\n bottom: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderTop('quaternary') },\n left: { ...this.theme.borderRight('quaternary'), ...this.theme.borderTop('quaternary') },\n right: { ...this.theme.borderLeft('quaternary'), ...this.theme.borderBottom('quaternary') },\n };\n return css({\n ...this.theme.colorPair('primary-surface'),\n ...anchorArrowStyles(this.placement()),\n ...borders[side],\n });\n });\n}\n","<!-- Click bubbles up from the projected [trigger] content, which is expected\n to be focusable (a button); keyboard activation arrives as a click. -->\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<span #trigger (click)=\"togglePopover($event)\" [class]=\"triggerClassName\">\n <ng-content select=\"[trigger]\"></ng-content>\n</span>\n<div\n #panel\n [id]=\"panelId\"\n [attr.popover]=\"autoClose() ? 'auto' : 'manual'\"\n [class]=\"popoverClassName()\"\n (toggle)=\"onToggle($event)\"\n>\n <ng-content></ng-content>\n <span [class]=\"arrowClassName()\"></span>\n</div>\n","/**\n * UniPopoverComponent Barrel File\n *\n * This file exports all public-facing elements of the popover component.\n */\n\nexport { UniPopoverComponent } from './popover.component';\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\n\n@Component({\n selector: 'uni-progress-bar',\n imports: [],\n templateUrl: './progress-bar.component.html',\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressBarComponent {\n theme = inject(ThemeService);\n\n palette = this.theme.colors;\n\n width = input<number>(560);\n height = input<number>(24);\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing (e.g. \"Upload progress\"). */\n ariaLabel = input<string>();\n\n stroke = 1;\n\n protected readonly className = computed(() => {\n return css([{ display: 'block' }]);\n });\n\n protected readonly Math = Math;\n}\n","<svg aria-hidden=\"true\" [attr.width]=\"width()\" [attr.height]=\"height()\">\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"width() - stroke * 2\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"palette()['primary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n\n <rect\n [attr.x]=\"stroke\"\n [attr.y]=\"stroke\"\n [attr.width]=\"Math.max(height() - stroke * 2, (percent() / 100) * width() - stroke * 2)\"\n [attr.height]=\"height() - stroke * 2\"\n [attr.fill]=\"percent() === 100 ? palette()['secondary'] : palette()['secondary-surface']\"\n [attr.stroke]=\"palette()['on-background-variant']\"\n [attr.stroke-width]=\"stroke\"\n [attr.ry]=\"height() / 2 - stroke\"\n [attr.rx]=\"height() / 2 - stroke\"\n />\n</svg>\n","/**\n * UniProgressBarComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-bar component.\n */\n\nexport { UniProgressBarComponent } from './progress-bar.component';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\n\n@Component({\n selector: 'uni-progress-gauge',\n imports: [],\n templateUrl: './progress-gauge.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'progressGauge' }],\n host: {\n '[class]': 'className()',\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'percent()',\n '[attr.aria-label]': \"ariaLabel() || 'Progress'\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniProgressGaugeComponent extends BaseComponent {\n percent = input<number>(0);\n\n /** Accessible name describing what is progressing. */\n ariaLabel = input<string>();\n\n textStyle = computed(() => {\n const theme = this.componentTheme();\n return theme.fixed && theme.fixed['textFill'];\n });\n\n private progress = keyframes({\n '0%': { strokeDasharray: '0 100' },\n });\n\n protected readonly className = computed(() => {\n return css({\n display: 'block',\n\n '& .circular-chart': {\n display: 'block',\n },\n\n '& .circle-bg': {\n fill: 'none',\n strokeWidth: 3.8,\n },\n\n '& .circle': {\n fill: 'none',\n strokeWidth: 3.8,\n animation: `${this.progress} 1s ease-out forwards`,\n },\n\n '& .percentage': {\n fontFamily: 'sans-serif',\n fontSize: '0.5em',\n textAnchor: 'middle',\n },\n });\n });\n}\n","<svg\n viewBox=\"0 0 36 36\"\n class=\"circular-chart\"\n aria-hidden=\"true\"\n [style.height]=\"style()['height']\"\n>\n <path\n class=\"circle-bg\"\n [attr.stroke]=\"style()['backgroundColor']\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path\n class=\"circle\"\n [attr.stroke]=\"style()['color']\"\n [attr.stroke-dasharray]=\"percent() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <text x=\"18.5\" y=\"20.82\" class=\"percentage\" [style.fill]=\"textStyle()\">{{ percent() }}%</text>\n</svg>\n","/**\n * UniProgressGaugeComponent Barrel File\n *\n * This file exports all public-facing elements of the progress-gauge component.\n */\n\nexport { UniProgressGaugeComponent } from './progress-gauge.component';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniRadioOption, UniRadioOptions } from './radio.model';\nimport { uniqueId } from '../../cdk';\n\n@Component({\n selector: 'uni-radio',\n imports: [UniTextComponent],\n templateUrl: './radio.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'radio' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniRadioComponent\n extends BaseComponent<UniRadioOptions>\n implements FormValueControl<string>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<UniRadioOption[]>([]);\n readonly label = input<string>();\n // Unique default so multiple radio groups on a page never share a name\n readonly name = input<string>(uniqueId('uni-radio-group'));\n\n /** Links the group label to the radiogroup container. */\n protected readonly groupLabelId = uniqueId('uni-radio-label');\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n private readonly metrics = computed(() => {\n const radioSize = (this.componentOptions().size as number) || 20;\n const innerCircleSize = radioSize * 0.6;\n return {\n outerCircleSize: radioSize,\n innerCircleSize,\n innerCircleOffset: (radioSize - innerCircleSize) / 2,\n };\n });\n\n protected readonly radioGroupClass = css({\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n });\n\n protected readonly radioOptionClass = computed(() => {\n const { outerCircleSize, innerCircleSize, innerCircleOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .radio-button': {\n width: outerCircleSize,\n height: outerCircleSize,\n borderRadius: '50%',\n border: `2px solid ${\n this.disabled()\n ? this.getThemeColor('on-disabled')\n : this.getThemeColor(this.componentOptions().ringColor ?? 'outline')\n }`,\n position: 'relative',\n transition: 'all 0.3s ease',\n backgroundColor: this.getThemeColor(this.componentOptions().fillColor ?? 'surface'),\n flexShrink: 0,\n },\n\n '& .radio-inner': {\n width: innerCircleSize,\n height: innerCircleSize,\n borderRadius: '50%',\n backgroundColor: this.getThemeColor(this.variant()),\n position: 'absolute',\n top: innerCircleOffset,\n left: innerCircleOffset,\n transform: 'scale(0)',\n transition: 'all 0.3s ease',\n },\n\n '&:hover .radio-button': this.disabled()\n ? {}\n : {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&.disabled': {\n cursor: 'not-allowed',\n opacity: 0.6,\n\n '& .radio-button': {\n borderColor: this.getThemeColor('on-disabled'),\n },\n },\n });\n });\n\n protected readonly radioInputClass = computed(() =>\n css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .radio-button': {\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .radio-button .radio-inner': {\n transform: 'scale(1)',\n },\n\n '&:focus + .radio-button': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n })\n );\n\n handleRadioChange(optionValue: string) {\n this.value.set(optionValue);\n this.markAsTouched();\n }\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<div\n [class]=\"radioGroupClass\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? groupLabelId : null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n>\n @if (label()) {\n <span uni-text=\"label\" [attr.id]=\"groupLabelId\">{{ label() }}</span>\n }\n\n @for (option of options(); track option.value) {\n <label [class]=\"radioOptionClass()\" [class.disabled]=\"disabled() || option.disabled\">\n <input\n type=\"radio\"\n [class]=\"radioInputClass()\"\n [value]=\"option.value\"\n [name]=\"name()\"\n [checked]=\"value() === option.value\"\n [disabled]=\"disabled() || option.disabled\"\n (change)=\"handleRadioChange(option.value)\"\n />\n <div class=\"radio-button\">\n <div class=\"radio-inner\"></div>\n </div>\n <span uni-text=\"label\">{{ option.label }}</span>\n </label>\n }\n</div>\n","/**\n * UniScrollAreaComponent Barrel File\n *\n * This file exports all public-facing elements of the scroll-area component.\n */\n\nexport { UniScrollAreaComponent } from './scroll-area.component';\nexport type { ScrollbarAppearance } from './scroll-area.types';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { createListboxNavigation } from '../../cdk';\nimport { UniDebounceInputComponent } from '../forms/debounce-input/debounce-input.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniSearchInputOptions } from './search-input.model';\n\n/**\n * Generic search field: shared input chrome with a leading magnifier, a clear\n * button while there's a query, Enter to submit, and optional type-ahead —\n * pass `suggestions` (refresh them from `change`) and the field becomes an\n * ARIA combobox with a keyboard-navigable listbox. Escape closes the list\n * first, then clears the query.\n */\n@Component({\n selector: 'uni-search-input',\n imports: [UniDebounceInputComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './search-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'searchInput' }],\n host: { '[class]': 'className()' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniSearchInputComponent extends BaseComponent<UniSearchInputOptions> {\n /** Accessible name for the field, also the placeholder fallback. */\n label = input.required<string>();\n placeholder = input<string>();\n width = input<string | number>('100%');\n debounceTime = input(400);\n /**\n * Type-ahead entries. Keep them fresh from `change` emissions; the list\n * shows while the field has focus and entries exist.\n */\n suggestions = input<string[]>([]);\n\n // TODO(v4): rename to searchChange/searchSubmit — renaming is breaking\n // eslint-disable-next-line @angular-eslint/no-output-native\n change = output<string>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n search = output<string>();\n suggestionSelected = output<string>();\n\n protected readonly field = viewChild.required(UniDebounceInputComponent);\n\n protected readonly visibleSuggestions = computed(() =>\n this.suggestions().slice(0, this.componentOptions().maxSuggestions ?? 8)\n );\n\n /** Shared combobox bookkeeping: open state, active option, ARIA ids. */\n protected readonly list = createListboxNavigation({\n count: () => this.visibleSuggestions().length,\n idPrefix: 'uni-search-listbox',\n });\n\n readonly listboxId = this.list.listboxId;\n\n protected readonly hasQuery = computed(() => !!this.field()?.value());\n\n protected handleChange(value: string) {\n this.list.show();\n this.list.setActive(-1);\n this.change.emit(value);\n }\n\n protected submit() {\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) {\n this.select(this.visibleSuggestions()[active]);\n return;\n }\n this.list.hide();\n this.search.emit(this.field().value() ?? '');\n }\n\n protected select(suggestion: string) {\n this.field().value.set(suggestion);\n this.list.hide();\n this.suggestionSelected.emit(suggestion);\n this.search.emit(suggestion);\n }\n\n protected clear() {\n this.field().clear();\n this.list.hide();\n this.field().focus();\n }\n\n protected onKeydown(event: KeyboardEvent) {\n // Arrows and Home/End belong to the shared listbox contract.\n if (this.list.navigate(event)) return;\n\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.submit();\n break;\n case 'Escape':\n // Escape backs out one layer at a time: close the list, then clear.\n if (this.list.open()) this.list.hide();\n else if (this.hasQuery()) this.clear();\n break;\n }\n }\n\n protected onFocusOut(event: FocusEvent) {\n this.list.closeOnFocusOut(event);\n }\n\n protected readonly className = computed(() =>\n css({\n display: 'block',\n position: 'relative',\n width: this.width(),\n '& .uni-search-lead': {\n fontSize: 20,\n ...this.theme.color('on-background-variant'),\n ...this.theme.paddingLeft('sm'),\n },\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Keydown/focusout ride the bubbling events from the inner input; the\n wrapper itself stays out of the tab order. -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div (keydown)=\"onKeydown($event)\" (focusout)=\"onFocusOut($event)\">\n <uni-debounce-input\n #searchField\n [label]=\"label()\"\n [placeholder]=\"placeholder() ?? label()\"\n [debounceTime]=\"debounceTime()\"\n role=\"combobox\"\n [ariaExpanded]=\"list.open()\"\n [ariaControls]=\"listboxId\"\n [ariaActivedescendant]=\"list.activeDescendantId() ?? undefined\"\n (change)=\"handleChange($event)\"\n >\n <uni-symbol pre-input class=\"uni-search-lead\" name=\"{{ componentOptions().searchSymbol ?? 'search' }}\" aria-hidden=\"true\" />\n @if (hasQuery()) {\n <button\n post-input\n icon-button\n [iconName]=\"componentOptions().clearSymbol ?? 'close'\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"clear()\"\n >\n Clear search\n </button>\n }\n </uni-debounce-input>\n\n @if (list.open()) {\n <ul [id]=\"listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"list.optionId(i)\"\n [class.active]=\"i === list.activeIndex()\"\n [attr.aria-selected]=\"i === list.activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"select(suggestion)\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n","/**\n * UniSearchInputComponent Barrel File\n *\n * This file exports all public-facing elements of the search-input component.\n */\n\nexport { UniSearchInputComponent } from './search-input.component';\nexport type { UniSearchInputOptions } from './search-input.model';\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Options } from '../../cdk';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniSymbolComponent } from '../symbol';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-select',\n imports: [UniInputBoxComponent, UniSymbolComponent],\n templateUrl: './select-input.component.html',\n})\nexport class UniSelectComponent<T> implements FormValueControl<T | null> {\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<T | null>(null);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly options = input<Options<T>>([]);\n readonly placeholder = input<string>();\n\n /** Accessible name for the select; a placeholder is not a label. */\n readonly ariaLabel = input<string>();\n\n protected readonly UNSELECTED = -1;\n\n /**\n * We use the index as the HTML value to avoid issues with\n * stringifying complex objects or duplicate labels.\n */\n protected readonly currentSelectedIndex = computed(() => {\n const currentVal = this.value();\n if (currentVal === null || currentVal === undefined) return this.UNSELECTED;\n\n // Find the index of the option that contains our current value\n const index = this.options().findIndex((opt) => opt.value === currentVal);\n return index.toString();\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected handleSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const index = parseInt(select.value, 10);\n\n if (index === this.UNSELECTED) {\n this.value.set(null);\n } else {\n const selectedOption = this.options()[index];\n // Update the model with the 'value' property of the Option interface\n this.value.set(selectedOption.value);\n }\n }\n\n selectClass = css({\n '& select': {\n paddingRight: 24, // Prevent arrow from overlapping\n cursor: 'pointer',\n '&::-ms-expand': { display: 'none' },\n },\n\n [`& select:has(option[value=\"${this.UNSELECTED}\"]:checked)`]: {\n color: 'color-mix(in srgb, currentColor 50%, transparent)',\n },\n });\n\n arrowClass = css({\n position: 'absolute',\n right: 0,\n pointerEvents: 'none' /* Crucial for clicking through */,\n });\n}\n","<uni-input-box [error]=\"showError()\" [class]=\"selectClass\">\n <select\n [disabled]=\"disabled()\"\n [value]=\"currentSelectedIndex()\"\n (change)=\"handleSelectChange($event)\"\n (blur)=\"touched.set(true)\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n @if (placeholder()) {\n <option [value]=\"UNSELECTED\" disabled selected>\n {{ placeholder() }}\n </option>\n }\n\n @for (opt of options(); track opt.label; let i = $index) {\n <!-- [selected] evaluates during the option's own render, so a selection\n pointing at an option added in the same change-detection pass still\n applies (the select-level [value] write lands before new options\n exist and is ignored by the browser). -->\n <option [value]=\"i\" [selected]=\"currentSelectedIndex() === i.toString()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <uni-symbol name=\"keyboard_arrow_down\" [class]=\"arrowClass\" />\n</uni-input-box>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport type { SkeletonShape, UniSkeletonOptions } from './skeleton.model';\n\n/**\n * Loading placeholder painted with surface tokens. `text` renders one or more\n * lines (the last line shortened, as real text would be), `rect` and `circle`\n * render fixed shapes. The shimmer only animates when the user allows motion;\n * it degrades to static blocks under `prefers-reduced-motion`.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-skeleton',\n providers: [{ provide: COMPONENT_NAME, useValue: 'skeleton' }],\n host: { '[class]': 'className()', 'aria-hidden': 'true' },\n template: `\n @for (line of lineWidths(); track $index) {\n <div class=\"uni-skeleton-block\" [style.width]=\"line\"></div>\n }\n `,\n})\nexport class UniSkeletonComponent extends BaseComponent<UniSkeletonOptions> {\n shape = input<SkeletonShape>('text');\n /** CSS width; defaults to 100% for text/rect and `height` for circles. */\n width = input<string | number | undefined>(undefined);\n /** CSS height per block; defaults to 1em (text), 96px (rect), 40px (circle). */\n height = input<string | number | undefined>(undefined);\n /** Number of text lines (text shape only). */\n lines = input(1);\n\n private readonly cssSize = (value: string | number): string =>\n typeof value === 'number' ? `${value}px` : value;\n\n protected readonly resolvedHeight = computed(() => {\n const height = this.height();\n if (height !== undefined) return this.cssSize(height);\n return { text: '1em', rect: '96px', circle: '40px' }[this.shape()];\n });\n\n protected readonly lineWidths = computed(() => {\n const width = this.width() !== undefined ? this.cssSize(this.width()!) : undefined;\n if (this.shape() === 'circle') return [width ?? this.resolvedHeight()];\n if (this.shape() === 'rect') return [width ?? '100%'];\n const lines = Math.max(1, this.lines());\n // Multi-line text blocks end on a short line, like real paragraphs do.\n return Array.from({ length: lines }, (_, i) =>\n lines > 1 && i === lines - 1 ? (width ?? '60%') : (width ?? '100%')\n );\n });\n\n private readonly sweep = keyframes({\n from: { backgroundPosition: '200% 0' },\n to: { backgroundPosition: '-200% 0' },\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n const base = this.theme.colors()[options.color ?? 'surface-variant'];\n const highlight = this.theme.colors()[options.highlightColor ?? 'surface'];\n const animated = (options.animation ?? 'shimmer') === 'shimmer';\n return css({\n display: 'flex',\n flexDirection: 'column',\n ...this.theme.gap(options.gap),\n '& .uni-skeleton-block': {\n height: this.resolvedHeight(),\n backgroundColor: base,\n ...(this.shape() === 'circle'\n ? { borderRadius: '50%', flex: 'none' }\n : this.theme.radius(options.borderRadius)),\n ...(animated &&\n motionSafe({\n backgroundImage: `linear-gradient(90deg, ${base} 40%, ${highlight} 50%, ${base} 60%)`,\n backgroundSize: '200% 100%',\n animation: `${this.sweep} ${options.duration ?? 1.4}s ease-in-out infinite`,\n })),\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniSliderOptions } from './slider.model';\n\n/**\n * Range slider on a native `<input type=\"range\">` — keyboard interaction and\n * the ARIA slider contract come from the platform. Fill, track, thumb and\n * radii resolve from `slider` theme tokens; the fill percentage rides a CSS\n * custom property so dragging never regenerates styles.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-slider',\n providers: [{ provide: COMPONENT_NAME, useValue: 'slider' }],\n template: `\n <input\n type=\"range\"\n [class]=\"inputClass()\"\n [style.--uni-slider-fill]=\"fillPercent()\"\n [min]=\"resolvedMin()\"\n [max]=\"resolvedMax()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"handleInput($event)\"\n (blur)=\"markAsTouched()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n `,\n})\nexport class UniSliderComponent\n extends BaseComponent<UniSliderOptions>\n implements FormValueControl<number>\n{\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<number>(0);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered value or error text — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n // `min`/`max` are part of the FormValueControl contract (synced from\n // min()/max() validators), so their type must admit undefined.\n min = input<number | undefined>(0);\n max = input<number | undefined>(100);\n step = input(1);\n\n protected readonly resolvedMin = computed(() => this.min() ?? 0);\n protected readonly resolvedMax = computed(() => this.max() ?? 100);\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set(Number((event.target as HTMLInputElement).value));\n }\n\n protected readonly fillPercent = computed(() => {\n const min = this.resolvedMin();\n const range = this.resolvedMax() - min;\n if (range <= 0) return '0%';\n const ratio = (this.value() - min) / range;\n return `${Math.min(100, Math.max(0, ratio * 100))}%`;\n });\n\n protected readonly inputClass = computed(() => {\n const options = this.componentOptions();\n const fill = this.theme.colors()[options.color ?? 'primary'];\n const track = this.theme.colors()[options.trackColor ?? 'surface-variant'];\n const radius = this.theme.radii()[options.borderRadius ?? 'max'];\n const trackHeight = options.trackHeight ?? 4;\n const thumbSize = options.thumbSize ?? 16;\n // Webkit paints the fill via a gradient stopped at the custom property;\n // Firefox has a real ::-moz-range-progress.\n const trackFill = `linear-gradient(to right, ${fill} var(--uni-slider-fill), ${track} var(--uni-slider-fill))`;\n const thumb = {\n appearance: 'none' as const,\n width: thumbSize,\n height: thumbSize,\n borderRadius: radius,\n border: 'none',\n background: fill,\n cursor: 'pointer',\n };\n return css({\n appearance: 'none',\n width: '100%',\n height: thumbSize,\n margin: 0,\n background: 'transparent',\n cursor: 'pointer',\n '&::-webkit-slider-runnable-track': {\n height: trackHeight,\n borderRadius: radius,\n background: trackFill,\n },\n '&::-webkit-slider-thumb': {\n ...thumb,\n marginTop: (trackHeight - thumbSize) / 2,\n },\n '&::-moz-range-track': { height: trackHeight, borderRadius: radius, background: track },\n '&::-moz-range-progress': { height: trackHeight, borderRadius: radius, background: fill },\n '&::-moz-range-thumb': thumb,\n '&:focus-visible': { outline: `2px solid ${fill}`, outlineOffset: 2 },\n '&:disabled': {\n cursor: 'not-allowed',\n opacity: 0.5,\n '&::-webkit-slider-thumb': { cursor: 'not-allowed' },\n '&::-moz-range-thumb': { cursor: 'not-allowed' },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { visuallyHidden } from '../../cdk';\nimport type { UniStatOptions } from './stat.model';\n\nconst SPARK_WIDTH = 96;\nconst SPARK_HEIGHT = 28;\n\n/**\n * KPI stat tile: muted label, large value (numbers auto-compact: 48234 →\n * \"48.2K\"), an optional delta whose ink is decided by *direction × whether up\n * is good* (never direction alone — churn going down is good news), and an\n * optional decorative sparkline. Frame, typography and inks are all `stat`\n * theme tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-stat',\n providers: [{ provide: COMPONENT_NAME, useValue: 'stat' }],\n host: { '[class]': 'className()' },\n template: `\n <span class=\"uni-stat-label\">{{ label() }}</span>\n <span class=\"uni-stat-value\">{{ displayValue() }}</span>\n @if (delta()) {\n <span class=\"uni-stat-meta\">\n <span class=\"uni-stat-delta\" [class.good]=\"deltaIsGood()\">\n <span aria-hidden=\"true\">{{ deltaIsUp() ? '▴' : '▾' }}</span>\n <span [class]=\"srOnly\">{{ deltaIsUp() ? 'up' : 'down' }}</span>\n {{ deltaMagnitude() }}\n </span>\n @if (caption()) {\n <span class=\"uni-stat-caption\">{{ caption() }}</span>\n }\n </span>\n }\n @if (sparkline(); as spark) {\n <svg\n class=\"uni-stat-trend\"\n aria-hidden=\"true\"\n [attr.width]=\"spark.width\"\n [attr.height]=\"spark.height\"\n [attr.viewBox]=\"'0 0 ' + spark.width + ' ' + spark.height\"\n >\n <path\n [attr.d]=\"spark.path\"\n fill=\"none\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle [attr.cx]=\"spark.endX\" [attr.cy]=\"spark.endY\" r=\"3.5\" />\n </svg>\n }\n `,\n})\nexport class UniStatComponent extends BaseComponent<UniStatOptions> {\n /** What is being measured, sentence case. */\n label = input.required<string>();\n /** The headline number: strings render verbatim, numbers auto-compact. */\n value = input.required<string | number>();\n /** Signed change, e.g. \"+12.4%\" or \"-0.4%\". The sign drives the arrow. */\n delta = input<string>();\n /** Whether an upward movement is good news. Flip for churn, errors, cost. */\n upIsGood = input(true);\n /** Names the comparison period, e.g. \"vs last month\". */\n caption = input<string>();\n /** Recent values for the decorative sparkline (12 points reads best). */\n trend = input<number[] | undefined>(undefined);\n\n protected readonly srOnly = css(visuallyHidden);\n\n protected readonly displayValue = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value;\n return new Intl.NumberFormat(undefined, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value);\n });\n\n protected readonly deltaIsUp = computed(() => !this.delta()?.trim().startsWith('-'));\n protected readonly deltaIsGood = computed(() => this.deltaIsUp() === this.upIsGood());\n protected readonly deltaMagnitude = computed(() => this.delta()?.trim().replace(/^[-+]/, '') ?? '');\n\n protected readonly sparkline = computed(() => {\n const points = this.trend();\n if (!points || points.length < 2) return undefined;\n const min = Math.min(...points);\n const range = Math.max(...points) - min || 1;\n const step = SPARK_WIDTH / (points.length - 1);\n const xy = points.map((p, i): [number, number] => [\n i * step,\n SPARK_HEIGHT - 3 - ((p - min) / range) * (SPARK_HEIGHT - 6),\n ]);\n const [endX, endY] = xy[xy.length - 1];\n return {\n width: SPARK_WIDTH,\n height: SPARK_HEIGHT,\n path: xy.map(([x, y], i) => `${i ? 'L' : 'M'}${x.toFixed(1)},${y.toFixed(1)}`).join(' '),\n endX: endX.toFixed(1),\n endY: endY.toFixed(1),\n };\n });\n\n protected readonly className = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n boxSizing: 'border-box',\n ...this.theme.gap(options.gap),\n ...this.theme.colorPair(options.color),\n ...this.theme.border(options.border),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.padding(options.padding),\n '& .uni-stat-label': {\n ...this.theme.typeface(options.labelTypeface),\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-value': {\n ...this.theme.typeface(options.valueTypeface),\n ...this.theme.color('on-background'),\n },\n '& .uni-stat-meta': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n columnGap: 8,\n },\n '& .uni-stat-delta': {\n fontSize: 13,\n fontWeight: 600,\n ...this.theme.color(options.negativeColor),\n '&.good': this.theme.color(options.positiveColor),\n },\n '& .uni-stat-caption': {\n fontSize: 11.5,\n ...this.theme.color('on-background-variant'),\n },\n '& .uni-stat-trend': {\n position: 'absolute',\n right: 16,\n bottom: 14,\n '& path': { stroke: this.theme.colors()[options.trendColor ?? 'outline'] },\n '& circle': { fill: this.theme.colors()[options.trendAccent ?? 'primary'] },\n },\n });\n });\n}\n","import { ChangeDetectionStrategy, Component, input, viewChild, TemplateRef } from '@angular/core';\nimport { uniqueId } from '../../cdk';\n\n/**\n * One tab inside `uni-tabs`: a label for the tablist plus projected panel\n * content. Content is captured in a template and only instantiated while the\n * tab is selected, so inactive panels cost nothing.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tab',\n template: `<ng-template #content><ng-content /></ng-template>`,\n})\nexport class UniTabComponent {\n label = input.required<string>();\n disabled = input(false);\n\n /** Stable ids wiring tab ↔ panel ARIA relationships. */\n readonly id = uniqueId('uni-tab');\n readonly panelId = `${this.id}-panel`;\n\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n model,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { css } from '@emotion/css';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { motionSafe } from '../../cdk';\nimport { UniTabComponent } from './tab.component';\nimport type { UniTabsOptions } from './tabs.model';\n\n/**\n * WAI-ARIA tabs: roving tabindex, automatic activation (arrow keys move focus\n * and select), Home/End, disabled tabs skipped. Only the selected panel is\n * instantiated. All styling resolves from `tabs` theme option tokens.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tabs',\n imports: [NgTemplateOutlet],\n providers: [{ provide: COMPONENT_NAME, useValue: 'tabs' }],\n template: `\n <!-- Roving-tabindex composite: focus lives on the tab buttons; keydown\n bubbles to the tablist, which itself must stay out of the tab order. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div role=\"tablist\" [class]=\"tablistClass()\" (keydown)=\"onKeydown($event)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <button\n #tabButton\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.id\"\n [class]=\"tabClass()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.tabindex]=\"i === activeIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n [class.active]=\"i === activeIndex()\"\n (click)=\"select(i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n @if (activeTab(); as tab) {\n <div\n role=\"tabpanel\"\n [id]=\"tab.panelId\"\n [attr.aria-labelledby]=\"tab.id\"\n tabindex=\"0\"\n [class]=\"panelClass()\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n </div>\n }\n `,\n})\nexport class UniTabsComponent extends BaseComponent<UniTabsOptions> {\n /** Index of the selected tab; two-way bindable. */\n readonly selectedIndex = model(0);\n\n protected readonly tabs = contentChildren(UniTabComponent);\n private readonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n /** The selection, snapped to the nearest enabled tab. */\n protected readonly activeIndex = computed(() => {\n const tabs = this.tabs();\n const wanted = this.selectedIndex();\n if (tabs[wanted] && !tabs[wanted].disabled()) return wanted;\n const firstEnabled = tabs.findIndex((tab) => !tab.disabled());\n return firstEnabled === -1 ? 0 : firstEnabled;\n });\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (this.tabs()[index]?.disabled()) return;\n this.selectedIndex.set(index);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const enabled = this.tabs()\n .map((tab, index) => ({ tab, index }))\n .filter(({ tab }) => !tab.disabled())\n .map(({ index }) => index);\n if (enabled.length === 0) return;\n\n const position = enabled.indexOf(this.activeIndex());\n let next: number | undefined;\n switch (event.key) {\n case 'ArrowRight':\n next = enabled[(position + 1) % enabled.length];\n break;\n case 'ArrowLeft':\n next = enabled[(position - 1 + enabled.length) % enabled.length];\n break;\n case 'Home':\n next = enabled[0];\n break;\n case 'End':\n next = enabled[enabled.length - 1];\n break;\n default:\n return;\n }\n event.preventDefault();\n this.select(next);\n this.tabButtons()[next]?.nativeElement.focus();\n }\n\n protected readonly tablistClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'stretch',\n ...this.theme.gap(options.gap),\n ...this.theme.borderBottom(options.divider),\n });\n });\n\n protected readonly tabClass = computed(() => {\n const options = this.componentOptions();\n const thickness = options.indicatorThickness\n ? this.theme.getThickness(options.indicatorThickness)\n : 2;\n return css({\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n // The indicator overlays the divider: reserve its thickness on every\n // tab so labels don't shift when selection moves.\n borderBottom: `${thickness}px solid transparent`,\n marginBottom: -1,\n ...this.theme.typeface(options.typeface),\n ...this.theme.color(options.textColor),\n ...this.theme.paddingLeft(options.padding),\n ...this.theme.paddingRight(options.padding),\n ...this.theme.paddingTop('sm'),\n ...this.theme.paddingBottom('sm'),\n ...this.theme.radius(options.borderRadius),\n ...motionSafe({ transition: 'color 0.15s ease, border-color 0.15s ease' }),\n '&.active': {\n ...this.theme.color(options.activeTextColor),\n ...this.theme.backgroundColor(options.activeColor),\n borderBottomColor: this.theme.colors()[options.indicatorColor ?? 'primary'],\n },\n '&:disabled': {\n ...this.theme.color('on-disabled'),\n cursor: 'not-allowed',\n },\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[options.indicatorColor ?? 'primary']}`,\n outlineOffset: -2,\n },\n });\n });\n\n protected readonly panelClass = computed(() =>\n css({\n ...this.theme.paddingTop('md'),\n '&:focus-visible': {\n outline: `2px solid ${this.theme.colors()[this.componentOptions().indicatorColor ?? 'primary']}`,\n outlineOffset: 2,\n },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport { ThemeService } from '../../theming';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTextareaOptions } from './textarea.model';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-textarea',\n imports: [UniInputBoxComponent],\n templateUrl: './textarea.component.html',\n})\nexport class UniTextareaComponent implements FormValueControl<string> {\n private theme = inject(ThemeService);\n\n // --- REQUIRED SIGNALS (populated by FormValueControl) ---\n readonly value = model<string>('');\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n label = input.required<string>();\n placeholder = input('');\n /** Visible text rows. Defaults to the theme's `textarea` options. */\n rows = input<number | undefined>(undefined);\n\n private options = this.theme.getComponentOptions<UniTextareaOptions>('textarea');\n\n protected readonly resolvedRows = computed(() => this.rows() ?? this.options().rows ?? 3);\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly textareaClass = computed(() =>\n css({\n width: '100%',\n resize: this.options().resize ?? 'vertical',\n })\n );\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleInput(event: Event) {\n this.value.set((event.target as HTMLTextAreaElement).value);\n }\n}\n","<uni-input-box [error]=\"showError()\" height=\"auto\">\n <textarea\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"markAsTouched()\"\n [rows]=\"resolvedRows()\"\n [class]=\"textareaClass()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n ></textarea>\n</uni-input-box>\n","/**\n * UniSortHeaderComponent Barrel File\n *\n * This file exports all public-facing elements of the sort-header component.\n */\n\nexport { UniSortHeaderComponent } from './sort-header.component';\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { css } from '@emotion/css';\nimport type { IconName, Size, TagTone } from '@uni-design-system/uni-core';\n\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniSymbolComponent } from '../symbol';\nimport type { UniTagOptions, UniTagValue } from './tag.model';\n\n/**\n * Compact chip for categories, states, filters and tokens.\n *\n * Two orthogonal style axes: `variant` picks the colour role and `tone` picks\n * the archetype (soft / solid / outline). Both live in the theme's `tag` entry,\n * so a theme restyles every chip in the app without touching markup.\n *\n * Structurally a chip is **body + trailing action as siblings**, never nested\n * buttons: an interactive chip whose body is a `<button>` cannot contain the\n * remove `<button>` (invalid HTML, and the inner control becomes unreachable\n * for keyboard users). Both stay independently operable.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag',\n imports: [NgTemplateOutlet, UniIconComponent, UniIconButtonComponent, UniSymbolComponent],\n templateUrl: './tag.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'tag' }],\n host: {\n '[class]': 'hostClass()',\n '[attr.aria-invalid]': \"invalid() ? 'true' : null\",\n },\n})\nexport class UniTagComponent extends BaseComponent<UniTagOptions> {\n // Presentation. `variant` comes from BaseComponent; chips default to `md`\n // rather than the library-wide `lg`, since they sit inside dense content.\n override size = input<Size>('md');\n tone = input<TagTone>('soft');\n label = input<string>();\n value = input<string | number>();\n /** Truncation budget, e.g. `'14ch'`. A number is treated as px. */\n maxWidth = input<string | number>();\n\n // Lead convenience inputs. Anything richer goes in the `[tag-lead]` slot.\n avatarSrc = input<string>();\n /** Initials fallback when `avatarSrc` is absent or fails to load. */\n avatarName = input<string>();\n /** Theme icon primitive — the preferred glyph path. */\n iconName = input<IconName>();\n /** Material Symbols ligature, for glyphs the theme's icon set doesn't carry. */\n symbolName = input<string>();\n /** Status dot in the current colour. */\n dot = input<boolean>(false);\n\n // Behaviour\n removable = input(false);\n interactive = input(false);\n /**\n * Toggle state. Left undefined the chip carries no `aria-pressed` at all —\n * an interactive chip is not always a toggle (inside a tag input it is\n * focusable so it can be removed), and announcing \"not pressed\" on a\n * recipient chip is worse than announcing nothing.\n */\n selected = input<boolean | undefined>(undefined);\n invalid = input(false);\n disabled = input(false);\n /** Accessible-name override for the remove button. */\n removeLabel = input<string>();\n /**\n * Tab position of the chip's controls. A composite that owns its own\n * roving focus — `uni-tag-input`, where the whole field is one tab stop —\n * passes `-1` so Tab does not walk through every chip to reach the next\n * control.\n */\n controlTabIndex = input<number>(0);\n\n removed = output<UniTagValue>();\n activated = output<UniTagValue>();\n\n /** A disabled chip wears the theme's `disabled` role, whatever its variant. */\n protected readonly resolvedVariant = computed(() =>\n this.disabled() ? ('disabled' as const) : this.variant()\n );\n\n protected readonly themeStyle = computed(() =>\n this.theme.componentStyle('tag', this.resolvedVariant(), this.size())()\n );\n\n /** Lead elements derive from the chip height, so no second size token. */\n protected readonly leadSize = computed(() => {\n const height = Number(this.themeStyle()['height'] ?? 24);\n return Number.isFinite(height) ? Math.max(height - 6, 0) : 18;\n });\n\n /** Remove glyph, proportional to the chip rather than to the icon-button. */\n protected readonly removeGlyphSize = computed(() =>\n Math.max(Math.round(this.leadSize() * 0.8), 10)\n );\n\n protected readonly initials = computed(() =>\n (this.avatarName() ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((part) => part[0]?.toUpperCase() ?? '')\n .join('')\n );\n\n protected readonly hostClass = computed(() => {\n const options = this.componentOptions();\n\n return `${css([\n this.theme.radius(options.borderRadius),\n { ...this.theme.typeface(options.typeface) },\n // Theme `fixed` + variant (incl. its nested `&.tone-*` rules) + size.\n { ...this.themeStyle() },\n { ...this.theme.gap(options.gap) },\n {\n boxSizing: 'border-box',\n maxWidth: this.maxWidth(),\n // The chip is not a widget; only its sub-controls take focus.\n '& > button': this.theme.focusRing(),\n // The remove control is the trailing counterpart of the lead, so it\n // sizes from the chip too. Left at the icon-button's own `sm` size it\n // is 22px inside a 24px chip — and taller than an `sm` chip entirely.\n '& > button[uni-icon-button]': {\n flex: 'none',\n width: this.leadSize(),\n minWidth: this.leadSize(),\n height: this.leadSize(),\n minHeight: this.leadSize(),\n padding: 0,\n fontSize: this.removeGlyphSize(),\n // uni-icon writes width/height as *inline* styles, sized from the\n // icon-button's own `sm` token (18px — wider than an `sm` chip).\n // Only !important can reach past an inline style to keep the glyph\n // proportional to the chip.\n '& uni-icon': {\n width: `${this.removeGlyphSize()}px !important`,\n height: `${this.removeGlyphSize()}px !important`,\n },\n },\n },\n this.invalid() && {\n // Colour alone cannot carry \"this entry is malformed\" (WCAG 1.4.1).\n textDecoration: 'underline dashed',\n textUnderlineOffset: 3,\n },\n this.disabled() && { pointerEvents: 'none' },\n ])} tone-${this.tone()}`;\n });\n\n /** Truncating label; `title` exposes the full text when a budget is set. */\n protected readonly labelClass = css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n });\n\n protected readonly bodyClass = computed(() =>\n css([\n {\n display: 'inline-flex',\n alignItems: 'center',\n minWidth: 0,\n // The body inherits the chip's own colours in every case.\n font: 'inherit',\n color: 'inherit',\n background: 'none',\n border: 0,\n padding: 0,\n ...this.theme.gap(this.componentOptions().gap),\n },\n this.interactive() && { cursor: 'pointer' },\n ])\n );\n\n protected readonly leadClass = computed(() =>\n css({\n flex: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n width: this.leadSize(),\n height: this.leadSize(),\n borderRadius: '50%',\n fontSize: Math.max(Math.round(this.leadSize() * 0.5), 8),\n // Initials sit on a wash of the current ink so they read on any tone.\n backgroundColor: this.avatarSrc() ? undefined : 'rgba(0, 0, 0, 0.12)',\n '& img': { width: '100%', height: '100%', objectFit: 'cover' },\n })\n );\n\n protected readonly dotClass = computed(() =>\n css({\n flex: 'none',\n width: Math.max(Math.round(this.leadSize() / 3), 6),\n height: Math.max(Math.round(this.leadSize() / 3), 6),\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n })\n );\n\n protected remove(): void {\n if (this.disabled()) return;\n this.removed.emit(this.value());\n }\n\n protected activate(): void {\n if (this.disabled()) return;\n this.activated.emit(this.value());\n }\n}\n","<!-- Lead + label. Shared so the static and interactive bodies stay identical. -->\n<ng-template #body>\n <ng-content select=\"[tag-lead]\"></ng-content>\n\n @if (selected() && componentOptions().selectedIcon; as selectedIcon) {\n <uni-icon [name]=\"selectedIcon\" [size]=\"leadSize()\" />\n } @else if (avatarSrc(); as src) {\n <span [class]=\"leadClass()\" aria-hidden=\"true\">\n <img [src]=\"src\" alt=\"\" />\n </span>\n } @else if (initials(); as text) {\n <span [class]=\"leadClass()\" aria-hidden=\"true\">{{ text }}</span>\n } @else if (iconName(); as icon) {\n <uni-icon [name]=\"icon\" [size]=\"leadSize()\" />\n } @else if (symbolName(); as symbol) {\n <uni-symbol [name]=\"symbol\" [style.font-size.px]=\"leadSize()\" />\n } @else if (dot()) {\n <span [class]=\"dotClass()\" aria-hidden=\"true\"></span>\n }\n\n @if (label(); as text) {\n <span [class]=\"labelClass\" [attr.title]=\"maxWidth() ? text : null\">{{ text }}</span>\n } @else {\n <span [class]=\"labelClass\"><ng-content></ng-content></span>\n }\n</ng-template>\n\n<!-- An interactive chip's body is the button; a static chip is plain text with\n no role and no tab stop, so screen readers read it as content. -->\n@if (interactive()) {\n <button\n type=\"button\"\n [class]=\"bodyClass()\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"selected() ?? null\"\n [attr.tabindex]=\"controlTabIndex()\"\n (click)=\"activate()\"\n >\n <ng-container [ngTemplateOutlet]=\"body\"></ng-container>\n </button>\n} @else {\n <span [class]=\"bodyClass()\">\n <ng-container [ngTemplateOutlet]=\"body\"></ng-container>\n </span>\n}\n\n@if (removable()) {\n <button\n uni-icon-button\n variant=\"ghost\"\n size=\"sm\"\n [iconName]=\"componentOptions().removeIcon ?? 'close'\"\n [disable]=\"disabled()\"\n [attr.tabindex]=\"controlTabIndex()\"\n (click)=\"remove()\"\n >\n {{ removeLabel() ?? 'Remove ' + (label() ?? '') }}\n </button>\n}\n","/**\n * UniTagComponent Barrel File\n *\n * This file exports all public-facing elements of the tag component.\n */\n\nexport { UniTagComponent } from './tag.component';\nexport * from './tag.model';\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Size, TagTone, Variant } from '@uni-design-system/uni-core';\n\nimport { createListboxNavigation, uniqueId, visuallyHidden } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniTagComponent } from '../tag';\nimport type {\n UniTagInputOptions,\n UniTagItem,\n UniTagRejection,\n UniTagSuggestion,\n} from './tag-input.model';\n\n/** Loose address check — deliberately permissive, matching what mail clients accept. */\nconst EMAIL = /^[^\\s@,;]+@[^\\s@,;.]+\\.[^\\s@,;]+$/;\n\n/** `Name <a@b.com>` / `\"Name\" <a@b.com>` → the address, plus the display name. */\nconst unwrapAddress = (raw: string): { value: string; label?: string } => {\n const match = raw.match(/^\\s*\"?([^\"<]*?)\"?\\s*<([^>]+)>\\s*$/);\n if (!match) return { value: raw.trim() };\n const label = match[1].trim();\n return { value: match[2].trim(), ...(label ? { label } : {}) };\n};\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tag-input',\n imports: [UniInputBoxComponent, UniTagComponent],\n templateUrl: './tag-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'tagInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniTagInputComponent\n extends BaseComponent<UniTagInputOptions>\n implements FormValueControl<UniTagItem[]>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniTagItem[]>([]);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Accessible name for the field, e.g. \"To\". */\n label = input.required<string>();\n placeholder = input<string>();\n /** `email` wires an address validator, paste parser and space separator. */\n preset = input<'text' | 'email'>('text');\n separators = input<string[]>([',', ';']);\n commitOnBlur = input(true);\n allowDuplicates = input(false);\n max = input<number>();\n validate = input<(raw: string) => boolean>();\n parse = input<(pasted: string) => string[]>();\n\n // Chip presentation, forwarded to uni-tag.\n tagVariant = input<Variant>('primary');\n tagTone = input<TagTone>('soft');\n tagSize = input<Size>();\n\n // --- Autocomplete (same contract as uni-search-input: the app filters) ----\n suggestions = input<UniTagSuggestion[]>([]);\n /** Debounced text the app should filter `suggestions` from. */\n query = output<string>();\n debounceTime = input(250);\n\n // --- Events --------------------------------------------------------------\n added = output<UniTagItem>();\n removed = output<UniTagItem>();\n rejected = output<UniTagRejection>();\n\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly chipRefs = viewChildren<ElementRef<HTMLElement>>('chip');\n\n /** Uncommitted text in the field. */\n protected readonly draft = signal('');\n /** Index of the focused chip, or -1 when focus is in the text input. */\n protected readonly focusedChip = signal(-1);\n /** Announcement for the status region; add/remove are otherwise silent. */\n protected readonly announcement = signal('');\n\n protected readonly hintId = uniqueId('uni-tag-input-hint');\n protected readonly srOnly = css(visuallyHidden);\n\n private queryTimer?: ReturnType<typeof setTimeout>;\n\n protected readonly visibleSuggestions = computed(() => {\n const taken = new Set(this.value().map((item) => item.value));\n return this.suggestions()\n .filter((suggestion) => this.allowDuplicates() || !taken.has(suggestion.value))\n .slice(0, this.componentOptions().maxSuggestions ?? 8);\n });\n\n /** Shared combobox bookkeeping — identical contract to uni-search-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.visibleSuggestions().length,\n idPrefix: 'uni-tag-listbox',\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly separatorKeys = computed(() =>\n this.preset() === 'email' ? [...this.separators(), ' '] : this.separators()\n );\n\n protected readonly describedBy = computed(() =>\n [this.ariaDescribedBy(), this.hintId].filter(Boolean).join(' ')\n );\n\n protected labelOf(item: UniTagItem | UniTagSuggestion): string {\n return item.label ?? item.value;\n }\n\n // --- Committing ----------------------------------------------------------\n\n /** Split pasted text into candidate tokens. */\n private parseRaw(raw: string): string[] {\n const custom = this.parse();\n if (custom) return custom(raw);\n\n const pattern = this.preset() === 'email' ? /[,;\\n\\t]+/ : new RegExp(`[${this.separators().map((s) => `\\\\${s}`).join('')}\\n\\t]+`);\n return raw.split(pattern);\n }\n\n private isValid(candidate: string): boolean {\n const custom = this.validate();\n if (custom) return custom(candidate);\n return this.preset() === 'email' ? EMAIL.test(candidate) : true;\n }\n\n /**\n * Turn typed text into a chip. Invalid entries are kept and flagged rather\n * than dropped; duplicates and over-max are refused with a reason.\n */\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) return false;\n\n const { value: candidate, label } = this.preset() === 'email' ? unwrapAddress(trimmed) : { value: trimmed, label: undefined };\n if (!candidate) return false;\n\n const current = this.value();\n if (!this.allowDuplicates() && current.some((item) => item.value === candidate)) {\n this.reject(candidate, 'duplicate');\n return false;\n }\n\n const max = this.max();\n if (max !== undefined && current.length >= max) {\n this.reject(candidate, 'max');\n return false;\n }\n\n const match = this.suggestions().find((suggestion) => suggestion.value === candidate);\n const item: UniTagItem = {\n value: candidate,\n ...(label || match?.label ? { label: label ?? match?.label } : {}),\n ...(match?.avatarSrc ? { avatarSrc: match.avatarSrc } : {}),\n ...(this.isValid(candidate) ? {} : { invalid: true }),\n };\n\n this.value.update((items) => [...items, item]);\n this.added.emit(item);\n this.announce(`${this.labelOf(item)} added. ${this.value().length} ${this.countNoun()}.`);\n return true;\n }\n\n private reject(raw: string, reason: UniTagRejection['reason']): void {\n this.rejected.emit({ raw, reason });\n // The visual cue is a brief pulse a screen reader cannot see.\n this.announce(\n reason === 'duplicate' ? `${raw} is already added.` : `${raw} was not added: limit reached.`\n );\n }\n\n protected removeAt(index: number, focus: 'left' | 'right' | 'input' = 'input'): void {\n const item = this.value()[index];\n if (!item || item.disabled) return;\n\n this.value.update((items) => items.filter((_, i) => i !== index));\n this.removed.emit(item);\n this.announce(`${this.labelOf(item)} removed. ${this.value().length} ${this.countNoun()}.`);\n\n const remaining = this.value().length;\n if (focus === 'left' && index > 0) this.focusChip(index - 1);\n else if (focus === 'right' && index < remaining) this.focusChip(index);\n else this.focusInput();\n }\n\n private countNoun(): string {\n return this.value().length === 1 ? 'item' : 'items';\n }\n\n private announce(message: string): void {\n // Re-announce identical text by breaking the string equality.\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Focus ---------------------------------------------------------------\n\n protected focusInput(): void {\n this.focusedChip.set(-1);\n queueMicrotask(() => this.inputRef().nativeElement.focus());\n }\n\n private focusChip(index: number): void {\n const clamped = Math.max(0, Math.min(index, this.value().length - 1));\n this.focusedChip.set(clamped);\n queueMicrotask(() => {\n const chip = this.chipRefs()[clamped]?.nativeElement;\n chip?.querySelector<HTMLElement>('button')?.focus();\n });\n }\n\n // --- Keyboard: focus in the text input -----------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.list.navigate(event)) return;\n\n const input = this.inputRef().nativeElement;\n const empty = input.value === '';\n\n if (this.separatorKeys().includes(event.key) && !empty) {\n event.preventDefault();\n this.commitDraft();\n return;\n }\n\n switch (event.key) {\n case 'Enter': {\n event.preventDefault();\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) this.selectSuggestion(this.visibleSuggestions()[active]);\n else this.commitDraft();\n break;\n }\n case 'Tab':\n // Never trap: commit what is typed, then let focus move on.\n if (!empty) this.commitDraft();\n break;\n case 'Backspace':\n if (empty && this.value().length) {\n // Focus the last chip rather than deleting blind — a second\n // Backspace, now on the chip, removes it.\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n }\n break;\n case 'ArrowLeft':\n if (input.selectionStart === 0 && this.value().length) {\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n }\n break;\n case 'Escape':\n if (this.list.open()) this.list.hide();\n else this.setDraft('');\n break;\n }\n }\n\n protected onInput(value: string): void {\n this.setDraft(value);\n this.list.show();\n this.list.setActive(-1);\n\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(() => this.query.emit(value), this.debounceTime());\n }\n\n protected onPaste(event: ClipboardEvent): void {\n const text = event.clipboardData?.getData('text') ?? '';\n if (!text) return;\n event.preventDefault();\n\n const tokens = this.parseRaw(text);\n\n // A trailing fragment with no separator after it is still being typed, so\n // it stays in the field rather than committing as a half-address. With a\n // custom `parse` the app owns tokenization and every token is complete.\n const separators = [...this.separatorKeys(), '\\n', '\\t'].map((key) =>\n key.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n );\n const endsWithSeparator = new RegExp(`[${separators.join('')}]\\\\s*$`).test(text);\n const tail = this.parse() || endsWithSeparator ? '' : (tokens.pop() ?? '');\n\n tokens.forEach((token) => this.commit(token));\n this.setDraft(tail.trim());\n }\n\n protected onBlur(): void {\n this.touched.set(true);\n if (this.commitOnBlur()) this.commitDraft();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n this.list.closeOnFocusOut(event);\n }\n\n // --- Keyboard: focus on a chip -------------------------------------------\n\n protected onChipKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (index > 0) this.focusChip(index - 1);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (index < this.value().length - 1) this.focusChip(index + 1);\n else this.focusInput();\n break;\n case 'Home':\n event.preventDefault();\n this.focusChip(0);\n break;\n case 'End':\n event.preventDefault();\n this.focusChip(this.value().length - 1);\n break;\n case 'Backspace':\n // Two deletion keys with different focus outcomes: hold Backspace to\n // eat backwards, Delete to eat forwards, without the cursor jumping.\n event.preventDefault();\n this.removeAt(index, 'left');\n break;\n case 'Delete':\n event.preventDefault();\n this.removeAt(index, 'right');\n break;\n case 'Enter':\n case 'F2':\n event.preventDefault();\n this.editChip(index);\n break;\n case 'Escape':\n event.preventDefault();\n this.focusInput();\n break;\n default:\n // A printable key means the user wants to type, not navigate chips.\n if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n this.setDraft(this.draft() + event.key);\n this.focusInput();\n }\n }\n }\n\n /** Lift a chip back into the input for correction. */\n protected editChip(index: number): void {\n const item = this.value()[index];\n if (!item || item.disabled) return;\n\n this.value.update((items) => items.filter((_, i) => i !== index));\n this.removed.emit(item);\n const text = item.label && item.label !== item.value ? `${item.label} <${item.value}>` : item.value;\n this.setDraft(text);\n this.focusInput();\n }\n\n protected selectSuggestion(suggestion: UniTagSuggestion): void {\n this.commit(suggestion.value);\n this.setDraft('');\n this.list.hide();\n this.focusInput();\n }\n\n private commitDraft(): void {\n if (this.commit(this.draft())) this.setDraft('');\n else this.setDraft('');\n this.list.hide();\n }\n\n private setDraft(text: string): void {\n this.draft.set(text);\n const input = this.inputRef?.().nativeElement;\n if (input) input.value = text;\n }\n\n // --- Styling -------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block' }));\n\n protected readonly fieldClass = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n ...this.theme.gap(options.chipGap),\n });\n });\n\n protected readonly inputClass = computed(() =>\n css({\n flex: 1,\n minWidth: this.componentOptions().minInputWidth ?? '12ch',\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n padding: 0,\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: 20,\n margin: '4px 0 0',\n padding: 4,\n listStyle: 'none',\n maxHeight: 280,\n overflowY: 'auto',\n ...this.theme.backgroundColor(options.listColor ?? 'primary-surface'),\n ...this.theme.boxShadow(options.listShadow ?? 'menu'),\n ...this.theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...this.theme.typeface('label'),\n ...this.theme.color('on-primary-surface'),\n ...this.theme.radius('xxs'),\n '&.active, &:hover': {\n ...this.theme.backgroundColor('primary-container'),\n ...this.theme.color('on-primary-container'),\n },\n },\n });\n });\n}\n","<!-- Focusout rides the bubbling event so the list closes only when focus\n leaves the whole field, not while moving between chips and the input. -->\n<div style=\"position: relative\" (focusout)=\"onFocusOut($event)\">\n <uni-input-box [error]=\"showError()\" height=\"auto\">\n <ul [class]=\"fieldClass()\">\n @for (item of value(); track item.value; let i = $index) {\n <!-- The focusable element is the chip's own button; this <li> only\n receives keys bubbling up from it, so it must stay out of the tab\n order (same delegation the menu uses for its roving focus). -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <li #chip (keydown)=\"onChipKeydown($event, i)\" (dblclick)=\"editChip(i)\">\n <uni-tag\n [label]=\"labelOf(item)\"\n [value]=\"item.value\"\n [avatarSrc]=\"item.avatarSrc\"\n [variant]=\"item.invalid ? 'warn' : tagVariant()\"\n [tone]=\"tagTone()\"\n [size]=\"tagSize() ?? componentOptions().chipSize ?? 'md'\"\n [invalid]=\"!!item.invalid\"\n [disabled]=\"!!item.disabled || disabled()\"\n [interactive]=\"true\"\n [removable]=\"!item.disabled && !disabled()\"\n [controlTabIndex]=\"-1\"\n (removed)=\"removeAt(i)\"\n />\n </li>\n }\n\n <li [class]=\"inputClass()\">\n <!-- The field is one tab stop: chips carry tabindex=\"-1\" and are\n entered with Backspace/ArrowLeft, so Tab never walks through\n eight recipients to reach the next control. -->\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder() ?? ''\"\n [attr.aria-label]=\"label()\"\n [attr.aria-expanded]=\"list.open()\"\n [attr.aria-controls]=\"list.listboxId\"\n [attr.aria-activedescendant]=\"list.activeDescendantId()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput($any($event.target).value)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur()\"\n />\n </li>\n </ul>\n </uni-input-box>\n\n @if (list.open()) {\n <ul [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (suggestion of visibleSuggestions(); track suggestion.value; let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <li\n role=\"option\"\n [id]=\"list.optionId(i)\"\n [class.active]=\"i === list.activeIndex()\"\n [attr.aria-selected]=\"i === list.activeIndex()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectSuggestion(suggestion)\"\n >\n {{ labelOf(suggestion) }}\n @if (suggestion.description) {\n <span [class]=\"srOnly\">{{ suggestion.description }}</span>\n }\n </li>\n }\n </ul>\n }\n\n <!-- Said once for the whole field, rather than every chip advertising it. -->\n <span [id]=\"hintId\" [class]=\"srOnly\">\n Press Backspace to reach the last entry, then Backspace again to remove it.\n </span>\n\n <!-- Adds and removes are otherwise silent for a screen reader. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","/**\n * UniTagInputComponent Barrel File\n *\n * This file exports all public-facing elements of the tag-input component.\n */\n\nexport { UniTagInputComponent } from './tag-input.component';\nexport * from './tag-input.model';\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n emitDtcgTokens,\n emitThemeFile,\n generatePalette,\n ShapeRadii,\n type ColorCategory,\n type ColorScheme,\n type Colors,\n type ColorToken,\n type ContrastCheck,\n type GenerationInput,\n type ThemeShape,\n type Variant,\n} from '@uni-design-system/uni-core';\n\nimport { ThemeService, type BrandPaletteConfig } from '../../theming';\nimport { UniButtonComponent } from '../button';\n\nconst SCHEMES: ColorScheme[] = [\n 'monochromatic',\n 'analogous',\n 'complimentary',\n 'splitComplimentary',\n 'triadic',\n];\nconst CATEGORIES: ColorCategory[] = ['jewel', 'pastel', 'earth', 'neutral', 'florescent', 'shades'];\nconst SHAPES: ThemeShape[] = ['sharp', 'modern', 'playful'];\nconst VARIANTS: Variant[] = ['primary', 'secondary', 'tertiary', 'warn', 'ghost'];\n\n// Representative tokens shown as swatches in each mode panel.\nconst SWATCHES: { label: string; token: ColorToken; on: ColorToken }[] = [\n { label: 'primary', token: 'primary', on: 'on-primary' },\n { label: 'secondary', token: 'secondary', on: 'on-secondary' },\n { label: 'tertiary', token: 'tertiary', on: 'on-tertiary' },\n { label: 'container', token: 'primary-container', on: 'on-primary-container' },\n { label: 'error', token: 'error', on: 'on-error' },\n { label: 'warn', token: 'warn', on: 'on-warn' },\n { label: 'success', token: 'success', on: 'on-success' },\n { label: 'surface', token: 'surface', on: 'on-surface' },\n];\n\ninterface Preset {\n label: string;\n config: BrandPaletteConfig;\n}\n\n// Curated presets for the OKLCH engine. Brand colors ride as soft `targets`:\n// emitted exactly where they already meet WCAG AA, lightness-adjusted (never\n// hue) where they don't — so every preset is AA-clean in both modes.\nconst PRESETS: Preset[] = [\n {\n label: 'Indigo',\n config: { seed: '#4F46E5', scheme: 'analogous', category: 'jewel', targets: { primary: '#4F46E5' } },\n },\n {\n label: 'Ocean',\n config: { seed: '#0066B2', scheme: 'complimentary', category: 'jewel', targets: { primary: '#0066B2' } },\n },\n {\n label: 'Emerald',\n config: { seed: '#047857', scheme: 'analogous', category: 'jewel', targets: { primary: '#047857' } },\n },\n {\n label: 'Sunset',\n config: { seed: '#DC2626', scheme: 'splitComplimentary', category: 'jewel', targets: { primary: '#DC2626' } },\n },\n {\n label: 'Berry',\n config: { seed: '#C2185B', scheme: 'triadic', category: 'jewel', targets: { primary: '#C2185B' } },\n },\n {\n label: 'Heritage',\n config: {\n seed: '#2C3E35',\n scheme: 'complimentary',\n category: 'earth',\n targets: { primary: '#2C3E35', secondary: '#D4A373' },\n },\n },\n {\n label: 'Sage & Clay',\n config: {\n seed: '#6B8F71',\n scheme: 'analogous',\n category: 'earth',\n targets: { primary: '#6B8F71', secondary: '#B3593C' },\n },\n },\n {\n label: 'Pastel',\n config: { seed: '#A78BFA', scheme: 'analogous', category: 'pastel', targets: { primary: '#A78BFA' } },\n },\n {\n label: 'Graphite',\n config: {\n seed: '#475569',\n scheme: 'monochromatic',\n category: 'neutral',\n accentSaturationFloor: 10,\n targets: { primary: '#475569' },\n },\n },\n];\n\n@Component({\n selector: 'uni-theme-builder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UniButtonComponent],\n host: { '[class]': 'shell()' },\n template: `\n <aside [class]=\"controls()\">\n <header class=\"tb-head\">\n <span class=\"tb-eyebrow\">Theme builder · Playground</span>\n <h2 class=\"tb-title\">Make Uni your brand</h2>\n <p class=\"tb-lede\">\n Every token is derived in OKLCH from a seed color, a scheme and a category — or bring\n exact brand colors. Presets are WCAG AA in light and dark. Changes apply to\n <b>every</b> component in this Storybook, live.\n </p>\n </header>\n\n <div class=\"tb-presets\">\n @for (p of presets; track p.label) {\n <button type=\"button\" class=\"tb-preset\" (click)=\"applyPreset(p.config)\">\n <span\n class=\"tb-dot\"\n [style.background]=\"p.config.targets?.primary ?? p.config.brand?.primary ?? p.config.seed\"\n ></span>\n {{ p.label }}\n </button>\n }\n </div>\n\n <label class=\"tb-field\">\n <span>Seed color</span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" />\n <input type=\"text\" [value]=\"seed()\" (input)=\"setSeed($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field\">\n <span>Scheme</span>\n <select (change)=\"setScheme($any($event.target).value)\">\n @for (s of schemes; track s) {\n <option [value]=\"s\" [selected]=\"s === scheme()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Category</span>\n <select (change)=\"setCategory($any($event.target).value)\">\n @for (c of categories; track c) {\n <option [value]=\"c\" [selected]=\"c === category()\">{{ c }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Shape</span>\n <select (change)=\"setShape($any($event.target).value)\">\n @for (s of shapes; track s) {\n <option [value]=\"s\" [selected]=\"s === shape()\">{{ s }}</option>\n }\n </select>\n </label>\n\n <label class=\"tb-field\">\n <span>Accent saturation floor · {{ floor() }}</span>\n <input type=\"range\" min=\"0\" max=\"45\" [value]=\"floor()\" (input)=\"setFloor($any($event.target).value)\" />\n </label>\n\n <div class=\"tb-field\">\n <span>Storybook mode</span>\n <div class=\"tb-toggle\">\n <button type=\"button\" [class.on]=\"mode() === 'light'\" (click)=\"setMode('light')\">Light</button>\n <button type=\"button\" [class.on]=\"mode() === 'dark'\" (click)=\"setMode('dark')\">Dark</button>\n </div>\n </div>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinPrimary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinPrimary()\" (change)=\"setPinPrimary($any($event.target).checked)\" />\n Pin primary <em>{{ pinPrimary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"primaryHex()\" (input)=\"setPrimaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <label class=\"tb-field tb-pin\" [class.dim]=\"!pinSecondary()\">\n <span>\n <input type=\"checkbox\" [checked]=\"pinSecondary()\" (change)=\"setPinSecondary($any($event.target).checked)\" />\n Pin secondary <em>{{ pinSecondary() ? 'exact' : 'off' }}</em>\n </span>\n <div class=\"tb-row\">\n <input type=\"color\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" />\n <input type=\"text\" [value]=\"secondaryHex()\" (input)=\"setSecondaryHex($any($event.target).value)\" spellcheck=\"false\" />\n </div>\n </label>\n\n <div class=\"tb-field\">\n <span>Export</span>\n <div class=\"tb-exports\">\n <button type=\"button\" (click)=\"copyThemeFile()\">\n {{ copied() === 'file' ? 'Copied ✓' : 'Copy uni-theme.ts' }}\n </button>\n <button type=\"button\" (click)=\"copyNgAdd()\">\n {{ copied() === 'ngadd' ? 'Copied ✓' : 'Copy ng add command' }}\n </button>\n <button type=\"button\" (click)=\"copyDtcg()\">\n {{ copied() === 'dtcg' ? 'Copied ✓' : 'Copy DTCG JSON' }}\n </button>\n </div>\n </div>\n\n <div class=\"tb-actions\">\n <button type=\"button\" class=\"tb-reset\" (click)=\"reset()\">Reset to default</button>\n </div>\n <code class=\"tb-snippet\">{{ snippet() }}</code>\n </aside>\n\n <section [class]=\"preview()\">\n <p class=\"tb-group\">Light & dark — generated together, side by side</p>\n <div class=\"tb-modes\">\n @for (m of modePanels(); track m.label) {\n <div class=\"tb-panel\" [style.background]=\"m.colors['background']\" [style.borderColor]=\"m.colors['outline']\">\n <span class=\"tb-panel-tag\" [style.color]=\"m.colors['on-background-variant']\">{{ m.label }}</span>\n <div class=\"tb-mode-swatches\">\n @for (s of swatches; track s.label) {\n <div class=\"tb-swatch\" [style.background]=\"m.colors[s.token]\" [style.color]=\"m.colors[s.on]\">\n <span>{{ s.label }}</span>\n <code>{{ m.colors[s.token] }}</code>\n </div>\n }\n </div>\n <div class=\"tb-mini-card\" [style.background]=\"m.colors['surface']\" [style.borderColor]=\"m.colors['outline']\">\n <div class=\"tb-mini-head\" [style.background]=\"m.colors['primary']\" [style.color]=\"m.colors['on-primary']\">\n Card header\n </div>\n <div class=\"tb-mini-body\" [style.color]=\"m.colors['on-surface']\">\n Semantic inks stay legible:\n <b [style.color]=\"m.colors['error']\">error</b> ·\n <b [style.color]=\"m.colors['warn']\">warn</b> ·\n <b [style.color]=\"m.colors['success']\">success</b>.\n </div>\n </div>\n </div>\n }\n </div>\n\n <p class=\"tb-group\">Real components — your brand, live ({{ mode() }})</p>\n <div class=\"tb-buttons\">\n @for (v of variants; track v) {\n <button text-button [variant]=\"v\" size=\"lg\">{{ v }}</button>\n }\n </div>\n <div class=\"tb-buttons\">\n @for (sz of sizes; track sz) {\n <button text-button variant=\"primary\" [size]=\"sz\">{{ sz }}</button>\n }\n </div>\n\n <p class=\"tb-group\">\n Contrast report — {{ report().checks.length }} pairs ·\n worst {{ report().worst }}:1 ·\n @if (report().failing.length === 0) {\n <span class=\"tb-pass\">all AA</span>\n } @else {\n <span class=\"tb-fail\">{{ report().failing.length }} failing</span>\n }\n <button type=\"button\" class=\"tb-link\" (click)=\"showAllPairs.set(!showAllPairs())\">\n {{ showAllPairs() ? 'hide detail' : 'show all pairs' }}\n </button>\n </p>\n @if (report().failing.length > 0 || showAllPairs()) {\n <div class=\"tb-matrix\">\n <table>\n <thead>\n <tr><th>mode</th><th>foreground</th><th>on</th><th>ratio</th><th>needs</th><th>level</th></tr>\n </thead>\n <tbody>\n @for (c of visibleChecks(); track $index) {\n <tr [class.bad]=\"!c.pass\">\n <td>{{ c.mode }}</td>\n <td><code>{{ c.foreground }}</code></td>\n <td><code>{{ c.background }}</code></td>\n <td>{{ c.ratio }}</td>\n <td>{{ c.required }}</td>\n <td>{{ c.level }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n @if (report().failing.length > 0) {\n <p class=\"tb-hint\">\n Failing pairs come from hard-pinned brand colors (pins are emitted verbatim). Un-pin, or\n use a preset — soft targets keep brand hue while the guard-rail restores AA.\n </p>\n }\n\n <p class=\"tb-hint\">Tip: browse to any component story in the sidebar — it's wearing your brand now.</p>\n </section>\n `,\n})\nexport class UniThemeBuilderComponent {\n protected theme = inject(ThemeService);\n\n protected readonly schemes = SCHEMES;\n protected readonly categories = CATEGORIES;\n protected readonly shapes = SHAPES;\n protected readonly variants = VARIANTS;\n protected readonly sizes = ['sm', 'md', 'lg', 'xl'] as const;\n protected readonly swatches = SWATCHES;\n protected readonly presets = PRESETS;\n\n protected seed = signal('#4F46E5');\n protected scheme = signal<ColorScheme>('triadic');\n protected category = signal<ColorCategory>('neutral');\n protected shape = signal<ThemeShape>('modern');\n protected floor = signal(18);\n protected mode = signal<'light' | 'dark'>('light');\n protected pinPrimary = signal(false);\n protected primaryHex = signal('#2C3E35');\n protected pinSecondary = signal(false);\n protected secondaryHex = signal('#D4A373');\n /** Soft brand targets carried by the active preset (cleared on seed edits). */\n protected targets = signal<BrandPaletteConfig['targets']>(undefined);\n\n protected copied = signal<'file' | 'ngadd' | 'dtcg' | null>(null);\n protected showAllPairs = signal(false);\n\n constructor() {\n // Seed the controls from an already-active custom palette, if any.\n const existing = this.theme.customPalette();\n if (existing) {\n this.seed.set(existing.seed);\n this.scheme.set(existing.scheme);\n this.category.set(existing.category);\n this.floor.set(existing.accentSaturationFloor ?? 18);\n this.mode.set(existing.mode ?? 'light');\n if (existing.brand?.primary) {\n this.pinPrimary.set(true);\n this.primaryHex.set(existing.brand.primary);\n }\n if (existing.brand?.secondary) {\n this.pinSecondary.set(true);\n this.secondaryHex.set(existing.brand.secondary);\n }\n this.targets.set(existing.targets);\n }\n }\n\n protected config = computed<BrandPaletteConfig>(() => ({\n seed: this.seed(),\n scheme: this.scheme(),\n category: this.category(),\n mode: this.mode(),\n accentSaturationFloor: this.floor(),\n radii: ShapeRadii[this.shape()],\n ...(this.targets() ? { targets: this.targets() } : {}),\n brand: {\n ...(this.pinPrimary() ? { primary: this.primaryHex() } : {}),\n ...(this.pinSecondary() ? { secondary: this.secondaryHex() } : {}),\n },\n }));\n\n /**\n * Both modes generated on every input change (< 15 ms each), independent of\n * the storybook-wide theme — the side-by-side preview and the contrast\n * report always show the full light+dark picture.\n */\n protected palettes = computed(() => {\n const base = { ...this.config() };\n const checks: ContrastCheck[] = [];\n const light = generatePalette({ ...base, mode: 'light', checks });\n const dark = generatePalette({ ...base, mode: 'dark', checks });\n return { light, dark, checks };\n });\n\n protected modePanels = computed((): { label: 'light' | 'dark'; colors: Colors }[] => [\n { label: 'light', colors: this.palettes().light },\n { label: 'dark', colors: this.palettes().dark },\n ]);\n\n protected report = computed(() => {\n const { checks } = this.palettes();\n return {\n checks,\n failing: checks.filter((c) => !c.pass),\n worst: checks.reduce((worst, c) => Math.min(worst, c.ratio), 21),\n };\n });\n\n protected visibleChecks = computed(() =>\n this.showAllPairs() ? this.report().checks : this.report().failing\n );\n\n protected snippet = computed(() => {\n const { radii: _radii, ...rest } = this.config();\n return JSON.stringify(rest);\n });\n\n /** The builder state expressed as engine input — drives all three exports. */\n protected generationInput = computed<GenerationInput>(() => {\n const targets = this.targets();\n const seeds = [this.pinPrimary() ? this.primaryHex() : (targets?.primary ?? this.seed())];\n const secondary = this.pinSecondary() ? this.secondaryHex() : targets?.secondary;\n if (secondary) seeds.push(secondary);\n if (targets?.tertiary) seeds.push(targets.tertiary);\n return {\n seed: seeds.length === 1 ? seeds[0] : seeds,\n scheme: this.scheme(),\n vibe: this.category(),\n shape: this.shape(),\n name: 'Brand',\n };\n });\n\n protected color(token: ColorToken): string {\n return this.theme.colors()[token] ?? 'transparent';\n }\n\n private apply(): void {\n this.theme.applyPalette(this.config());\n }\n\n private copyToClipboard(kind: 'file' | 'ngadd' | 'dtcg', text: string): void {\n void navigator.clipboard?.writeText(text).then(() => {\n this.copied.set(kind);\n setTimeout(() => this.copied.set(null), 1600);\n });\n }\n\n protected copyThemeFile(): void {\n this.copyToClipboard('file', emitThemeFile(this.generationInput()).content);\n }\n\n protected copyNgAdd(): void {\n const input = this.generationInput();\n const seeds = Array.isArray(input.seed) ? input.seed.join(',') : input.seed;\n this.copyToClipboard(\n 'ngadd',\n `ng add @uni-design-system/uni-angular --brand=${seeds} --shape=${input.shape}`\n );\n }\n\n protected copyDtcg(): void {\n const { light, dark } = this.palettes();\n const radii = ShapeRadii[this.shape()];\n const spacing = this.theme.spacing();\n this.copyToClipboard(\n 'dtcg',\n JSON.stringify(\n {\n light: emitDtcgTokens({ colors: light, radii, spacing }),\n dark: emitDtcgTokens({ colors: dark, radii, spacing }),\n },\n null,\n 2\n )\n );\n }\n\n protected setSeed(v: string) {\n if (/^#?[0-9a-fA-F]{6}$/.test(v.replace('#', ''))) {\n this.seed.set(v.startsWith('#') ? v : `#${v}`);\n // A hand-edited seed takes over from any preset's soft brand targets.\n this.targets.set(undefined);\n this.apply();\n }\n }\n protected setScheme(v: ColorScheme) {\n this.scheme.set(v);\n this.apply();\n }\n protected setCategory(v: ColorCategory) {\n this.category.set(v);\n this.apply();\n }\n protected setShape(v: ThemeShape) {\n this.shape.set(v);\n this.apply();\n }\n protected setFloor(v: string) {\n this.floor.set(Number(v));\n this.apply();\n }\n protected setMode(v: 'light' | 'dark') {\n this.mode.set(v);\n this.apply();\n }\n protected setPinPrimary(v: boolean) {\n this.pinPrimary.set(v);\n this.apply();\n }\n protected setPrimaryHex(v: string) {\n this.primaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinPrimary()) this.apply();\n }\n protected setPinSecondary(v: boolean) {\n this.pinSecondary.set(v);\n this.apply();\n }\n protected setSecondaryHex(v: string) {\n this.secondaryHex.set(v.startsWith('#') ? v : `#${v}`);\n if (this.pinSecondary()) this.apply();\n }\n\n protected applyPreset(config: BrandPaletteConfig) {\n this.seed.set(config.seed);\n this.scheme.set(config.scheme);\n this.category.set(config.category);\n this.floor.set(config.accentSaturationFloor ?? 18);\n this.targets.set(config.targets);\n this.pinPrimary.set(!!config.brand?.primary);\n if (config.brand?.primary) this.primaryHex.set(config.brand.primary);\n this.pinSecondary.set(!!config.brand?.secondary);\n if (config.brand?.secondary) this.secondaryHex.set(config.brand.secondary);\n this.apply();\n }\n\n protected reset() {\n this.theme.clearCustomPalette();\n this.seed.set('#4F46E5');\n this.scheme.set('triadic');\n this.category.set('neutral');\n this.shape.set('modern');\n this.floor.set(18);\n this.mode.set('light');\n this.targets.set(undefined);\n this.pinPrimary.set(false);\n this.pinSecondary.set(false);\n }\n\n // ── Styling (reads live theme tokens so the builder wears the brand too) ──\n private c = (token: ColorToken) => this.theme.colors()[token] ?? 'transparent';\n\n protected shell = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'minmax(280px, 340px) 1fr',\n gap: 24,\n alignItems: 'start',\n padding: 24,\n background: this.c('background'),\n color: this.c('on-background'),\n minHeight: '100vh',\n fontFamily: 'Red Hat Display, system-ui, sans-serif',\n '@media (max-width: 820px)': { gridTemplateColumns: '1fr' },\n '& .tb-eyebrow': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.6,\n },\n '& .tb-title': { fontSize: 26, margin: '6px 0 8px', letterSpacing: '-0.02em' },\n '& .tb-lede': { fontSize: 14, lineHeight: 1.5, opacity: 0.8, margin: 0 },\n '& .tb-group': {\n fontSize: 11,\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n opacity: 0.55,\n margin: '4px 0 12px',\n },\n })\n );\n\n protected controls = computed(() =>\n css({\n position: 'sticky',\n top: 16,\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n padding: 20,\n borderRadius: 14,\n background: this.c('surface'),\n border: `1px solid ${this.c('outline')}`,\n '& .tb-head': { display: 'flex', flexDirection: 'column' },\n '& .tb-presets': { display: 'flex', flexWrap: 'wrap', gap: 8 },\n '& .tb-preset': {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n cursor: 'pointer',\n borderRadius: 999,\n padding: '5px 11px 5px 6px',\n fontSize: 12.5,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('surface'),\n color: this.c('on-surface'),\n },\n '& .tb-dot': { width: 13, height: 13, borderRadius: '50%' },\n '& .tb-field': { display: 'flex', flexDirection: 'column', gap: 6, fontSize: 13 },\n '& .tb-field > span': { fontSize: 12, opacity: 0.7 },\n '& .tb-row': { display: 'flex', gap: 8, alignItems: 'center' },\n '& input[type=color]': {\n width: 40,\n height: 34,\n padding: 0,\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 8,\n background: 'none',\n cursor: 'pointer',\n },\n '& input[type=text], & select': {\n width: '100%',\n height: 34,\n padding: '0 10px',\n borderRadius: 8,\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& input[type=range]': { width: '100%', accentColor: this.c('primary') },\n '& .tb-toggle': { display: 'flex', gap: 6 },\n '& .tb-toggle button': {\n flex: 1,\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n },\n '& .tb-toggle button.on': {\n background: this.c('primary'),\n color: this.c('on-primary'),\n borderColor: this.c('primary'),\n },\n '& .tb-exports': { display: 'flex', flexDirection: 'column', gap: 6 },\n '& .tb-exports button': {\n height: 32,\n borderRadius: 8,\n cursor: 'pointer',\n fontSize: 12.5,\n border: `1px solid ${this.c('primary')}`,\n background: this.c('primary-surface'),\n color: this.c('on-primary-surface'),\n },\n '& .tb-pin.dim input[type=color], & .tb-pin.dim input[type=text]': { opacity: 0.45 },\n '& .tb-pin em': {\n fontStyle: 'normal',\n fontSize: 10,\n padding: '1px 6px',\n borderRadius: 5,\n marginLeft: 4,\n background: this.c('primary-container'),\n color: this.c('on-primary-container'),\n },\n '& .tb-reset': {\n cursor: 'pointer',\n borderRadius: 8,\n padding: '8px 14px',\n border: `1px solid ${this.c('outline')}`,\n background: this.c('background'),\n color: this.c('on-background'),\n fontSize: 13,\n },\n '& .tb-snippet': {\n display: 'block',\n fontFamily: 'monospace',\n fontSize: 10.5,\n lineHeight: 1.5,\n wordBreak: 'break-all',\n opacity: 0.6,\n },\n })\n );\n\n protected preview = computed(() =>\n css({\n display: 'flex',\n flexDirection: 'column',\n gap: 10,\n '& .tb-modes': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',\n gap: 14,\n marginBottom: 20,\n },\n '& .tb-panel': {\n border: '1px solid',\n borderRadius: 14,\n padding: 14,\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n '& .tb-panel-tag': {\n fontSize: 10.5,\n letterSpacing: '0.12em',\n textTransform: 'uppercase',\n },\n '& .tb-mode-swatches': {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(110px, 1fr))',\n gap: 8,\n },\n '& .tb-swatch': {\n borderRadius: 10,\n padding: '12px 12px',\n minHeight: 60,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n '& .tb-swatch span': { fontSize: 12.5, fontWeight: 600 },\n '& .tb-swatch code': { fontFamily: 'monospace', fontSize: 10.5, opacity: 0.85 },\n '& .tb-mini-card': { borderRadius: 10, overflow: 'hidden', border: '1px solid' },\n '& .tb-mini-head': { padding: '8px 14px', fontWeight: 600, fontSize: 13 },\n '& .tb-mini-body': { padding: '10px 14px', fontSize: 12.5, lineHeight: 1.5 },\n '& .tb-buttons': { display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center', marginBottom: 14 },\n '& .tb-pass': { color: this.c('success'), fontWeight: 700 },\n '& .tb-fail': { color: this.c('error'), fontWeight: 700 },\n '& .tb-link': {\n marginLeft: 10,\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n color: this.c('primary'),\n fontSize: 11,\n textTransform: 'none',\n letterSpacing: 'normal',\n textDecoration: 'underline',\n },\n '& .tb-matrix': {\n maxHeight: 320,\n overflow: 'auto',\n border: `1px solid ${this.c('outline')}`,\n borderRadius: 10,\n marginBottom: 12,\n '& table': { width: '100%', borderCollapse: 'collapse', fontSize: 12 },\n '& th': {\n position: 'sticky',\n top: 0,\n textAlign: 'left',\n padding: '8px 10px',\n background: this.c('surface-variant'),\n color: this.c('on-surface-variant'),\n fontSize: 10.5,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n },\n '& td': { padding: '6px 10px', borderTop: `1px solid ${this.c('outline')}` },\n '& td code': { fontFamily: 'monospace', fontSize: 11.5 },\n '& tr.bad td': { background: this.c('error-container'), color: this.c('on-error-container') },\n },\n '& .tb-hint': { fontSize: 12.5, opacity: 0.6, marginTop: 8 },\n })\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport type { ThemeName } from '@uni-design-system/uni-core';\nimport { ThemeService } from '../../theming';\nimport { UniSelectComponent } from '../select-input';\n\n/**\n * Drop-in switcher for the themes registered via `UNI_THEMES`: a select over\n * `ThemeService.themeOptions` that applies the choice through `selectTheme`\n * (so it persists across reloads like any other theme selection).\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-theme-switch',\n imports: [UniSelectComponent],\n template: `\n <uni-select\n [options]=\"theme.themeOptions()\"\n [value]=\"selected()\"\n (valueChange)=\"select($event)\"\n [ariaLabel]=\"ariaLabel()\"\n />\n `,\n})\nexport class UniThemeSwitchComponent {\n protected theme = inject(ThemeService);\n\n /** Accessible name for the underlying select. */\n ariaLabel = input('Theme');\n\n /** Emits the selected theme key after it has been applied. */\n themeChanged = output<ThemeName>();\n\n protected selected = computed<ThemeName | null>(() => this.theme.selectedThemeKey() || null);\n\n protected select(themeName: ThemeName | null): void {\n if (!themeName) return;\n this.theme.selectTheme(themeName);\n this.themeChanged.emit(themeName);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { ColorToken } from '@uni-design-system/uni-core';\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport { UniTextComponent } from '../text/text.component';\nimport type { UniToggleOptions } from './toggle.model';\n\n@Component({\n selector: 'uni-toggle',\n imports: [UniTextComponent],\n templateUrl: './toggle.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'toggle' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UniToggleComponent\n extends BaseComponent<UniToggleOptions>\n implements FormCheckboxControl\n{\n // --- REQUIRED SIGNALS (populated by FormCheckboxControl) ---\n readonly checked = model<boolean>(false);\n readonly disabled = input(false);\n readonly touched = model(false);\n readonly invalid = input(false);\n readonly dirty = input(false);\n\n /** Synced from required() validators by the Signal Forms [field] directive. */\n readonly required = input(false);\n\n /**\n * Id(s) of external element(s) describing this control — typically your\n * app-rendered error message — exposed as aria-describedby.\n */\n readonly ariaDescribedBy = input<string>();\n\n // --- CONFIGURATION ---\n readonly label = input<string>();\n\n // Only show errors if the user has actually interacted with the field\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n markAsTouched() {\n this.touched.set(true);\n }\n\n handleChange(event: Event) {\n this.checked.set((event.target as HTMLInputElement).checked);\n this.markAsTouched();\n }\n\n private readonly metrics = computed(() => {\n const toggleSize = (this.componentOptions().size as number) || 20;\n const sliderSize = toggleSize * 0.8;\n return {\n toggleSize,\n toggleWidth: toggleSize * 2,\n sliderSize,\n sliderOffset: (toggleSize - sliderSize) / 2,\n };\n });\n\n protected readonly toggleLabel = computed(() => {\n const { toggleSize, toggleWidth, sliderSize, sliderOffset } = this.metrics();\n return css({\n userSelect: 'none',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n marginBottom: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n opacity: this.disabled() ? 0.6 : 1,\n\n '& .toggle-switch': {\n width: toggleWidth,\n height: toggleSize,\n backgroundColor: this.disabled()\n ? this.getThemeColor('disabled')\n : this.getThemeColor(this.componentOptions().trackColor ?? 'surface-variant'),\n borderRadius: toggleSize / 2,\n position: 'relative',\n transition: 'all 0.3s ease',\n },\n\n '& .toggle-slider': {\n width: sliderSize,\n height: sliderSize,\n backgroundColor: this.getThemeColor(this.componentOptions().knobColor ?? 'surface'),\n borderRadius: '50%',\n position: 'absolute',\n top: sliderOffset,\n left: sliderOffset,\n transition: 'all 0.3s ease',\n ...this.theme.boxShadow('raised'),\n },\n\n // Hover darkens whatever the token resolves to — the button convention.\n '&:hover .toggle-switch': this.disabled()\n ? {}\n : {\n filter: 'brightness(0.95)',\n },\n });\n });\n\n protected readonly toggleInput = computed(() => {\n const { toggleSize } = this.metrics();\n return css({\n position: 'absolute',\n zIndex: -1,\n width: 0,\n height: 0,\n opacity: 0,\n\n '&:checked + .toggle-switch': {\n backgroundColor: this.getThemeColor(this.variant()),\n borderColor: this.getThemeColor(this.variant()),\n },\n\n '&:checked + .toggle-switch .toggle-slider': {\n transform: `translateX(${toggleSize}px)`,\n },\n\n '&:disabled + .toggle-switch': {\n cursor: 'not-allowed',\n },\n\n '&:focus + .toggle-switch': {\n outline: `2px solid ${this.getThemeColor(this.variant())}`,\n outlineOffset: '2px',\n },\n });\n });\n\n getThemeColor(token: ColorToken) {\n const colors = this.theme.colors();\n return colors[token] ? colors[token] : colors['primary'];\n }\n}\n","<label [class]=\"toggleLabel()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [class]=\"toggleInput()\"\n [checked]=\"checked()\"\n (change)=\"handleChange($event)\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n />\n <div class=\"toggle-switch\">\n <div class=\"toggle-slider\"></div>\n </div>\n @if (label()) {\n <span uni-text=\"label\">{{ label() }}</span>\n }\n</label>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { css, keyframes } from '@emotion/css';\n\nimport { BaseComponent } from '../base';\nimport { COMPONENT_NAME } from '../base/base.component';\nimport type { UniTooltipOptions } from './tooltip.model';\nimport { fadeIn, fadeOut } from '@uni-design-system/uni-core';\nimport {\n anchorArrowStyles,\n anchorStyles,\n newAnchorName,\n resolveFocusTarget,\n uniqueId,\n useTimer,\n FOCUSABLE_SELECTOR,\n type Placement,\n} from '../../cdk';\n\n@Component({\n selector: 'uni-tooltip',\n imports: [],\n // The bubble lives declaratively in the template as a manual popover: the\n // top layer escapes any overflow context (which made appendToBody obsolete)\n // and native CSS anchor positioning keeps it attached to the host.\n template: `<ng-content></ng-content\n ><span\n #tip\n popover=\"manual\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [class]=\"tooltipClassName()\"\n (mouseenter)=\"isMouseInside.set(true)\"\n (mouseleave)=\"isMouseInside.set(false)\"\n (animationend)=\"onAnimationEnd($event)\"\n >{{ label() }}<span [class]=\"arrowClassName()\"></span\n ></span>`,\n providers: [{ provide: COMPONENT_NAME, useValue: 'tooltip' }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'className()',\n '(click)': 'onClick($event)',\n '(mouseenter)': 'mouseenter()',\n '(mouseleave)': 'mouseleave()',\n '(focusin)': 'onFocusIn($event)',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape($event)',\n },\n})\nexport class UniTooltipComponent extends BaseComponent<UniTooltipOptions> {\n private elRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private timer = useTimer();\n isMouseInside = signal(false);\n\n /** Whether the bubble is currently shown (or fading out). */\n private readonly visible = signal(false);\n\n /**\n * Set when the wrapped control is activated: clicking a button is not a\n * request to toggle the bubble, and re-showing it right away makes a\n * state-flipping label (\"Expand\" → \"Collapse\") blink back mid-interaction.\n * Re-arms when the pointer leaves or focus moves away.\n */\n private readonly suppressed = signal(false);\n\n readonly tooltipId = uniqueId('uni-tooltip');\n private readonly anchorName = newAnchorName();\n\n hoverDelay = input<number>(500);\n label = input.required<string>();\n placement = input<Placement>('top');\n inlineText = input<boolean>(false);\n\n /** @deprecated The tooltip renders in the native top layer; ignored. */\n appendToBody = input<boolean>(false);\n\n private tipRef = viewChild.required<ElementRef<HTMLElement>>('tip');\n\n constructor() {\n super();\n\n effect(() => {\n const timerActive = this.timer.isActive();\n const mouseInside = this.isMouseInside();\n\n // If the timer finished and the mouse is still inside, show tooltip\n if (!timerActive && mouseInside && !this.suppressed()) {\n this.showTooltip();\n }\n // If the mouse left and the timer is not running, hide tooltip\n else if (!mouseInside) {\n this.hideTooltip();\n }\n });\n\n // A tooltip must be reachable by keyboard (WCAG 1.4.13): when the\n // projected content has no focusable element, the host itself joins\n // the tab sequence. The bubble is always in the DOM, so the describedby\n // relationship is wired once, on the element that receives focus.\n afterNextRender(() => {\n const host = this.elRef.nativeElement as HTMLElement;\n if (!host.querySelector(FOCUSABLE_SELECTOR) && !host.matches(FOCUSABLE_SELECTOR)) {\n this.renderer.setAttribute(host, 'tabindex', '0');\n }\n this.renderer.setAttribute(resolveFocusTarget(host), 'aria-describedby', this.tooltipId);\n });\n }\n\n onFocusIn(event: FocusEvent) {\n // Only keyboard-driven focus shows the tooltip immediately; mouse\n // interaction keeps the hover-delay behavior.\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.showTooltip();\n }\n }\n\n onFocusOut() {\n this.suppressed.set(false);\n if (!this.isMouseInside()) {\n this.hideTooltip();\n }\n }\n\n onEscape(event: Event) {\n if (this.visible()) {\n // Dismiss only the tooltip, not an enclosing dialog/popover\n event.stopPropagation();\n this.hideTooltip();\n }\n }\n\n /**\n * A click on an interactive element inside the host is an activation of\n * that control — hide the bubble and stay suppressed until re-arm. A click\n * anywhere else (inline-text tooltips, tap on a non-interactive host)\n * keeps the tap-to-toggle behavior.\n */\n protected onClick(event: Event) {\n const host = this.elRef.nativeElement as HTMLElement;\n const control = (event.target as HTMLElement).closest(FOCUSABLE_SELECTOR);\n if (control && control !== host && host.contains(control)) {\n this.suppressed.set(true);\n this.hideTooltip();\n } else {\n this.toggleTooltip();\n }\n }\n\n toggleTooltip() {\n if (this.visible()) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n mouseenter() {\n this.isMouseInside.set(true);\n this.timer.start(this.hoverDelay());\n }\n\n mouseleave() {\n this.isMouseInside.set(false);\n this.suppressed.set(false);\n this.timer.stop();\n }\n\n showTooltip() {\n if (this.visible()) return;\n const tip = this.tipRef().nativeElement;\n tip.showPopover();\n this.renderer.setAttribute(tip, 'fade', 'in');\n this.visible.set(true);\n }\n\n hideTooltip() {\n if (!this.visible()) return;\n this.renderer.setAttribute(this.tipRef().nativeElement, 'fade', 'out');\n }\n\n protected onAnimationEnd(event: AnimationEvent) {\n if (event.animationName.includes(this.tooltipFadeOut)) {\n this.tipRef().nativeElement.hidePopover();\n this.visible.set(false);\n }\n }\n\n protected readonly className = computed(() =>\n css(\n {\n display: 'inline-flex',\n anchorName: this.anchorName,\n },\n this.inlineText() && {\n cursor: 'help',\n textDecoration: 'underline',\n textDecorationStyle: 'dotted',\n }\n )\n );\n\n private tooltipFadeIn = keyframes({ ...fadeIn });\n private tooltipFadeOut = keyframes({ ...fadeOut });\n\n protected readonly tooltipClassName = computed(() =>\n css([\n {\n ...this.theme.colorPair(this.componentOptions().color),\n ...this.theme.radius(this.componentOptions().borderRadius),\n ...this.theme.boxShadow(this.componentOptions().shadow),\n ...this.theme.typeface(this.componentOptions().typeface),\n border: 'none',\n padding: 5,\n width: 'max-content',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: 6 }),\n\n '&[fade=\"in\"]': {\n animation: `${this.tooltipFadeIn} ease-in 350ms`,\n },\n\n '&[fade=\"out\"]': {\n animation: `${this.tooltipFadeOut} ease-in 350ms`,\n },\n },\n ])\n );\n\n protected readonly arrowClassName = computed(() =>\n css({\n ...this.theme.colorPair(this.componentOptions().color),\n ...anchorArrowStyles(this.placement()),\n })\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RippleDirective"],"mappings":"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"}
|