@uni-design-system/uni-angular 8.1.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/datetime/datetime.model.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/datetime/datetime.helper.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/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/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/calendar/calendar.component.ts","../../src/lib/components/calendar/calendar.component.html","../../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/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/dropdown/dropdown.component.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/date-input/date-input.component.ts","../../src/lib/components/date-input/date-input.component.html","../../src/lib/components/time-input/time-input.component.ts","../../src/lib/components/time-input/time-input.component.html","../../src/lib/components/date-time-input/date-time-input.component.ts","../../src/lib/components/date-time-input/date-time-input.component.html","../../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/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/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","/**\n * Canonical date/time value shapes shared by `uni-calendar`,\n * `uni-date-input`, `uni-time-input` and `uni-date-time-input`.\n *\n * Plain ISO strings, never `Date`s: a calendar date is a label on a wall\n * calendar, not an instant. `new Date('2026-08-20')` is midnight UTC — which\n * is 19 Aug in Honolulu — the classic off-by-one every `Date`-valued picker\n * ships. Strings are timezone-free, JSON-serializable and sortable with `<`.\n * Zoned scheduling is the app's concern; these components never touch\n * `Date.getTimezoneOffset()`.\n */\n\n/** A calendar date, `'YYYY-MM-DD'`. */\nexport type UniDate = string;\n\n/** A wall-clock time, `'HH:mm'` (24-hour). Display format is separate. */\nexport type UniTime = string;\n\n/** A combined date and time, `'YYYY-MM-DDTHH:mm'`. */\nexport type UniDateTime = string;\n\n/** A start–end date range. Both ends are inclusive. */\nexport interface UniDateRange {\n start?: UniDate;\n end?: UniDate;\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","/**\n * Pure date/time helpers: ISO string math, `Intl`-driven formatting and\n * parsing. No date library — `Date` appears only as UTC arithmetic inside\n * these functions, so no result ever depends on the machine's timezone.\n */\nimport { memoize } from '../helpers/memoize.helper';\nimport type { UniDate, UniDateTime, UniTime } from './datetime.model';\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\n\nconst toUTC = (date: UniDate): number => {\n const [y, m, d] = date.split('-').map(Number);\n return Date.UTC(y, m - 1, d);\n};\n\nconst fromUTC = (timestamp: number): UniDate => {\n const d = new Date(timestamp);\n return isoDate(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());\n};\n\n/** `(2026, 8, 5)` → `'2026-08-05'`. Does not validate — see `isValidDate`. */\nexport const isoDate = (year: number, month: number, day: number): UniDate =>\n `${year}-${pad(month)}-${pad(day)}`;\n\n/** The ISO date when the parts form a real calendar day, else `null`. */\nexport const isValidDate = (year: number, month: number, day: number): UniDate | null =>\n month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth(year, month)\n ? isoDate(year, month, day)\n : null;\n\n/** Days in a month, leap-year aware. */\nexport const daysInMonth = (year: number, month: number): number =>\n new Date(Date.UTC(year, month, 0)).getUTCDate();\n\nexport const addDays = (date: UniDate, days: number): UniDate =>\n fromUTC(toUTC(date) + days * 86_400_000);\n\n/** Same day ± n months, clamping the day to the target month's length. */\nexport const addMonths = (date: UniDate, months: number): UniDate => {\n let [y, m] = date.split('-').map(Number);\n const d = Number(date.slice(8, 10));\n const total = y * 12 + (m - 1) + months;\n y = Math.floor(total / 12);\n m = ((total % 12) + 12) % 12 + 1;\n return isoDate(y, m, Math.min(d, daysInMonth(y, m)));\n};\n\n/** Day of week, 0 = Sunday … 6 = Saturday. */\nexport const dayOfWeek = (date: UniDate): number => new Date(toUTC(date)).getUTCDay();\n\n/** `'2026-08-20'` → `'2026-08'`. */\nexport const monthOf = (date: UniDate): string => date.slice(0, 7);\n\n/** Today as a local-wall-clock ISO date (the one place local time matters). */\nexport const todayIso = (): UniDate => {\n const d = new Date();\n return isoDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n};\n\n/** Inclusive day count of a range: `('-20', '-24')` → 5. */\nexport const inclusiveDayCount = (start: UniDate, end: UniDate): number =>\n Math.round((toUTC(end) - toUTC(start)) / 86_400_000) + 1;\n\nexport interface UniMonthGridCell {\n date: UniDate;\n /** True for leading/trailing cells that belong to the adjacent months. */\n outside: boolean;\n}\n\n/**\n * The week matrix a calendar renders: full weeks covering `'YYYY-MM'`,\n * starting on `weekStart` (0 = Sunday). Outside cells are always present so\n * showing or hiding them is a pure render decision.\n */\nexport const buildMonthGrid = (month: string, weekStart: number): UniMonthGridCell[][] => {\n const [y, m] = month.split('-').map(Number);\n const first = isoDate(y, m, 1);\n const offset = (dayOfWeek(first) - weekStart + 7) % 7;\n const total = daysInMonth(y, m);\n const weeks: UniMonthGridCell[][] = [];\n let cursor = addDays(first, -offset);\n for (let w = 0; w < Math.ceil((offset + total) / 7); w++) {\n const week: UniMonthGridCell[] = [];\n for (let c = 0; c < 7; c++) {\n week.push({ date: cursor, outside: monthOf(cursor) !== month });\n cursor = addDays(cursor, 1);\n }\n weeks.push(week);\n }\n return weeks;\n};\n\n// ---- Intl formatting (always UTC — the ISO string is re-hydrated as UTC\n// midnight, so the local zone can never shift the label) ---------------------\n\nexport const formatDate = (\n date: UniDate,\n locale: string,\n options: Intl.DateTimeFormatOptions = { dateStyle: 'medium' }\n): string =>\n new Intl.DateTimeFormat(locale, { ...options, timeZone: 'UTC' }).format(new Date(toUTC(date)));\n\n/** `'2026-08'` → `'August 2026'` in the locale. */\nexport const formatMonthHeading = (month: string, locale: string): string =>\n formatDate(`${month}-01`, locale, { month: 'long', year: 'numeric' });\n\nexport interface UniWeekdayName {\n /** Column label in the requested format ('narrow' | 'short'). */\n label: string;\n /** Full weekday name, for the columnheader's `abbr`. */\n full: string;\n}\n\n/** Weekday header labels starting at `weekStart` (0 = Sunday). */\nexport const weekdayNames = memoize(\n (locale: string, weekStart: number, format: 'narrow' | 'short'): UniWeekdayName[] => {\n const labels: UniWeekdayName[] = [];\n for (let i = 0; i < 7; i++) {\n // 2023-01-01 is a Sunday.\n const day = new Date(Date.UTC(2023, 0, 1 + ((weekStart + i) % 7)));\n labels.push({\n label: new Intl.DateTimeFormat(locale, { weekday: format, timeZone: 'UTC' }).format(day),\n full: new Intl.DateTimeFormat(locale, { weekday: 'long', timeZone: 'UTC' }).format(day),\n });\n }\n return labels;\n }\n);\n\n/** `'15:00'` → `'3:00 PM'` (or `'15:00'` when `hour12` is false). */\nexport const formatTime = (time: UniTime, locale: string, hour12: boolean): string => {\n const [h, m] = time.split(':').map(Number);\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12,\n timeZone: 'UTC',\n }).format(new Date(Date.UTC(2000, 0, 1, h, m)));\n};\n\n// ---- Locale plumbing --------------------------------------------------------\n\ninterface WeekInfo {\n firstDay?: number;\n}\n\n/**\n * The locale's first day of week, 0 = Sunday … 6 = Saturday. Falls back to\n * Sunday where `Intl.Locale` week info is unavailable.\n */\nexport const localeWeekStart = memoize((locale: string): number => {\n try {\n const intlLocale = new Intl.Locale(locale) as Intl.Locale & {\n getWeekInfo?: () => WeekInfo;\n weekInfo?: WeekInfo;\n };\n const info = intlLocale.getWeekInfo?.() ?? intlLocale.weekInfo;\n // Intl counts 1 = Monday … 7 = Sunday.\n if (info?.firstDay) return info.firstDay % 7;\n } catch {\n // Unknown locale tag — fall through to the default.\n }\n return 0;\n});\n\n/** Whether the locale's default clock is 12-hour. */\nexport const localeDefaultHour12 = memoize(\n (locale: string): boolean =>\n new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions().hour12 ?? true\n);\n\ntype DateField = 'year' | 'month' | 'day';\n\n/** The locale's numeric-date field order, e.g. en-US → month, day, year. */\nexport const localeFieldOrder = memoize((locale: string): DateField[] => {\n const parts = new Intl.DateTimeFormat(locale, { timeZone: 'UTC' }).formatToParts(\n new Date(Date.UTC(2000, 11, 31))\n );\n return parts\n .filter((p): p is Intl.DateTimeFormatPart & { type: DateField } =>\n ['year', 'month', 'day'].includes(p.type)\n )\n .map((p) => p.type);\n});\n\n/** Long + short month names → month number, lowercased, dots stripped. */\nexport const localeMonthNames = memoize((locale: string): Map<string, number> => {\n const map = new Map<string, number>();\n for (let i = 0; i < 12; i++) {\n const date = new Date(Date.UTC(2000, i, 15));\n for (const style of ['long', 'short'] as const) {\n const name = new Intl.DateTimeFormat(locale, { month: style, timeZone: 'UTC' })\n .format(date)\n .toLowerCase()\n .replace(/\\./g, '');\n map.set(name, i + 1);\n }\n }\n return map;\n});\n\n/** The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`. */\nexport const localeDatePlaceholder = memoize((locale: string): string =>\n new Intl.DateTimeFormat(locale, { timeZone: 'UTC' })\n .format(new Date(Date.UTC(2000, 11, 31)))\n .replace(/2000/, 'YYYY')\n .replace(/12/, 'MM')\n .replace(/31/, 'DD')\n);\n\n// ---- Parsing (Intl-driven — digit order and month names come from the\n// locale, never from a hardcoded table) ---------------------------------------\n\n/** Missing year → the NEXT occurrence: nobody schedules into the past. */\nconst nextOccurrence = (month: number, day: number, today: UniDate): UniDate | null => {\n const year = Number(today.slice(0, 4));\n const candidate = isValidDate(year, month, day);\n if (candidate && candidate >= today) return candidate;\n return isValidDate(year + 1, month, day);\n};\n\n/**\n * Free-typed date text → ISO date, or `null` when unreadable. Accepts, in\n * order: ISO (`2026-08-20`), a month name from the locale's own long/short\n * lists (`aug 20`, `20 aug 2026`, `August 20th`), and locale-numeric text\n * (`8/20/2026`, `20.8.2026`, `08-20`) with the digit order taken from\n * `Intl.DateTimeFormat(locale).formatToParts()`. A missing year resolves to\n * the next occurrence; two-digit years are refused rather than guessed.\n */\nexport const parseDateText = (\n raw: string,\n locale: string,\n options: { today?: UniDate } = {}\n): UniDate | null => {\n const today = options.today ?? todayIso();\n const s = raw\n .trim()\n .toLowerCase()\n .replace(/(\\d+)(st|nd|rd|th)\\b/g, '$1')\n .replace(/,/g, ' ');\n if (!s) return null;\n\n // 1. ISO — what agents and APIs write.\n const iso = s.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (iso) return isValidDate(+iso[1], +iso[2], +iso[3]);\n\n // 2. Month name, from the locale's own list.\n const monthNames = localeMonthNames(locale);\n const tokens = s.split(/\\s+/);\n const monthToken = tokens.find((t) => monthNames.has(t.replace(/\\./g, '')));\n if (monthToken) {\n const month = monthNames.get(monthToken.replace(/\\./g, ''))!;\n const numbers = tokens.filter((t) => /^\\d+$/.test(t)).map(Number);\n if (numbers.length === 1 && numbers[0] >= 1 && numbers[0] <= 31)\n return nextOccurrence(month, numbers[0], today);\n if (numbers.length === 2) {\n const year = numbers.find((n) => n >= 1000);\n const day = numbers.find((n) => n <= 31 && n !== year);\n if (year && day) return isValidDate(year, month, day);\n }\n return null;\n }\n\n // 3. Locale numeric — digit order from Intl, not hardcoded.\n const numeric = s.match(/^(\\d{1,4})[/.\\-\\s](\\d{1,4})(?:[/.\\-\\s](\\d{1,4}))?$/);\n if (!numeric) return null;\n const parts = [numeric[1], numeric[2], numeric[3]].filter((p): p is string => !!p);\n if (parts.length === 3) {\n if (parts[0].length === 4) return isValidDate(+parts[0], +parts[1], +parts[2]); // 2026/8/20\n const bag: Partial<Record<DateField, string>> = {};\n localeFieldOrder(locale).forEach((field, i) => (bag[field] = parts[i]));\n if (!bag.year || bag.year.length < 4) return null; // two-digit years are refused, not guessed\n return isValidDate(+bag.year, +bag.month!, +bag.day!);\n }\n // Two numbers: month/day in locale order, year = next occurrence.\n const bag: Partial<Record<DateField, number>> = {};\n localeFieldOrder(locale)\n .filter((field) => field !== 'year')\n .forEach((field, i) => (bag[field] = +parts[i]));\n return bag.month && bag.day ? nextOccurrence(bag.month, bag.day, today) : null;\n};\n\n/**\n * Free-typed time text → `'HH:mm'`, or `null`. Accepts `9`, `930`, `9:30`,\n * `9.30`, `9 30`, `3p`, `3pm`, `3 PM`, `15:00`. Bare hours 1–7 with no\n * meridiem lean PM when `hour12` — typing `3` into an appointment field\n * means 15:00, not 03:00.\n */\nexport const parseTimeText = (raw: string, hour12: boolean): UniTime | null => {\n const s = raw.trim().toLowerCase().replace(/\\s+/g, '');\n const match = s.match(/^(\\d{1,2})(?:[:.h]?(\\d{2}))?(a|am|p|pm)?$/);\n if (!match) return null;\n let hour = +match[1];\n const minute = match[2] ? +match[2] : 0;\n const meridiem = match[3];\n if (minute > 59) return null;\n if (meridiem) {\n if (hour < 1 || hour > 12) return null;\n if (meridiem[0] === 'p' && hour !== 12) hour += 12;\n if (meridiem[0] === 'a' && hour === 12) hour = 0;\n } else {\n if (hour > 23) return null;\n if (hour12 && hour >= 1 && hour <= 7) hour += 12;\n }\n return `${pad(hour)}:${pad(minute)}`;\n};\n\n/** Every `minuteStep` time between `min` and `max` (inclusive bounds). */\nexport const timeSlots = (minuteStep: number, min?: UniTime, max?: UniTime): UniTime[] => {\n const slots: UniTime[] = [];\n const lo = min ?? '00:00';\n const hi = max ?? '23:59';\n for (let minutes = 0; minutes < 24 * 60; minutes += minuteStep) {\n const t = `${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;\n if (t >= lo && t <= hi) slots.push(t);\n }\n return slots;\n};\n\n// ---- Combined values --------------------------------------------------------\n\nexport const splitDateTime = (value?: UniDateTime): { date?: UniDate; time?: UniTime } => {\n if (!value) return {};\n const [date, time] = value.split('T');\n return { ...(date ? { date } : {}), ...(time ? { time } : {}) };\n};\n\n/** One combined value only when both parts are present. */\nexport const joinDateTime = (date?: UniDate, time?: UniTime): UniDateTime | undefined =>\n date && time ? `${date}T${time}` : undefined;\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","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 * The shared keyboard-focus indicator's styles (WCAG 2.4.7), without a\n * selector — for controls that key the ring off their own state selector\n * (`&:focus + .checkbox`). Everything else spreads `focusRing()` instead.\n *\n * Themable: a theme that defines `focusRing` **border** and/or **shadow**\n * primitives replaces the default 2px outline with that border (drawn as\n * an outline hugging the control) plus the ring shadow — one focus\n * language for every control, from text fields to checkboxes to calendar\n * days. A `focusRing` **thickness** primitive sets the outline offset\n * (default 0 when themed, 2px for the classic outline; negative values\n * overlay the control's own border, reading as a border-color change).\n * Without those primitives the classic outline renders, in the given\n * color or `currentColor`.\n */\n focusRingStyle = (color?: string, gap?: string | number) => {\n const border = this.borders()['focusRing'];\n const shadow = this.shadows()['focusRing'];\n // An explicit per-call gap wins; else the theme's `focusRing` thickness\n // primitive; else the branch default (hugging when themed, classic 2px).\n const offset = gap ?? this.thicknesses()['focusRing'];\n if (border || shadow) {\n return {\n outline: border ?? 'none',\n outlineOffset: offset ?? 0,\n ...(shadow ? { boxShadow: shadow } : {}),\n };\n }\n return { outline: `2px solid ${color ?? 'currentColor'}`, outlineOffset: offset ?? '2px' };\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 * See `focusRingStyle` for how themes restyle it.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': this.focusRingStyle(token ? this.colors()[token] : undefined),\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 { 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 {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Size, StyleExpression, Variant } from '@uni-design-system/uni-core';\n\nimport {\n addDays,\n addMonths,\n buildMonthGrid,\n dayOfWeek,\n formatDate,\n formatMonthHeading,\n inclusiveDayCount,\n monthOf,\n localeWeekStart,\n todayIso,\n uniqueId,\n visuallyHidden,\n weekdayNames,\n type UniDate,\n type UniDateRange,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport type {\n UniCalendarMarker,\n UniCalendarMode,\n UniCalendarOptions,\n UniCalendarValue,\n} from './calendar.model';\n\n/** One rendered day cell — precomputed so the template stays declarative. */\ninterface CalendarCell {\n date: UniDate;\n day: number;\n outside: boolean;\n disabled: boolean;\n today: boolean;\n selected: boolean;\n inBand: boolean;\n tabIndex: number;\n ariaLabel: string;\n markers: UniCalendarMarker[];\n cellClass: string;\n dayClass: string;\n}\n\ninterface RangeBand {\n start: UniDate;\n end: UniDate;\n preview: boolean;\n}\n\n/**\n * Inline month calendar: single-date or start–end range selection, day\n * markers (availability dots), min/max fences and disabled dates. One tab\n * stop with a roving-tabindex `role=\"grid\"`; every day is a real button\n * named with its full date. Values are plain ISO strings (`'YYYY-MM-DD'`),\n * never `Date` objects, so bindings are timezone-free and serializable.\n * Selection and today colours come from the theme's `primary` role pair;\n * geometry and glyphs come from the `calendar` theme entry.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-calendar, Calendar',\n imports: [UniIconButtonComponent],\n templateUrl: './calendar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'calendar' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniCalendarComponent\n extends BaseComponent<UniCalendarOptions>\n implements FormValueControl<UniCalendarValue>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniCalendarValue>();\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 /** `'single'` reads/writes a `UniDate`; `'range'` a `UniDateRange`. */\n mode = input<UniCalendarMode>('single');\n /** Shown month, `'YYYY-MM'` — two-way, so an app can drive \"jump to June\". */\n month = model<string>();\n /** Earliest selectable date (inclusive). */\n minDate = input<UniDate>();\n /** Latest selectable date (inclusive). */\n maxDate = input<UniDate>();\n /** Blocked days: a list of dates, or a predicate. */\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n /** Availability dots; `label` extends the day's accessible name. */\n markers = input<UniCalendarMarker[]>([]);\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n /** First day of week, 0 = Sunday; defaults from the locale's week info. */\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n /** Names the grid when it stands alone (otherwise the heading names it). */\n ariaLabel = input<string>();\n /** Day geometry token; `sm`/`md`/`lg` map to the theme's `calendar` sizes. */\n override size = input<Size>('md');\n\n // --- Events (value/month changes flow through the models) -----------------\n /** Each committed day, including both ends of a range. */\n selected = output<UniDate>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly headingId = uniqueId('uni-calendar-heading');\n protected readonly srOnly = css(visuallyHidden);\n\n /** Pending range start — set by the first commit, cleared by the second. */\n protected readonly pendingStart = signal<UniDate | null>(null);\n /** Hover/focus candidate painting the preview band while a range is pending. */\n protected readonly previewDate = signal<UniDate | null>(null);\n /** Live-region text; selections are otherwise silent for a screen reader. */\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedWeekStart = computed(\n () => this.weekStart() ?? localeWeekStart(this.resolvedLocale())\n );\n\n /** The month on screen: the `month` model, else the value's month, else today's. */\n protected readonly viewMonth = computed(\n () => this.month() ?? monthOf(this.anchorDate() ?? todayIso())\n );\n\n private readonly anchorDate = computed(() => {\n const value = this.value();\n return this.mode() === 'range'\n ? (value as UniDateRange | undefined)?.start\n : (value as UniDate | undefined);\n });\n\n /**\n * The roving-tabindex day. Re-derives when the view or value changes\n * (selected day in view → today in view → first enabled day); keyboard\n * navigation writes it directly.\n */\n protected readonly focusedDate = linkedSignal<UniDate>(() => this.pickFocus());\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly heading = computed(() =>\n formatMonthHeading(this.viewMonth(), this.resolvedLocale())\n );\n\n protected readonly weekdays = computed(() =>\n weekdayNames(\n this.resolvedLocale(),\n this.resolvedWeekStart(),\n this.componentOptions().weekdayFormat ?? 'short'\n )\n );\n\n private readonly disabledDateSet = computed(() => {\n const dates = this.disabledDates();\n return Array.isArray(dates) ? new Set(dates) : null;\n });\n\n private readonly markersByDate = computed(() => {\n const map = new Map<UniDate, UniCalendarMarker[]>();\n for (const marker of this.markers()) {\n const existing = map.get(marker.date);\n if (existing) existing.push(marker);\n else map.set(marker.date, [marker]);\n }\n return map;\n });\n\n /** The committed range, or the pending preview band. */\n private readonly rangeBand = computed<RangeBand | null>(() => {\n if (this.mode() !== 'range') return null;\n const pending = this.pendingStart();\n const preview = this.previewDate();\n if (pending && preview) {\n const [start, end] = preview < pending ? [preview, pending] : [pending, preview];\n return { start, end, preview: true };\n }\n if (pending) return { start: pending, end: pending, preview: true };\n const value = this.value() as UniDateRange | undefined;\n if (value?.start && value?.end) return { start: value.start, end: value.end, preview: false };\n return null;\n });\n\n protected isDayDisabled(date: UniDate): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return true;\n const dates = this.disabledDates();\n if (!dates) return false;\n const set = this.disabledDateSet();\n return set ? set.has(date) : (dates as (date: UniDate) => boolean)(date);\n }\n\n private isSelected(date: UniDate): boolean {\n if (this.mode() === 'single') return this.value() === date;\n const pending = this.pendingStart();\n if (pending) return pending === date;\n const value = this.value() as UniDateRange | undefined;\n return value?.start === date || value?.end === date;\n }\n\n /** The full render model: one precomputed cell per grid position. */\n protected readonly gridWeeks = computed<CalendarCell[][]>(() => {\n const locale = this.resolvedLocale();\n const band = this.rangeBand();\n const today = todayIso();\n const focused = this.focusedDate();\n const markers = this.markersByDate();\n const cellBase = this.cellClass();\n const dayBase = this.dayClass();\n const todayClass = this.todayClass();\n\n return buildMonthGrid(this.viewMonth(), this.resolvedWeekStart()).map((week) =>\n week.map((cell) => {\n const date = cell.date;\n const selected = !cell.outside && this.isSelected(date);\n const inBand = !cell.outside && !!band && date >= band.start && date <= band.end;\n const dayMarkers = cell.outside ? [] : (markers.get(date) ?? []).slice(0, 3);\n const markerLabel = dayMarkers\n .filter((marker) => marker.label)\n .map((marker) => marker.label)\n .join(', ');\n const isToday = date === today;\n return {\n date,\n day: Number(date.slice(8, 10)),\n outside: cell.outside,\n disabled: this.isDayDisabled(date),\n today: isToday,\n selected,\n inBand,\n tabIndex: date === focused && !cell.outside ? 0 : -1,\n ariaLabel:\n formatDate(date, locale, { dateStyle: 'full' }) + (markerLabel ? `, ${markerLabel}` : ''),\n markers: dayMarkers,\n cellClass: [\n cellBase,\n inBand && (band!.preview ? this.previewClass() : this.inRangeClass()),\n inBand && date === band!.start && this.bandStartClass(),\n inBand && date === band!.end && this.bandEndClass(),\n ]\n .filter(Boolean)\n .join(' '),\n dayClass: [dayBase, isToday && todayClass, selected && this.selectedClass()]\n .filter(Boolean)\n .join(' '),\n };\n })\n );\n });\n\n // --- Selection -------------------------------------------------------------\n\n protected select(date: UniDate): void {\n if (this.disabled() || this.isDayDisabled(date)) return;\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n const locale = this.resolvedLocale();\n const full = (d: UniDate) => formatDate(d, locale, { dateStyle: 'full' });\n\n if (this.mode() === 'single') {\n this.value.set(date);\n this.announce(`${full(date)} selected.`);\n } else if (!this.pendingStart()) {\n this.pendingStart.set(date);\n this.previewDate.set(date);\n this.announce(`Start date ${full(date)}. Choose an end date.`);\n } else {\n let [start, end] = [this.pendingStart()!, date];\n if (end < start) [start, end] = [end, start]; // backwards commit swaps\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.value.set({ start, end });\n const days = inclusiveDayCount(start, end);\n this.announce(\n `Range selected, ${full(start)} to ${full(end)}. ${days} ${days === 1 ? 'day' : 'days'}.`\n );\n }\n this.selected.emit(date);\n }\n\n private cancelPending(): void {\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.announce('Range selection cancelled.');\n }\n\n // --- Navigation ------------------------------------------------------------\n\n protected onNav(direction: 1 | -1): void {\n this.setViewMonth(monthOf(addMonths(`${this.viewMonth()}-01`, direction)));\n }\n\n private setViewMonth(month: string): void {\n if (this.month() !== month) this.month.set(month);\n }\n\n /**\n * Move the roving focus. A landing on a disabled day keeps going in the\n * same direction until an enabled day; the min/max fence stops the caret,\n * it never wraps. Month edges never block — the grid follows.\n */\n private moveFocus(target: UniDate, direction: 1 | -1): void {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && target < min) || (max && target > max)) return;\n let date = target;\n let guard = 0;\n while (this.isDayDisabled(date)) {\n date = addDays(date, direction);\n if ((min && date < min) || (max && date > max) || ++guard > 500) return;\n }\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n if (this.pendingStart()) this.previewDate.set(date);\n this.focusDay(date);\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const focused = this.focusedDate();\n const week = (dayOfWeek(focused) - this.resolvedWeekStart() + 7) % 7;\n const handlers: Record<string, () => void> = {\n ArrowLeft: () => this.moveFocus(addDays(focused, -1), -1),\n ArrowRight: () => this.moveFocus(addDays(focused, 1), 1),\n ArrowUp: () => this.moveFocus(addDays(focused, -7), -1),\n ArrowDown: () => this.moveFocus(addDays(focused, 7), 1),\n Home: () => this.moveFocus(addDays(focused, -week), 1),\n End: () => this.moveFocus(addDays(focused, 6 - week), -1),\n PageUp: () => this.moveFocus(addMonths(focused, event.shiftKey ? -12 : -1), -1),\n PageDown: () => this.moveFocus(addMonths(focused, event.shiftKey ? 12 : 1), 1),\n Enter: () => this.select(focused),\n ' ': () => this.select(focused),\n };\n if (event.key === 'Escape') {\n // Only a pending range consumes Escape; otherwise it bubbles so a\n // hosting popover can light-dismiss.\n if (this.pendingStart()) {\n event.preventDefault();\n event.stopPropagation();\n this.cancelPending();\n }\n return;\n }\n const handler = handlers[event.key];\n if (handler) {\n event.preventDefault();\n handler();\n }\n }\n\n protected onDayHover(date: UniDate): void {\n if (this.pendingStart() && !this.isDayDisabled(date)) this.previewDate.set(date);\n }\n\n /** Focus the roving day — used by popup hosts when the calendar opens. */\n focusActiveDay(): void {\n this.focusDay(this.focusedDate());\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n private focusDay(date: UniDate): void {\n queueMicrotask(() =>\n this.host.nativeElement.querySelector<HTMLButtonElement>(`[data-date=\"${date}\"]`)?.focus()\n );\n }\n\n private pickFocus(): UniDate {\n const view = this.viewMonth();\n const anchor = this.anchorDate();\n if (anchor && monthOf(anchor) === view && !this.isDayDisabled(anchor)) return anchor;\n const today = todayIso();\n if (monthOf(today) === view && !this.isDayDisabled(today)) return today;\n return this.firstEnabledInView(view);\n }\n\n private firstEnabledInView(view: string): UniDate {\n const first = `${view}-01`;\n let date = first;\n for (let i = 0; i < 31 && monthOf(date) === view; i++) {\n if (!this.isDayDisabled(date)) return date;\n date = addDays(date, 1);\n }\n return first;\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 // --- Styling ---------------------------------------------------------------\n\n private readonly daySize = computed(\n () => (this.componentTheme().sizes?.[this.size()] ?? {}) as StyleExpression\n );\n\n protected readonly className = computed(() =>\n css([(this.componentTheme().fixed ?? { display: 'inline-block' }) as StyleExpression])\n );\n\n protected readonly navClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n ...this.theme.gap('xs'),\n marginBottom: 4,\n })\n );\n\n protected readonly headingClass = computed(() =>\n css({ flex: 1, textAlign: 'center', ...this.theme.typeface('title-small') })\n );\n\n protected readonly gridClass = computed(() =>\n css({ display: 'grid', ...this.theme.gap(this.componentOptions().gap ?? 'xxs') })\n );\n\n protected readonly rowClass = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyItems: 'center',\n ...this.theme.gap(this.componentOptions().gap ?? 'xxs'),\n })\n );\n\n protected readonly weekdayClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.daySize(),\n height: 'auto',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.theme.color('on-background-variant'),\n '& abbr': { textDecoration: 'none' },\n })\n );\n\n /** The gridcell — range bands paint here so they read as one bar. */\n protected readonly cellClass = computed(() => css({ position: 'relative', display: 'flex' }));\n\n protected readonly inRangeClass = computed(() =>\n css({ ...this.theme.backgroundColor('primary-container'), borderRadius: 0 })\n );\n\n protected readonly previewClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n backgroundColor: `color-mix(in srgb, ${colors['primary-container']} 55%, transparent)`,\n outline: `1px dashed ${colors['primary']}`,\n outlineOffset: -1,\n });\n });\n\n protected readonly bandStartClass = computed(() =>\n css({ ...this.theme.getRadiusLeft(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly bandEndClass = computed(() =>\n css({ ...this.theme.getRadiusRight(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly dayClass = computed(() => {\n const options = this.componentOptions();\n const colors = this.theme.colorPalette();\n return css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 0,\n padding: 0,\n background: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n ...this.theme.typeface(options.typeface ?? 'label'),\n ...this.daySize(),\n ...this.theme.radius(options.dayBorderRadius ?? 'max'),\n '&:hover:not(:disabled)': { ...this.theme.colorPair('primary-container') },\n ...this.theme.focusRing(),\n '&:disabled': {\n color: colors['on-disabled'],\n cursor: 'default',\n pointerEvents: 'none',\n },\n });\n });\n\n protected readonly todayClass = computed(() => {\n const colors = this.theme.colorPalette();\n // Outline (or dot), never fill — so today and selected can coincide and\n // both stay legible (WCAG 1.4.1: no state carried by colour alone).\n return (this.componentOptions().todayStyle ?? 'outline') === 'outline'\n ? css({ boxShadow: `inset 0 0 0 1.5px ${colors['primary']}` })\n : css({\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 3,\n left: '50%',\n transform: 'translateX(-50%)',\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: colors['primary'],\n },\n });\n });\n\n protected readonly selectedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n ...this.theme.colorPair('primary'),\n // A marker dot survives selection by switching to the on-colour.\n '& [data-dot]': { backgroundColor: colors['on-primary'] },\n });\n });\n\n protected readonly outsideDayClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.daySize(),\n color: colors['on-disabled'],\n });\n });\n\n protected readonly dotsClass = computed(() =>\n css({\n position: 'absolute',\n bottom: 2,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n gap: 2,\n pointerEvents: 'none',\n })\n );\n\n /** One dot class per marker variant present, resolved from the palette. */\n protected readonly dotClasses = computed(() => {\n const colors = this.theme.colorPalette();\n const classes = new Map<Variant, string>();\n for (const marker of this.markers()) {\n const variant = marker.variant ?? 'primary';\n if (!classes.has(variant)) {\n classes.set(\n variant,\n css({ width: 4, height: 4, borderRadius: 999, backgroundColor: colors[variant] })\n );\n }\n }\n return classes;\n });\n\n protected dotClassFor(variant: Variant | undefined): string {\n return this.dotClasses().get(variant ?? 'primary') ?? '';\n }\n\n protected readonly showOutside = computed(() => this.componentOptions().showOutsideDays ?? false);\n}\n","<div [class]=\"navClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navPrevSymbol ?? 'chevron_left'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(-1)\"\n >\n Previous month\n </button>\n <!-- aria-live so PageUp/Down narrates the new month without refocusing. -->\n <div [class]=\"headingClass()\" [id]=\"headingId\" aria-live=\"polite\">{{ heading() }}</div>\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navNextSymbol ?? 'chevron_right'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(1)\"\n >\n Next month\n </button>\n</div>\n\n<!-- One tab stop: the roving tabindex lives on the day buttons, and the grid\n itself only relays their bubbling keys (same delegation as tag-input). -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div\n role=\"grid\"\n [class]=\"gridClass()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : headingId\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onGridKeydown($event)\"\n>\n <div role=\"row\" [class]=\"rowClass()\">\n @for (weekday of weekdays(); track weekday.full) {\n <div role=\"columnheader\" [class]=\"weekdayClass()\">\n <abbr [attr.title]=\"weekday.full\">{{ weekday.label }}</abbr>\n </div>\n }\n </div>\n\n @for (week of gridWeeks(); track week[0].date) {\n <div role=\"row\" [class]=\"rowClass()\">\n @for (cell of week; track cell.date) {\n @if (cell.outside) {\n <!-- Outside days: hidden placeholders by default (geometry kept),\n muted and non-interactive under the showOutsideDays option. -->\n <div role=\"gridcell\" aria-hidden=\"true\" [class]=\"cell.cellClass\">\n @if (showOutside()) {\n <span [class]=\"outsideDayClass()\">{{ cell.day }}</span>\n }\n </div>\n } @else {\n <div\n role=\"gridcell\"\n [class]=\"cell.cellClass\"\n [attr.aria-selected]=\"cell.selected || cell.inBand ? true : null\"\n >\n <button\n type=\"button\"\n [class]=\"cell.dayClass\"\n [attr.data-date]=\"cell.date\"\n [tabindex]=\"cell.tabIndex\"\n [attr.aria-label]=\"cell.ariaLabel\"\n [attr.aria-current]=\"cell.today ? 'date' : null\"\n [disabled]=\"cell.disabled || disabled()\"\n (click)=\"select(cell.date)\"\n (mouseenter)=\"onDayHover(cell.date)\"\n >\n {{ cell.day }}\n @if (cell.markers.length) {\n <span [class]=\"dotsClass()\">\n @for (marker of cell.markers; track $index) {\n <span data-dot [class]=\"dotClassFor(marker.variant)\"></span>\n }\n </span>\n }\n </button>\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Selections and range progress are otherwise silent for a screen reader. -->\n<span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\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 // The shared, themable focus indicator, keyed off the hidden input's\n // focus. The ring sits out from the box, so its radius carries an extra\n // 4px to round proportionally (as the original hand-drawn ring did) —\n // without it the corners gap away from the box.\n '&:focus + .checkbox': {\n ...this.theme.focusRingStyle(\n this.getThemeColor(this.variant()),\n this.componentOptions().focusRingGap\n ),\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 2}px`,\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 { 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 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 { 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 // Optional focus chrome (border/ring/background). It yields to the\n // error state, so a flagged field stays visibly flagged while the\n // user is in it correcting the value.\n ...(this.error()\n ? {}\n : {\n ...this.theme.border(this.componentOptions().focusBorder),\n ...this.theme.boxShadow(this.componentOptions().focusShadow),\n ...this.theme.backgroundColor(this.componentOptions().focusColor),\n }),\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 { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n addDays,\n formatDate,\n localeDatePlaceholder,\n monthOf,\n parseDateText,\n todayIso,\n visuallyHidden,\n type UniDate,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCalendarComponent } from '../calendar/calendar.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniDateInputOptions, UniDateInputRejection } from './date-input.model';\n\n/**\n * Date field with free-typed parsing and a popup calendar. Type `aug 20`,\n * `8/20/2026` or `2026-08-20`, or pick from the grid — the form gets the\n * same canonical `'YYYY-MM-DD'` string either way. Parsing is `Intl`-driven\n * (locale digit order and month names, never hardcoded); unreadable text\n * stays in the field, flagged, with a `rejected` event. The popup is a\n * native popover hosting the same `uni-calendar` an app could render inline.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-input, DateInput',\n imports: [\n NgTemplateOutlet,\n UniCalendarComponent,\n UniDropdownComponent,\n UniIconButtonComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './date-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniDateInputComponent\n extends BaseComponent<UniDateInputOptions>\n implements FormValueControl<UniDate | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDate | undefined>();\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. \"Appointment date\". */\n label = input.required<string>();\n /** Defaults to the locale's digit pattern, e.g. `MM/DD/YYYY`. */\n placeholder = input<string>();\n /** How the committed value renders, e.g. `{ dateStyle: 'long' }`. */\n displayFormat = input<Intl.DateTimeFormatOptions>({ dateStyle: 'medium' });\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Custom parser, replacing the built-in ISO/locale/month-name parsing. */\n parse = input<(raw: string, locale: string) => UniDate | null>();\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Forwarded to the popup calendar --------------------------------------\n minDate = input<UniDate>();\n maxDate = input<UniDate>();\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n\n // --- Events ----------------------------------------------------------------\n /** Popup shown. */\n opened = output<void>();\n /** Popup hidden. */\n closed = output<void>();\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniDateInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n // #toggle sits on the icon-button component, so read the element explicitly.\n private readonly toggleRef = viewChild('toggle', { read: ElementRef });\n private readonly popupRef = viewChild<ElementRef<HTMLElement>>('popupDialog');\n private readonly dropdown = viewChild(UniDropdownComponent);\n private readonly calendar = viewChild(UniCalendarComponent);\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly toggleElement = computed(() => this.toggleRef()?.nativeElement);\n protected readonly popupOpen = computed(() => this.dropdown()?.showing() ?? false);\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? formatDate(value, this.resolvedLocale(), this.displayFormat()) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? localeDatePlaceholder(this.resolvedLocale())\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly toggleLabel = computed(() => {\n const value = this.value();\n return value\n ? `Change date, ${formatDate(value, this.resolvedLocale(), { dateStyle: 'full' })}`\n : 'Choose date';\n });\n\n // --- Committing -------------------------------------------------------------\n\n private fullDate(date: UniDate): string {\n return formatDate(date, this.resolvedLocale(), { dateStyle: 'full' });\n }\n\n private isDayBlocked(date: UniDate): boolean {\n const dates = this.disabledDates();\n if (!dates) return false;\n return Array.isArray(dates) ? dates.includes(date) : dates(date);\n }\n\n protected setValue(date: UniDate | undefined, silent = false): void {\n this.value.set(date);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(date ? `${this.fullDate(date)}.` : 'Date cleared.');\n }\n\n private refuse(raw: string, reason: UniDateInputRejection['reason']): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${raw}” as a date.`,\n 'out-of-range': `${raw} is outside the allowed dates.`,\n disabled: `${raw} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n const custom = this.parse();\n const parsed = custom\n ? custom(trimmed, this.resolvedLocale())\n : parseDateText(trimmed, this.resolvedLocale());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && parsed < min) || (max && parsed > max)) {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n if (this.isDayBlocked(parsed)) {\n this.refuse(trimmed, 'disabled');\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±1 day, skipping blocked days, stopping at fences. */\n private step(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n let date = addDays(committed, direction);\n let guard = 0;\n while (this.isDayBlocked(date) && guard++ < 400) date = addDays(date, direction);\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return; // fence\n this.setValue(date);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.commit(element.value);\n break;\n case 'Escape':\n if (this.popupOpen()) {\n this.closePopup();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n // Alt or an empty field opens the popup; on a committed value the\n // caret has nowhere to go, so stepping is what a spinner would do.\n if (event.altKey || element.value.trim() === '') this.openPopup();\n else if (this.value() && element.value === this.displayText()) this.step(-1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.value() && element.value === this.displayText()) this.step(1);\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.touched.set(true);\n if (this.popupOpen()) return;\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Popup ---------------------------------------------------------------------\n\n protected openPopup(): void {\n if (this.disabled() || this.popupOpen()) return;\n this.dropdown()?.toggleDropdown();\n }\n\n protected closePopup(): void {\n if (this.popupOpen()) this.dropdown()?.hideDropdown();\n }\n\n protected onPopupShowing(): void {\n // The grid opens on the committed value's month (or today's).\n this.calendar()?.month.set(monthOf(this.value() ?? todayIso()));\n this.calendar()?.focusActiveDay();\n this.opened.emit();\n }\n\n protected onPopupHiding(): void {\n this.closed.emit();\n // Focus returns to the field (not the toggle) when it was in the popup —\n // this runs before the dropdown's own restoreFocus, which then no-ops.\n const active = document.activeElement;\n const popup = this.popupRef()?.nativeElement;\n if (!active || active === document.body || (popup && popup.contains(active)))\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onCalendarPick(date: UniDate): void {\n this.setValue(date);\n this.closePopup();\n }\n\n /** The popup is a focus-holding dialog: Tab cycles inside it (APG pattern). */\n protected onPopupKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closePopup();\n return;\n }\n if (event.key !== 'Tab') return;\n const popup = this.popupRef()?.nativeElement;\n if (!popup) return;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLButtonElement>('button:not(:disabled)')\n ).filter((button) => button.tabIndex >= 0);\n if (!focusables.length) return;\n const index = focusables.indexOf(document.activeElement as HTMLButtonElement);\n const next =\n focusables[(index + (event.shiftKey ? -1 : 1) + focusables.length) % focusables.length];\n event.preventDefault();\n next.focus();\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 },\n this.draftInvalid() && { color: colors['warn'] },\n ]);\n });\n}\n","<!-- Focusout rides the bubbling event so commits happen only when focus\n leaves the whole field, not while moving into the popup. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <!-- The dropdown wires aria-haspopup/aria-expanded/aria-controls onto\n this button; its name tracks the value (\"Change date, …\"). -->\n <button\n #toggle\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'calendar_month'\"\n [disable]=\"disabled()\"\n >\n {{ toggleLabel() }}\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (toggleElement()) {\n <uni-dropdown\n [trigger]=\"toggleElement()!\"\n ariaHasPopup=\"dialog\"\n placement=\"bottom-end\"\n [color]=\"componentOptions().popupColor ?? 'primary-surface'\"\n [shadow]=\"componentOptions().popupShadow ?? 'menu'\"\n [borderRadius]=\"componentOptions().popupBorderRadius ?? 'xs'\"\n paddingVertical=\"xs\"\n paddingHorizontal=\"xs\"\n (dropdownShowing)=\"onPopupShowing()\"\n (dropdownHiding)=\"onPopupHiding()\"\n >\n <!-- A focus-holding dialog per the APG date-picker pattern: Tab cycles\n inside, Escape closes and returns focus to the field. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #popupDialog role=\"dialog\" aria-label=\"Choose date\" (keydown)=\"onPopupKeydown($event)\">\n <uni-calendar\n mode=\"single\"\n [value]=\"value()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n (selected)=\"onCalendarPick($event)\"\n />\n </div>\n </uni-dropdown>\n }\n\n <!-- Commits, steps and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n createListboxNavigation,\n formatTime,\n localeDefaultHour12,\n parseTimeText,\n timeSlots,\n visuallyHidden,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTimeInputOptions, UniTimeInputRejection } from './time-input.model';\n\nconst toMinutes = (time: UniTime): number => {\n const [h, m] = time.split(':').map(Number);\n return h * 60 + m;\n};\n\nconst fromMinutes = (minutes: number): UniTime =>\n `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;\n\n/**\n * Time field: a combobox over time options — the same listbox contract as\n * uni-search-input and uni-tag-input. Type `3p`, `930` or `15:00`, or pick\n * `3:00 PM` from the list; the form always gets 24-hour `'HH:mm'` (`hour12`\n * affects display only). The list is assistive, not exhaustive: any\n * parseable time commits, unless `slots` pins the choices (a slot picker) —\n * then a typed time must match one. Unreadable or unavailable text stays in\n * the field, flagged, with a `rejected` event.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-time-input, TimeInput',\n imports: [NgTemplateOutlet, UniIconButtonComponent, UniInputBoxComponent],\n templateUrl: './time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'timeInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniTimeInputComponent\n extends BaseComponent<UniTimeInputOptions>\n implements FormValueControl<UniTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniTime | undefined>();\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. \"Start time\". */\n label = input.required<string>();\n placeholder = input<string>();\n /** Generated list granularity, in minutes. */\n minuteStep = input(30);\n /** Earliest allowed time (inclusive), `'09:00'`. */\n minTime = input<UniTime>();\n /** Latest allowed time (inclusive), `'17:00'`. */\n maxTime = input<UniTime>();\n /** Exact allowed times (scheduling). When set, typed entry must match one. */\n slots = input<UniTime[]>();\n /** 12-hour display; defaults from the locale. The value stays 24-hour. */\n hour12 = input<boolean>();\n /** BCP 47 tag for the display format; defaults to the document language. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Events ----------------------------------------------------------------\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniTimeInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly listRef = viewChild<ElementRef<HTMLUListElement>>('listbox');\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedHour12 = computed(\n () => this.hour12() ?? localeDefaultHour12(this.resolvedLocale())\n );\n\n /** The listed times: pinned `slots` verbatim, else the generated step grid. */\n protected readonly options = computed(\n () => this.slots() ?? timeSlots(this.minuteStep(), this.minTime(), this.maxTime())\n );\n\n protected readonly optionLabels = computed(() =>\n this.options().map((time) => this.formatValue(time))\n );\n\n /** Shared combobox bookkeeping — identical contract to uni-search-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.options().length,\n idPrefix: 'uni-time-listbox',\n });\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? this.formatValue(value) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? this.formatValue('09:00')\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected formatValue(time: UniTime): string {\n return formatTime(time, this.resolvedLocale(), this.resolvedHour12());\n }\n\n // --- Committing -------------------------------------------------------------\n\n protected setValue(time: UniTime | undefined, silent = false): void {\n this.value.set(time);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(time ? `${this.formatValue(time)}.` : 'Time cleared.');\n }\n\n private refuse(raw: string, reason: UniTimeInputRejection['reason'], shown = raw): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${shown}” as a time.`,\n 'out-of-range': `${shown} is outside the allowed times.`,\n unavailable: `${shown} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n let parsed = parseTimeText(trimmed, this.resolvedHour12());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minTime();\n const max = this.maxTime();\n const inBounds = (time: UniTime) => !(min && time < min) && !(max && time > max);\n const slots = this.slots();\n if (!slots && !inBounds(parsed)) {\n // The PM bias yields if it pushed the time out of bounds.\n const unbiased = parseTimeText(trimmed, false);\n if (unbiased && inBounds(unbiased)) parsed = unbiased;\n else {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n }\n if (slots && !slots.includes(parsed)) {\n // Announce the formatted time — \"5:00 PM isn't available.\"\n this.refuse(trimmed, 'unavailable', this.formatValue(parsed));\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±minuteStep (±1 slot when pinned), clamped. */\n private stepValue(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n const slots = this.slots();\n if (slots?.length) {\n const sorted = [...slots].sort();\n const index = sorted.indexOf(committed);\n const next =\n index >= 0\n ? sorted[index + direction]\n : direction > 0\n ? sorted.find((slot) => slot > committed)\n : [...sorted].reverse().find((slot) => slot < committed);\n if (next) this.setValue(next);\n return;\n }\n const step = this.minuteStep();\n const current = toMinutes(committed);\n const snapped =\n direction > 0\n ? Math.floor(current / step) * step + step\n : Math.ceil(current / step) * step - step;\n if (snapped < 0 || snapped >= 24 * 60) return;\n const candidate = fromMinutes(snapped);\n const min = this.minTime();\n const max = this.maxTime();\n if ((min && candidate < min) || (max && candidate > max)) return; // fence\n this.setValue(candidate);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n event.preventDefault();\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n // A committed value with the list closed steps like a spinner —\n // ArrowUp means later, like the date field's ArrowUp means tomorrow —\n // while the list opens from an empty or edited field (or the toggle).\n if (!this.list.open() && this.value() && element.value === this.displayText()) {\n this.stepValue(direction === 1 ? -1 : 1);\n break;\n }\n if (!this.list.open()) {\n this.openList();\n if (this.list.activeIndex() < 0)\n this.list.setActive(direction === 1 ? 0 : this.options().length - 1);\n } else {\n const count = this.options().length;\n this.list.setActive((this.list.activeIndex() + direction + count) % count);\n }\n this.scrollToActive();\n break;\n }\n case 'Enter': {\n event.preventDefault();\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) this.setValue(this.options()[active]);\n else this.commit(element.value);\n this.list.hide();\n break;\n }\n case 'Escape':\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'Tab':\n // Never trap: commit what is typed, then let focus move on.\n if (element.value.trim() && element.value !== this.displayText())\n this.commit(element.value);\n this.list.hide();\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n // Typing never selects an option — Enter must commit the draft, not\n // whatever happens to sit nearest; the list only scrolls alongside.\n this.list.show();\n this.list.setActive(-1);\n const parsed = parseTimeText(this.inputRef()!.nativeElement.value, this.resolvedHour12());\n if (parsed) {\n const options = this.options();\n let nearest = options.findIndex((time) => time >= parsed);\n if (nearest < 0) nearest = options.length - 1;\n this.scrollToIndex(nearest);\n }\n }\n\n protected onToggle(): void {\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.openList();\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n protected selectOption(time: UniTime): void {\n this.setValue(time);\n this.list.hide();\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.list.hide();\n this.touched.set(true);\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private openList(): void {\n this.list.show();\n const committed = this.value();\n if (committed) this.list.setActive(this.options().indexOf(committed));\n this.scrollToActive();\n }\n\n private scrollToActive(): void {\n this.scrollToIndex(this.list.activeIndex());\n }\n\n private scrollToIndex(index: number): void {\n if (index < 0) return;\n queueMicrotask(() =>\n this.listRef()?.nativeElement.children[index]?.scrollIntoView?.({ block: 'nearest' })\n );\n }\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 })\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: (options.maxVisibleOptions ?? 7) * 36,\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 and the draft\n commits only when focus leaves the whole field. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n aria-autocomplete=\"list\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\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]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n aria-haspopup=\"listbox\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'schedule'\"\n [attr.aria-expanded]=\"list.open()\"\n [disable]=\"disabled()\"\n (click)=\"onToggle()\"\n >\n Choose time\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (list.open()) {\n <ul #listbox [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (time of options(); track time; 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]=\"time === value()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(time)\"\n >\n {{ optionLabels()[i] }}\n </li>\n }\n </ul>\n }\n\n <!-- Commits and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n joinDateTime,\n splitDateTime,\n type UniDate,\n type UniDateTime,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDateInputComponent } from '../date-input/date-input.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniTimeInputComponent } from '../time-input/time-input.component';\nimport type { UniDateTimeInputOptions } from './date-time-input.model';\n\ninterface DateTimeParts {\n date?: UniDate;\n time?: UniTime;\n}\n\n/**\n * One field for a date and a time: a thin composer seating a uni-date-input\n * and a uni-time-input in one input-box chrome under one label, yielding one\n * combined `'YYYY-MM-DDTHH:mm'` value. The value emits only when both parts\n * are set — a time without a day is not an answer — and clearing the date\n * clears it. With `slotsFor`, the time part stays disabled until a day is\n * chosen and offers exactly that day's slots: the scheduling flow in one\n * attribute. Two honest tab stops (it is two questions); apps needing a\n * different arrangement compose the primitives directly.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-time-input, DateTimeInput',\n imports: [UniDateInputComponent, UniInputBoxComponent, UniTimeInputComponent],\n templateUrl: './date-time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateTimeInput' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniDateTimeInputComponent\n extends BaseComponent<UniDateTimeInputOptions>\n implements FormValueControl<UniDateTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDateTime | undefined>();\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 /** Names the group; the parts are announced as \"Date\" and \"Time\" under it. */\n label = input.required<string>();\n /** Earliest allowed moment; the date and time fences are split from it. */\n minDateTime = input<UniDateTime>();\n /** Latest allowed moment; the date and time fences are split from it. */\n maxDateTime = input<UniDateTime>();\n\n // --- Forwarded wholesale ----------------------------------------------------\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n /** Fixed time choices; superseded per-day by `slotsFor` when that is set. */\n slots = input<UniTime[]>();\n minuteStep = input(30);\n hour12 = input<boolean>();\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n locale = input<string>();\n /** Scheduling: the day's available times. Gates the time part on a date. */\n slotsFor = input<(date: UniDate) => UniTime[]>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * The two part-values. An external `value` write re-derives both; an\n * internal partial state (a date without a time round-trips through\n * `undefined`) must not be wiped by its own echo.\n */\n private readonly parts = linkedSignal<UniDateTime | undefined, DateTimeParts>({\n source: this.value,\n computation: (value, previous) => {\n if (value) return splitDateTime(value);\n const kept = previous?.value;\n if (kept && joinDateTime(kept.date, kept.time) === undefined) return kept;\n return {};\n },\n });\n\n protected readonly dateValue = computed(() => this.parts().date);\n protected readonly timeValue = computed(() => this.parts().time);\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n private readonly minParts = computed(() => splitDateTime(this.minDateTime()));\n private readonly maxParts = computed(() => splitDateTime(this.maxDateTime()));\n\n protected readonly dateMin = computed(() => this.minParts().date);\n protected readonly dateMax = computed(() => this.maxParts().date);\n\n // The time fence applies only on the boundary date itself — 'after 9:00'\n // on the min date, any time on later days.\n protected readonly timeMin = computed(() => {\n const { date, time } = this.minParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n protected readonly timeMax = computed(() => {\n const { date, time } = this.maxParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n /** The chosen day's slots when `slotsFor` is set, else the fixed list. */\n protected readonly effectiveSlots = computed(() => {\n const slotsFor = this.slotsFor();\n if (!slotsFor) return this.slots();\n const date = this.dateValue();\n return date ? slotsFor(date) : [];\n });\n\n protected readonly timeDisabled = computed(\n () => this.disabled() || (!!this.slotsFor() && !this.dateValue())\n );\n\n // --- Part plumbing -----------------------------------------------------------\n\n protected onDatePartChange(date: UniDate | undefined): void {\n let time = this.parts().time;\n if (!date) {\n time = undefined; // clearing the date clears the combined value\n } else {\n const slotsFor = this.slotsFor();\n // Changing the day clears a slot that no longer exists.\n if (slotsFor && time && !slotsFor(date).includes(time)) time = undefined;\n }\n this.setParts({ date, time });\n }\n\n protected onTimePartChange(time: UniTime | undefined): void {\n this.setParts({ date: this.parts().date, time });\n }\n\n private setParts(parts: DateTimeParts): void {\n this.parts.set(parts);\n this.value.set(joinDateTime(parts.date, parts.time));\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n // --- Styling --------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block' }));\n\n protected readonly groupClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'stretch',\n flex: 1,\n width: '100%',\n minWidth: 0,\n ...this.theme.gap(this.componentOptions().partGap ?? 'sm'),\n })\n );\n\n protected readonly datePartClass = computed(() =>\n css({ flex: 1.4, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly timePartClass = computed(() =>\n css({ flex: 1, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly dividerClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n width: 1,\n alignSelf: 'stretch',\n flex: 'none',\n backgroundColor: colors[this.componentOptions().dividerColor ?? 'outline'],\n });\n });\n}\n","<!-- One field chrome for both parts; the parts render embedded (no box of\n their own), so error/disabled/focus states stay consistent with every\n other field. Tab order: date, then time — two honest tab stops. -->\n<uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div role=\"group\" [attr.aria-label]=\"label()\" [class]=\"groupClass()\">\n <div [class]=\"datePartClass()\">\n <uni-date-input\n [embedded]=\"true\"\n label=\"Date\"\n [value]=\"dateValue()\"\n [minDate]=\"dateMin()\"\n [maxDate]=\"dateMax()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n [disabled]=\"disabled()\"\n [ariaDescribedBy]=\"ariaDescribedBy()\"\n (valueChange)=\"onDatePartChange($event)\"\n />\n </div>\n <div [class]=\"dividerClass()\"></div>\n <div [class]=\"timePartClass()\">\n <uni-time-input\n [embedded]=\"true\"\n label=\"Time\"\n [value]=\"timeValue()\"\n [minTime]=\"timeMin()\"\n [maxTime]=\"timeMax()\"\n [slots]=\"effectiveSlots()\"\n [minuteStep]=\"minuteStep()\"\n [hour12]=\"hour12()\"\n [locale]=\"locale()\"\n [disabled]=\"timeDisabled()\"\n (valueChange)=\"onTimePartChange($event)\"\n />\n </div>\n </div>\n</uni-input-box>\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 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 {\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 // The dot's grow/retract is a token: 0.3s default, 0 = instant. The\n // transitions are scoped — never `all` — so the focus ring's outline and\n // shadow apply instantly instead of interpolating from a stale outline\n // color, which flashed a dark ring before the themed ring color landed.\n const speed = this.componentOptions().transitionSpeed ?? 0.3;\n const ringTransition = `border-color ${speed}s ease, background-color ${speed}s ease`;\n const dotTransition = `transform ${speed}s ease`;\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: ringTransition,\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: dotTransition,\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 // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .radio-button': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\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 // The shared, themable focus indicator, in the track's fill color.\n '&:focus-visible': { ...this.theme.focusRingStyle(fill) },\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 // Scoped, never `all`: the focus ring must apply instantly rather\n // than interpolating its outline color from a stale value.\n transition: 'background-color 0.3s ease, border-color 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: 'transform 0.3s ease, background-color 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 // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .toggle-switch': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\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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"}
|
|
1
|
+
{"version":3,"file":"uni-design-system-uni-angular.mjs","sources":["../../src/lib/cdk/a11y/a11y.ts","../../src/lib/cdk/datetime/datetime.model.ts","../../src/lib/cdk/helpers/memoize.helper.ts","../../src/lib/cdk/datetime/datetime.helper.ts","../../src/lib/cdk/listbox/listbox-navigation.ts","../../src/lib/cdk/position/anchor.ts","../../src/lib/cdk/overlay/overlay.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/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/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/calendar/calendar.component.ts","../../src/lib/components/calendar/calendar.component.html","../../src/lib/components/callout/callout.component.ts","../../src/lib/components/callout/callout.component.html","../../src/lib/components/callout/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/components/forms/listbox-popup.ts","../../src/lib/components/input-box/input-box.component.ts","../../src/lib/components/input-box/input-box.component.html","../../src/lib/components/combobox/combobox.component.ts","../../src/lib/components/combobox/combobox.component.html","../../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/dropdown/dropdown.component.ts","../../src/lib/components/date-input/date-input.component.ts","../../src/lib/components/date-input/date-input.component.html","../../src/lib/components/time-input/time-input.component.ts","../../src/lib/components/time-input/time-input.component.html","../../src/lib/components/date-time-input/date-time-input.component.ts","../../src/lib/components/date-time-input/date-time-input.component.html","../../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/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/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/lib/components/tour/tour.component.ts","../../src/lib/components/tour/tour.component.html","../../src/lib/components/tour/index.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","/**\n * Canonical date/time value shapes shared by `uni-calendar`,\n * `uni-date-input`, `uni-time-input` and `uni-date-time-input`.\n *\n * Plain ISO strings, never `Date`s: a calendar date is a label on a wall\n * calendar, not an instant. `new Date('2026-08-20')` is midnight UTC — which\n * is 19 Aug in Honolulu — the classic off-by-one every `Date`-valued picker\n * ships. Strings are timezone-free, JSON-serializable and sortable with `<`.\n * Zoned scheduling is the app's concern; these components never touch\n * `Date.getTimezoneOffset()`.\n */\n\n/** A calendar date, `'YYYY-MM-DD'`. */\nexport type UniDate = string;\n\n/** A wall-clock time, `'HH:mm'` (24-hour). Display format is separate. */\nexport type UniTime = string;\n\n/** A combined date and time, `'YYYY-MM-DDTHH:mm'`. */\nexport type UniDateTime = string;\n\n/** A start–end date range. Both ends are inclusive. */\nexport interface UniDateRange {\n start?: UniDate;\n end?: UniDate;\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","/**\n * Pure date/time helpers: ISO string math, `Intl`-driven formatting and\n * parsing. No date library — `Date` appears only as UTC arithmetic inside\n * these functions, so no result ever depends on the machine's timezone.\n */\nimport { memoize } from '../helpers/memoize.helper';\nimport type { UniDate, UniDateTime, UniTime } from './datetime.model';\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\n\nconst toUTC = (date: UniDate): number => {\n const [y, m, d] = date.split('-').map(Number);\n return Date.UTC(y, m - 1, d);\n};\n\nconst fromUTC = (timestamp: number): UniDate => {\n const d = new Date(timestamp);\n return isoDate(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());\n};\n\n/** `(2026, 8, 5)` → `'2026-08-05'`. Does not validate — see `isValidDate`. */\nexport const isoDate = (year: number, month: number, day: number): UniDate =>\n `${year}-${pad(month)}-${pad(day)}`;\n\n/** The ISO date when the parts form a real calendar day, else `null`. */\nexport const isValidDate = (year: number, month: number, day: number): UniDate | null =>\n month >= 1 && month <= 12 && day >= 1 && day <= daysInMonth(year, month)\n ? isoDate(year, month, day)\n : null;\n\n/** Days in a month, leap-year aware. */\nexport const daysInMonth = (year: number, month: number): number =>\n new Date(Date.UTC(year, month, 0)).getUTCDate();\n\nexport const addDays = (date: UniDate, days: number): UniDate =>\n fromUTC(toUTC(date) + days * 86_400_000);\n\n/** Same day ± n months, clamping the day to the target month's length. */\nexport const addMonths = (date: UniDate, months: number): UniDate => {\n let [y, m] = date.split('-').map(Number);\n const d = Number(date.slice(8, 10));\n const total = y * 12 + (m - 1) + months;\n y = Math.floor(total / 12);\n m = ((total % 12) + 12) % 12 + 1;\n return isoDate(y, m, Math.min(d, daysInMonth(y, m)));\n};\n\n/** Day of week, 0 = Sunday … 6 = Saturday. */\nexport const dayOfWeek = (date: UniDate): number => new Date(toUTC(date)).getUTCDay();\n\n/** `'2026-08-20'` → `'2026-08'`. */\nexport const monthOf = (date: UniDate): string => date.slice(0, 7);\n\n/** Today as a local-wall-clock ISO date (the one place local time matters). */\nexport const todayIso = (): UniDate => {\n const d = new Date();\n return isoDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n};\n\n/** Inclusive day count of a range: `('-20', '-24')` → 5. */\nexport const inclusiveDayCount = (start: UniDate, end: UniDate): number =>\n Math.round((toUTC(end) - toUTC(start)) / 86_400_000) + 1;\n\nexport interface UniMonthGridCell {\n date: UniDate;\n /** True for leading/trailing cells that belong to the adjacent months. */\n outside: boolean;\n}\n\n/**\n * The week matrix a calendar renders: full weeks covering `'YYYY-MM'`,\n * starting on `weekStart` (0 = Sunday). Outside cells are always present so\n * showing or hiding them is a pure render decision.\n */\nexport const buildMonthGrid = (month: string, weekStart: number): UniMonthGridCell[][] => {\n const [y, m] = month.split('-').map(Number);\n const first = isoDate(y, m, 1);\n const offset = (dayOfWeek(first) - weekStart + 7) % 7;\n const total = daysInMonth(y, m);\n const weeks: UniMonthGridCell[][] = [];\n let cursor = addDays(first, -offset);\n for (let w = 0; w < Math.ceil((offset + total) / 7); w++) {\n const week: UniMonthGridCell[] = [];\n for (let c = 0; c < 7; c++) {\n week.push({ date: cursor, outside: monthOf(cursor) !== month });\n cursor = addDays(cursor, 1);\n }\n weeks.push(week);\n }\n return weeks;\n};\n\n// ---- Intl formatting (always UTC — the ISO string is re-hydrated as UTC\n// midnight, so the local zone can never shift the label) ---------------------\n\nexport const formatDate = (\n date: UniDate,\n locale: string,\n options: Intl.DateTimeFormatOptions = { dateStyle: 'medium' }\n): string =>\n new Intl.DateTimeFormat(locale, { ...options, timeZone: 'UTC' }).format(new Date(toUTC(date)));\n\n/** `'2026-08'` → `'August 2026'` in the locale. */\nexport const formatMonthHeading = (month: string, locale: string): string =>\n formatDate(`${month}-01`, locale, { month: 'long', year: 'numeric' });\n\nexport interface UniWeekdayName {\n /** Column label in the requested format ('narrow' | 'short'). */\n label: string;\n /** Full weekday name, for the columnheader's `abbr`. */\n full: string;\n}\n\n/** Weekday header labels starting at `weekStart` (0 = Sunday). */\nexport const weekdayNames = memoize(\n (locale: string, weekStart: number, format: 'narrow' | 'short'): UniWeekdayName[] => {\n const labels: UniWeekdayName[] = [];\n for (let i = 0; i < 7; i++) {\n // 2023-01-01 is a Sunday.\n const day = new Date(Date.UTC(2023, 0, 1 + ((weekStart + i) % 7)));\n labels.push({\n label: new Intl.DateTimeFormat(locale, { weekday: format, timeZone: 'UTC' }).format(day),\n full: new Intl.DateTimeFormat(locale, { weekday: 'long', timeZone: 'UTC' }).format(day),\n });\n }\n return labels;\n }\n);\n\n/** `'15:00'` → `'3:00 PM'` (or `'15:00'` when `hour12` is false). */\nexport const formatTime = (time: UniTime, locale: string, hour12: boolean): string => {\n const [h, m] = time.split(':').map(Number);\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12,\n timeZone: 'UTC',\n }).format(new Date(Date.UTC(2000, 0, 1, h, m)));\n};\n\n// ---- Locale plumbing --------------------------------------------------------\n\ninterface WeekInfo {\n firstDay?: number;\n}\n\n/**\n * The locale's first day of week, 0 = Sunday … 6 = Saturday. Falls back to\n * Sunday where `Intl.Locale` week info is unavailable.\n */\nexport const localeWeekStart = memoize((locale: string): number => {\n try {\n const intlLocale = new Intl.Locale(locale) as Intl.Locale & {\n getWeekInfo?: () => WeekInfo;\n weekInfo?: WeekInfo;\n };\n const info = intlLocale.getWeekInfo?.() ?? intlLocale.weekInfo;\n // Intl counts 1 = Monday … 7 = Sunday.\n if (info?.firstDay) return info.firstDay % 7;\n } catch {\n // Unknown locale tag — fall through to the default.\n }\n return 0;\n});\n\n/** Whether the locale's default clock is 12-hour. */\nexport const localeDefaultHour12 = memoize(\n (locale: string): boolean =>\n new Intl.DateTimeFormat(locale, { hour: 'numeric' }).resolvedOptions().hour12 ?? true\n);\n\ntype DateField = 'year' | 'month' | 'day';\n\n/** The locale's numeric-date field order, e.g. en-US → month, day, year. */\nexport const localeFieldOrder = memoize((locale: string): DateField[] => {\n const parts = new Intl.DateTimeFormat(locale, { timeZone: 'UTC' }).formatToParts(\n new Date(Date.UTC(2000, 11, 31))\n );\n return parts\n .filter((p): p is Intl.DateTimeFormatPart & { type: DateField } =>\n ['year', 'month', 'day'].includes(p.type)\n )\n .map((p) => p.type);\n});\n\n/** Long + short month names → month number, lowercased, dots stripped. */\nexport const localeMonthNames = memoize((locale: string): Map<string, number> => {\n const map = new Map<string, number>();\n for (let i = 0; i < 12; i++) {\n const date = new Date(Date.UTC(2000, i, 15));\n for (const style of ['long', 'short'] as const) {\n const name = new Intl.DateTimeFormat(locale, { month: style, timeZone: 'UTC' })\n .format(date)\n .toLowerCase()\n .replace(/\\./g, '');\n map.set(name, i + 1);\n }\n }\n return map;\n});\n\n/** The locale's digit pattern as a placeholder, e.g. `'MM/DD/YYYY'`. */\nexport const localeDatePlaceholder = memoize((locale: string): string =>\n new Intl.DateTimeFormat(locale, { timeZone: 'UTC' })\n .format(new Date(Date.UTC(2000, 11, 31)))\n .replace(/2000/, 'YYYY')\n .replace(/12/, 'MM')\n .replace(/31/, 'DD')\n);\n\n// ---- Parsing (Intl-driven — digit order and month names come from the\n// locale, never from a hardcoded table) ---------------------------------------\n\n/** Missing year → the NEXT occurrence: nobody schedules into the past. */\nconst nextOccurrence = (month: number, day: number, today: UniDate): UniDate | null => {\n const year = Number(today.slice(0, 4));\n const candidate = isValidDate(year, month, day);\n if (candidate && candidate >= today) return candidate;\n return isValidDate(year + 1, month, day);\n};\n\n/**\n * Free-typed date text → ISO date, or `null` when unreadable. Accepts, in\n * order: ISO (`2026-08-20`), a month name from the locale's own long/short\n * lists (`aug 20`, `20 aug 2026`, `August 20th`), and locale-numeric text\n * (`8/20/2026`, `20.8.2026`, `08-20`) with the digit order taken from\n * `Intl.DateTimeFormat(locale).formatToParts()`. A missing year resolves to\n * the next occurrence; two-digit years are refused rather than guessed.\n */\nexport const parseDateText = (\n raw: string,\n locale: string,\n options: { today?: UniDate } = {}\n): UniDate | null => {\n const today = options.today ?? todayIso();\n const s = raw\n .trim()\n .toLowerCase()\n .replace(/(\\d+)(st|nd|rd|th)\\b/g, '$1')\n .replace(/,/g, ' ');\n if (!s) return null;\n\n // 1. ISO — what agents and APIs write.\n const iso = s.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (iso) return isValidDate(+iso[1], +iso[2], +iso[3]);\n\n // 2. Month name, from the locale's own list.\n const monthNames = localeMonthNames(locale);\n const tokens = s.split(/\\s+/);\n const monthToken = tokens.find((t) => monthNames.has(t.replace(/\\./g, '')));\n if (monthToken) {\n const month = monthNames.get(monthToken.replace(/\\./g, ''))!;\n const numbers = tokens.filter((t) => /^\\d+$/.test(t)).map(Number);\n if (numbers.length === 1 && numbers[0] >= 1 && numbers[0] <= 31)\n return nextOccurrence(month, numbers[0], today);\n if (numbers.length === 2) {\n const year = numbers.find((n) => n >= 1000);\n const day = numbers.find((n) => n <= 31 && n !== year);\n if (year && day) return isValidDate(year, month, day);\n }\n return null;\n }\n\n // 3. Locale numeric — digit order from Intl, not hardcoded.\n const numeric = s.match(/^(\\d{1,4})[/.\\-\\s](\\d{1,4})(?:[/.\\-\\s](\\d{1,4}))?$/);\n if (!numeric) return null;\n const parts = [numeric[1], numeric[2], numeric[3]].filter((p): p is string => !!p);\n if (parts.length === 3) {\n if (parts[0].length === 4) return isValidDate(+parts[0], +parts[1], +parts[2]); // 2026/8/20\n const bag: Partial<Record<DateField, string>> = {};\n localeFieldOrder(locale).forEach((field, i) => (bag[field] = parts[i]));\n if (!bag.year || bag.year.length < 4) return null; // two-digit years are refused, not guessed\n return isValidDate(+bag.year, +bag.month!, +bag.day!);\n }\n // Two numbers: month/day in locale order, year = next occurrence.\n const bag: Partial<Record<DateField, number>> = {};\n localeFieldOrder(locale)\n .filter((field) => field !== 'year')\n .forEach((field, i) => (bag[field] = +parts[i]));\n return bag.month && bag.day ? nextOccurrence(bag.month, bag.day, today) : null;\n};\n\n/**\n * Free-typed time text → `'HH:mm'`, or `null`. Accepts `9`, `930`, `9:30`,\n * `9.30`, `9 30`, `3p`, `3pm`, `3 PM`, `15:00`. Bare hours 1–7 with no\n * meridiem lean PM when `hour12` — typing `3` into an appointment field\n * means 15:00, not 03:00.\n */\nexport const parseTimeText = (raw: string, hour12: boolean): UniTime | null => {\n const s = raw.trim().toLowerCase().replace(/\\s+/g, '');\n const match = s.match(/^(\\d{1,2})(?:[:.h]?(\\d{2}))?(a|am|p|pm)?$/);\n if (!match) return null;\n let hour = +match[1];\n const minute = match[2] ? +match[2] : 0;\n const meridiem = match[3];\n if (minute > 59) return null;\n if (meridiem) {\n if (hour < 1 || hour > 12) return null;\n if (meridiem[0] === 'p' && hour !== 12) hour += 12;\n if (meridiem[0] === 'a' && hour === 12) hour = 0;\n } else {\n if (hour > 23) return null;\n if (hour12 && hour >= 1 && hour <= 7) hour += 12;\n }\n return `${pad(hour)}:${pad(minute)}`;\n};\n\n/** Every `minuteStep` time between `min` and `max` (inclusive bounds). */\nexport const timeSlots = (minuteStep: number, min?: UniTime, max?: UniTime): UniTime[] => {\n const slots: UniTime[] = [];\n const lo = min ?? '00:00';\n const hi = max ?? '23:59';\n for (let minutes = 0; minutes < 24 * 60; minutes += minuteStep) {\n const t = `${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;\n if (t >= lo && t <= hi) slots.push(t);\n }\n return slots;\n};\n\n// ---- Combined values --------------------------------------------------------\n\nexport const splitDateTime = (value?: UniDateTime): { date?: UniDate; time?: UniTime } => {\n if (!value) return {};\n const [date, time] = value.split('T');\n return { ...(date ? { date } : {}), ...(time ? { time } : {}) };\n};\n\n/** One combined value only when both parts are present. */\nexport const joinDateTime = (date?: UniDate, time?: UniTime): UniDateTime | undefined =>\n date && time ? `${date}T${time}` : undefined;\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 * Non-navigable options. Arrows step over them; Home/End land on the\n * nearest enabled option; an all-disabled list never activates.\n */\n disabled?: (index: number) => 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 private readonly isDisabled: (index: number) => 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 this.isDisabled = config.disabled ?? (() => false);\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 ? this.seek(count - 1, -1, count) : this.step(current, -1, count);\n case 'Home':\n return this.seek(0, 1, count);\n case 'End':\n return this.seek(count - 1, -1, count);\n default:\n return null;\n }\n }\n\n /** Nearest enabled index at or after `start`, walking by `delta` with wrap;\n null when every option is disabled. */\n private seek(start: number, delta: number, count: number): number | null {\n for (let i = start, n = 0; n < count; n++, i += delta) {\n const index = (i + count) % count;\n if (!this.isDisabled(index)) return index;\n }\n return null;\n }\n\n private step(current: number, delta: number, count: number): number | null {\n if (this.wrap) return this.seek((current + delta + count) % count, delta, count);\n // Clamped: walk toward the boundary only; no enabled candidate → hold position.\n const from = Math.min(Math.max(current + delta, 0), count - 1);\n for (let i = from; i >= 0 && i < count; i += delta) {\n if (!this.isDisabled(i)) return i;\n }\n return current >= 0 && !this.isDisabled(current) ? current : null;\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 * The half of the arrow square kept by `clip-path`, in the square's local\n * (pre-rotation) coordinates: the outer triangle, cut exactly on the\n * panel-edge diagonal. Without the clip, the two bordered edges run the full\n * square and their strokes visibly cut into the panel surface. The diagonal\n * cut ends the strokes precisely at the panel edge, and the panel's own\n * border line — which sits just *outside* that edge — falls inside the kept\n * half, so the arrow background covers it and the base reads as an opening.\n * Keyed by the side of the anchor the panel sits on.\n *\n * A positive `overlap` extends the kept half past the diagonal INTO the\n * panel — only for borderless arrows that want anti-aliasing insurance along\n * the base; on a bordered arrow it turns the stroke ends into visible stubs\n * inside the panel body.\n */\nconst ARROW_CLIP: Record<string, (overlap: number) => string> = {\n // Arrow at the panel's top edge, borders top + left → keep the top-left half.\n bottom: (d) => `polygon(0 0, ${past(d)} 0, 0 ${past(d)})`,\n // Arrow at the panel's bottom edge, borders right + bottom.\n top: (d) => `polygon(${before(d)} 100%, 100% ${before(d)}, 100% 100%)`,\n // Arrow at the panel's right edge, borders right + top.\n left: (d) => `polygon(${before(d)} 0, 100% 0, 100% ${past(d)})`,\n // Arrow at the panel's left edge, borders left + bottom.\n right: (d) => `polygon(0 ${before(d)}, ${past(d)} 100%, 0 100%)`,\n};\n\nconst past = (d: number): string => (d ? `calc(100% + ${d}px)` : '100%');\nconst before = (d: number): string => (d ? `calc(0% - ${d}px)` : '0');\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 *\n * `overlap` (default 0 — cut exactly on the panel edge) extends the kept half\n * into the panel; see {@link ARROW_CLIP} for when that is ever wanted.\n */\nexport function anchorArrowStyles(\n placement: Placement,\n size = 8,\n overlap = 0\n): Record<string, string | number> {\n const [side, align] = placement.split('-') as [string, string | undefined];\n const styles: Record<string, string | number> = {\n position: 'absolute',\n width: size,\n height: size,\n transform: 'rotate(45deg)',\n clipPath: ARROW_CLIP[side](overlap),\n };\n\n // Edge facing the anchor: half the square pokes out past the panel edge\n const facing: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n styles[facing[side]] = -(size / 2);\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\nexport interface SpotlightOptions {\n /** Gap between the target's box and the hole edge, px. */\n pad?: number;\n /** Ring border width, px — border-color and radius come from the caller. */\n ringWidth?: number;\n /** Scrim paint; scheme-invariant by convention, like `::backdrop`. */\n scrimColor?: string;\n}\n\nexport interface SpotlightStyles {\n /** Paints the scrim + ring. `pointer-events: none` — purely visual. */\n window: Record<string, string | number>;\n /** Click-blockers surrounding the hole; the hole itself is genuinely empty. */\n strips: Record<'top' | 'bottom' | 'left' | 'right', Record<string, string | number>>;\n /** Hole-sized click-blocker, shown when the target must not be interactive. */\n cover: Record<string, string | number>;\n}\n\n/**\n * Scrim pieces that cut a spotlight hole around the element carrying\n * `anchor-name: <anchor>`. Every inset is `calc(anchor(<side>) ± px)`, so the\n * browser tracks the target through scroll/resize/layout with zero listeners.\n *\n * The window paints everything: its `border` is the focus ring and its huge\n * spread shadow is the scrim (an outer shadow of a rounded rect covers the\n * whole viewport except the rect, rounded corners included). It is\n * click-through; the four strips do the click-blocking, and the optional\n * cover blocks the hole itself. Callers append these to a fixed, transparent,\n * `pointer-events: none` full-viewport container (each piece is\n * `position: fixed`).\n */\nexport function spotlightStyles(anchor: string, options: SpotlightOptions = {}): SpotlightStyles {\n const pad = options.pad ?? 6;\n const ringWidth = options.ringWidth ?? 2;\n const scrimColor = options.scrimColor ?? 'rgba(0, 0, 0, 0.45)';\n\n const holeInset = (extra: number): Record<string, string> =>\n Object.fromEntries(\n (['top', 'left', 'right', 'bottom'] as const).map((side) => [\n side,\n `calc(anchor(${side}) - ${pad + extra}px)`,\n ])\n );\n\n const piece = { position: 'fixed', positionAnchor: anchor } as const;\n const blocker = { ...piece, pointerEvents: 'auto', background: 'transparent' } as const;\n\n return {\n window: {\n ...piece,\n ...holeInset(ringWidth), // the ring sits outside the padded hole\n pointerEvents: 'none',\n borderWidth: ringWidth,\n borderStyle: 'solid',\n boxShadow: `0 0 0 200vmax ${scrimColor}`,\n },\n strips: {\n top: { ...blocker, top: 0, left: 0, right: 0, bottom: `calc(anchor(top) + ${pad}px)` },\n bottom: { ...blocker, bottom: 0, left: 0, right: 0, top: `calc(anchor(bottom) + ${pad}px)` },\n left: {\n ...blocker,\n left: 0,\n right: `calc(anchor(left) + ${pad}px)`,\n top: `calc(anchor(top) - ${pad}px)`,\n bottom: `calc(anchor(bottom) - ${pad}px)`,\n },\n right: {\n ...blocker,\n right: 0,\n left: `calc(anchor(right) + ${pad}px)`,\n top: `calc(anchor(top) - ${pad}px)`,\n bottom: `calc(anchor(bottom) - ${pad}px)`,\n },\n },\n cover: { ...blocker, ...holeInset(0) },\n };\n}\n","/**\n * Shared plumbing for top-layer overlays built on the native `popover`\n * attribute (dropdown, popover, callout). Pure functions and data — no DOM\n * ownership — so each component keeps its own template while the anchor\n * bookkeeping, discrete-transition block, and focus-restore rule stay single-\n * sourced.\n */\nimport { FOCUSABLE_SELECTOR } from '../a11y/a11y';\nimport type { Placement } from '../position/anchor';\n\n/** Placement → `transform-origin`, so scale animations grow from the anchor. */\nexport const TRANSFORM_ORIGINS: 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/** Write a CSS `anchor-name` onto an element (detached anchors and targets). */\nexport function setAnchorName(el: HTMLElement, name: string): void {\n el.style.setProperty('anchor-name', name);\n}\n\nexport function clearAnchorName(el: HTMLElement): void {\n el.style.removeProperty('anchor-name');\n}\n\n/**\n * Resolve an element-or-id reference. Id strings are looked up at call time —\n * never cache the result across opens, the element may have been re-rendered.\n * `''` and null-ish mean \"unset\" (falsy guard: an empty string is the only\n * typeable empty for a string-typed input).\n */\nexport function resolveElement(\n ref: HTMLElement | string | null | undefined\n): HTMLElement | null {\n if (!ref) return null;\n return typeof ref === 'string' ? document.getElementById(ref) : ref;\n}\n\n/** True when a native `toggle` event reports the overlay opening. */\nexport function isToggleOpen(event: Event): boolean {\n return (event as ToggleEvent).newState === 'open';\n}\n\n/**\n * The discrete-transition block that animates an element into and out of the\n * top layer: `transition-behavior: allow-discrete` over the `hidden` keys plus\n * `display`/`overlay`, the shown state under `:popover-open`, and\n * `@starting-style` so entry transitions run from the hidden state.\n */\nexport function discreteOverlayTransition(\n durationMs: number,\n hidden: Record<string, string | number>,\n shown: Record<string, string | number>\n): Record<string, unknown> {\n return {\n transitionProperty: [...Object.keys(hidden), 'display', 'overlay']\n .map((key) => key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`))\n .join(', '),\n transitionDuration: `${durationMs}ms`,\n transitionBehavior: 'allow-discrete',\n ...hidden,\n '&:popover-open': shown,\n '@starting-style': {\n '&:popover-open': hidden,\n },\n };\n}\n\n/**\n * Returns focus to `target` when an overlay closes while focus was inside its\n * panel (or was dropped on `<body>` by the top layer closing), so keyboard\n * users are never stranded (WCAG 2.4.3). Focus resting anywhere else is left\n * alone.\n */\nexport function restoreOverlayFocus(panel: HTMLElement, target: HTMLElement | null): void {\n const active = document.activeElement;\n if (active === document.body || (active && panel.contains(active))) {\n target?.focus();\n }\n}\n\n/**\n * The focusable elements inside `root`, in DOM order. Filters disabled\n * controls, and hidden ones where the environment can tell: jsdom reports\n * `offsetParent` as null for every element, so the visibility filter applies\n * only when the document actually lays out (some element has an offsetParent).\n */\nexport function focusableElements(root: HTMLElement): HTMLElement[] {\n const all = Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !(el as HTMLElement & { disabled?: boolean }).disabled\n );\n const laidOut = all.some((el) => el.offsetParent !== null);\n return laidOut ? all.filter((el) => el.offsetParent !== null) : all;\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","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 * The shared keyboard-focus indicator's styles (WCAG 2.4.7), without a\n * selector — for controls that key the ring off their own state selector\n * (`&:focus + .checkbox`). Everything else spreads `focusRing()` instead.\n *\n * Themable: a theme that defines `focusRing` **border** and/or **shadow**\n * primitives replaces the default 2px outline with that border (drawn as\n * an outline hugging the control) plus the ring shadow — one focus\n * language for every control, from text fields to checkboxes to calendar\n * days. A `focusRing` **thickness** primitive sets the outline offset\n * (default 0 when themed, 2px for the classic outline; negative values\n * overlay the control's own border, reading as a border-color change).\n * Without those primitives the classic outline renders, in the given\n * color or `currentColor`.\n */\n focusRingStyle = (color?: string, gap?: string | number) => {\n const border = this.borders()['focusRing'];\n const shadow = this.shadows()['focusRing'];\n // An explicit per-call gap wins; else the theme's `focusRing` thickness\n // primitive; else the branch default (hugging when themed, classic 2px).\n const offset = gap ?? this.thicknesses()['focusRing'];\n if (border || shadow) {\n return {\n outline: border ?? 'none',\n outlineOffset: offset ?? 0,\n ...(shadow ? { boxShadow: shadow } : {}),\n };\n }\n return { outline: `2px solid ${color ?? 'currentColor'}`, outlineOffset: offset ?? '2px' };\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 * See `focusRingStyle` for how themes restyle it.\n */\n focusRing = (token?: ColorToken) => ({\n '&:focus-visible': this.focusRingStyle(token ? this.colors()[token] : undefined),\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 { 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 {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\nimport type { Size, StyleExpression, Variant } from '@uni-design-system/uni-core';\n\nimport {\n addDays,\n addMonths,\n buildMonthGrid,\n dayOfWeek,\n formatDate,\n formatMonthHeading,\n inclusiveDayCount,\n monthOf,\n localeWeekStart,\n todayIso,\n uniqueId,\n visuallyHidden,\n weekdayNames,\n type UniDate,\n type UniDateRange,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport type {\n UniCalendarMarker,\n UniCalendarMode,\n UniCalendarOptions,\n UniCalendarValue,\n} from './calendar.model';\n\n/** One rendered day cell — precomputed so the template stays declarative. */\ninterface CalendarCell {\n date: UniDate;\n day: number;\n outside: boolean;\n disabled: boolean;\n today: boolean;\n selected: boolean;\n inBand: boolean;\n tabIndex: number;\n ariaLabel: string;\n markers: UniCalendarMarker[];\n cellClass: string;\n dayClass: string;\n}\n\ninterface RangeBand {\n start: UniDate;\n end: UniDate;\n preview: boolean;\n}\n\n/**\n * Inline month calendar: single-date or start–end range selection, day\n * markers (availability dots), min/max fences and disabled dates. One tab\n * stop with a roving-tabindex `role=\"grid\"`; every day is a real button\n * named with its full date. Values are plain ISO strings (`'YYYY-MM-DD'`),\n * never `Date` objects, so bindings are timezone-free and serializable.\n * Selection and today colours come from the theme's `primary` role pair;\n * geometry and glyphs come from the `calendar` theme entry.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-calendar, Calendar',\n imports: [UniIconButtonComponent],\n templateUrl: './calendar.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'calendar' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniCalendarComponent\n extends BaseComponent<UniCalendarOptions>\n implements FormValueControl<UniCalendarValue>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniCalendarValue>();\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 /** `'single'` reads/writes a `UniDate`; `'range'` a `UniDateRange`. */\n mode = input<UniCalendarMode>('single');\n /** Shown month, `'YYYY-MM'` — two-way, so an app can drive \"jump to June\". */\n month = model<string>();\n /** Earliest selectable date (inclusive). */\n minDate = input<UniDate>();\n /** Latest selectable date (inclusive). */\n maxDate = input<UniDate>();\n /** Blocked days: a list of dates, or a predicate. */\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n /** Availability dots; `label` extends the day's accessible name. */\n markers = input<UniCalendarMarker[]>([]);\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n /** First day of week, 0 = Sunday; defaults from the locale's week info. */\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n /** Names the grid when it stands alone (otherwise the heading names it). */\n ariaLabel = input<string>();\n /** Day geometry token; `sm`/`md`/`lg` map to the theme's `calendar` sizes. */\n override size = input<Size>('md');\n\n // --- Events (value/month changes flow through the models) -----------------\n /** Each committed day, including both ends of a range. */\n selected = output<UniDate>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n protected readonly headingId = uniqueId('uni-calendar-heading');\n protected readonly srOnly = css(visuallyHidden);\n\n /** Pending range start — set by the first commit, cleared by the second. */\n protected readonly pendingStart = signal<UniDate | null>(null);\n /** Hover/focus candidate painting the preview band while a range is pending. */\n protected readonly previewDate = signal<UniDate | null>(null);\n /** Live-region text; selections are otherwise silent for a screen reader. */\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedWeekStart = computed(\n () => this.weekStart() ?? localeWeekStart(this.resolvedLocale())\n );\n\n /**\n * The month on screen: the `month` model, else the value's month, else\n * today's. Falsy guards on purpose: `''` — the only typeable empty for a\n * string-typed model — counts as unset, or it would reach the month math\n * and blow up the grid and heading.\n */\n protected readonly viewMonth = computed(\n () => this.month() || monthOf(this.anchorDate() || todayIso())\n );\n\n private readonly anchorDate = computed(() => {\n const value = this.value();\n return this.mode() === 'range'\n ? (value as UniDateRange | undefined)?.start\n : (value as UniDate | undefined);\n });\n\n /**\n * The roving-tabindex day. Re-derives when the view or value changes\n * (selected day in view → today in view → first enabled day); keyboard\n * navigation writes it directly.\n */\n protected readonly focusedDate = linkedSignal<UniDate>(() => this.pickFocus());\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly heading = computed(() =>\n formatMonthHeading(this.viewMonth(), this.resolvedLocale())\n );\n\n protected readonly weekdays = computed(() =>\n weekdayNames(\n this.resolvedLocale(),\n this.resolvedWeekStart(),\n this.componentOptions().weekdayFormat ?? 'short'\n )\n );\n\n private readonly disabledDateSet = computed(() => {\n const dates = this.disabledDates();\n return Array.isArray(dates) ? new Set(dates) : null;\n });\n\n private readonly markersByDate = computed(() => {\n const map = new Map<UniDate, UniCalendarMarker[]>();\n for (const marker of this.markers()) {\n const existing = map.get(marker.date);\n if (existing) existing.push(marker);\n else map.set(marker.date, [marker]);\n }\n return map;\n });\n\n /** The committed range, or the pending preview band. */\n private readonly rangeBand = computed<RangeBand | null>(() => {\n if (this.mode() !== 'range') return null;\n const pending = this.pendingStart();\n const preview = this.previewDate();\n if (pending && preview) {\n const [start, end] = preview < pending ? [preview, pending] : [pending, preview];\n return { start, end, preview: true };\n }\n if (pending) return { start: pending, end: pending, preview: true };\n const value = this.value() as UniDateRange | undefined;\n if (value?.start && value?.end) return { start: value.start, end: value.end, preview: false };\n return null;\n });\n\n protected isDayDisabled(date: UniDate): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return true;\n const dates = this.disabledDates();\n if (!dates) return false;\n const set = this.disabledDateSet();\n return set ? set.has(date) : (dates as (date: UniDate) => boolean)(date);\n }\n\n private isSelected(date: UniDate): boolean {\n if (this.mode() === 'single') return this.value() === date;\n const pending = this.pendingStart();\n if (pending) return pending === date;\n const value = this.value() as UniDateRange | undefined;\n return value?.start === date || value?.end === date;\n }\n\n /** The full render model: one precomputed cell per grid position. */\n protected readonly gridWeeks = computed<CalendarCell[][]>(() => {\n const locale = this.resolvedLocale();\n const band = this.rangeBand();\n const today = todayIso();\n const focused = this.focusedDate();\n const markers = this.markersByDate();\n const cellBase = this.cellClass();\n const dayBase = this.dayClass();\n const todayClass = this.todayClass();\n\n return buildMonthGrid(this.viewMonth(), this.resolvedWeekStart()).map((week) =>\n week.map((cell) => {\n const date = cell.date;\n const selected = !cell.outside && this.isSelected(date);\n const inBand = !cell.outside && !!band && date >= band.start && date <= band.end;\n const dayMarkers = cell.outside ? [] : (markers.get(date) ?? []).slice(0, 3);\n const markerLabel = dayMarkers\n .filter((marker) => marker.label)\n .map((marker) => marker.label)\n .join(', ');\n const isToday = date === today;\n return {\n date,\n day: Number(date.slice(8, 10)),\n outside: cell.outside,\n disabled: this.isDayDisabled(date),\n today: isToday,\n selected,\n inBand,\n tabIndex: date === focused && !cell.outside ? 0 : -1,\n ariaLabel:\n formatDate(date, locale, { dateStyle: 'full' }) + (markerLabel ? `, ${markerLabel}` : ''),\n markers: dayMarkers,\n cellClass: [\n cellBase,\n inBand && (band!.preview ? this.previewClass() : this.inRangeClass()),\n inBand && date === band!.start && this.bandStartClass(),\n inBand && date === band!.end && this.bandEndClass(),\n ]\n .filter(Boolean)\n .join(' '),\n dayClass: [dayBase, isToday && todayClass, selected && this.selectedClass()]\n .filter(Boolean)\n .join(' '),\n };\n })\n );\n });\n\n // --- Selection -------------------------------------------------------------\n\n protected select(date: UniDate): void {\n if (this.disabled() || this.isDayDisabled(date)) return;\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n const locale = this.resolvedLocale();\n const full = (d: UniDate) => formatDate(d, locale, { dateStyle: 'full' });\n\n if (this.mode() === 'single') {\n this.value.set(date);\n this.announce(`${full(date)} selected.`);\n } else if (!this.pendingStart()) {\n this.pendingStart.set(date);\n this.previewDate.set(date);\n this.announce(`Start date ${full(date)}. Choose an end date.`);\n } else {\n let [start, end] = [this.pendingStart()!, date];\n if (end < start) [start, end] = [end, start]; // backwards commit swaps\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.value.set({ start, end });\n const days = inclusiveDayCount(start, end);\n this.announce(\n `Range selected, ${full(start)} to ${full(end)}. ${days} ${days === 1 ? 'day' : 'days'}.`\n );\n }\n this.selected.emit(date);\n }\n\n private cancelPending(): void {\n this.pendingStart.set(null);\n this.previewDate.set(null);\n this.announce('Range selection cancelled.');\n }\n\n // --- Navigation ------------------------------------------------------------\n\n protected onNav(direction: 1 | -1): void {\n this.setViewMonth(monthOf(addMonths(`${this.viewMonth()}-01`, direction)));\n }\n\n private setViewMonth(month: string): void {\n if (this.month() !== month) this.month.set(month);\n }\n\n /**\n * Move the roving focus. A landing on a disabled day keeps going in the\n * same direction until an enabled day; the min/max fence stops the caret,\n * it never wraps. Month edges never block — the grid follows.\n */\n private moveFocus(target: UniDate, direction: 1 | -1): void {\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && target < min) || (max && target > max)) return;\n let date = target;\n let guard = 0;\n while (this.isDayDisabled(date)) {\n date = addDays(date, direction);\n if ((min && date < min) || (max && date > max) || ++guard > 500) return;\n }\n this.setViewMonth(monthOf(date));\n this.focusedDate.set(date);\n if (this.pendingStart()) this.previewDate.set(date);\n this.focusDay(date);\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const focused = this.focusedDate();\n const week = (dayOfWeek(focused) - this.resolvedWeekStart() + 7) % 7;\n const handlers: Record<string, () => void> = {\n ArrowLeft: () => this.moveFocus(addDays(focused, -1), -1),\n ArrowRight: () => this.moveFocus(addDays(focused, 1), 1),\n ArrowUp: () => this.moveFocus(addDays(focused, -7), -1),\n ArrowDown: () => this.moveFocus(addDays(focused, 7), 1),\n Home: () => this.moveFocus(addDays(focused, -week), 1),\n End: () => this.moveFocus(addDays(focused, 6 - week), -1),\n PageUp: () => this.moveFocus(addMonths(focused, event.shiftKey ? -12 : -1), -1),\n PageDown: () => this.moveFocus(addMonths(focused, event.shiftKey ? 12 : 1), 1),\n Enter: () => this.select(focused),\n ' ': () => this.select(focused),\n };\n if (event.key === 'Escape') {\n // Only a pending range consumes Escape; otherwise it bubbles so a\n // hosting popover can light-dismiss.\n if (this.pendingStart()) {\n event.preventDefault();\n event.stopPropagation();\n this.cancelPending();\n }\n return;\n }\n const handler = handlers[event.key];\n if (handler) {\n event.preventDefault();\n handler();\n }\n }\n\n protected onDayHover(date: UniDate): void {\n if (this.pendingStart() && !this.isDayDisabled(date)) this.previewDate.set(date);\n }\n\n /** Focus the roving day — used by popup hosts when the calendar opens. */\n focusActiveDay(): void {\n this.focusDay(this.focusedDate());\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n private focusDay(date: UniDate): void {\n queueMicrotask(() =>\n this.host.nativeElement.querySelector<HTMLButtonElement>(`[data-date=\"${date}\"]`)?.focus()\n );\n }\n\n private pickFocus(): UniDate {\n const view = this.viewMonth();\n const anchor = this.anchorDate();\n if (anchor && monthOf(anchor) === view && !this.isDayDisabled(anchor)) return anchor;\n const today = todayIso();\n if (monthOf(today) === view && !this.isDayDisabled(today)) return today;\n return this.firstEnabledInView(view);\n }\n\n private firstEnabledInView(view: string): UniDate {\n const first = `${view}-01`;\n let date = first;\n for (let i = 0; i < 31 && monthOf(date) === view; i++) {\n if (!this.isDayDisabled(date)) return date;\n date = addDays(date, 1);\n }\n return first;\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 // --- Styling ---------------------------------------------------------------\n\n private readonly daySize = computed(\n () => (this.componentTheme().sizes?.[this.size()] ?? {}) as StyleExpression\n );\n\n protected readonly className = computed(() =>\n css([(this.componentTheme().fixed ?? { display: 'inline-block' }) as StyleExpression])\n );\n\n protected readonly navClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n ...this.theme.gap('xs'),\n marginBottom: 4,\n })\n );\n\n protected readonly headingClass = computed(() =>\n css({ flex: 1, textAlign: 'center', ...this.theme.typeface('title-small') })\n );\n\n protected readonly gridClass = computed(() =>\n css({ display: 'grid', ...this.theme.gap(this.componentOptions().gap ?? 'xxs') })\n );\n\n protected readonly rowClass = computed(() =>\n css({\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n justifyItems: 'center',\n ...this.theme.gap(this.componentOptions().gap ?? 'xxs'),\n })\n );\n\n protected readonly weekdayClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.daySize(),\n height: 'auto',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.theme.color('on-background-variant'),\n '& abbr': { textDecoration: 'none' },\n })\n );\n\n /** The gridcell — range bands paint here so they read as one bar. */\n protected readonly cellClass = computed(() => css({ position: 'relative', display: 'flex' }));\n\n protected readonly inRangeClass = computed(() =>\n css({ ...this.theme.backgroundColor('primary-container'), borderRadius: 0 })\n );\n\n protected readonly previewClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n backgroundColor: `color-mix(in srgb, ${colors['primary-container']} 55%, transparent)`,\n outline: `1px dashed ${colors['primary']}`,\n outlineOffset: -1,\n });\n });\n\n protected readonly bandStartClass = computed(() =>\n css({ ...this.theme.getRadiusLeft(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly bandEndClass = computed(() =>\n css({ ...this.theme.getRadiusRight(this.componentOptions().dayBorderRadius ?? 'max') })\n );\n\n protected readonly dayClass = computed(() => {\n const options = this.componentOptions();\n const colors = this.theme.colorPalette();\n return css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 0,\n padding: 0,\n background: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n ...this.theme.typeface(options.typeface ?? 'label'),\n ...this.daySize(),\n ...this.theme.radius(options.dayBorderRadius ?? 'max'),\n '&:hover:not(:disabled)': { ...this.theme.colorPair('primary-container') },\n ...this.theme.focusRing(),\n '&:disabled': {\n color: colors['on-disabled'],\n cursor: 'default',\n pointerEvents: 'none',\n },\n });\n });\n\n protected readonly todayClass = computed(() => {\n const colors = this.theme.colorPalette();\n // Outline (or dot), never fill — so today and selected can coincide and\n // both stay legible (WCAG 1.4.1: no state carried by colour alone).\n return (this.componentOptions().todayStyle ?? 'outline') === 'outline'\n ? css({ boxShadow: `inset 0 0 0 1.5px ${colors['primary']}` })\n : css({\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 3,\n left: '50%',\n transform: 'translateX(-50%)',\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: colors['primary'],\n },\n });\n });\n\n protected readonly selectedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n ...this.theme.colorPair('primary'),\n // A marker dot survives selection by switching to the on-colour.\n '& [data-dot]': { backgroundColor: colors['on-primary'] },\n });\n });\n\n protected readonly outsideDayClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...this.theme.typeface(this.componentOptions().typeface ?? 'label'),\n ...this.daySize(),\n color: colors['on-disabled'],\n });\n });\n\n protected readonly dotsClass = computed(() =>\n css({\n position: 'absolute',\n bottom: 2,\n left: 0,\n right: 0,\n display: 'flex',\n justifyContent: 'center',\n gap: 2,\n pointerEvents: 'none',\n })\n );\n\n /** One dot class per marker variant present, resolved from the palette. */\n protected readonly dotClasses = computed(() => {\n const colors = this.theme.colorPalette();\n const classes = new Map<Variant, string>();\n for (const marker of this.markers()) {\n const variant = marker.variant ?? 'primary';\n if (!classes.has(variant)) {\n classes.set(\n variant,\n css({ width: 4, height: 4, borderRadius: 999, backgroundColor: colors[variant] })\n );\n }\n }\n return classes;\n });\n\n protected dotClassFor(variant: Variant | undefined): string {\n return this.dotClasses().get(variant ?? 'primary') ?? '';\n }\n\n protected readonly showOutside = computed(() => this.componentOptions().showOutsideDays ?? false);\n}\n","<div [class]=\"navClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navPrevSymbol ?? 'chevron_left'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(-1)\"\n >\n Previous month\n </button>\n <!-- aria-live so PageUp/Down narrates the new month without refocusing. -->\n <div [class]=\"headingClass()\" [id]=\"headingId\" aria-live=\"polite\">{{ heading() }}</div>\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().navNextSymbol ?? 'chevron_right'\"\n [disable]=\"disabled()\"\n (click)=\"onNav(1)\"\n >\n Next month\n </button>\n</div>\n\n<!-- One tab stop: the roving tabindex lives on the day buttons, and the grid\n itself only relays their bubbling keys (same delegation as tag-input). -->\n<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div\n role=\"grid\"\n [class]=\"gridClass()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : headingId\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onGridKeydown($event)\"\n>\n <div role=\"row\" [class]=\"rowClass()\">\n @for (weekday of weekdays(); track weekday.full) {\n <div role=\"columnheader\" [class]=\"weekdayClass()\">\n <abbr [attr.title]=\"weekday.full\">{{ weekday.label }}</abbr>\n </div>\n }\n </div>\n\n @for (week of gridWeeks(); track week[0].date) {\n <div role=\"row\" [class]=\"rowClass()\">\n @for (cell of week; track cell.date) {\n @if (cell.outside) {\n <!-- Outside days: hidden placeholders by default (geometry kept),\n muted and non-interactive under the showOutsideDays option. -->\n <div role=\"gridcell\" aria-hidden=\"true\" [class]=\"cell.cellClass\">\n @if (showOutside()) {\n <span [class]=\"outsideDayClass()\">{{ cell.day }}</span>\n }\n </div>\n } @else {\n <div\n role=\"gridcell\"\n [class]=\"cell.cellClass\"\n [attr.aria-selected]=\"cell.selected || cell.inBand ? true : null\"\n >\n <button\n type=\"button\"\n [class]=\"cell.dayClass\"\n [attr.data-date]=\"cell.date\"\n [tabindex]=\"cell.tabIndex\"\n [attr.aria-label]=\"cell.ariaLabel\"\n [attr.aria-current]=\"cell.today ? 'date' : null\"\n [disabled]=\"cell.disabled || disabled()\"\n (click)=\"select(cell.date)\"\n (mouseenter)=\"onDayHover(cell.date)\"\n >\n {{ cell.day }}\n @if (cell.markers.length) {\n <span [class]=\"dotsClass()\">\n @for (marker of cell.markers; track $index) {\n <span data-dot [class]=\"dotClassFor(marker.variant)\"></span>\n }\n </span>\n }\n </button>\n </div>\n }\n }\n </div>\n }\n</div>\n\n<!-- Selections and range progress are otherwise silent for a screen reader. -->\n<span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n anchorArrowStyles,\n anchorStyles,\n clearAnchorName,\n discreteOverlayTransition,\n focusableElements,\n newAnchorName,\n resolveElement,\n setAnchorName,\n spotlightStyles,\n uniqueId,\n type Placement,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport type { UniCalloutDismissal, UniCalloutOptions } from './callout.model';\n\n/**\n * Anchored coach-mark panel that dims the page and cuts a spotlight hole\n * around its target. Both the scrim and the panel are `popover=\"manual\"`\n * elements shown in order, so they stack deterministically in the top layer\n * above every app z-index, and every scrim piece is CSS-anchor-positioned to\n * the target — the hole tracks scroll/resize/layout with zero listeners.\n *\n * The panel is a non-modal `role=\"dialog\"` (deliberately no `aria-modal`):\n * focus moves into it on open, Tab runs a \"duet loop\" over the panel's\n * focusables plus the spotlit target while it stays interactive, and on close\n * focus returns to the pre-open element — unless the user moved into the\n * target, where it stays.\n *\n * Storage-free by rule: `key` and the `dismissed` output are the \"don't show\n * again\" hooks; persistence is the app's business (e.g. cdk local-storage).\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-callout',\n imports: [UniIconButtonComponent],\n templateUrl: './callout.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'callout' }],\n})\nexport class UniCalloutComponent extends BaseComponent<UniCalloutOptions> {\n private destroyRef = inject(DestroyRef);\n\n open = model(false);\n\n /** Identifies this callout in `dismissed` payloads. Empty string = unset. */\n key = input<string>();\n\n /** Element (or id, resolved at open time) to spotlight. '' = unset. */\n target = input<HTMLElement | string>();\n\n placement = input<Placement>('bottom');\n\n /** Defaults to `spotlight` when a target resolves, else `dim`. */\n backdrop = input<'spotlight' | 'dim' | 'none'>();\n\n /** When false, a transparent cover blocks the spotlit target. */\n targetInteractive = input(true);\n\n /** Gates Escape and the close button. */\n dismissible = input(true);\n\n /** When true, scrim clicks close (reason `backdrop`); else the panel pulses. */\n dismissOnBackdrop = input(false);\n\n header = input<string>();\n\n arrow = input(true);\n\n /** Wins over the header/body labelling; the tour sets \"{title}, step n of N\". */\n ariaLabel = input<string>();\n\n /** Accessible name of the dismiss button (the tour passes its skip label). */\n closeLabel = input('Close');\n\n opened = output<void>();\n closed = output<void>();\n dismissed = output<UniCalloutDismissal>();\n\n /** Keys pressed while focus is inside the panel (the tour's arrow-key hook). */\n panelKeydown = output<KeyboardEvent>();\n\n readonly panelId = uniqueId('uni-callout');\n protected readonly headerId = uniqueId('uni-callout-header');\n protected readonly bodyId = uniqueId('uni-callout-body');\n private readonly anchorName = newAnchorName();\n\n protected readonly showing = signal(false);\n protected readonly activeTarget = signal<HTMLElement | null>(null);\n private readonly scrimShown = signal(false);\n /**\n * Keeps the spotlight pieces rendered and the panel anchored through the\n * close fade — tearing the anchor down at close time made the panel jump\n * and the scrim vanish mid-transition.\n */\n protected readonly scrimContent = signal(false);\n private pendingTeardown: ReturnType<typeof setTimeout> | null = null;\n private prevFocus: HTMLElement | null = null;\n private detachKeydown: (() => void) | null = null;\n\n protected readonly stripSides = ['top', 'bottom', 'left', 'right'] as const;\n\n private scrimRef = viewChild.required<ElementRef<HTMLElement>>('scrim');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n private actionsRef = viewChild.required<ElementRef<HTMLElement>>('actions');\n\n constructor() {\n super();\n\n effect(() => {\n const want = this.open();\n if (want === untracked(this.showing)) return;\n if (want) this.show();\n else this.close('programmatic');\n });\n\n // Re-seat an open callout when its target or backdrop changes (a tour\n // stepping) instead of closing and reopening — the panel stays up, the\n // original pre-open focus is preserved for the eventual close, and the\n // duet loop re-seats onto the new step's content.\n effect(() => {\n const ref = this.target();\n this.backdrop();\n if (!untracked(this.showing)) return;\n untracked(() => this.retarget(resolveElement(ref)));\n });\n\n this.destroyRef.onDestroy(() => {\n this.detachKeydown?.();\n if (this.pendingTeardown) clearTimeout(this.pendingTeardown);\n const target = untracked(this.activeTarget);\n if (target) clearAnchorName(target);\n for (const ref of [this.panelRef, this.scrimRef]) {\n try {\n ref().nativeElement.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n }\n });\n }\n\n protected readonly effectiveBackdrop = computed(\n () => this.backdrop() ?? (this.activeTarget() ? 'spotlight' : 'dim')\n );\n\n private show() {\n if (this.showing()) return;\n if (this.pendingTeardown) {\n clearTimeout(this.pendingTeardown);\n this.pendingTeardown = null;\n }\n const target = resolveElement(this.target());\n const stale = this.activeTarget();\n if (stale && stale !== target) clearAnchorName(stale); // a close was mid-fade\n this.activeTarget.set(target);\n this.scrimContent.set(true);\n this.prevFocus = document.activeElement as HTMLElement | null;\n\n // Anchor insets need the target on screen before the scrim paints; the\n // hole then tracks any further movement natively.\n target?.scrollIntoView?.({ block: 'center', behavior: 'instant' });\n if (target) setAnchorName(target, this.anchorName);\n\n // Scrim first, panel second: top-layer order is stacking order.\n if ((this.backdrop() ?? (target ? 'spotlight' : 'dim')) !== 'none') {\n this.scrimRef().nativeElement.showPopover();\n this.scrimShown.set(true);\n }\n this.panelRef().nativeElement.showPopover();\n\n const onKeydown = (event: KeyboardEvent) => this.onKeydown(event);\n document.addEventListener('keydown', onKeydown, true);\n this.detachKeydown = () => {\n document.removeEventListener('keydown', onKeydown, true);\n this.detachKeydown = null;\n };\n\n this.showing.set(true);\n this.open.set(true);\n this.focusInitial();\n this.opened.emit();\n }\n\n protected close(reason: UniCalloutDismissal['reason']) {\n if (!this.showing()) return;\n this.detachKeydown?.();\n\n const target = this.activeTarget();\n const active = document.activeElement;\n const focusInTarget = !!target && (target === active || target.contains(active));\n\n for (const ref of [this.panelRef, this.scrimRef]) {\n try {\n ref().nativeElement.hidePopover();\n } catch {\n // scrim may not have been shown (backdrop=\"none\")\n }\n }\n this.showing.set(false);\n this.scrimShown.set(false);\n this.open.set(false);\n\n // The close fade is still running: the panel must stay anchored and the\n // spotlight pieces rendered until it finishes, or everything jumps.\n this.pendingTeardown = setTimeout(() => {\n this.pendingTeardown = null;\n if (target) clearAnchorName(target);\n this.activeTarget.set(null);\n this.scrimContent.set(false);\n }, this.componentOptions().transitionMs);\n\n // The duet loop may have sent the user into the target on purpose — don't\n // yank them back out of it.\n if (!focusInTarget && this.prevFocus && document.contains(this.prevFocus)) {\n this.prevFocus.focus();\n }\n\n this.dismissed.emit({ key: this.key() || undefined, reason });\n this.closed.emit();\n }\n\n /** Move an open callout to a new target without a close/open round trip. */\n private retarget(target: HTMLElement | null) {\n const prev = this.activeTarget();\n if (prev && prev !== target) clearAnchorName(prev);\n target?.scrollIntoView?.({ block: 'center', behavior: 'instant' });\n if (target) setAnchorName(target, this.anchorName);\n this.activeTarget.set(target);\n\n const wantScrim = (this.backdrop() ?? (target ? 'spotlight' : 'dim')) !== 'none';\n if (wantScrim !== this.scrimShown()) {\n const scrim = this.scrimRef().nativeElement;\n const panel = this.panelRef().nativeElement;\n try {\n if (wantScrim) {\n // Top-layer order is stacking order: re-show the panel above the\n // late-arriving scrim.\n scrim.showPopover();\n panel.hidePopover();\n panel.showPopover();\n } else {\n scrim.hidePopover();\n }\n } catch {\n // a piece was already in the requested state\n }\n this.scrimShown.set(wantScrim);\n }\n this.focusInitial();\n }\n\n /** `[autofocus]` → first action → first panel focusable → the panel itself. */\n private focusInitial() {\n const panel = this.panelRef().nativeElement;\n const first =\n panel.querySelector<HTMLElement>('[autofocus]') ??\n focusableElements(this.actionsRef().nativeElement)[0] ??\n focusableElements(panel)[0] ??\n panel;\n first.focus({ preventScroll: true });\n }\n\n /**\n * Capture phase so Escape works from inside the spotlit target and the tab\n * loop preempts the page. Non-Tab keys surface through `panelKeydown`.\n */\n private onKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n if (this.dismissible()) {\n event.preventDefault();\n this.close('escape');\n }\n return;\n }\n if (event.key !== 'Tab') {\n if (this.panelRef().nativeElement.contains(document.activeElement)) {\n this.panelKeydown.emit(event);\n }\n return;\n }\n if (this.effectiveBackdrop() === 'none') return; // nothing is blocked — tab naturally\n\n // Duet loop: panel focusables plus the interactive target.\n const loop = focusableElements(this.panelRef().nativeElement);\n const target = this.activeTarget();\n if (target && this.targetInteractive()) loop.push(target);\n if (!loop.length) return;\n\n const index = loop.indexOf(document.activeElement as HTMLElement);\n event.preventDefault();\n const next = event.shiftKey\n ? loop[(index <= 0 ? loop.length : index) - 1]\n : loop[(index + 1) % loop.length];\n next.focus();\n }\n\n /** A stray click shouldn't kill onboarding: nudge the panel instead. */\n protected onBackdropClick() {\n if (this.dismissOnBackdrop()) {\n this.close('backdrop');\n return;\n }\n try {\n if (matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n this.panelRef().nativeElement.animate?.(\n [\n { translate: '0 0' },\n { translate: '0 -3px', offset: 0.3 },\n { translate: '0 2px', offset: 0.6 },\n { translate: '0 0' },\n ],\n { duration: 400, easing: 'ease' }\n );\n } catch {\n // animation is decoration; environments without WAAPI just skip it\n }\n }\n\n // --- styling --------------------------------------------------------------\n\n private readonly spotlight = computed(() => {\n const options = this.componentOptions();\n return spotlightStyles(this.anchorName, {\n pad: options.spotlightPadding,\n ringWidth: options.ringWidth,\n scrimColor: options.scrimColor,\n });\n });\n\n protected readonly scrimClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n position: 'fixed',\n inset: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n border: 0,\n padding: 0,\n background: 'transparent',\n overflow: 'visible',\n pointerEvents: 'none',\n '& > *': { position: 'fixed' },\n ...discreteOverlayTransition(options.transitionMs, { opacity: 0 }, { opacity: 1 }),\n });\n });\n\n protected readonly windowClassName = computed(() => {\n const ring =\n this.theme.colorPalette()[this.variant()] ?? this.theme.colorPalette()['primary'];\n return css({\n ...this.spotlight().window,\n ...this.theme.radius(this.componentOptions().spotlightRadius),\n borderColor: ring,\n });\n });\n\n protected stripClassName(side: (typeof this.stripSides)[number]): string {\n return css(this.spotlight().strips[side]);\n }\n\n protected readonly coverClassName = computed(() => css(this.spotlight().cover));\n\n protected readonly fullCoverClassName = computed(() =>\n css({\n inset: 0,\n background: this.componentOptions().scrimColor,\n pointerEvents: 'auto',\n })\n );\n\n protected readonly panelClassName = computed(() => {\n const options = this.componentOptions();\n const anchored = this.activeTarget() !== null;\n return css({\n ...this.theme.colorPair(options.color),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.boxShadow(options.shadow),\n ...this.theme.typeface(options.typeface),\n width: options.width,\n maxWidth: 'calc(100vw - 32px)',\n padding: 0,\n border: 0,\n overflow: 'visible',\n // A target-less panel keeps the popover UA styles (inset:0 + margin:auto)\n // and centers in the viewport; anchorStyles resets them for anchoring.\n ...(anchored\n ? anchorStyles(this.anchorName, this.placement(), {\n mainAxis: options.offset + options.spotlightPadding,\n })\n : {}),\n ...discreteOverlayTransition(\n options.transitionMs,\n { opacity: 0, translate: '0 6px' },\n { opacity: 1, translate: '0 0' }\n ),\n });\n });\n\n protected readonly headRowClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: options.padding,\n paddingBottom: 0,\n '&:not(:has(*))': { display: 'none' },\n });\n });\n\n protected readonly titleClassName = computed(() =>\n css({ ...this.theme.typeface(this.componentOptions().headerTypeface), marginRight: 'auto' })\n );\n\n protected readonly bodyClassName = computed(() => {\n const options = this.componentOptions();\n return css({ padding: options.padding, paddingTop: 6, paddingBottom: 12, '&:empty': { display: 'none' } });\n });\n\n protected readonly actionsRowClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: options.padding,\n paddingTop: 0,\n '&:not(:has(*))': { display: 'none' },\n });\n });\n\n protected readonly arrowClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n ...this.theme.colorPair(options.color),\n ...anchorArrowStyles(this.placement(), options.arrowSize),\n });\n });\n}\n","<!-- Scrim first: top-layer order is stacking order, so the panel always sits\n above it. Strips and cover are pointer-blockers only; the keyboard path\n is the duet loop on the document keydown handler. -->\n<div #scrim popover=\"manual\" [class]=\"scrimClassName()\">\n @if (scrimContent()) {\n @if (effectiveBackdrop() === 'spotlight' && activeTarget()) {\n <div [class]=\"windowClassName()\"></div>\n @for (side of stripSides; track side) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div [class]=\"stripClassName(side)\" (click)=\"onBackdropClick()\"></div>\n }\n @if (!targetInteractive()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div [class]=\"coverClassName()\" (click)=\"onBackdropClick()\"></div>\n }\n } @else if (effectiveBackdrop() === 'dim') {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div [class]=\"fullCoverClassName()\" (click)=\"onBackdropClick()\"></div>\n }\n }\n</div>\n<div\n #panel\n popover=\"manual\"\n role=\"dialog\"\n tabindex=\"-1\"\n [id]=\"panelId\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabel() ? null : header() ? headerId : bodyId\"\n [class]=\"panelClassName()\"\n>\n <ng-content select=\"[callout-media]\"></ng-content>\n <div [class]=\"headRowClassName()\">\n <ng-content select=\"[callout-header]\"></ng-content>\n @if (header()) {\n <span [id]=\"headerId\" [class]=\"titleClassName()\">{{ header() }}</span>\n }\n @if (dismissible()) {\n <button\n icon-button\n [iconName]=\"componentOptions().closeSymbol\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"close('close-button')\"\n >\n {{ closeLabel() }}\n </button>\n }\n </div>\n <div [id]=\"bodyId\" [class]=\"bodyClassName()\"><ng-content></ng-content></div>\n <div #actions [class]=\"actionsRowClassName()\"><ng-content select=\"[callout-actions]\"></ng-content></div>\n @if (arrow() && activeTarget()) {\n <span [class]=\"arrowClassName()\"></span>\n }\n</div>\n","/**\n * UniCalloutComponent Barrel File\n *\n * This file exports all public-facing elements of the callout component.\n */\n\nexport { UniCalloutComponent } from './callout.component';\nexport type { UniCalloutDismissal, UniCalloutOptions } from './callout.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 // The shared, themable focus indicator, keyed off the hidden input's\n // focus. The ring sits out from the box, so its radius carries an extra\n // 4px to round proportionally (as the original hand-drawn ring did) —\n // without it the corners gap away from the box.\n '&:focus + .checkbox': {\n ...this.theme.focusRingStyle(\n this.getThemeColor(this.variant()),\n this.componentOptions().focusRingGap\n ),\n borderRadius: `${(Number(this.componentOptions().borderRadius) || 2) + 2}px`,\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 type { CSSObject } from '@emotion/css/create-instance';\nimport type { ColorKey, ContainerColorToken, Radius, Shadow } from '@uni-design-system/uni-core';\nimport type { ThemeService } from '../../theming';\n\n/**\n * The theme options every listbox popup shares — the \"list trio\" plus the\n * active-option fill. Component option interfaces (searchInput, tagInput,\n * timeInput, combobox) satisfy this structurally; their extra options ride\n * alongside. `ColorKey`-typed so the wider `searchInput` contract (custom\n * theme color tokens) stays satisfiable; `colorPair` resolves any registered\n * token at runtime.\n */\nexport interface UniListboxPopupOptions {\n /** Popup surface; its on-color pair is derived and cascades to options. */\n listColor?: ColorKey;\n listShadow?: Shadow;\n listBorderRadius?: Radius;\n /** Active/hover option fill; the on-color pair is derived. Must contrast\n with `listColor` or keyboard navigation turns invisible. */\n activeColor?: ColorKey;\n}\n\n/**\n * Style block for the popup behind every `ListboxNavigation` consumer: an\n * absolutely-positioned `ul[role=\"listbox\"]` under a `position: relative`\n * field wrapper, with the shared option chrome and active/hover highlight.\n *\n * Extracted because four components (`uni-search-input`, `uni-tag-input`,\n * `uni-time-input`, `uni-combobox`) carried hand-rolled copies, and the parts\n * that silently drift between copies all live here: the surface/elevation\n * trio, and the `activeColor` pair that themes re-point when their container\n * tokens don't contrast (see the Wellsourced overrides).\n *\n * Compose extras with the array form — `css([listboxPopupStyles(…), {…}])` —\n * so a component's own `& [role=\"option\"]` block cascades after this one\n * instead of replacing it (an object spread would overwrite the key).\n */\nexport const listboxPopupStyles = (\n theme: ThemeService,\n options: UniListboxPopupOptions,\n { maxHeight = 280 }: { maxHeight?: number } = {}\n): CSSObject => ({\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,\n overflowY: 'auto',\n ...theme.colorPair((options.listColor ?? 'primary-surface') as ContainerColorToken),\n ...theme.boxShadow(options.listShadow ?? 'menu'),\n ...theme.radius(options.listBorderRadius ?? 'xs'),\n '& [role=\"option\"]': {\n padding: '8px 12px',\n cursor: 'pointer',\n ...theme.typeface('label'),\n ...theme.radius('xxs'),\n '&.active, &:not([aria-disabled=\"true\"]):hover': {\n ...theme.colorPair((options.activeColor ?? 'primary-container') as ContainerColorToken),\n },\n },\n});\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 // `typeFace` is the deprecated casing; themes that still set it win\n // only when the canonical key is absent.\n ...this.theme.typeface(\n this.componentOptions().typeface ?? this.componentOptions().typeFace\n ),\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 // Optional focus chrome (border/ring/background). It yields to the\n // error state, so a flagged field stays visibly flagged while the\n // user is in it correcting the value.\n ...(this.error()\n ? {}\n : {\n ...this.theme.border(this.componentOptions().focusBorder),\n ...this.theme.boxShadow(this.componentOptions().focusShadow),\n ...this.theme.backgroundColor(this.componentOptions().focusColor),\n }),\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 computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n createListboxNavigation,\n motionSafe,\n visuallyHidden,\n type Option,\n type Options,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { listboxPopupStyles } from '../forms/listbox-popup';\nimport { UniIconComponent } from '../icon';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniComboboxOptions, UniComboboxRejection } from './combobox.model';\n\n/**\n * Form-bound, closed-set, single-select autocomplete: `FormValueControl<T | null>`\n * over object `Options<T>`, type-to-filter, commit-on-select. Typing produces a\n * draft — a filter, never a value; the value changes only when an option\n * commits, `clear()` runs, or the model is written from outside. Select\n * semantics, not search: a real label, a chevron, no magnifier, nothing\n * submits. For short lists with no need to type, prefer `uni-select` — the\n * value contract is identical, so swapping is a template-only change.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-combobox, Combobox',\n imports: [UniIconButtonComponent, UniIconComponent, UniInputBoxComponent],\n templateUrl: './combobox.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'combobox' }],\n host: { '[class]': 'className()' },\n})\nexport class UniComboboxComponent<T>\n extends BaseComponent<UniComboboxOptions>\n implements FormValueControl<T | null>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\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 readonly required = input(false);\n readonly ariaDescribedBy = input<string>();\n\n // --- Configuration -------------------------------------------------------\n /** Accessible name for the field, e.g. \"State\"; echoed on the listbox. */\n label = input.required<string>();\n placeholder = input<string>();\n options = input<Options<T>>([]);\n /**\n * Equality used to match `value` against option values, called as\n * `compareWith(optionValue, value)`. Defaults to reference equality, which\n * never matches an object value rebuilt from elsewhere (e.g. a saved record\n * against options from a fresh fetch) — pass a key comparison like\n * `(a, b) => a?.id === b?.id` for object values.\n */\n compareWith = input<(optionValue: T, value: T) => boolean>((a, b) => a === b);\n width = input<string | number>('100%');\n /** Show a ✕ while a value is set; an emptied field on blur also clears. */\n clearable = input(true);\n /** Blur commits an exact-match draft; a non-matching draft reverts. */\n commitOnBlur = input(true);\n /** i18n-able empty row, also announced when a filter matches nothing. */\n emptyText = input('No matches');\n\n // --- Filtering (local by default — the closed set is already in memory) ---\n /** `false` renders `options` verbatim; narrow them app-side from `query`. */\n filterLocally = input(true);\n /** Filter predicate; default is locale-lowercased label-contains. */\n filterWith = input<(option: Option<T>, query: string) => boolean>();\n debounceTime = input(250);\n\n // --- Events ---------------------------------------------------------------\n /** Debounced draft text, for async option lists. */\n query = output<string>();\n /** An option committed. */\n selected = output<Option<T>>();\n cleared = output<void>();\n /** A commit was refused (no match); the field reverted. */\n rejected = output<UniComboboxRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('field');\n private readonly listRef = viewChild<ElementRef<HTMLUListElement>>('listbox');\n /** Cancelled on destroy — a late tick would emit on a destroyed OutputRef. */\n private queryTimer?: ReturnType<typeof setTimeout>;\n\n constructor() {\n super();\n inject(DestroyRef).onDestroy(() => clearTimeout(this.queryTimer));\n }\n\n protected readonly srOnly = css(visuallyHidden);\n protected readonly announcement = signal('');\n\n /** null → the field shows the committed label; a string is an uncommitted draft. */\n protected readonly draft = signal<string | null>(null);\n\n /**\n * Popup visibility. Component-owned rather than `list.open()` — the shared\n * signal gates on `count() > 0`, which would hide the \"No matches\" row and\n * misreport `aria-expanded` over an empty filter.\n */\n protected readonly popupOpen = signal(false);\n\n /** Index in options() of the option matching value(), else -1. */\n protected readonly committedIndex = computed(() => {\n const value = this.value();\n if (value === null || value === undefined) return -1;\n return this.options().findIndex((option) => this.compareWith()(option.value, value));\n });\n\n /** A value with no matching option renders '' but is preserved — options may\n still be loading; the field self-heals when they arrive. */\n protected readonly committedLabel = computed(() => {\n const index = this.committedIndex();\n return index >= 0 ? this.options()[index].label : '';\n });\n\n protected readonly displayValue = computed(() => this.draft() ?? this.committedLabel());\n\n /** Indices into options() surviving the filter. The draft filters; the\n committed label does not — reopening always shows the full set. */\n protected readonly filteredIndices = computed<number[]>(() => {\n const query = this.draft();\n const all = this.options().map((_, index) => index);\n if (!this.filterLocally() || query === null || query === '') return all;\n const filter =\n this.filterWith() ??\n ((option: Option<T>, q: string) =>\n option.label.toLocaleLowerCase().includes(q.toLocaleLowerCase()));\n return all.filter((index) => filter(this.options()[index], query));\n });\n\n /** Shared combobox bookkeeping, in filtered-list positions — the fourth\n consumer of the contract behind search-input, tag-input and time-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.filteredIndices().length,\n idPrefix: 'uni-combobox-listbox',\n disabled: (position) => !!this.options()[this.filteredIndices()[position]]?.disabled,\n });\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n // --- Committing ------------------------------------------------------------\n\n private commit(optIndex: number): boolean {\n const option = this.options()[optIndex];\n if (!option || option.disabled) return false;\n this.value.set(option.value);\n this.draft.set(null);\n this.closeList();\n this.setFieldText(this.displayValue());\n this.announce(`${option.label} selected.`);\n this.selected.emit(option);\n return true;\n }\n\n protected clear(): void {\n this.value.set(null);\n this.draft.set(null);\n this.closeList();\n this.setFieldText('');\n this.announce('Selection cleared.');\n this.cleared.emit();\n this.inputRef().nativeElement.focus();\n }\n\n /**\n * Draft resolution, used by Enter, Tab and blur:\n * 1. an active option in the list → commit it;\n * 2. else a unique exact label match (locale-case-insensitive) → commit it;\n * 3. Enter only: the filter narrowed to exactly one enabled option → commit it\n * (on Enter the user can see the single candidate; on blur they're gone,\n * and committing a value they never saw confirmed is how forms grow\n * mystery data);\n * 4. else the caller keeps the list open (Enter) or reverts (Tab/blur).\n */\n private resolveDraft(enterOnly: boolean): boolean {\n const filtered = this.filteredIndices();\n const active = this.list.activeIndex();\n if (this.popupOpen() && active >= 0 && active < filtered.length) {\n return this.commit(filtered[active]);\n }\n const draft = this.draft();\n if (draft === null) return true;\n if (draft === '') {\n // An emptied field on Tab/blur is a deliberate \"no value\" — but only\n // clearable fields may null the model this way.\n if (this.clearable() && this.value() !== null && !enterOnly) {\n this.value.set(null);\n this.announce('Selection cleared.');\n this.cleared.emit();\n }\n this.draft.set(null);\n this.setFieldText(this.displayValue());\n return true;\n }\n const normalize = (text: string) => text.toLocaleLowerCase();\n const exact = this.options()\n .map((option, index) => ({ option, index }))\n .filter(\n ({ option }) => !option.disabled && normalize(option.label) === normalize(draft)\n );\n if (exact.length === 1) return this.commit(exact[0].index);\n if (enterOnly) {\n const enabled = filtered.filter((index) => !this.options()[index].disabled);\n if (enabled.length === 1) return this.commit(enabled[0]);\n }\n return false;\n }\n\n private revertDraft(): string | null {\n const draft = this.draft();\n if (draft === null) return null;\n this.draft.set(null);\n this.setFieldText(this.displayValue());\n return draft;\n }\n\n private reject(): void {\n const query = this.revertDraft();\n if (query) {\n this.announce(`No match for “${query}”.`);\n this.rejected.emit({ query });\n }\n }\n\n // --- Keyboard --------------------------------------------------------------\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (event.altKey) {\n // Alt+Down opens without activating; Alt+Up closes keeping the draft.\n if (event.key === 'ArrowDown') {\n if (!this.popupOpen()) this.openList(-1);\n } else {\n this.closeList();\n }\n return;\n }\n if (!this.popupOpen()) {\n this.popupOpen.set(true);\n this.list.show();\n if (event.key === 'ArrowDown') {\n const committed = this.committedFilteredPos();\n if (committed >= 0) {\n this.list.setActive(committed);\n this.scrollToActive();\n return;\n }\n }\n // Fall through: Down lands on the first enabled option, Up on the last.\n }\n if (this.list.navigate(event)) this.scrollToActive();\n return;\n }\n if (event.key === 'Home' || event.key === 'End') {\n // Only while the list is open — closed, they belong to the caret.\n if (this.popupOpen() && this.list.navigate(event)) this.scrollToActive();\n return;\n }\n switch (event.key) {\n case 'Enter':\n // Never submits a form while the list is open.\n if (this.popupOpen()) event.preventDefault();\n if (!this.resolveDraft(true)) {\n const count = this.filteredIndices().length;\n this.announce(\n count === 0 ? `${this.emptyText()}.` : `${count} results. Use the arrow keys.`\n );\n }\n return;\n case 'Escape':\n // One layer at a time: close the list, then revert the draft.\n // Never clears the committed value — Escape on a form control must\n // not be destructive.\n if (this.popupOpen()) this.closeList();\n else if (this.draft() !== null) this.revertDraft();\n return;\n case 'Tab':\n // Resolve rules 1–2 (never rule 3), then let focus move on.\n if (this.commitOnBlur() && !this.resolveDraft(false)) this.reject();\n this.closeList();\n }\n }\n\n protected onInput(): void {\n const text = this.inputRef().nativeElement.value;\n this.draft.set(text);\n this.popupOpen.set(true);\n this.list.show();\n // Typing never selects — rules 2/3 make Enter still work without arrowing.\n this.list.setActive(-1);\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(() => {\n this.query.emit(text);\n // Filtering is otherwise silent to a screen reader.\n if (this.filterLocally() && text !== '') {\n const count = this.filteredIndices().length;\n this.announce(\n count === 0 ? `${this.emptyText()}.` : `${count} result${count === 1 ? '' : 's'}.`\n );\n }\n }, this.debounceTime());\n }\n\n // --- Pointer ---------------------------------------------------------------\n\n /** Click-to-browse: pointer users get the select affordance. Focus alone\n never opens — Tab-through forms must not spray popups. */\n protected onFieldClick(): void {\n if (this.disabled() || this.popupOpen()) return;\n this.openList(this.committedFilteredPos());\n }\n\n protected onToggleMousedown(event: MouseEvent): void {\n event.preventDefault();\n if (this.disabled()) return;\n this.inputRef().nativeElement.focus();\n if (this.popupOpen()) this.closeList();\n else this.openList(this.committedFilteredPos());\n }\n\n protected onOptionClick(optIndex: number): void {\n if (this.options()[optIndex]?.disabled) return;\n this.commit(optIndex);\n this.inputRef().nativeElement.focus();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.touched.set(true);\n if (this.commitOnBlur() && !this.resolveDraft(false)) this.reject();\n else this.draft.set(null);\n this.closeList();\n }\n\n // --- Internals -------------------------------------------------------------\n\n /** Filtered position of the committed option when visible and enabled, else -1. */\n private committedFilteredPos(): number {\n const committed = this.committedIndex();\n if (committed < 0 || this.options()[committed].disabled) return -1;\n return this.filteredIndices().indexOf(committed);\n }\n\n private openList(activeFilteredPos: number): void {\n this.popupOpen.set(true);\n this.list.show();\n this.list.setActive(activeFilteredPos);\n this.scrollToActive();\n }\n\n private closeList(): void {\n this.popupOpen.set(false);\n this.list.hide();\n }\n\n private scrollToActive(): void {\n const position = this.list.activeIndex();\n if (position < 0) return;\n queueMicrotask(() =>\n this.listRef()?.nativeElement.children[position]?.scrollIntoView?.({ block: 'nearest' })\n );\n }\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\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 // --- Styling ----------------------------------------------------------------\n\n protected readonly className = computed(() =>\n css({ display: 'block', position: 'relative', width: this.width() })\n );\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() =>\n css({\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n })\n );\n\n /** Pointer-only affordance: keyboard already has ArrowDown, and the input\n itself announces expanded state. */\n protected readonly toggleClass = computed(() =>\n css({\n flex: 'none',\n width: 28,\n height: 28,\n display: 'grid',\n placeItems: 'center',\n border: 0,\n padding: 0,\n background: 'transparent',\n cursor: this.disabled() ? 'not-allowed' : 'pointer',\n ...this.theme.color('on-background-variant'),\n '& uni-icon': {\n ...motionSafe({ transition: 'transform 0.15s ease' }),\n transform: this.popupOpen() ? 'rotate(180deg)' : 'none',\n },\n })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css([\n listboxPopupStyles(this.theme, options, {\n // A scroll height, never a cap: a closed-set control must not render a\n // reachable-by-keyboard-only subset (contrast searchInput.maxSuggestions).\n maxHeight: (options.maxVisibleOptions ?? 8) * 36 + 8,\n }),\n {\n '& [role=\"option\"]': {\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n minHeight: 36,\n boxSizing: 'border-box',\n padding: '5px 10px',\n '&.active, &:not([aria-disabled=\"true\"]):hover': {\n '& .check': { color: 'inherit' },\n '& .desc': { color: 'inherit', opacity: 0.8 },\n },\n '&[aria-disabled=\"true\"]': {\n ...this.theme.color('on-disabled'),\n cursor: 'not-allowed',\n '& .desc': { color: 'inherit' },\n },\n },\n // Fixed-width check column so labels align with or without the icon.\n '& .check': { flex: 'none', width: 18, ...this.theme.color('primary') },\n '& .text': { minWidth: 0, flex: 1, display: 'flex', alignItems: 'baseline', gap: 8 },\n '& .option-label': { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\n '& .desc': {\n marginLeft: 'auto',\n whiteSpace: 'nowrap',\n fontSize: '0.85em',\n ...this.theme.color(options.descriptionColor ?? 'on-primary-surface-variant'),\n },\n '& .empty': {\n padding: 10,\n ...this.theme.typeface('label'),\n ...this.theme.color(options.descriptionColor ?? 'on-primary-surface-variant'),\n },\n },\n ]);\n });\n}\n","<!-- Focusout rides the bubbling event so the list closes and the draft\n resolves only when focus leaves the whole field. -->\n<div (focusout)=\"onFocusOut($event)\">\n <uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\">\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n aria-autocomplete=\"list\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder() ?? ''\"\n [value]=\"displayValue()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-expanded]=\"popupOpen()\"\n [attr.aria-controls]=\"list.listboxId\"\n [attr.aria-activedescendant]=\"list.activeDescendantId()\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onKeydown($event)\"\n (input)=\"onInput()\"\n (click)=\"onFieldClick()\"\n />\n @if (clearable() && value() !== null && !disabled()) {\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n [iconName]=\"componentOptions().clearIcon ?? 'close'\"\n (click)=\"clear()\"\n >\n Clear {{ label() }}\n </button>\n }\n <!-- Pointer-only: keyboard has ArrowDown, the input announces expanded. -->\n <button\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [class]=\"toggleClass()\"\n [disabled]=\"disabled()\"\n (mousedown)=\"onToggleMousedown($event)\"\n >\n <uni-icon [name]=\"componentOptions().toggleIcon ?? 'chevronDown'\" size=\"20\" />\n </button>\n </div>\n </uni-input-box>\n\n @if (popupOpen()) {\n <ul #listbox [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @if (filteredIndices().length === 0) {\n <!-- Non-interactive: not an option, not navigable, no id. -->\n <li class=\"empty\">{{ emptyText() }}</li>\n } @else {\n @for (optIndex of filteredIndices(); track optIndex; let i = $index) {\n <!-- aria-selected marks the *committed* option; the active one is\n carried by aria-activedescendant — they are different facts. -->\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]=\"optIndex === committedIndex()\"\n [attr.aria-disabled]=\"options()[optIndex].disabled ? true : null\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onOptionClick(optIndex)\"\n >\n <span class=\"check\" aria-hidden=\"true\">\n @if (optIndex === committedIndex()) {\n <uni-icon [name]=\"componentOptions().selectedIcon ?? 'check'\" size=\"18\" />\n }\n </span>\n <span class=\"text\">\n <span class=\"option-label\">{{ options()[optIndex].label }}</span>\n @if (options()[optIndex].description) {\n <span class=\"desc\">{{ options()[optIndex].description }}</span>\n }\n </span>\n </li>\n }\n }\n </ul>\n }\n\n <!-- Commits, clears, refusals and result counts are otherwise silent. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\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.columnDef) {\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 <!-- track $index: records are arbitrary consumer objects, typically\n re-fetched as fresh references — identity tracking recreated\n every row (NG0956). Row expansion is index-addressed already. -->\n @for (record of ds.records(); track $index; 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.columnDef) {\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 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 { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n addDays,\n formatDate,\n localeDatePlaceholder,\n monthOf,\n parseDateText,\n todayIso,\n visuallyHidden,\n type UniDate,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniCalendarComponent } from '../calendar/calendar.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDropdownComponent } from '../dropdown/dropdown.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniDateInputOptions, UniDateInputRejection } from './date-input.model';\n\n/**\n * Date field with free-typed parsing and a popup calendar. Type `aug 20`,\n * `8/20/2026` or `2026-08-20`, or pick from the grid — the form gets the\n * same canonical `'YYYY-MM-DD'` string either way. Parsing is `Intl`-driven\n * (locale digit order and month names, never hardcoded); unreadable text\n * stays in the field, flagged, with a `rejected` event. The popup is a\n * native popover hosting the same `uni-calendar` an app could render inline.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-input, DateInput',\n imports: [\n NgTemplateOutlet,\n UniCalendarComponent,\n UniDropdownComponent,\n UniIconButtonComponent,\n UniInputBoxComponent,\n ],\n templateUrl: './date-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniDateInputComponent\n extends BaseComponent<UniDateInputOptions>\n implements FormValueControl<UniDate | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDate | undefined>();\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. \"Appointment date\". */\n label = input.required<string>();\n /** Defaults to the locale's digit pattern, e.g. `MM/DD/YYYY`. */\n placeholder = input<string>();\n /** How the committed value renders, e.g. `{ dateStyle: 'long' }`. */\n displayFormat = input<Intl.DateTimeFormatOptions>({ dateStyle: 'medium' });\n /** BCP 47 tag; defaults to the document language, then the browser's. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Custom parser, replacing the built-in ISO/locale/month-name parsing. */\n parse = input<(raw: string, locale: string) => UniDate | null>();\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Forwarded to the popup calendar --------------------------------------\n minDate = input<UniDate>();\n maxDate = input<UniDate>();\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n\n // --- Events ----------------------------------------------------------------\n /** Popup shown. */\n opened = output<void>();\n /** Popup hidden. */\n closed = output<void>();\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniDateInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n // #toggle sits on the icon-button component, so read the element explicitly.\n private readonly toggleRef = viewChild('toggle', { read: ElementRef });\n private readonly popupRef = viewChild<ElementRef<HTMLElement>>('popupDialog');\n private readonly dropdown = viewChild(UniDropdownComponent);\n private readonly calendar = viewChild(UniCalendarComponent);\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly toggleElement = computed(() => this.toggleRef()?.nativeElement);\n protected readonly popupOpen = computed(() => this.dropdown()?.showing() ?? false);\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? formatDate(value, this.resolvedLocale(), this.displayFormat()) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? localeDatePlaceholder(this.resolvedLocale())\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected readonly toggleLabel = computed(() => {\n const value = this.value();\n return value\n ? `Change date, ${formatDate(value, this.resolvedLocale(), { dateStyle: 'full' })}`\n : 'Choose date';\n });\n\n // --- Committing -------------------------------------------------------------\n\n private fullDate(date: UniDate): string {\n return formatDate(date, this.resolvedLocale(), { dateStyle: 'full' });\n }\n\n private isDayBlocked(date: UniDate): boolean {\n const dates = this.disabledDates();\n if (!dates) return false;\n return Array.isArray(dates) ? dates.includes(date) : dates(date);\n }\n\n protected setValue(date: UniDate | undefined, silent = false): void {\n this.value.set(date);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(date ? `${this.fullDate(date)}.` : 'Date cleared.');\n }\n\n private refuse(raw: string, reason: UniDateInputRejection['reason']): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${raw}” as a date.`,\n 'out-of-range': `${raw} is outside the allowed dates.`,\n disabled: `${raw} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n const custom = this.parse();\n const parsed = custom\n ? custom(trimmed, this.resolvedLocale())\n : parseDateText(trimmed, this.resolvedLocale());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && parsed < min) || (max && parsed > max)) {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n if (this.isDayBlocked(parsed)) {\n this.refuse(trimmed, 'disabled');\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±1 day, skipping blocked days, stopping at fences. */\n private step(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n let date = addDays(committed, direction);\n let guard = 0;\n while (this.isDayBlocked(date) && guard++ < 400) date = addDays(date, direction);\n const min = this.minDate();\n const max = this.maxDate();\n if ((min && date < min) || (max && date > max)) return; // fence\n this.setValue(date);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.commit(element.value);\n break;\n case 'Escape':\n if (this.popupOpen()) {\n this.closePopup();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n // Alt or an empty field opens the popup; on a committed value the\n // caret has nowhere to go, so stepping is what a spinner would do.\n if (event.altKey || element.value.trim() === '') this.openPopup();\n else if (this.value() && element.value === this.displayText()) this.step(-1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.value() && element.value === this.displayText()) this.step(1);\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.touched.set(true);\n if (this.popupOpen()) return;\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Popup ---------------------------------------------------------------------\n\n protected openPopup(): void {\n if (this.disabled() || this.popupOpen()) return;\n this.dropdown()?.toggleDropdown();\n }\n\n protected closePopup(): void {\n if (this.popupOpen()) this.dropdown()?.hideDropdown();\n }\n\n protected onPopupShowing(): void {\n // The grid opens on the committed value's month (or today's). Falsy\n // guard: a bound '' counts as no value, like everywhere else.\n this.calendar()?.month.set(monthOf(this.value() || todayIso()));\n this.calendar()?.focusActiveDay();\n this.opened.emit();\n }\n\n protected onPopupHiding(): void {\n this.closed.emit();\n // Focus returns to the field (not the toggle) when it was in the popup —\n // this runs before the dropdown's own restoreFocus, which then no-ops.\n const active = document.activeElement;\n const popup = this.popupRef()?.nativeElement;\n if (!active || active === document.body || (popup && popup.contains(active)))\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onCalendarPick(date: UniDate): void {\n this.setValue(date);\n this.closePopup();\n }\n\n /** The popup is a focus-holding dialog: Tab cycles inside it (APG pattern). */\n protected onPopupKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closePopup();\n return;\n }\n if (event.key !== 'Tab') return;\n const popup = this.popupRef()?.nativeElement;\n if (!popup) return;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLButtonElement>('button:not(:disabled)')\n ).filter((button) => button.tabIndex >= 0);\n if (!focusables.length) return;\n const index = focusables.indexOf(document.activeElement as HTMLButtonElement);\n const next =\n focusables[(index + (event.shiftKey ? -1 : 1) + focusables.length) % focusables.length];\n event.preventDefault();\n next.focus();\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 },\n this.draftInvalid() && { color: colors['warn'] },\n ]);\n });\n}\n","<!-- Focusout rides the bubbling event so commits happen only when focus\n leaves the whole field, not while moving into the popup. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <!-- The dropdown wires aria-haspopup/aria-expanded/aria-controls onto\n this button; its name tracks the value (\"Change date, …\"). -->\n <button\n #toggle\n icon-button\n type=\"button\"\n size=\"sm\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'calendar_month'\"\n [disable]=\"disabled()\"\n >\n {{ toggleLabel() }}\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (toggleElement()) {\n <uni-dropdown\n [trigger]=\"toggleElement()!\"\n ariaHasPopup=\"dialog\"\n placement=\"bottom-end\"\n [color]=\"componentOptions().popupColor ?? 'primary-surface'\"\n [shadow]=\"componentOptions().popupShadow ?? 'menu'\"\n [borderRadius]=\"componentOptions().popupBorderRadius ?? 'xs'\"\n paddingVertical=\"xs\"\n paddingHorizontal=\"xs\"\n (dropdownShowing)=\"onPopupShowing()\"\n (dropdownHiding)=\"onPopupHiding()\"\n >\n <!-- A focus-holding dialog per the APG date-picker pattern: Tab cycles\n inside, Escape closes and returns focus to the field. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div #popupDialog role=\"dialog\" aria-label=\"Choose date\" (keydown)=\"onPopupKeydown($event)\">\n <uni-calendar\n mode=\"single\"\n [value]=\"value()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n (selected)=\"onCalendarPick($event)\"\n />\n </div>\n </uni-dropdown>\n }\n\n <!-- Commits, steps and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n createListboxNavigation,\n formatTime,\n localeDefaultHour12,\n parseTimeText,\n timeSlots,\n visuallyHidden,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { listboxPopupStyles } from '../forms/listbox-popup';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport type { UniTimeInputOptions, UniTimeInputRejection } from './time-input.model';\n\nconst toMinutes = (time: UniTime): number => {\n const [h, m] = time.split(':').map(Number);\n return h * 60 + m;\n};\n\nconst fromMinutes = (minutes: number): UniTime =>\n `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;\n\n/**\n * Time field: a combobox over time options — the same listbox contract as\n * uni-search-input and uni-tag-input. Type `3p`, `930` or `15:00`, or pick\n * `3:00 PM` from the list; the form always gets 24-hour `'HH:mm'` (`hour12`\n * affects display only). The list is assistive, not exhaustive: any\n * parseable time commits, unless `slots` pins the choices (a slot picker) —\n * then a typed time must match one. Unreadable or unavailable text stays in\n * the field, flagged, with a `rejected` event.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-time-input, TimeInput',\n imports: [NgTemplateOutlet, UniIconButtonComponent, UniInputBoxComponent],\n templateUrl: './time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'timeInput' }],\n host: { '[class]': 'className()' },\n})\nexport class UniTimeInputComponent\n extends BaseComponent<UniTimeInputOptions>\n implements FormValueControl<UniTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniTime | undefined>();\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. \"Start time\". */\n label = input.required<string>();\n placeholder = input<string>();\n /** Generated list granularity, in minutes. */\n minuteStep = input(30);\n /** Earliest allowed time (inclusive), `'09:00'`. */\n minTime = input<UniTime>();\n /** Latest allowed time (inclusive), `'17:00'`. */\n maxTime = input<UniTime>();\n /** Exact allowed times (scheduling). When set, typed entry must match one. */\n slots = input<UniTime[]>();\n /** 12-hour display; defaults from the locale. The value stays 24-hour. */\n hour12 = input<boolean>();\n /** BCP 47 tag for the display format; defaults to the document language. */\n locale = input<string>();\n commitOnBlur = input(true);\n /** Renders without its own input-box chrome, for composers like uni-date-time-input. */\n embedded = input(false);\n\n // --- Events ----------------------------------------------------------------\n /** A typed commit was refused; the raw text stays in the field. */\n rejected = output<UniTimeInputRejection>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('field');\n private readonly listRef = viewChild<ElementRef<HTMLUListElement>>('listbox');\n\n protected readonly srOnly = css(visuallyHidden);\n /** A refused commit — styles the field and sets aria-invalid until edited. */\n protected readonly draftInvalid = signal(false);\n protected readonly announcement = signal('');\n\n protected readonly resolvedLocale = computed(\n () => this.locale() ?? (document.documentElement.lang || navigator.language || 'en-US')\n );\n\n protected readonly resolvedHour12 = computed(\n () => this.hour12() ?? localeDefaultHour12(this.resolvedLocale())\n );\n\n /** The listed times: pinned `slots` verbatim, else the generated step grid. */\n protected readonly options = computed(\n () => this.slots() ?? timeSlots(this.minuteStep(), this.minTime(), this.maxTime())\n );\n\n protected readonly optionLabels = computed(() =>\n this.options().map((time) => this.formatValue(time))\n );\n\n /** Shared combobox bookkeeping — identical contract to uni-search-input. */\n protected readonly list = createListboxNavigation({\n count: () => this.options().length,\n idPrefix: 'uni-time-listbox',\n });\n\n protected readonly displayText = computed(() => {\n const value = this.value();\n return value ? this.formatValue(value) : '';\n });\n\n protected readonly resolvedPlaceholder = computed(\n () => this.placeholder() ?? this.formatValue('09:00')\n );\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n protected formatValue(time: UniTime): string {\n return formatTime(time, this.resolvedLocale(), this.resolvedHour12());\n }\n\n // --- Committing -------------------------------------------------------------\n\n protected setValue(time: UniTime | undefined, silent = false): void {\n this.value.set(time);\n this.draftInvalid.set(false);\n this.setFieldText(this.displayText());\n if (!silent) this.announce(time ? `${this.formatValue(time)}.` : 'Time cleared.');\n }\n\n private refuse(raw: string, reason: UniTimeInputRejection['reason'], shown = raw): void {\n this.draftInvalid.set(true);\n const message = {\n unparseable: `Couldn't read “${shown}” as a time.`,\n 'out-of-range': `${shown} is outside the allowed times.`,\n unavailable: `${shown} isn't available.`,\n }[reason];\n this.announce(message);\n this.rejected.emit({ raw, reason });\n }\n\n protected commit(raw: string): boolean {\n const trimmed = raw.trim();\n if (!trimmed) {\n this.setValue(undefined);\n return true;\n }\n let parsed = parseTimeText(trimmed, this.resolvedHour12());\n if (!parsed) {\n this.refuse(trimmed, 'unparseable');\n return false;\n }\n const min = this.minTime();\n const max = this.maxTime();\n const inBounds = (time: UniTime) => !(min && time < min) && !(max && time > max);\n const slots = this.slots();\n if (!slots && !inBounds(parsed)) {\n // The PM bias yields if it pushed the time out of bounds.\n const unbiased = parseTimeText(trimmed, false);\n if (unbiased && inBounds(unbiased)) parsed = unbiased;\n else {\n this.refuse(trimmed, 'out-of-range');\n return false;\n }\n }\n if (slots && !slots.includes(parsed)) {\n // Announce the formatted time — \"5:00 PM isn't available.\"\n this.refuse(trimmed, 'unavailable', this.formatValue(parsed));\n return false;\n }\n this.setValue(parsed);\n return true;\n }\n\n /** Step a committed value ±minuteStep (±1 slot when pinned), clamped. */\n private stepValue(direction: 1 | -1): void {\n const committed = this.value();\n if (!committed) return;\n const slots = this.slots();\n if (slots?.length) {\n const sorted = [...slots].sort();\n const index = sorted.indexOf(committed);\n const next =\n index >= 0\n ? sorted[index + direction]\n : direction > 0\n ? sorted.find((slot) => slot > committed)\n : [...sorted].reverse().find((slot) => slot < committed);\n if (next) this.setValue(next);\n return;\n }\n const step = this.minuteStep();\n const current = toMinutes(committed);\n const snapped =\n direction > 0\n ? Math.floor(current / step) * step + step\n : Math.ceil(current / step) * step - step;\n if (snapped < 0 || snapped >= 24 * 60) return;\n const candidate = fromMinutes(snapped);\n const min = this.minTime();\n const max = this.maxTime();\n if ((min && candidate < min) || (max && candidate > max)) return; // fence\n this.setValue(candidate);\n }\n\n // --- Keyboard ----------------------------------------------------------------\n\n protected onInputKeydown(event: KeyboardEvent): void {\n const element = this.inputRef()!.nativeElement;\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n event.preventDefault();\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n // A committed value with the list closed steps like a spinner —\n // ArrowUp means later, like the date field's ArrowUp means tomorrow —\n // while the list opens from an empty or edited field (or the toggle).\n if (!this.list.open() && this.value() && element.value === this.displayText()) {\n this.stepValue(direction === 1 ? -1 : 1);\n break;\n }\n if (!this.list.open()) {\n this.openList();\n if (this.list.activeIndex() < 0)\n this.list.setActive(direction === 1 ? 0 : this.options().length - 1);\n } else {\n const count = this.options().length;\n this.list.setActive((this.list.activeIndex() + direction + count) % count);\n }\n this.scrollToActive();\n break;\n }\n case 'Enter': {\n event.preventDefault();\n const active = this.list.activeIndex();\n if (this.list.open() && active >= 0) this.setValue(this.options()[active]);\n else this.commit(element.value);\n this.list.hide();\n break;\n }\n case 'Escape':\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.setFieldText(this.displayText());\n this.draftInvalid.set(false);\n }\n break;\n case 'Tab':\n // Never trap: commit what is typed, then let focus move on.\n if (element.value.trim() && element.value !== this.displayText())\n this.commit(element.value);\n this.list.hide();\n break;\n }\n }\n\n protected onInput(): void {\n this.draftInvalid.set(false);\n // Typing never selects an option — Enter must commit the draft, not\n // whatever happens to sit nearest; the list only scrolls alongside.\n this.list.show();\n this.list.setActive(-1);\n const parsed = parseTimeText(this.inputRef()!.nativeElement.value, this.resolvedHour12());\n if (parsed) {\n const options = this.options();\n let nearest = options.findIndex((time) => time >= parsed);\n if (nearest < 0) nearest = options.length - 1;\n this.scrollToIndex(nearest);\n }\n }\n\n protected onToggle(): void {\n if (this.list.open()) {\n this.list.hide();\n } else {\n this.openList();\n this.inputRef()?.nativeElement.focus();\n }\n }\n\n protected selectOption(time: UniTime): void {\n this.setValue(time);\n this.list.hide();\n this.inputRef()?.nativeElement.focus();\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this.host.nativeElement.contains(next)) return;\n this.list.hide();\n this.touched.set(true);\n const element = this.inputRef()?.nativeElement;\n if (element && this.commitOnBlur() && element.value !== this.displayText())\n this.commit(element.value);\n }\n\n // --- Internals -------------------------------------------------------------------\n\n private openList(): void {\n this.list.show();\n const committed = this.value();\n if (committed) this.list.setActive(this.options().indexOf(committed));\n this.scrollToActive();\n }\n\n private scrollToActive(): void {\n this.scrollToIndex(this.list.activeIndex());\n }\n\n private scrollToIndex(index: number): void {\n if (index < 0) return;\n queueMicrotask(() =>\n this.listRef()?.nativeElement.children[index]?.scrollIntoView?.({ block: 'nearest' })\n );\n }\n\n private setFieldText(text: string): void {\n const element = this.inputRef()?.nativeElement;\n if (element) element.value = text;\n }\n\n private announce(message: string): void {\n this.announcement.set(this.announcement() === message ? `${message} ` : message);\n }\n\n // --- Styling -----------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block', position: 'relative' }));\n\n protected readonly rowClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, width: '100%', minWidth: 0 })\n );\n\n protected readonly inputClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css([\n {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 'none',\n background: 'transparent',\n color: 'inherit',\n font: 'inherit',\n },\n this.draftInvalid() && {\n color: colors['warn'],\n // Shape and colour, not colour alone (WCAG 1.4.1).\n textDecoration: `underline dashed ${colors['warn']} 1.5px`,\n textUnderlineOffset: 3,\n },\n ]);\n });\n\n protected readonly toggleWrapClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', ...this.theme.paddingRight('xxs') })\n );\n\n /** Embedded mode: the composer owns the box; keep only the flex row. */\n protected readonly embeddedClass = computed(() =>\n css({ display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 })\n );\n\n protected readonly listClass = computed(() => {\n const options = this.componentOptions();\n return css(\n listboxPopupStyles(this.theme, options, {\n maxHeight: (options.maxVisibleOptions ?? 7) * 36,\n })\n );\n });\n}\n","<!-- Focusout rides the bubbling event so the list closes and the draft\n commits only when focus leaves the whole field. -->\n<div (focusout)=\"onFocusOut($event)\">\n <ng-template #parts>\n <input\n #field\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n aria-autocomplete=\"list\"\n [class]=\"inputClass()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [value]=\"displayText()\"\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]=\"ariaDescribedBy() ?? null\"\n [attr.aria-invalid]=\"showError() || draftInvalid() ? true : null\"\n [attr.aria-required]=\"required() ? true : null\"\n (keydown)=\"onInputKeydown($event)\"\n (input)=\"onInput()\"\n />\n <span [class]=\"toggleWrapClass()\">\n <button\n icon-button\n type=\"button\"\n size=\"sm\"\n aria-haspopup=\"listbox\"\n [symbolName]=\"componentOptions().toggleSymbol ?? 'schedule'\"\n [attr.aria-expanded]=\"list.open()\"\n [disable]=\"disabled()\"\n (click)=\"onToggle()\"\n >\n Choose time\n </button>\n </span>\n </ng-template>\n\n @if (embedded()) {\n <!-- A composer (uni-date-time-input) owns the field chrome. -->\n <div [class]=\"embeddedClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n } @else {\n <uni-input-box [error]=\"showError() || draftInvalid()\" [disabled]=\"disabled()\">\n <div [class]=\"rowClass()\"><ng-container [ngTemplateOutlet]=\"parts\" /></div>\n </uni-input-box>\n }\n\n @if (list.open()) {\n <ul #listbox [id]=\"list.listboxId\" role=\"listbox\" [attr.aria-label]=\"label()\" [class]=\"listClass()\">\n @for (time of options(); track time; 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]=\"time === value()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(time)\"\n >\n {{ optionLabels()[i] }}\n </li>\n }\n </ul>\n }\n\n <!-- Commits and rejections are otherwise a silent reformat. -->\n <span role=\"status\" aria-live=\"polite\" [class]=\"srOnly\">{{ announcement() }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { css } from '@emotion/css';\n\nimport {\n joinDateTime,\n splitDateTime,\n type UniDate,\n type UniDateTime,\n type UniTime,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport type { UniCalendarMarker } from '../calendar/calendar.model';\nimport { UniDateInputComponent } from '../date-input/date-input.component';\nimport { UniInputBoxComponent } from '../input-box/input-box.component';\nimport { UniTimeInputComponent } from '../time-input/time-input.component';\nimport type { UniDateTimeInputOptions } from './date-time-input.model';\n\ninterface DateTimeParts {\n date?: UniDate;\n time?: UniTime;\n}\n\n/**\n * One field for a date and a time: a thin composer seating a uni-date-input\n * and a uni-time-input in one input-box chrome under one label, yielding one\n * combined `'YYYY-MM-DDTHH:mm'` value. The value emits only when both parts\n * are set — a time without a day is not an answer — and clearing the date\n * clears it. With `slotsFor`, the time part stays disabled until a day is\n * chosen and offers exactly that day's slots: the scheduling flow in one\n * attribute. Two honest tab stops (it is two questions); apps needing a\n * different arrangement compose the primitives directly.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-date-time-input, DateTimeInput',\n imports: [UniDateInputComponent, UniInputBoxComponent, UniTimeInputComponent],\n templateUrl: './date-time-input.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'dateTimeInput' }],\n host: { '[class]': 'className()', '(focusout)': 'onHostFocusOut($event)' },\n})\nexport class UniDateTimeInputComponent\n extends BaseComponent<UniDateTimeInputOptions>\n implements FormValueControl<UniDateTime | undefined>\n{\n // --- Signal Forms block (explicit per AGENTS.md, not a base class) --------\n readonly value = model<UniDateTime | undefined>();\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 /** Names the group; the parts are announced as \"Date\" and \"Time\" under it. */\n label = input.required<string>();\n /** Earliest allowed moment; the date and time fences are split from it. */\n minDateTime = input<UniDateTime>();\n /** Latest allowed moment; the date and time fences are split from it. */\n maxDateTime = input<UniDateTime>();\n\n // --- Forwarded wholesale ----------------------------------------------------\n disabledDates = input<UniDate[] | ((date: UniDate) => boolean)>();\n markers = input<UniCalendarMarker[]>([]);\n /** Fixed time choices; superseded per-day by `slotsFor` when that is set. */\n slots = input<UniTime[]>();\n minuteStep = input(30);\n hour12 = input<boolean>();\n weekStart = input<0 | 1 | 2 | 3 | 4 | 5 | 6>();\n locale = input<string>();\n /** Scheduling: the day's available times. Gates the time part on a date. */\n slotsFor = input<(date: UniDate) => UniTime[]>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * The two part-values. An external `value` write re-derives both; an\n * internal partial state (a date without a time round-trips through\n * `undefined`) must not be wiped by its own echo.\n */\n private readonly parts = linkedSignal<UniDateTime | undefined, DateTimeParts>({\n source: this.value,\n computation: (value, previous) => {\n if (value) return splitDateTime(value);\n const kept = previous?.value;\n if (kept && joinDateTime(kept.date, kept.time) === undefined) return kept;\n return {};\n },\n });\n\n protected readonly dateValue = computed(() => this.parts().date);\n protected readonly timeValue = computed(() => this.parts().time);\n\n protected readonly showError = computed(() => this.invalid() && (this.touched() || this.dirty()));\n\n private readonly minParts = computed(() => splitDateTime(this.minDateTime()));\n private readonly maxParts = computed(() => splitDateTime(this.maxDateTime()));\n\n protected readonly dateMin = computed(() => this.minParts().date);\n protected readonly dateMax = computed(() => this.maxParts().date);\n\n // The time fence applies only on the boundary date itself — 'after 9:00'\n // on the min date, any time on later days.\n protected readonly timeMin = computed(() => {\n const { date, time } = this.minParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n protected readonly timeMax = computed(() => {\n const { date, time } = this.maxParts();\n return time && date && this.dateValue() === date ? time : undefined;\n });\n\n /** The chosen day's slots when `slotsFor` is set, else the fixed list. */\n protected readonly effectiveSlots = computed(() => {\n const slotsFor = this.slotsFor();\n if (!slotsFor) return this.slots();\n const date = this.dateValue();\n return date ? slotsFor(date) : [];\n });\n\n protected readonly timeDisabled = computed(\n () => this.disabled() || (!!this.slotsFor() && !this.dateValue())\n );\n\n // --- Part plumbing -----------------------------------------------------------\n\n protected onDatePartChange(date: UniDate | undefined): void {\n let time = this.parts().time;\n if (!date) {\n time = undefined; // clearing the date clears the combined value\n } else {\n const slotsFor = this.slotsFor();\n // Changing the day clears a slot that no longer exists.\n if (slotsFor && time && !slotsFor(date).includes(time)) time = undefined;\n }\n this.setParts({ date, time });\n }\n\n protected onTimePartChange(time: UniTime | undefined): void {\n this.setParts({ date: this.parts().date, time });\n }\n\n private setParts(parts: DateTimeParts): void {\n this.parts.set(parts);\n this.value.set(joinDateTime(parts.date, parts.time));\n }\n\n protected onHostFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.host.nativeElement.contains(next)) this.touched.set(true);\n }\n\n // --- Styling --------------------------------------------------------------------\n\n protected readonly className = computed(() => css({ display: 'block' }));\n\n protected readonly groupClass = computed(() =>\n css({\n display: 'flex',\n alignItems: 'stretch',\n flex: 1,\n width: '100%',\n minWidth: 0,\n ...this.theme.gap(this.componentOptions().partGap ?? 'sm'),\n })\n );\n\n protected readonly datePartClass = computed(() =>\n css({ flex: 1.4, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly timePartClass = computed(() =>\n css({ flex: 1, minWidth: 0, display: 'flex', '& > *': { flex: 1, minWidth: 0 } })\n );\n\n protected readonly dividerClass = computed(() => {\n const colors = this.theme.colorPalette();\n return css({\n width: 1,\n alignSelf: 'stretch',\n flex: 'none',\n backgroundColor: colors[this.componentOptions().dividerColor ?? 'outline'],\n });\n });\n}\n","<!-- One field chrome for both parts; the parts render embedded (no box of\n their own), so error/disabled/focus states stay consistent with every\n other field. Tab order: date, then time — two honest tab stops. -->\n<uni-input-box [error]=\"showError()\" [disabled]=\"disabled()\">\n <div role=\"group\" [attr.aria-label]=\"label()\" [class]=\"groupClass()\">\n <div [class]=\"datePartClass()\">\n <uni-date-input\n [embedded]=\"true\"\n label=\"Date\"\n [value]=\"dateValue()\"\n [minDate]=\"dateMin()\"\n [maxDate]=\"dateMax()\"\n [disabledDates]=\"disabledDates()\"\n [markers]=\"markers()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n [disabled]=\"disabled()\"\n [ariaDescribedBy]=\"ariaDescribedBy()\"\n (valueChange)=\"onDatePartChange($event)\"\n />\n </div>\n <div [class]=\"dividerClass()\"></div>\n <div [class]=\"timePartClass()\">\n <uni-time-input\n [embedded]=\"true\"\n label=\"Time\"\n [value]=\"timeValue()\"\n [minTime]=\"timeMin()\"\n [maxTime]=\"timeMax()\"\n [slots]=\"effectiveSlots()\"\n [minuteStep]=\"minuteStep()\"\n [hour12]=\"hour12()\"\n [locale]=\"locale()\"\n [disabled]=\"timeDisabled()\"\n (valueChange)=\"onTimePartChange($event)\"\n />\n </div>\n </div>\n</uni-input-box>\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 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 {\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 <!-- track $index: items carry no stable key (template items have no\n label, labels may repeat, dividers have neither) and consumers\n naturally rebuild the array each CD pass — identity tracking\n recreated every node and tripped NG0956. -->\n @for (item of menuItems(); track $index) {\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 <!-- track $index: option values may be objects and consumers rebuild the\n array, so identity tracking recreated every node (NG0956). -->\n @for (option of options(); track $index) {\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 // A theme may omit `offset`; without the fallback this concatenates to\n // the invalid length 'undefinedpx' and the badge loses its position.\n const offset = (this.componentOptions().offset ?? 0) + '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 DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Renderer2,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport {\n anchorArrowStyles,\n anchorStyles,\n clearAnchorName,\n discreteOverlayTransition,\n FOCUSABLE_SELECTOR,\n isToggleOpen,\n newAnchorName,\n resolveElement,\n resolveFocusTarget,\n restoreOverlayFocus,\n setAnchorName,\n uniqueId,\n useTimer,\n type Placement,\n} from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniIconButtonComponent } from '../icon-button/icon-button.component';\nimport type { UniPopoverOptions } from './popover.model';\n\ndeclare const ngDevMode: boolean | undefined;\n\n/**\n * Anchored, top-layer panel on the native `popover` element — the browser owns\n * positioning (CSS anchor positioning), stacking, and, in rich mode, light\n * dismissal. Two modes share one implementation:\n *\n * - `rich` (default): a click-toggled disclosure. The projected `[trigger]`\n * carries `aria-expanded`/`aria-controls`; with no trigger content the app\n * drives `open` and no element claims controller ARIA. Focus stays on the\n * trigger (APG disclosure) unless the panel marks an `[autofocus]` field,\n * and returns to the trigger on close.\n * - `tooltip`: hover/focus-triggered, `role=\"tooltip\"` + `aria-describedby`,\n * WCAG 1.4.13 dismissable/hoverable/persistent. Content must not contain\n * focusable elements.\n *\n * Anchoring and control are separate: `anchor` re-anchors the panel to any\n * element (or id) while the trigger keeps the disclosure semantics.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-popover',\n imports: [UniIconButtonComponent],\n templateUrl: './popover.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'popover' }],\n})\nexport class UniPopoverComponent extends BaseComponent<UniPopoverOptions> {\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n\n placement = input<Placement>('bottom');\n\n /** Light-dismiss on outside click / Escape (native popover=\"auto\"). */\n autoClose = input(true);\n\n /** Two-way open state; light dismissal and hover timers sync back into it. */\n open = model(false);\n\n /** `rich` = click-toggled disclosure; `tooltip` = hover/focus description. */\n mode = input<'rich' | 'tooltip'>('rich');\n\n /**\n * Anchor the panel to another element (or element id, resolved each time\n * the panel opens) while the projected trigger keeps the disclosure ARIA.\n * Empty string means unset.\n */\n anchor = input<HTMLElement | string>();\n\n /** Title rendered in the header row and used as the accessible name. */\n header = input<string>();\n\n /** Renders a \"Close\" icon button in the header row. */\n closable = input(false);\n\n arrow = input(true);\n\n /** Panel max-width; numbers are px. Defaults to the theme's `maxWidth`. */\n maxWidth = input<string | number>();\n\n /** Tooltip-mode hover-open delay, ms; defaults to the theme option. */\n openDelay = input<number>();\n\n /** Tooltip-mode pointer-leave close delay, ms; defaults to the theme option. */\n closeDelay = input<number>();\n\n opened = output<void>();\n closed = output<void>();\n\n readonly panelId = uniqueId('uni-popover');\n protected readonly headerId = uniqueId('uni-popover-header');\n private readonly anchorName = newAnchorName();\n private readonly showing = signal(false);\n\n /** Whether the `[trigger]` slot projected any element content. */\n private readonly hasTrigger = signal(false);\n\n private triggerRef = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private panelRef = viewChild.required<ElementRef<HTMLElement>>('panel');\n\n private openTimer = useTimer();\n private closeTimer = useTimer();\n /** The element currently carrying our anchor-name. */\n private anchoredEl: HTMLElement | null = null;\n private detachEscape: (() => void) | null = null;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.hasTrigger.set(this.triggerRef().nativeElement.childElementCount > 0);\n this.applyAnchor();\n });\n\n // Controller ARIA follows mode/open state; each branch removes the other\n // mode's attributes so a runtime mode flip never leaves stale semantics.\n effect(() => {\n if (!this.hasTrigger()) return;\n const target = resolveFocusTarget(this.triggerRef().nativeElement);\n if (this.mode() === 'tooltip') {\n this.renderer.removeAttribute(target, 'aria-expanded');\n this.renderer.removeAttribute(target, 'aria-controls');\n this.renderer.setAttribute(target, 'aria-describedby', this.panelId);\n } else {\n this.renderer.removeAttribute(target, 'aria-describedby');\n this.renderer.setAttribute(target, 'aria-expanded', `${this.showing()}`);\n this.renderer.setAttribute(target, 'aria-controls', this.panelId);\n }\n });\n\n // Two-way `open`: drive the native popover when the model changes hands.\n effect(() => {\n const want = this.open();\n if (want === untracked(this.showing)) return;\n if (want) this.showPopover();\n else this.hidePopover();\n });\n\n this.destroyRef.onDestroy(() => {\n this.detachEscape?.();\n if (this.anchoredEl) clearAnchorName(this.anchoredEl);\n try {\n this.panelRef().nativeElement.hidePopover();\n } catch {\n // popover was already closed or detached\n }\n });\n }\n\n /** Tooltip mode is always `manual` — its lifecycle belongs to the timers. */\n protected readonly popoverKind = computed(() =>\n this.mode() === 'tooltip' ? 'manual' : this.autoClose() ? 'auto' : 'manual'\n );\n\n showPopover() {\n if (this.showing()) return;\n this.applyAnchor();\n this.panelRef().nativeElement.showPopover();\n }\n\n hidePopover() {\n if (!this.showing()) return;\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 /**\n * The panel anchors to the detached `anchor` when one resolves (id strings\n * are looked up now, at open time), else to the trigger span.\n */\n private applyAnchor() {\n const el = resolveElement(this.anchor()) ?? this.triggerRef().nativeElement;\n if (this.anchoredEl === el) return;\n if (this.anchoredEl) clearAnchorName(this.anchoredEl);\n setAnchorName(el, this.anchorName);\n this.anchoredEl = el;\n }\n\n protected onToggle(event: Event) {\n const isOpen = isToggleOpen(event);\n this.showing.set(isOpen);\n this.open.set(isOpen);\n\n const panel = this.panelRef().nativeElement;\n if (isOpen) {\n if (this.mode() === 'rich') {\n panel.querySelector<HTMLElement>('[autofocus]')?.focus();\n } else {\n this.attachTooltipEscape();\n if (typeof ngDevMode !== 'undefined' && ngDevMode && panel.querySelector(FOCUSABLE_SELECTOR)) {\n console.warn(\n '[uni-popover] tooltip-mode content must not contain focusable elements — ' +\n 'a tooltip is a description, not a surface. Use mode=\"rich\" instead.'\n );\n }\n }\n this.opened.emit();\n } else {\n this.detachEscape?.();\n if (this.mode() === 'rich' && this.hasTrigger()) {\n restoreOverlayFocus(panel, resolveFocusTarget(this.triggerRef().nativeElement));\n }\n this.closed.emit();\n }\n }\n\n protected closeFromButton() {\n this.hidePopover();\n if (this.hasTrigger()) resolveFocusTarget(this.triggerRef().nativeElement).focus();\n }\n\n // --- rich-mode gesture ----------------------------------------------------\n\n protected onTriggerClick(event: MouseEvent) {\n if (this.mode() !== 'rich') return;\n this.togglePopover(event);\n }\n\n // --- tooltip-mode gestures (WCAG 1.4.13) ----------------------------------\n\n private readonly openDelayMs = computed(\n () => this.openDelay() ?? this.componentOptions().tooltipOpenDelay\n );\n private readonly closeDelayMs = computed(\n () => this.closeDelay() ?? this.componentOptions().tooltipCloseDelay\n );\n\n protected onTriggerEnter() {\n if (this.mode() !== 'tooltip') return;\n this.closeTimer.stop();\n this.openTimer.start(this.openDelayMs(), () => this.showPopover());\n }\n\n protected onTriggerLeave() {\n if (this.mode() !== 'tooltip') return;\n this.openTimer.stop();\n if (this.showing()) this.closeTimer.start(this.closeDelayMs(), () => this.hidePopover());\n }\n\n protected onTriggerFocusIn() {\n if (this.mode() !== 'tooltip') return;\n this.closeTimer.stop();\n this.showPopover();\n }\n\n protected onTriggerFocusOut() {\n if (this.mode() !== 'tooltip') return;\n this.openTimer.stop();\n this.closeTimer.stop();\n this.hidePopover();\n }\n\n /** Resting the pointer inside the panel must not dismiss it (hoverable). */\n protected onPanelEnter() {\n if (this.mode() !== 'tooltip') return;\n this.closeTimer.stop();\n }\n\n protected onPanelLeave() {\n if (this.mode() !== 'tooltip') return;\n if (this.showing()) this.closeTimer.start(this.closeDelayMs(), () => this.hidePopover());\n }\n\n /**\n * Tooltip panels are `manual`, so Escape is ours: dismiss without moving\n * focus, and stop propagation so an enclosing dialog stays open. Capture\n * phase, document-level — the pointer may be nowhere near the trigger.\n */\n private attachTooltipEscape() {\n const onKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n event.stopPropagation();\n this.openTimer.stop();\n this.closeTimer.stop();\n this.hidePopover();\n };\n document.addEventListener('keydown', onKeydown, true);\n this.detachEscape = () => {\n document.removeEventListener('keydown', onKeydown, true);\n this.detachEscape = null;\n };\n }\n\n // --- styling --------------------------------------------------------------\n\n protected readonly triggerClassName = css({ display: 'inline-block' });\n\n private readonly resolvedMaxWidth = computed(() => {\n const width = this.maxWidth();\n if (width === undefined || width === '') return this.componentOptions().maxWidth;\n return typeof width === 'number' ? `${width}px` : width;\n });\n\n protected readonly popoverClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n ...this.theme.colorPair(options.color),\n ...this.theme.radius(options.borderRadius),\n ...this.theme.boxShadow(options.shadow),\n ...this.theme.typeface(options.typeface),\n ...this.theme.border(options.border),\n padding: 0,\n width: 'max-content',\n maxWidth: this.resolvedMaxWidth(),\n overflow: 'visible',\n ...anchorStyles(this.anchorName, this.placement(), { mainAxis: options.offset }),\n ...discreteOverlayTransition(250, { opacity: 0 }, { opacity: 1 }),\n });\n });\n\n /** Empty regions collapse, so bare content renders v1's single-region look. */\n protected readonly headerRowClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: options.padding,\n paddingBottom: 0,\n '&:not(:has(*))': { display: 'none' },\n });\n });\n\n protected readonly titleClassName = computed(() =>\n css({ ...this.theme.typeface(this.componentOptions().headerTypeface), marginRight: 'auto' })\n );\n\n protected readonly bodyClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n padding: this.mode() === 'tooltip' ? options.tooltipPadding : options.padding,\n '&:empty': { display: 'none' },\n });\n });\n\n protected readonly footerRowClassName = computed(() => {\n const options = this.componentOptions();\n return css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 8,\n padding: options.padding,\n paddingTop: 0,\n '&:not(:has(*))': { display: 'none' },\n });\n });\n\n protected readonly arrowClassName = computed(() => {\n const options = this.componentOptions();\n const side = this.placement().split('-')[0];\n // Border on the two edges of the clipped half that face outward\n const borders: Record<string, object> = {\n top: { ...this.theme.borderRight(options.border), ...this.theme.borderBottom(options.border) },\n bottom: { ...this.theme.borderLeft(options.border), ...this.theme.borderTop(options.border) },\n left: { ...this.theme.borderRight(options.border), ...this.theme.borderTop(options.border) },\n right: { ...this.theme.borderLeft(options.border), ...this.theme.borderBottom(options.border) },\n };\n return css({\n ...this.theme.colorPair(options.color),\n ...anchorArrowStyles(this.placement(), options.arrowSize),\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\n #trigger\n [class]=\"triggerClassName\"\n (click)=\"onTriggerClick($event)\"\n (mouseenter)=\"onTriggerEnter()\"\n (mouseleave)=\"onTriggerLeave()\"\n (focusin)=\"onTriggerFocusIn()\"\n (focusout)=\"onTriggerFocusOut()\"\n>\n <ng-content select=\"[trigger]\"></ng-content>\n</span>\n<div\n #panel\n [id]=\"panelId\"\n [attr.popover]=\"popoverKind()\"\n [attr.role]=\"mode() === 'tooltip' ? 'tooltip' : null\"\n [attr.aria-labelledby]=\"header() ? headerId : null\"\n [class]=\"popoverClassName()\"\n (toggle)=\"onToggle($event)\"\n (mouseenter)=\"onPanelEnter()\"\n (mouseleave)=\"onPanelLeave()\"\n>\n <div [class]=\"headerRowClassName()\">\n <ng-content select=\"[popover-header]\"></ng-content>\n @if (header()) {\n <span [id]=\"headerId\" [class]=\"titleClassName()\">{{ header() }}</span>\n }\n @if (closable()) {\n <button\n icon-button\n [iconName]=\"componentOptions().closeSymbol\"\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"closeFromButton()\"\n >\n Close\n </button>\n }\n </div>\n <div [class]=\"bodyClassName()\"><ng-content></ng-content></div>\n <div [class]=\"footerRowClassName()\"><ng-content select=\"[popover-footer]\"></ng-content></div>\n @if (arrow()) {\n <span [class]=\"arrowClassName()\"></span>\n }\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';\nexport type { UniPopoverOptions } from './popover.model';\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 // The dot's grow/retract is a token: 0.3s default, 0 = instant. The\n // transitions are scoped — never `all` — so the focus ring's outline and\n // shadow apply instantly instead of interpolating from a stale outline\n // color, which flashed a dark ring before the themed ring color landed.\n const speed = this.componentOptions().transitionSpeed ?? 0.3;\n const ringTransition = `border-color ${speed}s ease, background-color ${speed}s ease`;\n const dotTransition = `transform ${speed}s ease`;\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: ringTransition,\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: dotTransition,\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 // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .radio-button': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\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 { listboxPopupStyles } from '../forms/listbox-popup';\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 css(listboxPopupStyles(this.theme, this.componentOptions()))\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 /**\n * Equality used to match `value` against option values, called as\n * `compareWith(optionValue, value)`. Defaults to reference equality, which\n * never matches an object value rebuilt from elsewhere (e.g. a saved record\n * against options from a fresh fetch) — pass a key comparison like\n * `(a, b) => a?.id === b?.id` for object values.\n */\n readonly compareWith = input<(optionValue: T, value: T) => boolean>((a, b) => a === b);\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) => this.compareWith()(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 // The shared, themable focus indicator, in the track's fill color.\n '&:focus-visible': { ...this.theme.focusRingStyle(fill) },\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 { listboxPopupStyles } from '../forms/listbox-popup';\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 css(listboxPopupStyles(this.theme, this.componentOptions()))\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 // Scoped, never `all`: the focus ring must apply instantly rather\n // than interpolating its outline color from a stale value.\n transition: 'background-color 0.3s ease, border-color 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: 'transform 0.3s ease, background-color 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 // The shared, themable focus indicator, keyed off the hidden input.\n '&:focus + .toggle-switch': {\n ...this.theme.focusRingStyle(this.getThemeColor(this.variant())),\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","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n output,\n Renderer2,\n signal,\n untracked,\n} from '@angular/core';\nimport { css } from '@emotion/css';\nimport { resolveElement, visuallyHidden } from '../../cdk';\nimport { BaseComponent, COMPONENT_NAME } from '../base/base.component';\nimport { UniButtonComponent } from '../button/button.component';\nimport { UniCalloutComponent } from '../callout/callout.component';\nimport type { UniCalloutDismissal } from '../callout/callout.model';\nimport type { UniTourStep, UniTourOptions } from './tour.model';\n\ndeclare const ngDevMode: boolean | undefined;\n\n/**\n * A thin sequencer over one `uni-callout`: steps spotlight their targets, a\n * footer walks Next/Back with dots-or-fraction progress, and `advanceOn`\n * gates a step behind an interaction with its target (auto-advancing for\n * clicks, unlocking Next otherwise — announced through one `role=\"status\"`\n * region). Escape or the close button skips the tour and reports the step.\n *\n * `active` is a two-way model, so a tour is deep-linkable and inspectable;\n * steps whose declared target cannot be resolved are skipped (with a dev\n * warning) in the direction of travel rather than erroring.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'uni-tour',\n imports: [UniButtonComponent, UniCalloutComponent],\n templateUrl: './tour.component.html',\n providers: [{ provide: COMPONENT_NAME, useValue: 'tour' }],\n})\nexport class UniTourComponent extends BaseComponent<UniTourOptions> {\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n\n steps = input.required<UniTourStep[]>();\n\n /** The presented step index, or null when the tour is not running. */\n active = model<number | null>(null);\n\n nextLabel = input('Next');\n backLabel = input('Back');\n skipLabel = input('Skip');\n doneLabel = input('Done');\n\n started = output<void>();\n stepChanged = output<{ key: string; index: number }>();\n finished = output<void>();\n skipped = output<{ key: string; index: number }>();\n\n protected readonly calloutOpen = signal(false);\n protected readonly satisfied = signal(true);\n protected readonly announcement = signal('');\n protected readonly resolvedTarget = signal<HTMLElement | undefined>(undefined);\n private readonly presentedIndex = signal<number | null>(null);\n private gateCleanup: (() => void) | null = null;\n\n protected readonly index = computed(() => this.presentedIndex() ?? 0);\n protected readonly currentStep = computed<UniTourStep | undefined>(() => {\n const index = this.presentedIndex();\n return index === null ? undefined : this.steps()[index];\n });\n protected readonly isLast = computed(() => this.index() >= this.steps().length - 1);\n protected readonly clickGate = computed(\n () => this.currentStep()?.advanceOn?.event === 'click'\n );\n /** Gated steps force an interactive target — the gate needs the gesture. */\n protected readonly targetInteractive = computed(() => {\n const step = this.currentStep();\n return step?.advanceOn ? true : (step?.targetInteractive ?? true);\n });\n protected readonly stepAriaLabel = computed(() => {\n const step = this.currentStep();\n return step ? `${step.title}, step ${this.index() + 1} of ${this.steps().length}` : '';\n });\n\n constructor() {\n super();\n\n // External writes to `active` (deep links) route into the sequencer.\n effect(() => {\n const index = this.active();\n if (index === untracked(this.presentedIndex)) return;\n untracked(() => (index === null ? this.stopTour() : this.present(index, 1)));\n });\n\n this.destroyRef.onDestroy(() => this.gateCleanup?.());\n }\n\n start(at = 0): void {\n this.started.emit();\n this.present(at, 1);\n }\n\n next(): void {\n this.advance();\n }\n\n back(): void {\n const index = this.presentedIndex();\n if (index !== null && index > 0) this.present(index - 1, -1);\n }\n\n skip(): void {\n const step = this.currentStep();\n const index = this.presentedIndex();\n this.stopTour();\n if (step && index !== null) this.skipped.emit({ key: step.key, index });\n }\n\n protected advance(): void {\n const index = this.presentedIndex();\n if (index === null) return;\n if (index >= this.steps().length - 1) this.finishTour();\n else this.present(index + 1, 1);\n }\n\n /**\n * Present step `index`, skipping (in the direction of travel) steps whose\n * declared target cannot be resolved right now.\n */\n private present(index: number, dir: 1 | -1): void {\n this.gateCleanup?.();\n const steps = this.steps();\n if (index < 0 || index >= steps.length) {\n this.finishTour();\n return;\n }\n\n const step = steps[index];\n let target: HTMLElement | null = null;\n if (step.target !== undefined && step.target !== '') {\n target = resolveElement(step.target);\n if (!target) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`[uni-tour] step \"${step.key}\" target missing — skipped`);\n }\n this.present(index + dir, dir);\n return;\n }\n }\n\n this.presentedIndex.set(index);\n this.active.set(index);\n this.resolvedTarget.set(target ?? undefined);\n this.setupGate(step, target);\n this.calloutOpen.set(true);\n this.stepChanged.emit({ key: step.key, index });\n }\n\n private setupGate(step: UniTourStep, target: HTMLElement | null): void {\n const gate = step.advanceOn;\n this.satisfied.set(!gate);\n if (!gate || !target) return;\n\n const auto = gate.auto ?? gate.event === 'click';\n const unlisten = this.renderer.listen(target, gate.event, () => {\n if (untracked(this.satisfied) && !auto) return;\n this.satisfied.set(true);\n if (auto) {\n this.gateCleanup?.();\n this.advance();\n } else {\n this.announcement.set('Next available');\n }\n });\n this.gateCleanup = () => {\n unlisten();\n this.gateCleanup = null;\n };\n }\n\n protected onDismissed(dismissal: UniCalloutDismissal): void {\n if (dismissal.reason === 'programmatic') return; // that's us, stepping or stopping\n const step = this.currentStep();\n const index = this.presentedIndex();\n this.stopTour();\n if (step && index !== null) this.skipped.emit({ key: step.key, index });\n }\n\n /** Arrow keys navigate only while focus is inside the panel. */\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowRight' && this.satisfied() && !this.clickGate()) {\n event.preventDefault();\n this.advance();\n } else if (event.key === 'ArrowLeft' && this.index() > 0) {\n event.preventDefault();\n this.back();\n }\n }\n\n private finishTour(): void {\n this.gateCleanup?.();\n this.calloutOpen.set(false);\n this.presentedIndex.set(null);\n this.active.set(null);\n this.finished.emit();\n }\n\n private stopTour(): void {\n this.gateCleanup?.();\n this.calloutOpen.set(false);\n this.presentedIndex.set(null);\n this.active.set(null);\n }\n\n // --- styling --------------------------------------------------------------\n\n protected readonly statusClassName = css(visuallyHidden);\n\n protected readonly footerClassName = computed(() =>\n css({\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n gap: this.theme.spacing()[this.componentOptions().footerGap],\n })\n );\n\n protected readonly dotsClassName = computed(() => {\n const colors = this.theme.colorPalette();\n const on = colors[this.variant()] ?? colors['primary'];\n return css({\n display: 'inline-flex',\n gap: 5,\n margin: '0 auto',\n '& i': {\n width: 6,\n height: 6,\n borderRadius: 999,\n background: colors['surface-variant'],\n border: `1px solid ${colors['outline'] ?? colors['surface-variant']}`,\n },\n '& i.on': { background: on, borderColor: on },\n });\n });\n\n protected readonly fractionClassName = css({ margin: '0 auto' });\n}\n","<uni-callout\n [(open)]=\"calloutOpen\"\n [key]=\"currentStep()?.key ?? ''\"\n [target]=\"resolvedTarget()\"\n [placement]=\"currentStep()?.placement ?? 'bottom'\"\n [backdrop]=\"currentStep()?.backdrop\"\n [targetInteractive]=\"targetInteractive()\"\n [header]=\"currentStep()?.title ?? ''\"\n [ariaLabel]=\"stepAriaLabel()\"\n [closeLabel]=\"skipLabel()\"\n (dismissed)=\"onDismissed($event)\"\n (panelKeydown)=\"onPanelKeydown($event)\"\n>\n <p>{{ currentStep()?.body }}</p>\n <div callout-actions [class]=\"footerClassName()\">\n @if (index() > 0) {\n <button text-button variant=\"ghost\" (click)=\"back()\">{{ backLabel() }}</button>\n }\n @if (componentOptions().progressStyle === 'fraction') {\n <span aria-hidden=\"true\" [class]=\"fractionClassName\">{{ index() + 1 }} of {{ steps().length }}</span>\n } @else {\n <span aria-hidden=\"true\" [class]=\"dotsClassName()\">\n @for (step of steps(); track $index) {\n <i [class.on]=\"$index === index()\"></i>\n }\n </span>\n }\n <!-- A click-gate advances by using the target itself — a Next button\n would be a lie, so none renders. -->\n @if (!clickGate()) {\n <button text-button [disable]=\"!satisfied()\" (click)=\"advance()\">\n {{ isLast() ? doneLabel() : nextLabel() }}\n </button>\n }\n </div>\n</uni-callout>\n<!-- One live region per tour: gate unlocks are announced here. -->\n<span role=\"status\" [class]=\"statusClassName\">{{ announcement() }}</span>\n","/**\n * UniTourComponent Barrel File\n *\n * This file exports all public-facing elements of the tour component.\n */\n\nexport { UniTourComponent } from './tour.component';\nexport type { UniTourAdvance, UniTourOptions, UniTourStep } from './tour.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RippleDirective"],"mappings":"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"}
|