@ids-group-ltd/ids-design-system 0.3.0 → 0.4.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":"ids-group-ltd-ids-design-system.mjs","sources":["../../../src/lib/config/ds-config.ts","../../../src/lib/overlay/ds-overlay-close-ref.ts","../../../src/lib/icons/icon-registry.ts","../../../src/lib/icons/icons.data.ts","../../../src/lib/icons/icon.component.ts","../../../src/lib/components/button/button.component.ts","../../../src/lib/components/button/button.component.html","../../../src/lib/components/icon-button/icon-button.component.ts","../../../src/lib/components/icon-button/icon-button.component.html","../../../src/lib/components/badge/badge.component.ts","../../../src/lib/components/badge/badge.component.html","../../../src/lib/components/status-dot/status-dot.component.ts","../../../src/lib/components/avatar/avatar.component.ts","../../../src/lib/components/avatar/avatar.component.html","../../../src/lib/components/avatar-group/avatar-group.component.ts","../../../src/lib/components/avatar-group/avatar-group.component.html","../../../src/lib/components/card/card.component.ts","../../../src/lib/components/card/card.component.html","../../../src/lib/components/stat/stat.component.ts","../../../src/lib/components/stat/stat.component.html","../../../src/lib/components/tabs/tab.component.ts","../../../src/lib/components/tabs/tabs.component.ts","../../../src/lib/components/tabs/tabs.component.html","../../../src/lib/components/control-value-accessor.ts","../../../src/lib/components/input/input.component.ts","../../../src/lib/components/input/input.component.html","../../../src/lib/components/number-stepper/number-stepper.component.ts","../../../src/lib/components/number-stepper/number-stepper.component.html","../../../src/lib/components/textarea/textarea.component.ts","../../../src/lib/components/textarea/textarea.component.html","../../../src/lib/components/search/search.component.ts","../../../src/lib/components/search/search.component.html","../../../src/lib/components/static-preview.directive.ts","../../../src/lib/components/select/select.types.ts","../../../src/lib/components/select/select.component.ts","../../../src/lib/components/select/select.component.html","../../../src/lib/components/dropdown/dropdown.component.ts","../../../src/lib/components/dropdown/dropdown.component.html","../../../src/lib/components/skeleton/skeleton.component.ts","../../../src/lib/components/table/cell-template.directive.ts","../../../src/lib/components/table/table.component.ts","../../../src/lib/components/table/table.component.html","../../../src/lib/components/pagination/pagination.component.ts","../../../src/lib/components/pagination/pagination.component.html","../../../src/lib/components/date-picker/date-picker.component.ts","../../../src/lib/components/date-picker/date-picker.component.html","../../../src/lib/components/breadcrumbs/breadcrumbs.service.ts","../../../src/lib/components/breadcrumbs/breadcrumbs.component.ts","../../../src/lib/components/breadcrumbs/breadcrumbs.component.html","../../../src/lib/components/sidenav/sidenav.component.ts","../../../src/lib/components/sidenav/sidenav.component.html","../../../src/lib/components/sidenav/sidenav-group.component.ts","../../../src/lib/components/sidenav/sidenav-group.component.html","../../../src/lib/components/sidenav/sidenav-item.component.ts","../../../src/lib/components/sidenav/sidenav-item.component.html","../../../src/lib/components/topbar/topbar.component.ts","../../../src/lib/components/topbar/topbar.component.html","../../../src/lib/components/page-header/page-header.component.ts","../../../src/lib/components/page-header/page-header.component.html","../../../src/lib/components/modal/modal-card.component.ts","../../../src/lib/components/modal/modal-card.component.html","../../../src/lib/components/modal/modal.component.ts","../../../src/lib/components/modal/modal.component.html","../../../src/lib/components/banner/banner.component.ts","../../../src/lib/components/banner/banner.component.html","../../../src/lib/components/dropzone/dropzone.component.ts","../../../src/lib/components/dropzone/dropzone.component.html","../../../src/lib/components/menu/menu-item.component.ts","../../../src/lib/components/menu/menu-item.component.html","../../../src/lib/components/menu/menu.component.ts","../../../src/lib/components/menu/menu.component.html","../../../src/lib/components/spinner/spinner.component.ts","../../../src/lib/components/empty-state/empty-state.component.ts","../../../src/lib/components/empty-state/empty-state.component.html","../../../src/lib/components/progress/progress.component.ts","../../../src/lib/components/progress/progress.component.html","../../../src/lib/components/accordion/accordion.component.ts","../../../src/lib/components/accordion/accordion-item.component.ts","../../../src/lib/components/accordion/accordion-item.component.html","../../../src/lib/components/stepper/stepper.component.ts","../../../src/lib/components/stepper/stepper.component.html","../../../src/lib/components/tooltip/tooltip-panel.component.ts","../../../src/lib/components/tooltip/tooltip.directive.ts","../../../src/lib/components/popover/popover.component.ts","../../../src/lib/components/popover/popover.component.html","../../../src/lib/components/toast/toast.component.ts","../../../src/lib/components/toast/toast.component.html","../../../src/lib/components/toast/toast-region.component.ts","../../../src/lib/components/toast/toast-region.component.html","../../../src/lib/components/toast/toast.config.ts","../../../src/lib/components/toast/toast.service.ts","../../../src/lib/components/drawer/drawer.component.ts","../../../src/lib/components/drawer/drawer.component.html","../../../src/lib/components/bottom-sheet/bottom-sheet.component.ts","../../../src/lib/components/bottom-sheet/bottom-sheet.component.html","../../../src/lib/components/tag/tag.component.ts","../../../src/lib/components/tag/tag.component.html","../../../src/lib/components/w3w/w3w.component.ts","../../../src/lib/components/w3w/w3w.component.html","../../../src/lib/components/page-footer/page-footer.component.ts","../../../src/lib/components/page-footer/page-footer.component.html","../../../src/lib/components/combobox/combobox.component.ts","../../../src/lib/components/combobox/combobox.component.html","../../../src/lib/components/divider/divider.component.ts","../../../src/lib/components/checkbox/checkbox.component.ts","../../../src/lib/components/checkbox/checkbox.component.html","../../../src/lib/components/radio/radio.component.ts","../../../src/lib/components/radio/radio.component.html","../../../src/lib/components/switch/switch.component.ts","../../../src/lib/components/switch/switch.component.html","../../../src/public-api.ts","../../../src/ids-group-ltd-ids-design-system.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport type { IconName } from '../icons/icons.data';\n\nexport interface DsConfig {\n breadcrumbs?: {\n separator?: IconName;\n clickable?: boolean;\n };\n}\n\nexport const DS_CONFIG = new InjectionToken<DsConfig>('DS_CONFIG', {\n factory: () => ({}),\n});\n\n/** Provide DS-level defaults at the app root.\n *\n * providers: [provideDsConfig({ card: { padding: 'sm' } })]\n *\n * Component inputs (e.g. `<ds-card padding=\"lg\">`) still win over the config.\n */\nexport function provideDsConfig(config: DsConfig): Provider {\n return { provide: DS_CONFIG, useValue: config };\n}\n","/** A reference to the overlay/container the projected content lives in, used to\n * close it from the inside — e.g. a popover (and, later, a dropdown/select)\n * closing when a menu item is selected. The container provides it via DI;\n * content injects it with `{ optional: true }` so the same content also works\n * standalone (outside any overlay).\n *\n * Same shape as Angular Material's `MatDialogRef` (content calls `close()` on a\n * ref), generalised so any dismissible overlay can provide it. */\nexport abstract class DsOverlayCloseRef {\n abstract close(): void;\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/** Map of custom icon name -> raw SVG body markup.\n *\n * The body is what goes *inside* `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">`\n * — typically one or more `<path>` / `<circle>` / `<rect>` elements. Stroke width, line caps and\n * join are applied by the host `<ds-icon>` template, so paths should use `stroke=\"currentColor\"`\n * implicitly (i.e. omit the stroke attribute) and rely on the parent SVG.\n *\n * Example:\n * provideDsIcons({\n * 'cloud-upload': '<path d=\"M12 13v8m0-8 3 3m-3-3-3 3\"/><path d=\"...\"/>',\n * })\n */\nexport type DsIconRegistry = Readonly<Record<string, string>>;\n\nexport const DS_ICON_REGISTRY = new InjectionToken<DsIconRegistry>(\n 'DS_ICON_REGISTRY',\n {\n factory: () => ({}),\n },\n);\n\n/** Register additional icons available to `<ds-icon [name]=\"...\">` alongside the built-in DS set.\n *\n * providers: [\n * provideDsIcons({\n * 'cloud-upload': '<path d=\"...\"/>',\n * 'shield': '<path d=\"...\"/>',\n * }),\n * ]\n *\n * Names take precedence as: built-in `ICONS` > consumer registry. Consumer names that clash with\n * built-ins are ignored — to override a built-in, edit the DS source.\n */\nexport function provideDsIcons(icons: DsIconRegistry): Provider {\n return { provide: DS_ICON_REGISTRY, useValue: icons };\n}\n","// Inline SVG icon set. Ported 1:1 from CLAUDE_DESIGN_DS/ds-icons.jsx.\n// All paths render inside <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">, stroke-width 1.75.\n\nexport const ICONS = {\n search: '<circle cx=\"11\" cy=\"11\" r=\"7\" /><path d=\"m20 20-3.5-3.5\" />',\n plus: '<path d=\"M12 5v14M5 12h14\" />',\n minus: '<path d=\"M5 12h14\" />',\n check: '<path d=\"m4 12 5 5L20 6\" />',\n x: '<path d=\"M6 6l12 12M18 6L6 18\" />',\n chevronDown: '<path d=\"m6 9 6 6 6-6\" />',\n chevronRight: '<path d=\"m9 6 6 6-6 6\" />',\n chevronLeft: '<path d=\"m15 6-6 6 6 6\" />',\n chevronUp: '<path d=\"m6 15 6-6 6 6\" />',\n arrowRight: '<path d=\"M5 12h14M13 6l6 6-6 6\" />',\n arrowUp: '<path d=\"M12 19V5M6 11l6-6 6 6\" />',\n arrowDown: '<path d=\"M12 5v14M6 13l6 6 6-6\" />',\n info: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 8v.01M11 12h1v4h1\" />',\n warn: '<path d=\"M12 3 2 21h20L12 3z\" /><path d=\"M12 10v4M12 18v.01\" />',\n error: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 8v4M12 16v.01\" />',\n success: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"m8 12 3 3 5-6\" />',\n bell: '<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" /><path d=\"M10 21a2 2 0 0 0 4 0\" />',\n settings:\n '<circle cx=\"12\" cy=\"12\" r=\"3\" /><path d=\"M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z\" />',\n user: '<circle cx=\"12\" cy=\"8\" r=\"4\" /><path d=\"M4 21a8 8 0 0 1 16 0\" />',\n users:\n '<circle cx=\"9\" cy=\"8\" r=\"4\" /><path d=\"M2 21a7 7 0 0 1 14 0\" /><path d=\"M16 4a4 4 0 0 1 0 8M22 21a6 6 0 0 0-6-6\" />',\n home: '<path d=\"m3 11 9-8 9 8\" /><path d=\"M5 10v10h14V10\" />',\n calendar:\n '<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" /><path d=\"M3 10h18M8 3v4M16 3v4\" />',\n truck:\n '<path d=\"M3 16V6a1 1 0 0 1 1-1h11v11\" /><path d=\"M15 9h4l2 3v4h-6\" /><circle cx=\"7.5\" cy=\"17.5\" r=\"2\" /><circle cx=\"17.5\" cy=\"17.5\" r=\"2\" />',\n box: '<path d=\"m21 8-9-5-9 5 9 5 9-5z\" /><path d=\"M3 8v8l9 5 9-5V8\" /><path d=\"m12 13 .01 8\" />',\n map: '<path d=\"m9 4-6 3v13l6-3 6 3 6-3V4l-6 3-6-3z\" /><path d=\"M9 4v13M15 7v13\" />',\n activity: '<path d=\"M3 12h4l3-9 4 18 3-9h4\" />',\n folder:\n '<path d=\"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />',\n edit: '<path d=\"M12 20h9\" /><path d=\"M16.5 3.5a2.1 2.1 0 1 1 3 3L7 19l-4 1 1-4z\" />',\n external:\n '<path d=\"M14 4h6v6\" /><path d=\"M20 4 10 14\" /><path d=\"M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5\" />',\n trash:\n '<path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" /><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />',\n copy: '<rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" /><path d=\"M5 15V5a2 2 0 0 1 2-2h10\" />',\n download: '<path d=\"M12 4v12M6 12l6 6 6-6\" /><path d=\"M4 20h16\" />',\n upload: '<path d=\"M12 20V8M6 12l6-6 6 6\" /><path d=\"M4 4h16\" />',\n eye: '<path d=\"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z\" /><circle cx=\"12\" cy=\"12\" r=\"3\" />',\n filter: '<path d=\"M3 5h18l-7 9v6l-4-2v-4z\" />',\n sort: '<path d=\"M7 4v16M3 8l4-4 4 4\" /><path d=\"M17 20V4M21 16l-4 4-4-4\" />',\n sortAsc: '<path d=\"M7 18V6M3 10l4-4 4 4\" />',\n sortDesc: '<path d=\"M7 6v12M11 14l-4 4-4-4\" />',\n grid: '<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />',\n list: '<path d=\"M8 6h13M8 12h13M8 18h13\" /><circle cx=\"3.5\" cy=\"6\" r=\"1.2\" /><circle cx=\"3.5\" cy=\"12\" r=\"1.2\" /><circle cx=\"3.5\" cy=\"18\" r=\"1.2\" />',\n moreH:\n '<circle cx=\"5\" cy=\"12\" r=\"1.5\" /><circle cx=\"12\" cy=\"12\" r=\"1.5\" /><circle cx=\"19\" cy=\"12\" r=\"1.5\" />',\n moreV:\n '<circle cx=\"12\" cy=\"5\" r=\"1.5\" /><circle cx=\"12\" cy=\"12\" r=\"1.5\" /><circle cx=\"12\" cy=\"19\" r=\"1.5\" />',\n link: '<path d=\"M10 14a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-1 1\" /><path d=\"M14 10a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1\" />',\n flag: '<path d=\"M5 21V5a14 14 0 0 1 14 0v9a14 14 0 0 1-14 0z\" />',\n star: '<path d=\"m12 3 2.9 6 6.6.9-4.8 4.6 1.1 6.5L12 17.8 6.2 21l1.1-6.5L2.5 9.9 9.1 9z\" />',\n inbox:\n '<path d=\"M22 12h-6l-2 3h-4l-2-3H2\" /><path d=\"M5 4h14l3 8v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-8z\" />',\n archive:\n '<rect x=\"3\" y=\"3\" width=\"18\" height=\"5\" rx=\"1\" /><path d=\"M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8M10 12h4\" />',\n clock: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 7v5l3 2\" />',\n refresh:\n '<path d=\"M3 12a9 9 0 0 1 15-6.7L21 8\" /><path d=\"M21 3v5h-5\" /><path d=\"M21 12a9 9 0 0 1-15 6.7L3 16\" /><path d=\"M3 21v-5h5\" />',\n play: '<path d=\"M6 4l14 8-14 8z\" />',\n pause: '<path d=\"M7 4v16M17 4v16\" />',\n cmd: '<path d=\"M9 9h6v6H9zM6 9V7a3 3 0 1 1 3 3H6zM6 15v2a3 3 0 1 0 3-3H6zM18 9V7a3 3 0 1 0-3 3h3zM18 15v2a3 3 0 1 1-3-3h3z\" />',\n paperclip:\n '<path d=\"m21 11-9 9a5 5 0 0 1-7-7l9-9a3 3 0 0 1 4 4l-9 9a1 1 0 0 1-1-1l8-8\" />',\n file: '<path d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\" /><path d=\"M14 3v6h6\" />',\n image:\n '<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><circle cx=\"9\" cy=\"9\" r=\"2\" /><path d=\"m21 15-5-5L5 21\" />',\n lock: '<rect x=\"4\" y=\"11\" width=\"16\" height=\"10\" rx=\"2\" /><path d=\"M8 11V7a4 4 0 0 1 8 0v4\" />',\n logout:\n '<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" /><path d=\"m16 17 5-5-5-5M21 12H9\" />',\n help: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9.5 9a2.5 2.5 0 0 1 5 0c0 1.5-2.5 2-2.5 4M12 17v.01\" />',\n pin: '<path d=\"M12 22v-7\" /><path d=\"m9 15 6 0M8 9l8 0M9 15c-2-1.5-3-4-3-7l12 0c0 3-1 5.5-3 7\" />',\n bookmark: '<path d=\"M5 21V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16l-7-4z\" />',\n sparkle:\n '<path d=\"M12 3v6M12 15v6M3 12h6M15 12h6M5.6 5.6l4.2 4.2M14.2 14.2l4.2 4.2M5.6 18.4l4.2-4.2M14.2 9.8l4.2-4.2\" />',\n layers:\n '<path d=\"m12 3 9 5-9 5-9-5z\" /><path d=\"m3 13 9 5 9-5M3 18l9 5 9-5\" />',\n chart: '<path d=\"M3 3v18h18\" /><path d=\"M7 14l4-4 4 4 5-5\" />',\n gauge:\n '<path d=\"M12 14l4-4\" /><circle cx=\"12\" cy=\"14\" r=\"9\" /><path d=\"M3 14a9 9 0 0 1 18 0\" />',\n package:\n '<path d=\"M3 7v10l9 4 9-4V7l-9-4z\" /><path d=\"m3 7 9 5 9-5M12 12v9\" />',\n git: '<circle cx=\"6\" cy=\"6\" r=\"2.5\" /><circle cx=\"6\" cy=\"18\" r=\"2.5\" /><circle cx=\"18\" cy=\"12\" r=\"2.5\" /><path d=\"M6 8.5v7M8.5 6h4a3 3 0 0 1 3 3v0\" />',\n sun: '<circle cx=\"12\" cy=\"12\" r=\"4\" /><path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\" />',\n moon: '<path d=\"M21 13a9 9 0 0 1-12-12 9 9 0 1 0 12 12z\" />',\n save: '<path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\" /><path d=\"M17 21v-8H7v8M7 3v5h8\" />',\n rotate: '<path d=\"M3 12a9 9 0 1 0 3-6.7L3 8\" /><path d=\"M3 3v5h5\" />',\n qr: '<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" /><path d=\"M14 14h3v3h-3zM18 18h3v3h-3z\" />',\n globe:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\" />',\n phone:\n '<path d=\"M5 4h4l2 5-2 1a11 11 0 0 0 5 5l1-2 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z\" />',\n bin: '<rect x=\"3\" y=\"6\" width=\"18\" height=\"14\" rx=\"2\" /><path d=\"M7 6V4h10v2\" />',\n pen: '<path d=\"M3 17V21h4l11-11-4-4z\" />',\n smile:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9 9v.01M15 9v.01M8 14a5 5 0 0 0 8 0\" />',\n frown:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9 9v.01M15 9v.01M8 16a5 5 0 0 1 8 0\" />',\n mail: '<rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" /><path d=\"m3 7 9 6 9-6\" />',\n 'eye-off':\n '<path d=\"M3 3l18 18\" /><path d=\"M10.6 6.1A10 10 0 0 1 12 6c6 0 10 7 10 7a14 14 0 0 1-2.4 3.1\" /><path d=\"M6.7 6.7A14 14 0 0 0 2 12s4 7 10 7a10 10 0 0 0 4.5-1\" /><path d=\"M9.9 14.1A3 3 0 0 1 9 12a3 3 0 0 1 3-3 3 3 0 0 1 2.1.9\" />',\n 'check-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"m8 12 3 3 5-6\" />',\n // Drag handle: 6 dots in 2 cols × 3 rows. Use 1.6 radius to read at 12-16px.\n drag: '<circle cx=\"9\" cy=\"6\" r=\"1.6\" /><circle cx=\"15\" cy=\"6\" r=\"1.6\" /><circle cx=\"9\" cy=\"12\" r=\"1.6\" /><circle cx=\"15\" cy=\"12\" r=\"1.6\" /><circle cx=\"9\" cy=\"18\" r=\"1.6\" /><circle cx=\"15\" cy=\"18\" r=\"1.6\" />',\n scan: '<path d=\"M4 8V5a1 1 0 0 1 1-1h3M16 4h3a1 1 0 0 1 1 1v3M20 16v3a1 1 0 0 1-1 1h-3M8 20H5a1 1 0 0 1-1-1v-3\" />',\n wifi: '<path d=\"M2 9.5a15 15 0 0 1 20 0\" /><path d=\"M5 13a10 10 0 0 1 14 0\" /><path d=\"M8.5 16.5a5 5 0 0 1 7 0\" /><path d=\"M12 20h.01\" />',\n 'wifi-off':\n '<path d=\"m3 3 18 18\" /><path d=\"M12 20h.01\" /><path d=\"M8.5 16.5a5 5 0 0 1 7 0\" /><path d=\"M5 13a10 10 0 0 1 3.5-2.3\" /><path d=\"M11 8.6A10 10 0 0 1 19 13\" /><path d=\"M2 9.5a15 15 0 0 1 5.7-3.2\" /><path d=\"M11.6 5.6A15 15 0 0 1 22 9.5\" />',\n} as const;\n\n/** Built-in DS icon names. Consumers can extend the runtime set via `provideDsIcons({...})` —\n * the type widens to `string` so any custom name is accepted at the call site (at the cost of\n * autocomplete for those custom names). */\nexport type IconName = keyof typeof ICONS | (string & {});\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\nimport { DS_ICON_REGISTRY } from './icon-registry';\nimport { ICONS, type IconName } from './icons.data';\n\n@Component({\n selector: 'ds-icon',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n // Host inline-flex + svg block prevents baseline-gap when icon sits next to text.\n styles: [\n `\n ds-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n line-height: 0;\n }\n ds-icon > svg.icon {\n display: block;\n }\n `,\n ],\n template: `\n <svg\n class=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [style.--ds-icon-size]=\"size() + 'px'\"\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.stroke-width]=\"stroke()\"\n [attr.role]=\"ariaLabel() ? 'img' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-hidden]=\"ariaLabel() ? null : 'true'\"\n [innerHTML]=\"paths()\"\n >\n </svg>\n `,\n})\nexport class IconComponent {\n private readonly sanitizer = inject(DomSanitizer);\n // Consumer-supplied icons via provideDsIcons(...). Empty record by default.\n private readonly registry = inject(DS_ICON_REGISTRY);\n readonly name = input.required<IconName>();\n readonly size = input<number>(16);\n readonly stroke = input<number>(1.75);\n /** When set, the icon is exposed to assistive tech as an image with this\n * name; otherwise it is decorative and hidden (`aria-hidden`). */\n readonly ariaLabel = input<string | null>(null);\n protected readonly paths = computed<SafeHtml>(() => {\n const key = this.name();\n // Built-in DS set wins over consumer registry — see provideDsIcons() docs.\n const body =\n (ICONS as Record<string, string>)[key] ?? this.registry[key] ?? '';\n\n return this.sanitizer.bypassSecurityTrustHtml(body);\n });\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { ButtonSize, ButtonType, ButtonVariant } from './button.types';\n\n@Component({\n selector: 'ds-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: { '[class.full-width]': 'fullWidth()' },\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('l');\n readonly type = input<ButtonType>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** Stretch the button to fill its container — the host becomes block-level\n and 100% wide (the inner control is already full-width). Use for mobile\n primary CTAs and full-bleed form submit buttons. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Accessible name — forwarded to the inner <button> as aria-label. Use when\n the visible label is absent or non-descriptive. */\n readonly ariaLabel = input<string | null>(null);\n readonly icon = input<IconName | null>(null);\n readonly trailingIcon = input<IconName | null>(null);\n readonly pressed = output<MouseEvent>();\n\n protected readonly classes = computed(() => {\n const variant = this.variant();\n const parts = [\n 'button',\n variant === 'primary' ? '' : variant,\n this.size(),\n this.loading() ? 'loading' : '',\n ];\n\n return parts.filter(Boolean).join(' ');\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n return;\n }\n this.pressed.emit(event);\n }\n}\n","<button\n [class]=\"classes()\"\n [type]=\"type()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"onClick($event)\"\n>\n <span class=\"button-main\">\n @if (icon(); as name) {\n <ds-icon [name]=\"name\" />\n }\n\n <ng-content></ng-content>\n\n @if (trailingIcon(); as name) {\n <ds-icon [name]=\"name\" />\n }\n </span>\n\n <span class=\"subtext-slot\">\n <ng-content select=\"[dsButtonSubtext]\"></ng-content>\n </span>\n</button>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type {\n IconButtonSize,\n IconButtonType,\n IconButtonVariant,\n} from './icon-button.types';\n\n/**\n * Icon-only action button with its own variant taxonomy (standard / filled /\n * tonal / outlined) + an optional toggle (`selected`) state. Distinct from\n * `ds-button` — use this for square/round icon affordances; use `ds-button`\n * for labelled actions. `ariaLabel` is REQUIRED (icon-only has no text label).\n */\n@Component({\n selector: 'ds-icon-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class IconButtonComponent {\n readonly icon = input.required<IconName>();\n readonly ariaLabel = input.required<string>();\n readonly variant = input<IconButtonVariant>('standard');\n readonly size = input<IconButtonSize>('md');\n readonly type = input<IconButtonType>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Toggle state — renders the pressed/active look and sets aria-pressed. */\n readonly selected = input(false, { transform: booleanAttribute });\n readonly pressed = output<MouseEvent>();\n\n protected readonly classes = computed(() => {\n const parts = ['icon-button', this.variant(), this.size()];\n if (this.selected()) {\n parts.push('selected');\n }\n\n return parts.join(' ');\n });\n\n protected readonly iconSize = computed(() => {\n const size = this.size();\n if (size === 'sm') {\n return 16;\n }\n if (size === 'lg') {\n return 24;\n }\n\n return 20;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.pressed.emit(event);\n }\n}\n","<button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"selected() ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ds-icon\n [name]=\"icon()\"\n [size]=\"iconSize()\"\n />\n</button>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { BadgeVariant } from './badge.types';\n\n@Component({\n selector: 'ds-badge',\n standalone: true,\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BadgeComponent {\n readonly variant = input<BadgeVariant>('neutral');\n readonly withDot = input<boolean>(false);\n readonly solid = input<boolean>(false);\n\n protected readonly classes = computed(() => {\n const parts = ['badge', this.variant(), this.solid() ? 'solid' : ''];\n\n return parts.filter(Boolean).join(' ');\n });\n}\n","<span [class]=\"classes()\">\n @if (withDot()) {\n <span class=\"dot\"></span>\n }\n\n <ng-content></ng-content>\n</span>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { StatusValue } from './status-dot.types';\n\n@Component({\n selector: 'ds-status-dot',\n standalone: true,\n template: `<span aria-hidden=\"true\" [class]=\"classes()\"></span>`,\n styleUrl: './status-dot.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'img',\n '[attr.aria-label]': 'ariaLabel() || status()',\n },\n})\nexport class StatusDotComponent {\n readonly status = input<StatusValue>('planning');\n /** Override the colour-only status with a human label for assistive tech. */\n readonly ariaLabel = input<string | null>(null);\n protected readonly classes = computed(() => `status-dot ${this.status()}`);\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { AvatarSize } from './avatar.types';\n\n@Component({\n selector: 'ds-avatar',\n standalone: true,\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.xs]': \"size() === 'xs'\",\n '[class.sm]': \"size() === 'sm'\",\n '[class.lg]': \"size() === 'lg'\",\n '[class.neutral]': \"tint() === 'neutral'\",\n '[style.--ds-avatar-bg-color]': 'tintStyle().bg',\n '[style.--ds-avatar-label-color]': 'tintStyle().fg',\n '[attr.role]': \"ariaLabel() ? 'img' : null\",\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': 'ariaLabel() ? null : true',\n },\n})\nexport class AvatarComponent {\n readonly size = input<AvatarSize>('md');\n readonly initials = input<string>('');\n readonly imageUrl = input<string | null>(null);\n /** Accessible name. When omitted, the avatar is treated as decorative\n * (hidden from AT) — correct when a visible name sits beside it. */\n readonly ariaLabel = input<string | null>(null);\n /** Off-token color tint. Accepts a `{ bg, fg }` pair for arbitrary palettes,\n * the literal `'neutral'` for the neutral overflow-chip treatment, or null\n * for the default brand-subtle tones from avatar.scss. */\n readonly tint = input<{ bg: string; fg: string } | 'neutral' | null>(null);\n\n protected readonly tintStyle = computed(() => {\n const value = this.tint();\n if (value && value !== 'neutral') {\n return { bg: value.bg, fg: value.fg };\n }\n\n return { bg: null as string | null, fg: null as string | null };\n });\n}\n","@if (imageUrl()) {\n <img\n alt=\"\"\n [src]=\"imageUrl()\"\n />\n} @else {\n {{ initials() }}\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ds-avatar-group',\n standalone: true,\n templateUrl: './avatar-group.component.html',\n styleUrl: './avatar-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AvatarGroupComponent {\n readonly max = input<number>(4);\n readonly total = input<number | null>(null);\n\n protected readonly overflow = computed<number | null>(() => {\n const total = this.total();\n const max = this.max();\n if (total === null) {\n return null;\n }\n\n return total > max ? total - max : null;\n });\n}\n","<ng-content></ng-content>\n\n@if (overflow() !== null) {\n <span class=\"avatar-overflow\">\n +{{ overflow() }}\n </span>\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { CardElevation, CardPadding } from './card.types';\n\n@Component({\n selector: 'ds-card',\n standalone: true,\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CardComponent {\n readonly elevation = input<CardElevation>('flat');\n readonly padding = input<CardPadding | null>(null);\n readonly pressed = output<MouseEvent>();\n\n protected readonly classes = computed(() => {\n const pad = this.padding();\n\n return `card ${this.elevation()}${pad ? ' padding-' + pad : ''}`;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.elevation() === 'interactive') {\n this.pressed.emit(event);\n }\n }\n}\n","<article\n [class]=\"classes()\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</article>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-stat',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './stat.component.html',\n styleUrl: './stat.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.danger]': \"variant() === 'danger'\",\n '[class.size-sm]': \"size() === 'sm'\",\n '[class.size-lg]': \"size() === 'lg'\",\n },\n})\nexport class StatComponent {\n readonly label = input.required<string>();\n readonly value = input.required<string | number>();\n readonly delta = input<number | null>(null);\n readonly deltaLabel = input<string>('');\n readonly deltaTone = input<'neutral' | 'secondary' | null>(null);\n readonly caption = input<string>('');\n readonly unit = input<string>('');\n readonly variant = input<'default' | 'danger'>('default');\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n protected readonly deltaClasses = computed(() => {\n const delta = this.delta();\n if (delta === null) {\n return '';\n }\n const tone = this.deltaTone();\n if (tone) {\n return `delta ${tone}`;\n }\n if (delta > 0) {\n return 'delta up';\n }\n if (delta < 0) {\n return 'delta down';\n }\n\n return 'delta';\n });\n\n protected readonly deltaIcon = computed<'arrowUp' | 'arrowDown' | null>(\n () => {\n const delta = this.delta();\n if (delta === null || delta === 0) {\n return null;\n }\n\n return delta > 0 ? 'arrowUp' : 'arrowDown';\n },\n );\n\n protected readonly deltaText = computed(() => {\n const delta = this.delta();\n if (delta === null) {\n return '';\n }\n const magnitude = Math.abs(delta);\n const suffix = this.deltaLabel() ? ` ${this.deltaLabel()}` : '';\n\n return `${magnitude}${suffix}`;\n });\n}\n","<div class=\"stat\">\n <div class=\"label\">\n {{ label() }}\n </div>\n\n <div class=\"value\">\n {{ value() }}{{ unit() }}\n </div>\n\n @if (delta() !== null) {\n <div [class]=\"deltaClasses()\">\n @if (deltaIcon(); as icon) {\n <ds-icon\n [name]=\"icon\"\n [size]=\"12\"\n >\n </ds-icon>\n }\n\n <ng-content select=\"[delta]\">{{ deltaText() }}</ng-content>\n </div>\n } @else if (caption()) {\n <div class=\"caption\">\n {{ caption() }}\n </div>\n }\n</div>\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n input,\n viewChild,\n} from '@angular/core';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-tab',\n standalone: true,\n template: `<ng-template #content>\n <ng-content></ng-content>\n </ng-template>`,\n styles: [':host { display: none; }'],\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TabComponent {\n readonly label = input.required<string>();\n readonly icon = input<IconName | null>(null);\n readonly count = input<number | null>(null);\n readonly disabled = input<boolean>(false);\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport { TabComponent } from './tab.component';\nimport type { TabsVariant } from './tabs.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-tabs',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TabsComponent {\n readonly selectedIndex = model<number>(0);\n readonly variant = input<TabsVariant>('line');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly uid = `ds-tabs-${++nextId}`;\n\n protected readonly tabs = contentChildren(TabComponent);\n\n protected tabId(index: number): string {\n return `${this.uid}-tab-${index}`;\n }\n protected panelId(index: number): string {\n return `${this.uid}-panel-${index}`;\n }\n\n protected readonly tabsClasses = computed(() =>\n this.variant() === 'pills' ? 'tabs pills' : 'tabs',\n );\n\n protected readonly selectedTemplate = computed(() => {\n const index = this.selectedIndex();\n const list = this.tabs();\n\n return list[index]?.content() ?? null;\n });\n\n protected tabClasses(index: number, disabled: boolean): string {\n const parts = ['tab'];\n if (index === this.selectedIndex()) {\n parts.push('active');\n }\n if (disabled) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n }\n\n protected select(index: number, disabled: boolean): void {\n if (disabled) {\n return;\n }\n this.selectedIndex.set(index);\n }\n\n /** Roving keyboard navigation across the tablist (APG automatic activation). */\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length;\n if (!count) {\n return;\n }\n const forward = event.key === 'ArrowRight' || event.key === 'ArrowDown';\n const backward = event.key === 'ArrowLeft' || event.key === 'ArrowUp';\n let next: number;\n if (forward) {\n next = (index + 1) % count;\n } else if (backward) {\n next = (index - 1 + count) % count;\n } else if (event.key === 'Home') {\n next = 0;\n } else if (event.key === 'End') {\n next = count - 1;\n } else {\n return;\n }\n event.preventDefault();\n // Skip disabled tabs in the travel direction.\n const step = backward || event.key === 'End' ? -1 : 1;\n let guard = 0;\n while (this.tabs()[next]?.disabled() && guard < count) {\n next = (next + step + count) % count;\n guard++;\n }\n this.select(next, this.tabs()[next]?.disabled() ?? false);\n setTimeout(() => {\n const element = this.host.nativeElement.querySelector(\n `#${this.tabId(next)}`,\n ) as HTMLElement | null;\n element?.focus();\n });\n }\n}\n","<div\n role=\"tablist\"\n [class]=\"tabsClasses()\"\n>\n @for (tab of tabs(); track $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tabId($index)\"\n [class]=\"tabClasses($index, tab.disabled())\"\n [attr.aria-selected]=\"$index === selectedIndex()\"\n [attr.aria-controls]=\"panelId($index)\"\n [attr.tabindex]=\"$index === selectedIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n (click)=\"select($index, tab.disabled())\"\n (keydown)=\"onKeydown($event, $index)\"\n >\n @if (tab.icon()) {\n <ds-icon\n [name]=\"tab.icon()!\"\n [size]=\"14\"\n >\n </ds-icon>\n }\n\n <span>\n {{ tab.label() }}\n </span>\n\n @if (tab.count() !== null) {\n <span class=\"badge neutral count\">\n {{ tab.count() }}\n </span>\n }\n </button>\n }\n</div>\n\n<div\n class=\"panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"panelId(selectedIndex())\"\n [attr.aria-labelledby]=\"tabId(selectedIndex())\"\n>\n @if (selectedTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n }\n</div>\n","import { Directive, effect, signal, type ModelSignal } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Shared `ControlValueAccessor` for DS form controls whose value is a signal\n * `model()`. Bridges that model with Angular forms (reactive `formControl` /\n * `formControlName` and template `ngModel`) in both directions, WITHOUT\n * touching the existing `[(value)]` signal API — both keep working.\n *\n * A subclass must expose the `value` model and OR `formDisabled()` into its\n * effective disabled state so `FormControl.disable()` actually reaches the\n * control; it should also call `markTouched()` from a blur handler.\n */\n@Directive()\nexport abstract class DsControlValueAccessor<\n T,\n> implements ControlValueAccessor {\n /** The component's two-way value model. */\n abstract readonly value: ModelSignal<T>;\n\n /** Driven by the forms API via `setDisabledState`. */\n protected readonly formDisabled = signal(false);\n\n private onChange: (value: T) => void = () => {};\n private onTouched: () => void = () => {};\n\n // Last value synced with the forms API. Guards the value-watching effect from\n // echoing a form-driven write back as a user change (which would dirty the\n // control or loop), while still emitting every genuine model change.\n private synced: T | undefined;\n private hasSynced = false;\n\n constructor() {\n effect(() => {\n const next = this.value();\n if (!this.hasSynced) {\n // Adopt the initial value once, silently — never emit on init.\n this.hasSynced = true;\n this.synced = next;\n\n return;\n }\n if (Object.is(next, this.synced)) {\n return;\n }\n this.synced = next;\n this.onChange(next);\n });\n }\n\n /** Call from a blur handler so the control reports `ng-touched`. */\n protected markTouched(): void {\n this.onTouched();\n }\n\n writeValue(value: T): void {\n this.hasSynced = true;\n this.synced = value;\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport type { InputSize, InputType } from './input.types';\n\n/** Process-wide counter so each control gets a stable, unique id for\n * label/hint association (no DOM dependency, SSR-safe). */\nlet nextId = 0;\n\n@Component({\n selector: 'ds-input',\n standalone: true,\n imports: [FormsModule, IconComponent],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent extends DsControlValueAccessor<string> {\n readonly value = model<string>('');\n readonly type = input<InputType>('text');\n readonly size = input<InputSize>('md');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly invalid = input<boolean>(false);\n readonly success = input(false, { transform: booleanAttribute });\n readonly withAddon = input(false, { transform: booleanAttribute });\n readonly withAddonRight = input(false, { transform: booleanAttribute });\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly name = input<string | null>(null);\n // Numeric constraints (applied when type=\"number\").\n readonly min = input<number | null>(null);\n readonly max = input<number | null>(null);\n readonly step = input<number | null>(null);\n /** Native autocomplete token (e.g. \"email\", \"current-password\"). */\n readonly autocomplete = input<string | null>(null);\n readonly autofocus = input<boolean>(false);\n /** Accessible name when no visible `label` is provided (falls back to the\n * placeholder so the control is never unnamed). */\n readonly ariaLabel = input<string | null>(null);\n /** Mobile keyboard hints — forwarded to the native input as attributes. */\n readonly enterKeyHint = input<\n 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | null\n >(null);\n readonly inputMode = input<\n | 'none'\n | 'text'\n | 'decimal'\n | 'numeric'\n | 'tel'\n | 'search'\n | 'email'\n | 'url'\n | null\n >(null);\n /** Emits when the native input loses focus. */\n readonly blurred = output<void>();\n /**\n * Show an inline clear (×) button when the input has a non-empty value.\n * Mirrors the Material/PrimeNG pattern: explicit button (not native search\n * cancel) so the affordance is consistent across browsers and styled with\n * DS tokens. Defaults to true when type='search', false otherwise — pass\n * an explicit boolean to override.\n */\n readonly clearable = input<boolean | null>(null);\n\n readonly passwordToggle = input(false, { transform: booleanAttribute });\n readonly passwordVisible = model<boolean>(false);\n\n protected readonly canClear = computed<boolean>(() => {\n const explicit = this.clearable();\n if (explicit !== null) {\n return explicit;\n }\n\n return this.type() === 'search';\n });\n\n protected readonly uid = `ds-input-${++nextId}`;\n protected readonly hintId = computed(() =>\n this.hint() ? `${this.uid}-hint` : null,\n );\n /** Only name via aria-label when there's no visible `<label for>`. */\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly showPasswordToggle = computed<boolean>(\n () =>\n this.passwordToggle() && this.type() === 'password' && !this.isDisabled(),\n );\n\n protected readonly effectiveType = computed<InputType>(() =>\n this.passwordToggle() &&\n this.type() === 'password' &&\n this.passwordVisible()\n ? 'text'\n : this.type(),\n );\n\n protected togglePassword(): void {\n this.passwordVisible.update((visible) => !visible);\n }\n\n protected readonly wrapperClasses = computed(() => {\n const parts = ['field'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.invalid()) {\n parts.push('error');\n } else if (this.success()) {\n parts.push('success');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.readOnly()) {\n parts.push('read-only');\n }\n if (this.withAddon()) {\n parts.push('with-addon');\n }\n if (this.withAddonRight()) {\n parts.push('with-addon-right');\n }\n\n return parts.join(' ');\n });\n\n protected clear(): void {\n this.value.set('');\n }\n}\n","<div [class]=\"wrapperClasses()\">\n @if (label()) {\n <label\n class=\"label\"\n [attr.for]=\"uid\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </label>\n }\n\n <div class=\"control\">\n <span class=\"addon-slot prefix\">\n <ng-content select=\"[dsInputPrefix]\"></ng-content>\n </span>\n\n <input\n [id]=\"uid\"\n [type]=\"effectiveType()\"\n [attr.name]=\"name()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.autofocus]=\"autofocus() ? '' : null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.enterkeyhint]=\"enterKeyHint()\"\n [attr.inputmode]=\"inputMode()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readOnly()\"\n [required]=\"required()\"\n [(ngModel)]=\"value\"\n (blur)=\"blurred.emit(); markTouched()\"\n />\n\n @if (canClear() && value() && !isDisabled()) {\n <button\n type=\"button\"\n class=\"clear-btn\"\n aria-label=\"Clear input\"\n (click)=\"clear()\"\n >\n </button>\n }\n\n @if (showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"password-toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"\n passwordVisible() ? 'Hide password' : 'Show password'\n \"\n (click)=\"togglePassword()\"\n >\n <ds-icon\n [name]=\"passwordVisible() ? 'eye-off' : 'eye'\"\n [size]=\"16\"\n />\n </button>\n }\n\n <span class=\"addon-slot suffix\">\n <ng-content select=\"[dsInputSuffix]\"></ng-content>\n </span>\n </div>\n\n @if (hint()) {\n <span\n class=\"hint\"\n [id]=\"hintId()\"\n [attr.role]=\"invalid() ? 'alert' : null\"\n >\n {{ hint() }}\n </span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { NumberStepperSize } from './number-stepper.types';\n\n@Component({\n selector: 'ds-number-stepper',\n standalone: true,\n templateUrl: './number-stepper.component.html',\n styleUrl: './number-stepper.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberStepperComponent {\n readonly value = model<number>(0);\n readonly min = input<number>(0);\n readonly max = input<number | null>(null);\n readonly step = input<number>(1);\n readonly size = input<NumberStepperSize>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly atMin = computed(() => this.value() <= this.min());\n protected readonly atMax = computed(() => {\n const max = this.max();\n\n return max != null && this.value() >= max;\n });\n\n protected readonly stepperClass = computed(() => {\n const parts = ['stepper', `size-${this.size()}`];\n if (this.disabled()) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n });\n\n inc(): void {\n if (this.atMax() || this.disabled()) {\n return;\n }\n this.value.set(this.value() + this.step());\n }\n\n dec(): void {\n if (this.atMin() || this.disabled()) {\n return;\n }\n this.value.set(this.value() - this.step());\n }\n\n protected setRaw(raw: string): void {\n const parsed = Number.parseInt(raw, 10);\n const number = Number.isNaN(parsed) ? 0 : parsed;\n let clamped = Math.max(this.min(), number);\n const max = this.max();\n if (max != null) {\n clamped = Math.min(max, clamped);\n }\n this.value.set(clamped);\n }\n}\n","<div [class]=\"stepperClass()\">\n <button\n type=\"button\"\n class=\"step minus\"\n [disabled]=\"atMin() || disabled()\"\n (click)=\"dec()\"\n >\n −\n </button>\n\n <input\n type=\"number\"\n class=\"qty\"\n [min]=\"min()\"\n [max]=\"max() ?? undefined\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"setRaw($any($event.target).value)\"\n />\n\n <button\n type=\"button\"\n class=\"step plus\"\n [disabled]=\"atMax() || disabled()\"\n (click)=\"inc()\"\n >\n +\n </button>\n</div>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport type { TextareaSize, TextareaResize } from './textarea.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-textarea',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent extends DsControlValueAccessor<string> {\n readonly value = model<string>('');\n readonly size = input<TextareaSize>('md');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly rows = input<number>(3);\n readonly name = input<string | null>(null);\n readonly autosize = input(false, { transform: booleanAttribute });\n readonly minRows = input<number | null>(null);\n readonly maxRows = input<number | null>(null);\n readonly resize = input<TextareaResize>('vertical');\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = `ds-textarea-${++nextId}`;\n protected readonly hintId = computed(() =>\n this.hint() ? `${this.uid}-hint` : null,\n );\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly wrapperClasses = computed(() => {\n const parts = ['field'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.invalid()) {\n parts.push('error');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.autosize()) {\n parts.push('autosize');\n }\n\n return parts.join(' ');\n });\n\n protected readonly autosizeMinHeight = computed(() =>\n this.autosize() && this.minRows() ? `${this.minRows()}lh` : null,\n );\n protected readonly autosizeMaxHeight = computed(() =>\n this.autosize() && this.maxRows() ? `${this.maxRows()}lh` : null,\n );\n\n // Autosize grows with content, so a manual resize handle conflicts — force none.\n protected readonly effectiveResize = computed<TextareaResize>(() =>\n this.autosize() ? 'none' : this.resize(),\n );\n}\n","<div [class]=\"wrapperClasses()\">\n @if (label()) {\n <label\n class=\"label\"\n [attr.for]=\"uid\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </label>\n }\n\n <div class=\"control\">\n <textarea\n [id]=\"uid\"\n [rows]=\"rows()\"\n [attr.name]=\"name()\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [style.resize]=\"effectiveResize()\"\n [style.min-height]=\"autosizeMinHeight()\"\n [style.max-height]=\"autosizeMaxHeight()\"\n [style.overflow-y]=\"autosize() && maxRows() ? 'auto' : null\"\n [(ngModel)]=\"value\"\n (blur)=\"markTouched()\"\n >\n </textarea>\n </div>\n\n @if (hint()) {\n <span\n class=\"hint\"\n [id]=\"hintId()\"\n [attr.role]=\"invalid() ? 'alert' : null\"\n >\n {{ hint() }}\n </span>\n }\n</div>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-search',\n standalone: true,\n imports: [FormsModule, IconComponent],\n templateUrl: './search.component.html',\n styleUrl: './search.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SearchComponent {\n readonly value = model<string>('');\n readonly placeholder = input<string>('Search');\n readonly shortcut = input<string>('');\n readonly showIcon = input<boolean>(true);\n /** Show an inline clear (×) button on the right when there's a value. */\n readonly clearable = input<boolean>(false);\n /** Accessible name for the input (placeholder is not a reliable label). */\n readonly ariaLabel = input<string>('');\n readonly submitted = output<string>();\n\n private readonly inputEl =\n viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n protected onSubmit(): void {\n this.submitted.emit(this.value());\n }\n\n protected clear(): void {\n this.value.set('');\n // The × is removed once empty; return focus to the input so keyboard\n // users don't get dropped onto <body>.\n this.inputEl()?.nativeElement.focus();\n }\n}\n","<div class=\"search\">\n @if (showIcon()) {\n <ds-icon\n name=\"search\"\n [size]=\"16\"\n >\n </ds-icon>\n }\n\n <input\n #searchInput\n class=\"input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder() || null\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"onSubmit()\"\n />\n\n @if (clearable() && value()) {\n <button\n type=\"button\"\n class=\"search-clear\"\n aria-label=\"Clear search\"\n (click)=\"clear()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n }\n\n @if (shortcut()) {\n <kbd class=\"kbd\">\n {{ shortcut() }}\n </kbd>\n }\n</div>\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n/** Showcase-only: renders the component's open/overlay surface inline in normal\n * flow instead of its real overlay mechanics (for static docs specimens).\n * Not part of the production contract. */\n@Directive({ standalone: true })\nexport class DsStaticPreview {\n readonly staticPreview = input(false, { transform: booleanAttribute });\n}\n","export type SelectSize = 'sm' | 'md' | 'lg';\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: string;\n options: SelectOption[];\n disabled?: boolean;\n}\n\nexport type SelectItem = SelectOption | SelectOptionGroup;\n\nexport function isSelectOptionGroup(\n item: SelectItem,\n): item is SelectOptionGroup {\n return (\n 'options' in item && Array.isArray((item as SelectOptionGroup).options)\n );\n}\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport {\n isSelectOptionGroup,\n type SelectItem,\n type SelectOption,\n type SelectOptionGroup,\n type SelectSize,\n} from './select.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-select',\n standalone: true,\n imports: [IconComponent, NgTemplateOutlet],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent extends DsControlValueAccessor<string> {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly value = model<string>('');\n readonly options = input<SelectItem[]>([]);\n readonly placeholder = input<string>('');\n readonly size = input<SelectSize>('md');\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly name = input<string | null>(null);\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = `ds-select-${++nextId}`;\n protected readonly labelId = `${this.uid}-label`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(flatIndex: number): string {\n return `${this.uid}-opt-${flatIndex}`;\n }\n /** Active option for `aria-activedescendant` (combobox keeps DOM focus). */\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl =\n viewChild.required<TemplateRef<unknown>>('panelContent');\n protected readonly open = signal<boolean>(false);\n protected readonly activeIndex = signal<number>(-1);\n\n private overlayRef: OverlayRef | null = null;\n\n // Flattened list of selectable options paired with the parent-group `disabled`\n // state, so keyboard nav and selection ignore group-header labels and respect\n // group-level disable. Index of an entry here corresponds to `activeIndex`.\n protected readonly flatOptions = computed<\n { option: SelectOption; groupDisabled: boolean }[]\n >(() => {\n const out: { option: SelectOption; groupDisabled: boolean }[] = [];\n for (const item of this.options()) {\n if (isSelectOptionGroup(item)) {\n const groupDisabled = !!item.disabled;\n for (const opt of item.options) {\n out.push({ option: opt, groupDisabled });\n }\n } else {\n out.push({ option: item, groupDisabled: false });\n }\n }\n\n return out;\n });\n\n protected readonly selectedOption = computed<SelectOption | null>(() => {\n const current = this.value();\n const found = this.flatOptions().find(\n ({ option }) => option.value === current,\n );\n\n return found?.option ?? null;\n });\n\n protected readonly displayLabel = computed<string>(() => {\n return this.selectedOption()?.label ?? this.placeholder();\n });\n\n protected readonly hasValue = computed<boolean>(\n () => !!this.selectedOption(),\n );\n\n protected readonly triggerClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.invalid()) {\n parts.push('error');\n }\n if (this.open() || this.preview.staticPreview()) {\n parts.push('open');\n }\n\n return parts.join(' ');\n });\n\n constructor() {\n super();\n effect(() => {\n if (!this.open()) {\n return;\n }\n const index = this.flatOptions().findIndex(\n ({ option }) => option.value === this.value(),\n );\n this.activeIndex.set(index >= 0 ? index : this.firstEnabledIndex());\n });\n }\n\n protected isOptionGroup(item: SelectItem): item is SelectOptionGroup {\n return isSelectOptionGroup(item);\n }\n\n // Resolve the flat-index for a given option so click/hover/selection\n // map back to the same indices keyboard nav uses (no double bookkeeping).\n protected flatIndexOf(opt: SelectOption): number {\n return this.flatOptions().findIndex(({ option }) => option === opt);\n }\n\n protected toggle(): void {\n if (this.isDisabled() || this.preview.staticPreview()) {\n return;\n }\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const width = triggerElement.getBoundingClientRect().width;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n // Reuse the global panel skin defined in styles/_dropdown-overlay.scss\n // so the portaled panel actually renders styled — `:host ::ng-deep`\n // selectors can't reach a node outside the host's DOM tree.\n panelClass: 'ds-dropdown-panel',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width,\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.open.set(true);\n }\n\n protected close(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.open.set(false);\n this.activeIndex.set(-1);\n this.markTouched();\n }\n\n protected pick(option: SelectOption, groupDisabled = false): void {\n if (option.disabled || groupDisabled) {\n return;\n }\n this.value.set(option.value);\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected isSelected(option: SelectOption): boolean {\n return option.value === this.value();\n }\n\n protected isOptionDisabled(\n option: SelectOption,\n groupDisabled = false,\n ): boolean {\n return !!option.disabled || groupDisabled;\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.preview.staticPreview()) {\n return;\n }\n const key = event.key;\n if (!this.open()) {\n if (\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter' ||\n key === ' '\n ) {\n event.preventDefault();\n this.openPanel();\n }\n\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const index = this.activeIndex();\n const entry = this.flatOptions()[index];\n if (entry) {\n this.pick(entry.option, entry.groupDisabled);\n }\n\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\n\n return;\n }\n if (key === 'End') {\n event.preventDefault();\n this.activeIndex.set(this.lastEnabledIndex());\n }\n }\n\n protected isActive(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private moveActive(delta: number): void {\n const opts = this.flatOptions();\n if (opts.length === 0) {\n return;\n }\n let next = this.activeIndex();\n for (let attempts = 0; attempts < opts.length; attempts++) {\n next = (next + delta + opts.length) % opts.length;\n const candidate = opts[next];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n this.activeIndex.set(next);\n\n return;\n }\n }\n }\n\n private firstEnabledIndex(): number {\n const opts = this.flatOptions();\n for (let i = 0; i < opts.length; i++) {\n const candidate = opts[i];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n return i;\n }\n }\n\n return -1;\n }\n\n private lastEnabledIndex(): number {\n const opts = this.flatOptions();\n for (let i = opts.length - 1; i >= 0; i--) {\n const candidate = opts[i];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n return i;\n }\n }\n\n return -1;\n }\n}\n","@if (label()) {\n <span\n class=\"select-label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </span>\n}\n\n<button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [class]=\"triggerClasses()\"\n [attr.name]=\"name()\"\n [attr.aria-expanded]=\"open() || preview.staticPreview()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"trigger-text\"\n [class.is-placeholder]=\"!hasValue()\"\n >\n {{ displayLabel() }}\n </span>\n\n <span class=\"chevron\">\n <ds-icon\n name=\"chevronDown\"\n [size]=\"14\"\n />\n </span>\n</button>\n\n@if (preview.staticPreview()) {\n <div class=\"ds-dropdown-panel\">\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n </div>\n}\n\n<ng-template #panel>\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n</ng-template>\n\n<ng-template #panelContent>\n <div class=\"dropdown-panel\">\n <ul\n class=\"dropdown-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n >\n @for (item of options(); track item.label; let groupIdx = $index) {\n @if (isOptionGroup(item)) {\n <li\n class=\"optgroup\"\n role=\"group\"\n [attr.aria-label]=\"item.label\"\n >\n <span\n class=\"optgroup-label\"\n [class.is-first]=\"groupIdx === 0\"\n >\n {{ item.label }}\n </span>\n\n <ul\n class=\"optgroup-list\"\n role=\"presentation\"\n >\n @for (opt of item.options; track opt.value) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(flatIndexOf(opt))\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"\n isOptionDisabled(opt, item.disabled) ? 'true' : null\n \"\n [class.is-selected]=\"isSelected(opt)\"\n [class.is-active]=\"isActive(flatIndexOf(opt))\"\n [class.is-disabled]=\"isOptionDisabled(opt, item.disabled)\"\n [disabled]=\"isOptionDisabled(opt, item.disabled)\"\n (click)=\"pick(opt, item.disabled)\"\n (mouseenter)=\"activeIndex.set(flatIndexOf(opt))\"\n >\n <span class=\"option-label\">\n {{ opt.label }}\n </span>\n\n @if (isSelected(opt)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n </ul>\n </li>\n } @else {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(flatIndexOf(item))\"\n [attr.aria-selected]=\"isSelected(item)\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [class.is-selected]=\"isSelected(item)\"\n [class.is-active]=\"isActive(flatIndexOf(item))\"\n [class.is-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n (click)=\"pick(item)\"\n (mouseenter)=\"activeIndex.set(flatIndexOf(item))\"\n >\n <span class=\"option-label\">\n {{ item.label }}\n </span>\n\n @if (isSelected(item)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n }\n </ul>\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport type { DropdownOption, DropdownSize } from './dropdown.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-dropdown',\n standalone: true,\n imports: [IconComponent, NgTemplateOutlet],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n})\nexport class DropdownComponent {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly value = model<string>('');\n readonly options = input<DropdownOption[]>([]);\n readonly placeholder = input<string>('Select…');\n readonly size = input<DropdownSize>('md');\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly error = input<boolean>(false);\n readonly name = input<string | null>(null);\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = `ds-dropdown-${++nextId}`;\n protected readonly labelId = `${this.uid}-label`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(index: number): string {\n return `${this.uid}-opt-${index}`;\n }\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl =\n viewChild.required<TemplateRef<unknown>>('panelContent');\n protected readonly open = signal<boolean>(false);\n protected readonly activeIndex = signal<number>(-1);\n\n private overlayRef: OverlayRef | null = null;\n\n protected readonly selectedOption = computed<DropdownOption | null>(() => {\n const current = this.value();\n const found = this.options().find((o) => o.value === current);\n\n return found ?? null;\n });\n\n protected readonly displayLabel = computed<string>(() => {\n return this.selectedOption()?.label ?? this.placeholder();\n });\n\n protected readonly hasValue = computed<boolean>(\n () => !!this.selectedOption(),\n );\n\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n\n protected readonly wrapperClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n if (this.readOnly()) {\n parts.push('readonly');\n }\n if (this.error()) {\n parts.push('error');\n }\n if (this.open() || this.preview.staticPreview()) {\n parts.push('open');\n }\n\n return parts.join(' ');\n });\n\n constructor() {\n effect(() => {\n if (!this.open()) {\n return;\n }\n const index = this.options().findIndex((o) => o.value === this.value());\n this.activeIndex.set(index >= 0 ? index : this.firstEnabledIndex());\n });\n }\n\n protected toggle(): void {\n if (this.disabled() || this.readOnly() || this.preview.staticPreview()) {\n return;\n }\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const width = triggerElement.getBoundingClientRect().width;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n // Global panel class — the portaled pane lives outside :host, so\n // styles live in styles/_dropdown-overlay.scss keyed off this class.\n panelClass: 'ds-dropdown-panel',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width,\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.open.set(true);\n }\n\n protected close(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.open.set(false);\n this.activeIndex.set(-1);\n }\n\n protected pick(option: DropdownOption): void {\n if (option.disabled) {\n return;\n }\n this.value.set(option.value);\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected isSelected(option: DropdownOption): boolean {\n return option.value === this.value();\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readOnly() || this.preview.staticPreview()) {\n return;\n }\n const key = event.key;\n if (!this.open()) {\n if (\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter' ||\n key === ' '\n ) {\n event.preventDefault();\n this.openPanel();\n }\n\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const index = this.activeIndex();\n const opt = this.options()[index];\n if (opt) {\n this.pick(opt);\n }\n\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\n\n return;\n }\n if (key === 'End') {\n event.preventDefault();\n this.activeIndex.set(this.lastEnabledIndex());\n }\n }\n\n protected isActive(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private moveActive(delta: number): void {\n const opts = this.options();\n if (opts.length === 0) {\n return;\n }\n let next = this.activeIndex();\n for (let attempts = 0; attempts < opts.length; attempts++) {\n next = (next + delta + opts.length) % opts.length;\n const candidate = opts[next];\n if (candidate && !candidate.disabled) {\n this.activeIndex.set(next);\n\n return;\n }\n }\n }\n\n private firstEnabledIndex(): number {\n const opts = this.options();\n for (let i = 0; i < opts.length; i++) {\n const candidate = opts[i];\n if (candidate && !candidate.disabled) {\n return i;\n }\n }\n\n return -1;\n }\n\n private lastEnabledIndex(): number {\n const opts = this.options();\n for (let i = opts.length - 1; i >= 0; i--) {\n const candidate = opts[i];\n if (candidate && !candidate.disabled) {\n return i;\n }\n }\n\n return -1;\n }\n}\n","@if (label()) {\n <span\n class=\"dropdown-label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n </span>\n}\n\n<button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [class]=\"wrapperClasses()\"\n [attr.name]=\"name()\"\n [attr.aria-expanded]=\"open() || preview.staticPreview()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"trigger-text\"\n [class.is-placeholder]=\"!hasValue()\"\n >\n {{ displayLabel() }}\n </span>\n\n <span class=\"chevron\">\n <ds-icon\n name=\"chevronDown\"\n [size]=\"14\"\n />\n </span>\n</button>\n\n@if (preview.staticPreview()) {\n <div class=\"ds-dropdown-panel\">\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n </div>\n}\n\n<ng-template #panel>\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n</ng-template>\n\n<ng-template #panelContent>\n <div class=\"dropdown-panel\">\n <ul\n class=\"dropdown-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n >\n @for (opt of options(); track opt.value; let i = $index) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(i)\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"opt.disabled ? 'true' : null\"\n [class.is-selected]=\"isSelected(opt)\"\n [class.is-active]=\"isActive(i)\"\n [class.is-disabled]=\"opt.disabled\"\n [disabled]=\"opt.disabled\"\n (click)=\"pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (opt.icon) {\n <ds-icon\n class=\"option-icon\"\n [name]=\"opt.icon\"\n [size]=\"16\"\n />\n }\n\n <span class=\"option-label\">\n {{ opt.label }}\n </span>\n\n @if (isSelected(opt)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n </ul>\n </div>\n</ng-template>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\n@Component({\n selector: 'ds-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.component.scss',\n host: {\n 'aria-hidden': 'true',\n '[style.width]': 'width()',\n '[style.height]': 'height()',\n '[class.circle]': 'circle()',\n '[class.inline]': 'inline()',\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SkeletonComponent {\n readonly width = input<string | undefined>(undefined);\n readonly height = input<string | undefined>(undefined);\n readonly circle = input<boolean>(false);\n readonly inline = input<boolean>(false);\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Projects a custom cell template into <ds-table> for a specific column.\n *\n * Usage:\n * <ds-table [data]=\"rows\" [columns]=\"cols\">\n * <ng-template dsCellTemplate=\"product\" let-row>\n * <div>{{ asRule(row).product }}</div>\n * </ng-template>\n * </ds-table>\n *\n * The template context type is `unknown` because Angular cannot propagate\n * the parent <ds-table>'s row type to projected templates. Consumers should\n * narrow the row with a typed helper method on the host component.\n *\n * Context shape:\n * - $implicit: the row object (typed `unknown`)\n * - row: alias for the row object (typed `unknown`)\n */\n@Directive({\n selector: '[dsCellTemplate]',\n standalone: true,\n})\nexport class CellTemplateDirective {\n readonly dsCellTemplate = input.required<string>();\n readonly template = inject(TemplateRef<{ $implicit: unknown; row: unknown }>);\n}\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\nimport { CellTemplateDirective } from './cell-template.directive';\nimport type { SortChangeEvent, SortDir, TableColumn } from './table.types';\n\n@Component({\n selector: 'ds-table',\n standalone: true,\n imports: [IconComponent, NgTemplateOutlet, SkeletonComponent],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.bordered]': 'bordered()',\n },\n})\nexport class TableComponent<T extends { id: string }> {\n readonly data = input.required<readonly T[]>();\n readonly columns = input.required<readonly TableColumn<T>[]>();\n readonly selectable = input<boolean>(false);\n /** Opt-in outer border + radius. Off by default so tables flush inside a\n * `<ds-card padding=\"none\">` (workspaces, programs-list) don't double-border.\n * When `true`, the scroll-wrap gets a `var(--border-default)` outline and\n * `var(--radius-md)` radius — useful when the table stands alone in a padded card. */\n readonly bordered = input<boolean>(false);\n /** false — no loading state.\n * 'skeleton' — first-load placeholder; rows are replaced with shimmer\n * rows that read the global --skeleton-shimmer-x driver.\n * 'overlay' — re-fetch indicator; existing rows stay visible behind\n * a translucent overlay with a centred spinner. */\n readonly loading = input<false | 'skeleton' | 'overlay'>(false);\n readonly stickyHeader = input<boolean>(true);\n readonly selectedIds = model<Set<string>>(new Set<string>());\n readonly sortKey = model<string | null>(null);\n readonly sortDir = model<SortDir>(null);\n readonly skeletonRows = input<number>(5);\n /** Accessible name for the table (rendered as a visually-hidden caption).\n * Without it, screen-reader users get an unlabelled table. */\n readonly caption = input<string>('');\n /** When true, each row becomes a keyboard-operable control (role=button,\n * tabindex, Enter/Space → rowClick) with an accessible name from the first\n * column. Off by default so non-navigating tables don't advertise a false\n * click affordance. */\n readonly rowInteractive = input<boolean>(false);\n\n readonly rowClick = output<T>();\n readonly sortChange = output<SortChangeEvent>();\n\n /** Cell templates supplied as an explicit map instead of (or in addition to)\n * projected `dsCellTemplate` directives. Lets a wrapper component (e.g.\n * ids-data-table) collect the directives itself and pass them down, since\n * content projected through a wrapper's `<ng-content>` is not seen by this\n * component's content query. Entries here override projected ones. */\n readonly cellTemplateMap = input<\n Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>>\n >({});\n\n /** Empty-state template, as an alternative to the `[empty]` content slot —\n * again for wrappers that can't rely on slot re-projection. */\n readonly emptyTemplate = input<TemplateRef<unknown> | null>(null);\n\n protected readonly cellTemplateDirectives = contentChildren(\n CellTemplateDirective,\n );\n\n protected readonly cellTemplates = computed<\n Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>>\n >(() => {\n const map: Record<\n string,\n TemplateRef<{ $implicit: unknown; row: unknown }>\n > = {};\n for (const dir of this.cellTemplateDirectives()) {\n map[dir.dsCellTemplate()] = dir.template;\n }\n\n return { ...map, ...this.cellTemplateMap() };\n });\n\n protected cellTemplate(\n col: TableColumn<T>,\n ): TemplateRef<{ $implicit: unknown; row: unknown }> | null {\n return this.cellTemplates()[col.key] ?? null;\n }\n\n protected readonly tableClasses = computed(() => {\n const parts = ['table'];\n if (this.loading() === 'skeleton') {\n parts.push('skeleton-mode');\n }\n\n return parts.join(' ');\n });\n\n protected readonly isSkeletonLoading = computed(\n () => this.loading() === 'skeleton',\n );\n protected readonly isOverlayLoading = computed(\n () => this.loading() === 'overlay',\n );\n\n protected readonly allSelected = computed(() => {\n const data = this.data();\n if (data.length === 0) {\n return false;\n }\n const sel = this.selectedIds();\n\n return data.every((row) => sel.has(row.id));\n });\n\n protected readonly someSelected = computed(() => {\n const data = this.data();\n const sel = this.selectedIds();\n\n return data.some((row) => sel.has(row.id)) && !this.allSelected();\n });\n\n protected readonly skeletonArray = computed(() =>\n Array(this.skeletonRows()).fill(0),\n );\n\n protected isSelected(row: T): boolean {\n return this.selectedIds().has(row.id);\n }\n\n protected onToggleAll(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n const next = new Set<string>(this.selectedIds());\n if (checked) {\n this.data().forEach((row) => next.add(row.id));\n } else {\n this.data().forEach((row) => next.delete(row.id));\n }\n this.selectedIds.set(next);\n }\n\n protected onToggleRow(row: T, event: Event): void {\n event.stopPropagation();\n const checked = (event.target as HTMLInputElement).checked;\n const next = new Set<string>(this.selectedIds());\n if (checked) {\n next.add(row.id);\n } else {\n next.delete(row.id);\n }\n this.selectedIds.set(next);\n }\n\n protected onRowClick(row: T, event: Event): void {\n if ((event.target as HTMLElement).closest('input')) {\n return;\n }\n this.rowClick.emit(row);\n }\n\n protected onRowKey(row: T, event: Event): void {\n if (!this.rowInteractive()) {\n return;\n }\n event.preventDefault();\n this.rowClick.emit(row);\n }\n\n /** Accessible name for an interactive row, taken from the first column. */\n protected rowAriaLabel(row: T): string {\n const first = this.columns()[0];\n\n return first ? this.cellValue(row, first) : '';\n }\n\n /** `aria-sort` value for a header: only meaningful on sortable columns. */\n protected ariaSort(\n col: TableColumn<T>,\n ): 'ascending' | 'descending' | 'none' | null {\n if (!col.sortable) {\n return null;\n }\n if (this.sortKey() === col.key && this.sortDir()) {\n return this.sortDir() === 'asc' ? 'ascending' : 'descending';\n }\n\n return 'none';\n }\n\n protected onSort(col: TableColumn<T>): void {\n if (!col.sortable) {\n return;\n }\n const currentKey = this.sortKey();\n const currentDir = this.sortDir();\n let dir: SortDir;\n if (currentKey !== col.key) {\n dir = 'asc';\n } else if (currentDir === 'asc') {\n dir = 'desc';\n } else if (currentDir === 'desc') {\n dir = null;\n } else {\n dir = 'asc';\n }\n this.sortKey.set(dir ? col.key : null);\n this.sortDir.set(dir);\n this.sortChange.emit({ key: col.key, dir });\n }\n\n protected headerClasses(col: TableColumn<T>): string {\n const parts: string[] = [];\n if (col.sortable) {\n parts.push('sortable');\n }\n if (this.sortKey() === col.key && this.sortDir()) {\n parts.push(`sorted-${this.sortDir()}`);\n }\n\n return parts.join(' ');\n }\n\n protected sortIcon(col: TableColumn<T>): 'sortAsc' | 'sortDesc' | 'sort' {\n if (this.sortKey() !== col.key || !this.sortDir()) {\n return 'sort';\n }\n\n return this.sortDir() === 'asc' ? 'sortAsc' : 'sortDesc';\n }\n\n protected cellValue(row: T, col: TableColumn<T>): string {\n if (col.cell) {\n return col.cell(row);\n }\n\n return String((row as Record<string, unknown>)[col.key] ?? '');\n }\n\n /** Deterministic per-cell width so skeleton rows look organic but stable\n * across re-renders. Mixes column key + row index into one of five widths. */\n protected skeletonWidth(col: TableColumn<T>, rowIndex: number): string {\n const seed = `${col.key}-${rowIndex}`;\n let hash = 0;\n for (let charIndex = 0; charIndex < seed.length; charIndex++) {\n hash = (hash + seed.charCodeAt(charIndex)) | 0;\n }\n const widths = ['45%', '55%', '65%', '75%', '85%'];\n\n return widths[Math.abs(hash) % widths.length] ?? '70%';\n }\n}\n","<div\n class=\"scroll-wrap\"\n [class.loading-overlay]=\"isOverlayLoading()\"\n>\n @if (isOverlayLoading()) {\n <div\n class=\"overlay\"\n aria-hidden=\"true\"\n >\n <span class=\"spinner\"></span>\n </div>\n }\n\n <div\n class=\"visually-hidden\"\n role=\"status\"\n aria-live=\"polite\"\n >\n @if (loading() !== false) {\n Loading…\n }\n </div>\n\n <table\n [class]=\"tableClasses()\"\n [attr.role]=\"rowInteractive() ? 'grid' : null\"\n [attr.aria-busy]=\"loading() !== false ? 'true' : null\"\n >\n @if (caption()) {\n <caption class=\"visually-hidden\">\n {{\n caption()\n }}\n </caption>\n }\n\n <thead>\n <tr>\n @if (selectable()) {\n <th\n scope=\"col\"\n class=\"select-col\"\n >\n <input\n type=\"checkbox\"\n class=\"check\"\n aria-label=\"Select all rows\"\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (change)=\"onToggleAll($event)\"\n />\n </th>\n }\n\n @for (col of columns(); track col.key) {\n <th\n scope=\"col\"\n [class]=\"headerClasses(col)\"\n [class.numeric]=\"col.align === 'right'\"\n [attr.aria-sort]=\"ariaSort(col)\"\n >\n @if (col.sortable) {\n <button\n type=\"button\"\n class=\"th-label\"\n (click)=\"onSort(col)\"\n >\n {{ col.label }}\n <ds-icon\n class=\"sort-icon\"\n [name]=\"sortIcon(col)\"\n [size]=\"12\"\n >\n </ds-icon>\n </button>\n } @else {\n <span class=\"th-label\">\n {{ col.label }}\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSkeletonLoading()) {\n @for (_ of skeletonArray(); track $index; let rowIndex = $index) {\n <tr>\n @if (selectable()) {\n <td>\n <ds-skeleton\n width=\"14px\"\n height=\"14px\"\n [inline]=\"true\"\n />\n </td>\n }\n\n @for (col of columns(); track col.key) {\n <td [class.numeric]=\"col.align === 'right'\">\n <ds-skeleton\n height=\"14px\"\n [width]=\"skeletonWidth(col, rowIndex)\"\n [inline]=\"true\"\n />\n </td>\n }\n </tr>\n }\n } @else if (!data().length) {\n <tr>\n <td\n class=\"empty\"\n [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\"\n >\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\">\n </ng-container>\n } @else {\n <ng-content select=\"[empty]\"></ng-content>\n }\n </td>\n </tr>\n } @else {\n @for (row of data(); track row.id) {\n <tr\n [class.selected]=\"isSelected(row)\"\n [class.clickable]=\"rowInteractive()\"\n [attr.tabindex]=\"rowInteractive() ? 0 : null\"\n [attr.aria-label]=\"rowInteractive() ? rowAriaLabel(row) : null\"\n (click)=\"onRowClick(row, $event)\"\n (keydown.enter)=\"onRowKey(row, $event)\"\n (keydown.space)=\"onRowKey(row, $event)\"\n >\n @if (selectable()) {\n <td>\n <input\n type=\"checkbox\"\n class=\"check\"\n [attr.aria-label]=\"'Select ' + rowAriaLabel(row)\"\n [checked]=\"isSelected(row)\"\n (change)=\"onToggleRow(row, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n }\n\n @for (col of columns(); track col.key) {\n <td [class.numeric]=\"col.align === 'right'\">\n @if (cellTemplate(col); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row }\"\n >\n </ng-container>\n } @else {\n {{ cellValue(row, col) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (selectable() && someSelected()) {\n <div class=\"bulk-bar\">\n <span class=\"count\">\n {{ selectedIds().size }} selected\n </span>\n\n <span class=\"sep\"></span>\n\n <ng-content select=\"[bulk-actions]\"></ng-content>\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SelectComponent } from '../select/select.component';\n\n@Component({\n selector: 'ds-pagination',\n standalone: true,\n imports: [FormsModule, IconComponent, SelectComponent],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PaginationComponent {\n readonly total = input.required<number>();\n readonly pageSize = model<number>(10);\n readonly currentPage = model<number>(1);\n readonly pageSizeOptions = input<number[]>([10, 25, 50, 100]);\n readonly showLabel = input<boolean>(true);\n readonly pageChange = output<number>();\n readonly pageSizeChange = output<number>();\n\n protected readonly totalPages = computed(() =>\n Math.max(1, Math.ceil(this.total() / this.pageSize())),\n );\n\n protected readonly pageItems = computed<(number | 'ellipsis')[]>(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n const items: (number | 'ellipsis')[] = [1];\n if (current > 3) {\n items.push('ellipsis');\n }\n const start = Math.max(2, current - 1);\n const end = Math.min(total - 1, current + 1);\n for (let i = start; i <= end; i++) {\n items.push(i);\n }\n if (current < total - 2) {\n items.push('ellipsis');\n }\n items.push(total);\n\n return items;\n });\n\n protected readonly rangeLabel = computed(() => {\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), this.total());\n\n return `Showing ${start}–${end} of ${this.total()}`;\n });\n\n protected readonly sizeOptions = computed(() => {\n const presets = this.pageSizeOptions();\n const current = this.pageSize();\n const merged = presets.includes(current)\n ? presets\n : [current, ...presets].sort((a, b) => a - b);\n\n return merged.map((size) => ({\n label: `${size} per page`,\n value: String(size),\n }));\n });\n\n protected readonly pageSizeStr = computed(() => String(this.pageSize()));\n\n protected goTo(page: number): void {\n if (page < 1 || page > this.totalPages() || page === this.currentPage()) {\n return;\n }\n this.currentPage.set(page);\n this.pageChange.emit(page);\n }\n\n protected onSizeChange(value: string): void {\n const next = Number(value);\n this.pageSize.set(next);\n this.currentPage.set(1);\n this.pageSizeChange.emit(next);\n this.pageChange.emit(1);\n }\n}\n","<nav\n class=\"pagination\"\n aria-label=\"Pagination\"\n>\n @if (showLabel()) {\n <span class=\"label\">\n {{ rangeLabel() }}\n </span>\n }\n\n <button\n class=\"pagination-button\"\n type=\"button\"\n aria-label=\"Previous page\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"goTo(currentPage() - 1)\"\n >\n <ds-icon\n name=\"chevronLeft\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n @for (item of pageItems(); track $index) {\n @if (item === 'ellipsis') {\n <span\n class=\"ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </span>\n } @else {\n <button\n class=\"pagination-button\"\n type=\"button\"\n [class.active]=\"item === currentPage()\"\n [attr.aria-label]=\"'Page ' + item\"\n [attr.aria-current]=\"item === currentPage() ? 'page' : null\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n }\n }\n\n <button\n class=\"pagination-button\"\n type=\"button\"\n aria-label=\"Next page\"\n [disabled]=\"currentPage() === totalPages()\"\n (click)=\"goTo(currentPage() + 1)\"\n >\n <ds-icon\n name=\"chevronRight\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n <ds-select\n class=\"size\"\n ariaLabel=\"Rows per page\"\n size=\"sm\"\n [options]=\"sizeOptions()\"\n [value]=\"pageSizeStr()\"\n (valueChange)=\"onSizeChange($event)\"\n >\n </ds-select>\n</nav>\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { IconComponent } from '../../icons/icon.component';\nimport type {\n DatePickerMode,\n DatePickerSize,\n RangeValue,\n} from './date-picker.types';\n\nlet nextId = 0;\n\ninterface DayCell {\n date: Date;\n day: number;\n inMonth: boolean;\n isToday: boolean;\n inRange: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isSelected: boolean;\n}\n\n@Component({\n selector: 'ds-date-picker',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DatePickerComponent {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n\n readonly mode = input<DatePickerMode>('single');\n readonly size = input<DatePickerSize>('md');\n readonly value = model<Date | RangeValue | null>(null);\n readonly placeholder = input<string>('Select date');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = `ds-datepicker-${++nextId}`;\n protected readonly labelId = `${this.uid}-label`;\n protected readonly isOpen = signal(false);\n /** The day that holds keyboard focus in the open grid (roving tabindex). */\n protected readonly gridFocus = signal<Date | null>(null);\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected dayKey(d: Date): string {\n return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n }\n\n protected isFocusDay(cell: DayCell): boolean {\n const f = this.gridFocus();\n\n return !!f && this.dayKey(f) === this.dayKey(cell.date);\n }\n\n /** Arrow-key roving navigation across the calendar grid (APG date grid). */\n protected onGridKeydown(event: KeyboardEvent, cell: DayCell): void {\n const f = this.gridFocus() ?? cell.date;\n let next: Date | null = null;\n switch (event.key) {\n case 'ArrowLeft':\n next = this.addDays(f, -1);\n break;\n case 'ArrowRight':\n next = this.addDays(f, 1);\n break;\n case 'ArrowUp':\n next = this.addDays(f, -7);\n break;\n case 'ArrowDown':\n next = this.addDays(f, 7);\n break;\n case 'Home':\n next = this.addDays(f, -((f.getDay() + 6) % 7));\n break;\n case 'End':\n next = this.addDays(f, 6 - ((f.getDay() + 6) % 7));\n break;\n case 'PageUp':\n next = this.addMonths(f, -1);\n break;\n case 'PageDown':\n next = this.addMonths(f, 1);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectDay(cell);\n\n return;\n case 'Escape':\n event.preventDefault();\n this.close();\n this.trigger().nativeElement.focus();\n\n return;\n default:\n return;\n }\n event.preventDefault();\n this.gridFocus.set(next);\n this.viewMonth.set(new Date(next.getFullYear(), next.getMonth(), 1));\n setTimeout(() => this.focusGridDay());\n }\n\n private addDays(date: Date, days: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + days);\n\n return d;\n }\n\n private addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + months);\n\n return d;\n }\n\n private focusGridDay(): void {\n const f = this.gridFocus();\n if (!f || !this.overlayRef) {\n return;\n }\n const element = this.overlayRef.overlayElement.querySelector(\n `[data-day=\"${this.dayKey(f)}\"]`,\n ) as HTMLElement | null;\n element?.focus();\n }\n\n /** Full, unambiguous date for a day cell's accessible name. */\n protected dayLabel(cell: DayCell): string {\n return cell.date.toLocaleDateString(undefined, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n }\n\n protected readonly triggerClasses = computed(() => {\n const size = this.size();\n\n return size === 'md' ? 'trigger' : `trigger ${size}`;\n });\n\n protected readonly viewMonth = signal<Date>(new Date());\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n private overlayRef: OverlayRef | null = null;\n\n protected readonly displayLabel = computed(() => {\n const value = this.value();\n if (this.mode() === 'single') {\n const d = value as Date | null;\n\n return d ? d.toLocaleDateString() : this.placeholder();\n }\n const r = (value as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (a && b) {\n return `${a.toLocaleDateString()} – ${b.toLocaleDateString()}`;\n }\n if (a) {\n return `${a.toLocaleDateString()} – …`;\n }\n\n return this.placeholder();\n });\n\n protected readonly monthLabel = computed(() => {\n const m = this.viewMonth();\n\n return m.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });\n });\n\n protected readonly daysGrid = computed<DayCell[]>(() => {\n const view = this.viewMonth();\n const year = view.getFullYear();\n const month = view.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n const gridStart = new Date(firstOfMonth);\n gridStart.setDate(gridStart.getDate() - ((gridStart.getDay() + 6) % 7));\n const cells: DayCell[] = [];\n const today = new Date();\n const todayKey = today.toDateString();\n for (let i = 0; i < 42; i++) {\n const d = new Date(gridStart);\n d.setDate(d.getDate() + i);\n const inMonth = d.getMonth() === month;\n const isToday = d.toDateString() === todayKey;\n const range = this.getRangeContext(d);\n cells.push({\n date: d,\n day: d.getDate(),\n inMonth,\n isToday,\n inRange: range.inRange,\n isRangeStart: range.isStart,\n isRangeEnd: range.isEnd,\n isSelected: range.isSelected,\n });\n }\n\n return cells;\n });\n\n private getRangeContext(d: Date): {\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n isSelected: boolean;\n } {\n const value = this.value();\n if (this.mode() === 'single') {\n const sel = value as Date | null;\n\n return {\n inRange: false,\n isStart: false,\n isEnd: false,\n isSelected: !!sel && sel.toDateString() === d.toDateString(),\n };\n }\n const r = (value as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (!a) {\n return {\n inRange: false,\n isStart: false,\n isEnd: false,\n isSelected: false,\n };\n }\n if (!b) {\n return {\n inRange: false,\n isStart: a.toDateString() === d.toDateString(),\n isEnd: false,\n isSelected: false,\n };\n }\n const t = d.getTime();\n const aT = a.getTime();\n const bT = b.getTime();\n\n return {\n inRange: t > Math.min(aT, bT) && t < Math.max(aT, bT),\n isStart: t === Math.min(aT, bT),\n isEnd: t === Math.max(aT, bT),\n isSelected: false,\n };\n }\n\n protected open(): void {\n if (this.overlayRef) {\n return;\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.trigger().nativeElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.isOpen.set(true);\n // Seed grid focus on the selected day (or today) and move focus into it.\n const selected =\n this.mode() === 'single'\n ? (this.value() as Date | null)\n : ((this.value() as RangeValue | null)?.[0] ?? null);\n const focus = selected ?? new Date();\n this.gridFocus.set(focus);\n this.viewMonth.set(new Date(focus.getFullYear(), focus.getMonth(), 1));\n setTimeout(() => this.focusGridDay());\n }\n\n protected close(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.isOpen.set(false);\n }\n\n protected prevMonth(): void {\n const m = new Date(this.viewMonth());\n m.setMonth(m.getMonth() - 1);\n this.viewMonth.set(m);\n }\n\n protected nextMonth(): void {\n const m = new Date(this.viewMonth());\n m.setMonth(m.getMonth() + 1);\n this.viewMonth.set(m);\n }\n\n protected selectDay(cell: DayCell): void {\n if (this.mode() === 'single') {\n this.value.set(new Date(cell.date));\n this.close();\n this.trigger().nativeElement.focus();\n\n return;\n }\n const r = (this.value() as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (!a || (a && b)) {\n this.value.set([new Date(cell.date), null]);\n this.gridFocus.set(new Date(cell.date));\n } else {\n const picked = new Date(cell.date);\n const range: RangeValue =\n a.getTime() <= picked.getTime() ? [a, picked] : [picked, a];\n this.value.set(range);\n this.close();\n this.trigger().nativeElement.focus();\n }\n }\n\n protected cellClasses(cell: DayCell): string {\n const parts = ['day'];\n if (!cell.inMonth) {\n parts.push('muted');\n }\n if (cell.isToday) {\n parts.push('today');\n }\n if (cell.inRange) {\n parts.push('in-range');\n }\n if (cell.isRangeStart) {\n parts.push('range-start');\n }\n if (cell.isRangeEnd) {\n parts.push('range-end');\n }\n if (cell.isSelected) {\n parts.push('selected');\n }\n\n return parts.join(' ');\n }\n}\n","<div class=\"field\">\n @if (label()) {\n <span\n class=\"label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </span>\n }\n\n <button\n #trigger\n type=\"button\"\n aria-haspopup=\"dialog\"\n [class]=\"triggerClasses()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (click)=\"open()\"\n >\n <ds-icon\n name=\"calendar\"\n [size]=\"14\"\n >\n </ds-icon>\n\n <span>\n {{ displayLabel() }}\n </span>\n </button>\n\n @if (hint()) {\n <small class=\"hint\">\n {{ hint() }}\n </small>\n }\n</div>\n\n<ng-template #panel>\n <div class=\"calendar\">\n <div class=\"head\">\n <span class=\"title\">\n {{ monthLabel() }}\n </span>\n\n <span class=\"nav\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n >\n <ds-icon\n name=\"chevronLeft\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n >\n <ds-icon\n name=\"chevronRight\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n </span>\n </div>\n\n <div class=\"grid\">\n <span class=\"dow\">\n Mo\n </span>\n\n <span class=\"dow\">\n Tu\n </span>\n\n <span class=\"dow\">\n We\n </span>\n\n <span class=\"dow\">\n Th\n </span>\n\n <span class=\"dow\">\n Fr\n </span>\n\n <span class=\"dow\">\n Sa\n </span>\n\n <span class=\"dow\">\n Su\n </span>\n\n @for (cell of daysGrid(); track $index) {\n <button\n type=\"button\"\n [class]=\"cellClasses(cell)\"\n [attr.data-day]=\"dayKey(cell.date)\"\n [attr.tabindex]=\"isFocusDay(cell) ? 0 : -1\"\n [attr.aria-label]=\"dayLabel(cell)\"\n [attr.aria-pressed]=\"cell.isSelected\"\n [attr.aria-current]=\"cell.isToday ? 'date' : null\"\n (click)=\"selectDay(cell)\"\n (keydown)=\"onGridKeydown($event, cell)\"\n >\n {{ cell.day }}\n </button>\n }\n </div>\n </div>\n</ng-template>\n","import { Injectable, signal } from '@angular/core';\nimport type { BreadcrumbItem } from './breadcrumbs.types';\n\n/**\n * Library-level breadcrumb state. Apps push items either programmatically\n * (page constructor / effect) or via a router-data driver (see app docs).\n * `<ds-breadcrumbs>` reads from here when no `[items]` input is provided.\n */\n@Injectable({ providedIn: 'root' })\nexport class BreadcrumbsService {\n private readonly _items = signal<BreadcrumbItem[]>([]);\n readonly items = this._items.asReadonly();\n\n set(items: BreadcrumbItem[]): void {\n this._items.set(items);\n }\n\n push(item: BreadcrumbItem): void {\n this._items.update((arr) => [...arr, item]);\n }\n\n pop(): void {\n this._items.update((arr) => arr.slice(0, -1));\n }\n\n replaceLast(item: BreadcrumbItem): void {\n this._items.update((arr) =>\n arr.length ? [...arr.slice(0, -1), item] : [item],\n );\n }\n\n clear(): void {\n this._items.set([]);\n }\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { DS_CONFIG } from '../../config/ds-config';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport { BreadcrumbsService } from './breadcrumbs.service';\nimport type { BreadcrumbItem } from './breadcrumbs.types';\n\n@Component({\n selector: 'ds-breadcrumbs',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './breadcrumbs.component.html',\n styleUrl: './breadcrumbs.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BreadcrumbsComponent {\n private readonly cfg = inject(DS_CONFIG);\n private readonly svc = inject(BreadcrumbsService);\n\n /**\n * When omitted, the component reads from `BreadcrumbsService.items`.\n * Pass an explicit array to opt out of the service (per-page override).\n */\n readonly items = input<BreadcrumbItem[] | null>(null);\n readonly separator = input<IconName | null>(null);\n readonly clickable = input<boolean | null>(null);\n readonly navigate = output<BreadcrumbItem>();\n\n protected readonly resolvedItems = computed<BreadcrumbItem[]>(\n () => this.items() ?? this.svc.items(),\n );\n protected readonly effectiveSeparator = computed<IconName>(\n () => this.separator() ?? this.cfg.breadcrumbs?.separator ?? 'chevronRight',\n );\n protected readonly effectiveClickable = computed<boolean>(\n () => this.clickable() ?? this.cfg.breadcrumbs?.clickable ?? true,\n );\n\n protected onNav(event: Event, item: BreadcrumbItem): void {\n if (!item.href || !this.effectiveClickable()) {\n event.preventDefault();\n\n return;\n }\n event.preventDefault();\n this.navigate.emit(item);\n }\n}\n","<nav\n class=\"breadcrumbs\"\n aria-label=\"Breadcrumb\"\n [class.is-static]=\"!effectiveClickable()\"\n>\n @for (item of resolvedItems(); track $index; let last = $last) {\n @if (item.href && !last && effectiveClickable()) {\n <a\n [href]=\"item.href\"\n (click)=\"onNav($event, item)\"\n >\n @if (item.icon) {\n <ds-icon\n [name]=\"item.icon\"\n [size]=\"14\"\n />\n }\n\n @if (item.label) {\n <span class=\"label\">\n {{ item.label }}\n </span>\n }\n </a>\n } @else {\n <span\n [class.current]=\"last\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n @if (item.icon) {\n <ds-icon\n [name]=\"item.icon\"\n [size]=\"14\"\n />\n }\n\n @if (item.label) {\n <span class=\"label\">\n {{ item.label }}\n </span>\n }\n </span>\n }\n\n @if (!last) {\n <span\n class=\"sep\"\n aria-hidden=\"true\"\n >\n <ds-icon\n [name]=\"effectiveSeparator()\"\n [size]=\"12\"\n />\n </span>\n }\n }\n</nav>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\n@Component({\n selector: 'ds-sidenav',\n standalone: true,\n templateUrl: './sidenav.component.html',\n styleUrl: './sidenav.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.sidenav]': 'true',\n '[class.collapsed]': 'collapsed()',\n },\n})\nexport class SidenavComponent {\n readonly collapsed = input<boolean>(false);\n readonly brand = input<string>('');\n}\n","@if (brand()) {\n <div class=\"brand\">\n <span class=\"mark\">\n {{ brand().charAt(0) }}\n </span>\n\n <span class=\"brand-name\">\n {{ brand() }}\n </span>\n </div>\n}\n\n<ng-content></ng-content>\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-sidenav-group',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './sidenav-group.component.html',\n styleUrl: './sidenav-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SidenavGroupComponent {\n readonly label = input<string>('');\n // Optional group icon (DS IconName). Consumers without a DS icon can project\n // custom content via the `[icon]` slot.\n readonly icon = input<IconName | null>(null);\n // When true the label/icon row becomes a clickable header that expands /\n // collapses the projected children with a caret rotation.\n readonly expandable = input<boolean>(false);\n // Two-way bindable open state. Defaults to open (true) so a non-expandable\n // group always shows its items.\n readonly expanded = model<boolean>(true);\n\n protected toggle(): void {\n if (!this.expandable()) {\n return;\n }\n this.expanded.update((value) => !value);\n }\n}\n","<!-- Single <ng-content> outside any @if blocks. Angular accepts only one\n default slot per component; duplicate <ng-content> elements caused\n children to silently drop when control flow chose a non-matching branch. -->\n@if (expandable()) {\n <button\n type=\"button\"\n class=\"group-header\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n @if (icon()) {\n <ds-icon\n class=\"group-icon\"\n [name]=\"icon()!\"\n [size]=\"18\"\n >\n </ds-icon>\n } @else {\n <!-- `[ds-group-icon]` is selector-distinct from `[icon]` slots used on\n sidenav-item children, so projected icons don't get swallowed when\n a consumer puts items inside the group. -->\n <span class=\"group-icon\">\n <ng-content select=\"[ds-group-icon]\"></ng-content>\n </span>\n }\n\n @if (label()) {\n <span class=\"group-title\">\n {{ label() }}\n </span>\n }\n\n <ds-icon\n class=\"group-caret\"\n name=\"chevronDown\"\n [class.open]=\"expanded()\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n} @else if (label()) {\n <span class=\"group-label\">\n {{ label() }}\n </span>\n}\n\n<div\n class=\"group-body\"\n [class.hidden]=\"expandable() && !expanded()\"\n [attr.inert]=\"expandable() && !expanded() ? '' : null\"\n>\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-sidenav-item',\n standalone: true,\n imports: [IconComponent, RouterLink, RouterLinkActive, NgTemplateOutlet],\n templateUrl: './sidenav-item.component.html',\n styleUrl: './sidenav-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SidenavItemComponent {\n // `icon` is optional — consumers without a DS IconName can project a custom\n // icon via the `[icon]` content slot. When both are supplied, the input\n // wins (legacy DS-consumer behaviour).\n readonly icon = input<IconName | null>(null);\n readonly label = input.required<string>();\n readonly href = input<string>('');\n // Angular RouterLink accepts both string and array forms — mirror that so\n // consumers can pass dynamic segments (e.g. `['/programs', id, 'overview']`).\n readonly routerLink = input<string | readonly unknown[] | null>(null);\n readonly active = input<boolean>(false);\n readonly badge = input<number | null>(null);\n readonly hasAlert = input<boolean>(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly linkClasses = computed(() => {\n const parts = ['item'];\n if (this.active()) {\n parts.push('active');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n });\n}\n","<!-- Selector-scoped slots ([icon], [trailing]) coexist with no default\n <ng-content> here — projection goes via attributes only, so consumers\n can compose icon + label + arbitrary trailing content (status pill,\n status icon, etc.). The two <a> variants (routerLink vs href) share one\n #content template so the inner markup isn't duplicated. -->\n@if (routerLink()) {\n <a\n #rla=\"routerLinkActive\"\n routerLinkActive=\"active\"\n [routerLink]=\"disabled() ? null : routerLink()\"\n [class]=\"linkClasses()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n} @else {\n <a\n [href]=\"href() || '#'\"\n [class]=\"linkClasses()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n}\n\n<ng-template #content>\n @if (icon()) {\n <ds-icon\n class=\"icon\"\n [name]=\"icon()!\"\n [size]=\"20\"\n >\n </ds-icon>\n } @else {\n <span class=\"icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n\n @if (label()) {\n <span class=\"item-label\">\n {{ label() }}\n </span>\n }\n\n <span class=\"trailing\">\n <ng-content select=\"[trailing]\"></ng-content>\n </span>\n\n @if (badge() !== null) {\n <span class=\"count\">\n {{ badge() }}\n </span>\n }\n\n @if (hasAlert()) {\n <span class=\"alert\"></span>\n }\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ds-topbar',\n standalone: true,\n templateUrl: './topbar.component.html',\n styleUrl: './topbar.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TopBarComponent {}\n","<header class=\"topbar\">\n <div class=\"title\">\n <ng-content select=\"[title]\"></ng-content>\n </div>\n\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n\n <div class=\"spacer\">\n <ng-content select=\"[search]\"></ng-content>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</header>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ds-page-header',\n standalone: true,\n templateUrl: './page-header.component.html',\n styleUrl: './page-header.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PageHeaderComponent {\n readonly eyebrow = input<string>('');\n readonly title = input.required<string>();\n readonly subtitle = input<string>('');\n readonly compact = input<boolean>(false);\n readonly divider = input<boolean>(false);\n readonly metaDivider = input<boolean>(false);\n\n protected readonly classes = computed(() => {\n const parts = ['page-header'];\n if (this.compact()) {\n parts.push('compact');\n }\n if (this.divider()) {\n parts.push('with-divider');\n }\n if (this.metaDivider()) {\n parts.push('with-meta-divider');\n }\n\n return parts.join(' ');\n });\n}\n","<header [class]=\"classes()\">\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n\n <div class=\"row title-row\">\n <div class=\"title-block\">\n @if (eyebrow()) {\n <div class=\"eyebrow\">\n {{ eyebrow() }}\n </div>\n }\n\n <div class=\"title-line\">\n <h1 class=\"title\">\n {{ title() }}\n </h1>\n\n <ng-content select=\"[title-badge]\"></ng-content>\n </div>\n\n @if (subtitle()) {\n <p class=\"subtitle\">\n {{ subtitle() }}\n </p>\n }\n\n <div class=\"meta\">\n <ng-content select=\"[meta]\"></ng-content>\n </div>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n</header>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { ModalSize } from './modal.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-modal-card',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './modal-card.component.html',\n styleUrl: './modal.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ModalCardComponent {\n readonly size = input<ModalSize>('md');\n readonly danger = input<boolean>(false);\n readonly title = input.required<string>();\n readonly showClose = input<boolean>(true);\n readonly closed = output<void>();\n\n protected readonly titleId = `ds-modal-title-${++nextId}`;\n\n protected readonly classes = computed(() => {\n const parts = ['modal', this.size()];\n if (this.danger()) {\n parts.push('danger');\n }\n\n return parts.join(' ');\n });\n\n protected onClose(): void {\n this.closed.emit();\n }\n}\n","<div\n role=\"dialog\"\n aria-modal=\"true\"\n [class]=\"classes()\"\n [attr.aria-labelledby]=\"titleId\"\n>\n <div class=\"header\">\n <h2\n class=\"title\"\n [id]=\"titleId\"\n >\n {{ title() }}\n </h2>\n\n @if (showClose()) {\n <button\n class=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n (click)=\"onClose()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n >\n </ds-icon>\n </button>\n }\n </div>\n\n <div class=\"body\">\n <ng-content select=\"[body]\"></ng-content>\n\n <div class=\"impact\">\n <ng-content select=\"[impact]\"></ng-content>\n </div>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n","import {\n Component,\n DestroyRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ModalCardComponent } from './modal-card.component';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport type { ModalSize } from './modal.types';\n\n@Component({\n selector: 'ds-modal',\n standalone: true,\n imports: [ModalCardComponent, A11yModule],\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n})\nexport class ModalComponent {\n private readonly doc = inject(DOCUMENT);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly open = model<boolean>(false);\n readonly size = input<ModalSize>('md');\n readonly danger = input<boolean>(false);\n readonly title = input.required<string>();\n readonly closed = output<void>();\n readonly confirmed = output<void>();\n\n constructor() {\n // Lock background scroll while the dialog is open (skipped in preview mode).\n effect(() => {\n if (this.preview.staticPreview()) {\n return;\n }\n this.doc.body.style.overflow = this.open() ? 'hidden' : '';\n });\n inject(DestroyRef).onDestroy(() => {\n this.doc.body.style.overflow = '';\n });\n }\n\n protected onClose(): void {\n if (this.preview.staticPreview()) {\n return;\n }\n this.open.set(false);\n this.closed.emit();\n }\n\n protected onBackdrop(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.onClose();\n }\n }\n}\n","@if (open() || preview.staticPreview()) {\n <div\n [class]=\"preview.staticPreview() ? 'modal-static' : 'modal-backdrop'\"\n (click)=\"onBackdrop($event)\"\n (keydown.escape)=\"onClose()\"\n >\n <ds-modal-card\n [cdkTrapFocus]=\"!preview.staticPreview()\"\n [cdkTrapFocusAutoCapture]=\"!preview.staticPreview()\"\n [size]=\"size()\"\n [danger]=\"danger()\"\n [title]=\"title()\"\n (closed)=\"onClose()\"\n >\n <ng-container body>\n <ng-content select=\"[body]\"></ng-content>\n </ng-container>\n\n <ng-container impact>\n <ng-content select=\"[impact]\"></ng-content>\n </ng-container>\n\n <ng-container actions>\n <ng-content select=\"[actions]\"></ng-content>\n </ng-container>\n </ds-modal-card>\n </div>\n}\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { BannerVariant } from './banner.types';\n\n@Component({\n selector: 'ds-banner',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './banner.component.html',\n styleUrl: './banner.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BannerComponent {\n readonly variant = input<BannerVariant>('info');\n readonly title = input<string>('');\n readonly dismissible = input<boolean>(false);\n readonly icon = input<IconName | null>(null);\n readonly compact = input<boolean>(false);\n readonly layout = input<'stacked' | 'row'>('stacked');\n readonly accentRail = input<boolean>(true);\n readonly dismissed = output<void>();\n\n @HostBinding('class.no-rail')\n protected get noRail(): boolean {\n return !this.accentRail();\n }\n\n // Announce banners to assistive tech: errors/warnings interrupt (alert),\n // info/success wait their turn (status). A statically-rendered banner is\n // present at first paint, so a `status` region won't be re-read needlessly.\n @HostBinding('attr.role')\n protected get ariaRole(): 'alert' | 'status' {\n const value = this.variant();\n\n return value === 'error' || value === 'warning' || value === 'severe'\n ? 'alert'\n : 'status';\n }\n\n @HostBinding('attr.aria-live')\n protected get ariaLive(): 'assertive' | 'polite' {\n return this.ariaRole === 'alert' ? 'assertive' : 'polite';\n }\n\n protected readonly classes = computed(() => {\n const parts = ['banner', this.variant(), `layout-${this.layout()}`];\n if (this.compact()) {\n parts.push('compact');\n }\n\n return parts.join(' ');\n });\n\n protected readonly defaultIcon = computed<IconName>(() => {\n const variant = this.variant();\n if (variant === 'success') {\n return 'success';\n }\n if (variant === 'warning' || variant === 'severe') {\n return 'warn';\n }\n if (variant === 'error') {\n return 'error';\n }\n\n return 'info';\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div [class]=\"classes()\">\n <ds-icon\n class=\"icon\"\n [name]=\"icon() ?? defaultIcon()\"\n [size]=\"20\"\n >\n </ds-icon>\n\n <div class=\"body\">\n @if (title()) {\n <div class=\"title\">\n {{ title() }}\n </div>\n }\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n @if (dismissible()) {\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"onDismiss()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n >\n </ds-icon>\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { DropzoneFile } from './dropzone.types';\n\n@Component({\n selector: 'ds-dropzone',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './dropzone.component.html',\n styleUrl: './dropzone.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DropzoneComponent {\n readonly accept = input<string>('');\n readonly multiple = input<boolean>(false);\n readonly files = model<DropzoneFile[]>([]);\n /** Disables the dropzone: blocks all file-picking interactions and signals unavailability. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Restricts the dropzone to a single file; narrows the panel to `--col-cap-text`. */\n readonly single = input(false, { transform: booleanAttribute });\n\n protected readonly dragOver = signal<boolean>(false);\n\n readonly filesAdded = output<File[]>();\n readonly fileRemoved = output<DropzoneFile>();\n\n protected readonly classes = computed(() => {\n const parts = ['dropzone'];\n if (this.dragOver()) {\n parts.push('active');\n }\n if (this.files().length > 0) {\n parts.push('has-files');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n if (this.single()) {\n parts.push('single');\n }\n\n return parts.join(' ');\n });\n\n protected onDragOver(event: DragEvent): void {\n if (this.disabled()) {\n return;\n }\n event.preventDefault();\n this.dragOver.set(true);\n }\n\n protected onDragLeave(): void {\n this.dragOver.set(false);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver.set(false);\n if (this.disabled()) {\n return;\n }\n const list = event.dataTransfer?.files;\n if (list) {\n this.filesAdded.emit(Array.from(list));\n }\n }\n\n protected onPickerChange(event: Event): void {\n if (this.disabled()) {\n return;\n }\n const list = (event.target as HTMLInputElement).files;\n if (list) {\n this.filesAdded.emit(Array.from(list));\n }\n }\n\n protected onRemove(file: DropzoneFile): void {\n this.fileRemoved.emit(file);\n }\n\n protected formatSize(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n protected fileIcon(state: DropzoneFile['state']): 'file' | 'check' | 'error' {\n if (state === 'success') {\n return 'check';\n }\n if (state === 'error') {\n return 'error';\n }\n\n return 'file';\n }\n}\n","<label\n [class]=\"classes()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event)\"\n>\n <input\n type=\"file\"\n class=\"dz-input\"\n aria-label=\"Upload files\"\n [attr.accept]=\"accept() || null\"\n [multiple]=\"single() ? false : multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onPickerChange($event)\"\n />\n\n @if (files().length === 0) {\n <ds-icon\n name=\"upload\"\n [size]=\"24\"\n >\n </ds-icon>\n\n <div class=\"title\">\n Drop files here\n </div>\n\n <div class=\"hint\">\n or click to browse\n </div>\n\n <ng-content select=\"[hint]\"></ng-content>\n } @else {\n <div class=\"file-list\">\n @for (file of files(); track file.id) {\n <div [class]=\"'file ' + file.state\">\n <ds-icon\n class=\"icon\"\n [name]=\"fileIcon(file.state)\"\n [size]=\"20\"\n >\n </ds-icon>\n\n <div class=\"main\">\n <div class=\"name\">\n {{ file.name }}\n </div>\n\n <div class=\"meta\">\n {{ formatSize(file.size) }} · {{ file.state }}\n </div>\n\n @if (file.state === 'uploading') {\n <div class=\"progress\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"file.progress\"\n >\n </div>\n </div>\n }\n </div>\n\n <button\n class=\"remove\"\n type=\"button\"\n [attr.aria-label]=\"'Remove ' + file.name\"\n (click)=\"\n onRemove(file); $event.preventDefault(); $event.stopPropagation()\n \"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n </div>\n }\n </div>\n }\n</label>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport { DsOverlayCloseRef } from '../../overlay/ds-overlay-close-ref';\n\n@Component({\n selector: 'ds-menu-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './menu-item.component.html',\n styleUrl: './menu-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n // The host sits between the role=\"menu\" <ul> and the role=\"menuitem\" button,\n // so mark it presentational to keep the menu→menuitem ownership intact.\n host: { role: 'none' },\n})\nexport class MenuItemComponent {\n // The containing overlay (e.g. popover), if any — selecting an item closes it.\n // Optional, so menu-items also work standalone.\n private readonly closeRef = inject(DsOverlayCloseRef, { optional: true });\n private readonly button =\n viewChild.required<ElementRef<HTMLButtonElement>>('button');\n\n readonly icon = input<IconName | null>(null);\n readonly disabled = input<boolean>(false);\n readonly danger = input<boolean>(false);\n readonly pressed = output<MouseEvent>();\n\n /** Roving tabindex, owned by ds-menu — exactly one item is tabbable (0), the\n * rest -1. Defaults true so a standalone item (outside ds-menu) stays\n * reachable. */\n readonly tabbable = signal(true);\n\n /** Move keyboard focus to this item's control. */\n focus(): void {\n this.button().nativeElement.focus();\n }\n\n /** Whether `node` lives inside this item's control (used by ds-menu to find\n * the currently focused item during keyboard nav). */\n contains(node: Node | null): boolean {\n return !!node && this.button().nativeElement.contains(node);\n }\n\n /** Visible label text — used by ds-menu's type-ahead. */\n label(): string {\n return this.button().nativeElement.textContent?.trim() ?? '';\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.pressed.emit(event);\n this.closeRef?.close();\n }\n}\n","<button\n #button\n class=\"menu-item\"\n type=\"button\"\n role=\"menuitem\"\n [attr.tabindex]=\"tabbable() ? 0 : -1\"\n [disabled]=\"disabled()\"\n [class.danger]=\"danger()\"\n (click)=\"onClick($event)\"\n>\n @if (icon()) {\n <ds-icon\n [name]=\"icon()!\"\n [size]=\"16\"\n >\n </ds-icon>\n } @else {\n <span class=\"menu-item-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n\n <span>\n <ng-content></ng-content>\n </span>\n</button>\n","import {\n Component,\n ViewEncapsulation,\n contentChildren,\n effect,\n signal,\n} from '@angular/core';\nimport { MenuItemComponent } from './menu-item.component';\n\n@Component({\n selector: 'ds-menu',\n standalone: true,\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n // Keyboard nav bubbles up from the focused menuitem button. Hand-rolled roving\n // (mirrors ds-tabs) — kept signal-based and consistent with the rest of the DS.\n host: { '(keydown)': 'onKeydown($event)' },\n})\nexport class MenuComponent {\n private readonly items = contentChildren(MenuItemComponent);\n /** Index of the roving-focus item — the single item reachable via Tab. */\n private readonly activeIndex = signal(0);\n\n constructor() {\n // Roving tabindex: exactly one enabled item is tabbable (0), the rest -1.\n effect(() => {\n const items = this.items();\n if (!items.length) {\n return;\n }\n let index = this.activeIndex();\n if (index >= items.length || items[index].disabled()) {\n index = items.findIndex((item) => !item.disabled());\n }\n items.forEach((item, i) => item.tabbable.set(i === index));\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.items();\n if (!items.length) {\n return;\n }\n const count = items.length;\n const focused = items.findIndex((item) =>\n item.contains(event.target as Node | null),\n );\n const from = focused >= 0 ? focused : this.activeIndex();\n\n // Single-character type-ahead: jump to the next enabled item whose label\n // starts with the typed character.\n if (\n event.key.length === 1 &&\n /\\S/.test(event.key) &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n ) {\n this.typeAhead(event.key, from, items);\n event.preventDefault();\n\n return;\n }\n\n let next: number;\n switch (event.key) {\n case 'ArrowDown':\n next = (from + 1) % count;\n break;\n case 'ArrowUp':\n next = (from - 1 + count) % count;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = count - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n // Skip disabled items in the travel direction (guard against all-disabled).\n const step = event.key === 'ArrowUp' || event.key === 'End' ? -1 : 1;\n let guard = 0;\n while (items[next]?.disabled() && guard < count) {\n next = (next + step + count) % count;\n guard++;\n }\n if (!items[next] || items[next].disabled()) {\n return;\n }\n this.focusItem(next);\n }\n\n private typeAhead(\n char: string,\n from: number,\n items: readonly MenuItemComponent[],\n ): void {\n const needle = char.toLowerCase();\n const count = items.length;\n for (let offset = 1; offset <= count; offset++) {\n const i = (from + offset) % count;\n const item = items[i];\n if (!item.disabled() && item.label().toLowerCase().startsWith(needle)) {\n this.focusItem(i);\n\n return;\n }\n }\n }\n\n private focusItem(index: number): void {\n this.activeIndex.set(index);\n this.items()[index].focus();\n }\n}\n","<ul\n class=\"menu\"\n role=\"menu\"\n>\n <ng-content></ng-content>\n</ul>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { SpinnerSize } from './spinner.types';\n\n@Component({\n selector: 'ds-spinner',\n standalone: true,\n template: '',\n styleUrl: './spinner.component.scss',\n host: {\n role: 'status',\n 'aria-label': 'Loading',\n '[class.sm]': \"size() === 'sm'\",\n '[class.lg]': \"size() === 'lg'\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SpinnerComponent {\n readonly size = input<SpinnerSize>('md');\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SpinnerComponent } from '../spinner/spinner.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { EmptyStateVariant } from './empty-state.types';\n\n@Component({\n selector: 'ds-empty-state',\n standalone: true,\n imports: [IconComponent, SpinnerComponent],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class EmptyStateComponent {\n readonly variant = input<EmptyStateVariant>('none');\n readonly icon = input<IconName | null>(null);\n readonly title = input<string>('');\n readonly body = input<string>('');\n\n protected readonly classes = computed(() => {\n const variant = this.variant();\n\n return variant === 'none' ? 'empty-state' : `empty-state ${variant}`;\n });\n\n protected readonly resolvedIcon = computed<IconName>(() => {\n const explicit = this.icon();\n if (explicit) {\n return explicit;\n }\n const variant = this.variant();\n if (variant === 'error') {\n return 'warn';\n }\n if (variant === 'locked') {\n return 'lock';\n }\n if (variant === 'success') {\n return 'success';\n }\n if (variant === 'loading') {\n return 'package';\n }\n\n return 'package';\n });\n}\n","<span [class]=\"classes()\">\n <span class=\"icon-tile\">\n <ds-icon\n [name]=\"resolvedIcon()\"\n [size]=\"28\"\n >\n </ds-icon>\n </span>\n\n @if (title()) {\n <span class=\"title\">\n {{ title() }}\n </span>\n }\n\n @if (body()) {\n <span class=\"body\">\n {{ body() }}\n </span>\n }\n\n <span class=\"cta\">\n <ng-content select=\"[actions]\"></ng-content>\n </span>\n\n @if (variant() === 'loading') {\n <span class=\"overlay-spin\">\n <ds-spinner size=\"lg\" />\n </span>\n }\n</span>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { ProgressVariant } from './progress.types';\n\n@Component({\n selector: 'ds-progress',\n standalone: true,\n imports: [],\n templateUrl: './progress.component.html',\n styleUrl: './progress.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'isIndet() ? null : clampedValue()',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.success]': \"variant() === 'success'\",\n '[class.warn]': \"variant() === 'warn'\",\n '[class.error]': \"variant() === 'error'\",\n '[class.indeterminate]': 'isIndet()',\n },\n})\nexport class ProgressComponent {\n readonly value = input<number>(0);\n readonly variant = input<ProgressVariant>('default');\n /** Accessible name for the progress bar (e.g. \"Upload progress\"). */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly clampedValue = computed(() => {\n const value = this.value();\n\n return Math.max(0, Math.min(100, value));\n });\n\n protected readonly isIndet = computed(\n () => this.variant() === 'indeterminate',\n );\n}\n","@if (isIndet()) {\n <span></span>\n} @else {\n <span [style.width.%]=\"clampedValue()\"></span>\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ds-accordion',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n display: block;\n border: var(--border-width-default) solid var(--border-divider);\n border-radius: var(--radius-lg);\n overflow: hidden;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AccordionComponent {}\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-accordion-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AccordionItemComponent {\n readonly title = input<string>('');\n readonly expanded = model<boolean>(false);\n\n protected readonly uid = `ds-accordion-${++nextId}`;\n protected readonly headId = `${this.uid}-head`;\n protected readonly bodyId = `${this.uid}-body`;\n\n protected toggle(): void {\n this.expanded.set(!this.expanded());\n }\n}\n","<button\n type=\"button\"\n class=\"head\"\n [id]=\"headId\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"bodyId\"\n (click)=\"toggle()\"\n>\n <span>\n {{ title() }}\n </span>\n\n <ng-content select=\"[badge]\"></ng-content>\n\n <ds-icon\n name=\"chevronRight\"\n class=\"chev\"\n [size]=\"16\"\n />\n</button>\n\n<div\n class=\"body\"\n role=\"region\"\n [id]=\"bodyId\"\n [attr.aria-labelledby]=\"headId\"\n [class.is-open]=\"expanded()\"\n [attr.inert]=\"expanded() ? null : ''\"\n>\n <div class=\"body-inner\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n/** Where the step caption sits relative to its node: stacked beneath it\n * (`bottom`, full-width wizard) or beside it (`inline`, compact header row). */\nexport type StepperLabelPosition = 'bottom' | 'inline';\n\n@Component({\n selector: 'ds-stepper',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'list',\n 'aria-label': 'Progress',\n '[class.labels-inline]': \"labelPosition() === 'inline'\",\n },\n})\nexport class StepperComponent {\n readonly steps = input<readonly string[]>([]);\n readonly current = input<number>(0);\n readonly labelPosition = input<StepperLabelPosition>('bottom');\n\n protected stepState(i: number): 'completed' | 'current' | 'upcoming' {\n const currentStep = this.current();\n if (i < currentStep) {\n return 'completed';\n }\n if (i === currentStep) {\n return 'current';\n }\n\n return 'upcoming';\n }\n\n protected nodeClass(i: number): string {\n const currentStep = this.current();\n if (i < currentStep) {\n return 'node done';\n }\n if (i === currentStep) {\n return 'node active';\n }\n\n return 'node';\n }\n\n protected connectorClass(i: number): string {\n return i < this.current() ? 'connector done' : 'connector';\n }\n}\n","@for (label of steps(); track $index; let i = $index, last = $last) {\n <span\n role=\"listitem\"\n class=\"step\"\n [class.is-current]=\"i === current()\"\n [attr.aria-current]=\"i === current() ? 'step' : null\"\n >\n <span\n aria-hidden=\"true\"\n [class]=\"nodeClass(i)\"\n >\n @if (i < current()) {\n <ds-icon\n name=\"check\"\n [size]=\"14\"\n />\n } @else {\n {{ i + 1 }}\n }\n </span>\n\n <span\n aria-hidden=\"true\"\n class=\"step-label\"\n >\n {{ label }}\n </span>\n\n @if (!last) {\n <span\n aria-hidden=\"true\"\n [class]=\"connectorClass(i)\"\n >\n </span>\n }\n\n <span class=\"visually-hidden\">\n Step {{ i + 1 }}: {{ label }} ({{ stepState(i) }})\n </span>\n </span>\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { TooltipPlacement } from './tooltip.types';\n\n@Component({\n selector: 'ds-tooltip-panel',\n standalone: true,\n template: `{{ text() }}`,\n styleUrl: './tooltip-panel.component.scss',\n host: {\n role: 'tooltip',\n '[attr.id]': 'panelId()',\n '[class.top]': \"placement() === 'top'\",\n '[class.bottom]': \"placement() === 'bottom'\",\n '[class.left]': \"placement() === 'left'\",\n '[class.right]': \"placement() === 'right'\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TooltipPanelComponent {\n readonly text = input.required<string>();\n readonly placement = input.required<TooltipPlacement>();\n readonly panelId = input<string>('');\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n inject,\n input,\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TooltipPanelComponent } from './tooltip-panel.component';\nimport type { TooltipPlacement } from './tooltip.types';\n\nlet nextId = 0;\n\n@Directive({\n selector: '[dsTooltip]',\n standalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly dsTooltip = input<string>('');\n readonly dsTooltipPlacement = input<TooltipPlacement>('top');\n readonly dsTooltipDelay = input<number>(120);\n\n private ref: OverlayRef | null = null;\n private timer: number | null = null;\n private readonly tipId = `ds-tooltip-${++nextId}`;\n\n @HostListener('mouseenter')\n @HostListener('focus')\n protected onOpen(): void {\n if (!this.dsTooltip()) {\n return;\n }\n if (this.timer !== null) {\n clearTimeout(this.timer);\n }\n this.timer = window.setTimeout(() => this.show(), this.dsTooltipDelay());\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n protected onClose(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.ref?.dispose();\n this.ref = null;\n const host = this.host.nativeElement;\n const remaining = (host.getAttribute('aria-describedby') ?? '')\n .split(' ')\n .filter((id: string) => id && id !== this.tipId)\n .join(' ');\n if (remaining) {\n host.setAttribute('aria-describedby', remaining);\n } else {\n host.removeAttribute('aria-describedby');\n }\n }\n\n @HostListener('keydown.escape')\n protected onEscape(): void {\n if (this.ref) {\n this.onClose();\n }\n }\n\n private show(): void {\n const placement = this.dsTooltipPlacement();\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withPositions([this.positionFor(placement)]);\n\n this.ref = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const cmpRef = this.ref.attach(new ComponentPortal(TooltipPanelComponent));\n cmpRef.setInput('text', this.dsTooltip());\n cmpRef.setInput('placement', placement);\n cmpRef.setInput('panelId', this.tipId);\n const host = this.host.nativeElement;\n const existing = host.getAttribute('aria-describedby');\n host.setAttribute(\n 'aria-describedby',\n existing ? `${existing} ${this.tipId}` : this.tipId,\n );\n }\n\n private positionFor(placement: TooltipPlacement) {\n switch (placement) {\n case 'top':\n return {\n originX: 'center' as const,\n originY: 'top' as const,\n overlayX: 'center' as const,\n overlayY: 'bottom' as const,\n offsetY: -8,\n };\n case 'bottom':\n return {\n originX: 'center' as const,\n originY: 'bottom' as const,\n overlayX: 'center' as const,\n overlayY: 'top' as const,\n offsetY: 8,\n };\n case 'left':\n return {\n originX: 'start' as const,\n originY: 'center' as const,\n overlayX: 'end' as const,\n overlayY: 'center' as const,\n offsetX: -8,\n };\n case 'right':\n return {\n originX: 'end' as const,\n originY: 'center' as const,\n overlayX: 'start' as const,\n overlayY: 'center' as const,\n offsetX: 8,\n };\n }\n }\n\n ngOnDestroy(): void {\n this.onClose();\n }\n}\n","import {\n Component,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DsOverlayCloseRef } from '../../overlay/ds-overlay-close-ref';\nimport { DsStaticPreview } from '../static-preview.directive';\n\nexport type PopoverAlign = 'start' | 'end';\n\n@Component({\n selector: 'ds-popover',\n standalone: true,\n imports: [CdkTrapFocus, NgTemplateOutlet],\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n // Expose this popover as a DsOverlayCloseRef so projected content (e.g.\n // ds-menu-item) can close it via DI — the popover never references a child.\n providers: [\n {\n provide: DsOverlayCloseRef,\n useExisting: forwardRef(() => PopoverComponent),\n },\n ],\n})\nexport class PopoverComponent implements OnDestroy, DsOverlayCloseRef {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n protected readonly panelTpl = viewChild<TemplateRef<unknown>>('panel');\n private ref: OverlayRef | null = null;\n\n readonly align = input<PopoverAlign>('start');\n\n /** ARIA role for the panel (e.g. 'dialog' for interactive popovers). When set,\n * the panel also traps focus, auto-captures it into the panel on open, and\n * restores it to the trigger on close (Escape or backdrop). Leave null for\n * plain, non-interactive text popovers. */\n readonly panelRole = input<string | null>(null);\n /** Accessible name for the panel; pair with `panelRole`. */\n readonly panelLabel = input<string | null>(null);\n\n /** Open/closed state — for callers binding `aria-expanded` on the trigger. */\n readonly opened = signal(false);\n\n toggle(trigger: HTMLElement): void {\n if (this.preview.staticPreview()) {\n return;\n }\n if (this.ref) {\n this.close();\n\n return;\n }\n const align = this.align();\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withPositions([\n {\n originX: align,\n originY: 'bottom',\n overlayX: align,\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: align,\n originY: 'top',\n overlayX: align,\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n };\n this.ref = this.overlay.create(cfg);\n this.ref.backdropClick().subscribe(() => this.close());\n this.ref.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n trigger.focus();\n }\n });\n this.ref.attach(new TemplatePortal(this.panelTpl()!, this.vcr));\n this.opened.set(true);\n }\n\n close(): void {\n this.ref?.dispose();\n this.ref = null;\n this.opened.set(false);\n }\n\n ngOnDestroy(): void {\n this.close();\n }\n}\n","<!-- Projected content is captured ONCE here and stamped into whichever render\n site is active — duplicating ng-content across branches breaks projection. -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n\n@if (preview.staticPreview()) {\n <div\n class=\"popover\"\n [attr.role]=\"panelRole()\"\n [attr.aria-label]=\"panelLabel()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n}\n\n<ng-template #panel>\n <div\n class=\"popover\"\n [attr.role]=\"panelRole()\"\n [attr.aria-label]=\"panelLabel()\"\n [cdkTrapFocus]=\"!!panelRole()\"\n [cdkTrapFocusAutoCapture]=\"!!panelRole()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n</ng-template>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { ToastAction, ToastVariant } from './toast.types';\n\n/**\n * Single toast pill. Consumed by ToastRegion for service-driven runtime toasts\n * AND by static showcases that need to display a toast specimen inline.\n */\n@Component({\n selector: 'ds-toast',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ToastComponent {\n readonly variant = input<ToastVariant>('info');\n readonly title = input<string>('');\n readonly message = input<string>('');\n readonly dismissible = input<boolean>(false);\n readonly icon = input<IconName | null>(null);\n readonly action = input<ToastAction | null>(null);\n readonly dismissed = output<void>();\n\n protected onAction(action: ToastAction): void {\n action.handler();\n this.dismissed.emit();\n }\n\n protected readonly classes = computed(() => `toast ${this.variant()}`);\n\n /** Errors/warnings interrupt (assertive); info/success wait their turn. */\n protected readonly role = computed<'alert' | 'status'>(() =>\n this.variant() === 'error' || this.variant() === 'warning'\n ? 'alert'\n : 'status',\n );\n\n protected readonly defaultIcon = computed<IconName>(() => {\n switch (this.variant()) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warn';\n case 'error':\n return 'error';\n default:\n return 'info';\n }\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div\n aria-atomic=\"true\"\n [class]=\"classes()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"role() === 'alert' ? 'assertive' : 'polite'\"\n>\n <ds-icon\n class=\"icon\"\n [name]=\"icon() ?? defaultIcon()\"\n [size]=\"16\"\n />\n\n <div class=\"body\">\n @if (title()) {\n <div class=\"title\">\n {{ title() }}\n </div>\n }\n {{ message() }}\n <ng-content></ng-content>\n </div>\n\n @if (action(); as act) {\n <button\n type=\"button\"\n class=\"action\"\n (click)=\"onAction(act)\"\n >\n {{ act.label }}\n </button>\n }\n\n <span class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </span>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Dismiss\"\n (click)=\"onDismiss()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n />\n </button>\n }\n</div>\n","import { Component, ViewEncapsulation, signal } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport type { ToastEntry } from './toast.types';\n\n// Must match the leave transition on :host in toast.component.scss (--duration-base).\nconst LEAVE_DURATION_MS = 180;\n\n@Component({\n selector: 'ds-toast-region',\n standalone: true,\n imports: [ToastComponent],\n templateUrl: './toast-region.component.html',\n styleUrl: './toast-region.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'region',\n 'aria-label': 'Notifications',\n },\n})\nexport class ToastRegionComponent {\n protected readonly entries = signal<readonly ToastEntry[]>([]);\n protected readonly leaving = signal<ReadonlySet<number>>(new Set());\n\n add(entry: ToastEntry): void {\n this.entries.update((existing) => [...existing, entry]);\n }\n\n remove(id: number): void {\n if (this.leaving().has(id)) {\n return;\n }\n this.leaving.update((set) => new Set(set).add(id));\n setTimeout(() => {\n this.entries.update((existing) =>\n existing.filter((entry) => entry.id !== id),\n );\n this.leaving.update((set) => {\n const next = new Set(set);\n next.delete(id);\n\n return next;\n });\n }, LEAVE_DURATION_MS);\n }\n\n protected isLeaving(id: number): boolean {\n return this.leaving().has(id);\n }\n\n clear(): void {\n this.entries.set([]);\n this.leaving.set(new Set());\n }\n}\n","@for (entry of entries(); track entry.id) {\n <ds-toast\n [variant]=\"entry.variant\"\n [title]=\"entry.title ?? ''\"\n [message]=\"entry.body\"\n [dismissible]=\"entry.dismissible\"\n [action]=\"entry.action ?? null\"\n [class.leaving]=\"isLeaving(entry.id)\"\n (dismissed)=\"remove(entry.id)\"\n />\n}\n","import { InjectionToken } from '@angular/core';\nimport type { DsToastPosition } from './toast.types';\n\nexport const DS_TOAST_POSITION = new InjectionToken<DsToastPosition>(\n 'DS_TOAST_POSITION',\n);\n\nexport const DS_TOAST_POSITION_DEFAULT: DsToastPosition = {\n horizontalPosition: 'right',\n verticalPosition: 'top',\n offset: 'var(--space-6)',\n};\n","import { ComponentRef, Injectable, inject } from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n GlobalPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastRegionComponent } from './toast-region.component';\nimport { DS_TOAST_POSITION, DS_TOAST_POSITION_DEFAULT } from './toast.config';\nimport type { ToastOptions, ToastRef, ToastEntry } from './toast.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private readonly overlay = inject(Overlay);\n private readonly position = inject(DS_TOAST_POSITION, { optional: true });\n private overlayRef: OverlayRef | null = null;\n private regionRef: ComponentRef<ToastRegionComponent> | null = null;\n private nextId = 1;\n\n show(opts: ToastOptions): ToastRef {\n this.ensureRegion();\n const id = this.nextId++;\n const entry: ToastEntry = {\n id,\n title: opts.title,\n body: opts.body,\n variant: opts.variant ?? 'info',\n dismissible: opts.dismissible ?? true,\n action: opts.action,\n };\n this.regionRef!.instance.add(entry);\n\n const ref: ToastRef = {\n id,\n dismiss: () => this.regionRef?.instance.remove(id),\n };\n\n const duration = opts.durationMs ?? 5000;\n if (duration > 0) {\n window.setTimeout(() => ref.dismiss(), duration);\n }\n\n return ref;\n }\n\n dismissAll(): void {\n this.regionRef?.instance.clear();\n }\n\n private ensureRegion(): void {\n if (this.overlayRef) {\n return;\n }\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n panelClass: 'ds-toast-panel',\n positionStrategy: this.buildPositionStrategy(),\n });\n this.regionRef = this.overlayRef.attach(\n new ComponentPortal(ToastRegionComponent),\n );\n }\n\n private buildPositionStrategy(): GlobalPositionStrategy {\n const config = this.position ?? DS_TOAST_POSITION_DEFAULT;\n const strategy = this.overlay.position().global();\n if (config.verticalPosition === 'top') {\n strategy.top(config.offset);\n } else {\n strategy.bottom(config.offset);\n }\n if (config.horizontalPosition === 'left') {\n strategy.left(config.offset);\n } else if (config.horizontalPosition === 'right') {\n strategy.right(config.offset);\n } else {\n strategy.centerHorizontally();\n }\n\n return strategy;\n }\n}\n","import {\n Component,\n DestroyRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { DrawerSize } from './drawer.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-drawer',\n standalone: true,\n imports: [IconComponent, A11yModule],\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n})\nexport class DrawerComponent {\n private readonly doc = inject(DOCUMENT);\n\n readonly open = model<boolean>(false);\n readonly size = input<DrawerSize>('md');\n readonly title = input<string>('');\n readonly closed = output<void>();\n\n protected readonly titleId = `ds-drawer-title-${++nextId}`;\n\n protected readonly classes = computed(() =>\n this.size() === 'lg' ? 'drawer lg' : 'drawer',\n );\n\n constructor() {\n effect(() => {\n this.doc.body.style.overflow = this.open() ? 'hidden' : '';\n });\n inject(DestroyRef).onDestroy(() => {\n this.doc.body.style.overflow = '';\n });\n }\n\n protected onClose(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n protected onEscape(): void {\n if (this.open()) {\n this.onClose();\n }\n }\n}\n","@if (open()) {\n <div\n class=\"drawer-scrim\"\n (click)=\"onClose()\"\n >\n </div>\n\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [class]=\"classes()\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n (keydown.escape)=\"onClose()\"\n >\n <header class=\"header\">\n <h4\n class=\"title\"\n [id]=\"titleId\"\n >\n {{ title() }}\n </h4>\n\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"onClose()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n />\n </button>\n </header>\n\n <div class=\"body\">\n <ng-content select=\"[drawer-body]\"></ng-content>\n </div>\n\n <div class=\"footer\">\n <ng-content select=\"[drawer-footer]\"></ng-content>\n </div>\n </div>\n}\n","import {\n Component,\n DOCUMENT,\n ElementRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\n\n/** Bottom-anchored sheet — the mobile sibling of ds-drawer. Closes on scrim\n * tap, Escape, or a downward drag on the grab strip. While open it locks\n * body scroll. On wide viewports the panel is capped by\n * --ds-bottom-sheet-maxw and centred; prefer ds-modal / ds-drawer for\n * desktop-first layouts. position: fixed resolves against the nearest\n * ancestor containing block, so framed hosts contain the sheet. */\n@Component({\n selector: 'ds-bottom-sheet',\n standalone: true,\n templateUrl: './bottom-sheet.component.html',\n styleUrl: './bottom-sheet.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n})\nexport class BottomSheetComponent {\n readonly open = model<boolean>(false);\n readonly title = input<string>('');\n readonly closed = output<void>();\n\n private readonly doc = inject(DOCUMENT);\n private readonly sheetRef = viewChild<ElementRef<HTMLElement>>('sheet');\n\n protected readonly dragOffset = signal<number | null>(null);\n\n private dragStartY = 0;\n private lastMoveY = 0;\n private lastMoveTime = 0;\n private velocity = 0;\n private previousBodyOverflow: string | null = null;\n\n constructor() {\n effect((onCleanup) => {\n if (!this.open()) {\n return;\n }\n this.previousBodyOverflow = this.doc.body.style.overflow;\n this.doc.body.style.overflow = 'hidden';\n onCleanup(() => {\n this.doc.body.style.overflow = this.previousBodyOverflow ?? '';\n this.previousBodyOverflow = null;\n });\n });\n }\n\n protected close(): void {\n this.dragOffset.set(null);\n this.open.set(false);\n this.closed.emit();\n }\n\n protected onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n\n protected stop(event: Event): void {\n event.stopPropagation();\n }\n\n protected onGrabStart(event: PointerEvent): void {\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n this.dragStartY = event.clientY;\n this.lastMoveY = event.clientY;\n this.lastMoveTime = event.timeStamp;\n this.velocity = 0;\n this.dragOffset.set(0);\n }\n\n protected onGrabMove(event: PointerEvent): void {\n if (this.dragOffset() === null) {\n return;\n }\n const deltaTime = event.timeStamp - this.lastMoveTime;\n if (deltaTime > 0) {\n this.velocity = (event.clientY - this.lastMoveY) / deltaTime;\n }\n this.lastMoveY = event.clientY;\n this.lastMoveTime = event.timeStamp;\n this.dragOffset.set(Math.max(0, event.clientY - this.dragStartY));\n }\n\n protected onGrabEnd(): void {\n const offset = this.dragOffset();\n if (offset === null) {\n return;\n }\n const sheetHeight = this.sheetRef()?.nativeElement.offsetHeight ?? 0;\n const pastThreshold = sheetHeight > 0 && offset > sheetHeight * 0.3;\n const flicked = this.velocity > 0.5;\n if (pastThreshold || flicked) {\n this.close();\n } else {\n this.dragOffset.set(null);\n }\n }\n}\n","@if (open()) {\n <div\n class=\"sheet-overlay\"\n (click)=\"close()\"\n >\n <div\n #sheet\n class=\"sheet\"\n [class.dragging]=\"dragOffset() !== null\"\n [style.transform]=\"\n dragOffset() ? 'translateY(' + dragOffset() + 'px)' : null\n \"\n (click)=\"stop($event)\"\n >\n <div\n class=\"grab\"\n (pointerdown)=\"onGrabStart($event)\"\n (pointermove)=\"onGrabMove($event)\"\n (pointerup)=\"onGrabEnd()\"\n (pointercancel)=\"onGrabEnd()\"\n >\n <div class=\"sheet-handle\"></div>\n </div>\n\n @if (title()) {\n <h3 class=\"sheet-title\">\n {{ title() }}\n </h3>\n }\n\n <div class=\"sheet-body\">\n <ng-content />\n </div>\n\n <div class=\"sheet-actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { TagVariant } from './tag.types';\n\n@Component({\n selector: 'ds-tag',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.neutral]': \"variant() === 'neutral'\",\n '[class.closable]': 'closable()',\n '[class.interactive]': 'interactive()',\n '[class.is-active]': 'selected()',\n '(click)': 'onClick()',\n },\n})\nexport class TagComponent {\n readonly variant = input<TagVariant>('solid');\n readonly closable = input(false, { transform: booleanAttribute });\n readonly interactive = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n /** Accessible label for the close button (e.g. \"Remove Source filter\"). */\n readonly closeLabel = input<string>('Remove');\n readonly closed = output<void>();\n readonly toggled = output<void>();\n\n protected onClick(): void {\n if (this.interactive()) {\n this.toggled.emit();\n }\n }\n}\n","<ng-content></ng-content>\n\n@if (closable()) {\n <button\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"$event.stopPropagation(); closed.emit()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"12\"\n />\n </button>\n}\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-w3w',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './w3w.component.html',\n styleUrl: './w3w.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.role]': \"copyable() ? 'button' : null\",\n '[attr.tabindex]': 'copyable() ? 0 : null',\n '[attr.aria-label]':\n \"copyable() ? ('Copy what3words address ' + prefix() + address()) : null\",\n '(click)': 'onCopy()',\n '(keydown.enter)': 'onCopy()',\n '(keydown.space)': 'onKeyActivate($event)',\n },\n})\nexport class W3wComponent {\n readonly prefix = input<string>('///');\n readonly address = input.required<string>();\n readonly copyable = input<boolean>(true);\n readonly copied = output<string>();\n\n protected onKeyActivate(event: Event): void {\n event.preventDefault();\n this.onCopy();\n }\n\n protected onCopy(): void {\n if (!this.copyable()) {\n return;\n }\n const text = `${this.prefix()}${this.address()}`;\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n this.copied.emit(this.address());\n }\n}\n","<ds-icon\n name=\"map\"\n [size]=\"14\"\n/>\n\n<span>\n <span class=\"mark\">\n {{ prefix() }}\n </span>{{ address() }}\n</span>\n\n@if (copyable()) {\n <ds-icon\n name=\"copy\"\n [size]=\"12\"\n />\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { PageFooterVariant } from './page-footer.types';\n\n@Component({\n selector: 'ds-page-footer',\n standalone: true,\n imports: [],\n templateUrl: './page-footer.component.html',\n styleUrl: './page-footer.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.compact]': \"variant() === 'compact'\",\n '[class.save]': \"variant() === 'save'\",\n },\n})\nexport class PageFooterComponent {\n readonly variant = input<PageFooterVariant>('default');\n}\n","<ng-content select=\"[brand]\"></ng-content>\n\n<ng-content select=\"[nav]\"></ng-content>\n\n<ng-content select=\"[actions]\"></ng-content>\n\n<ng-content></ng-content>\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { IconComponent } from '../../icons/icon.component';\nimport { TagComponent } from '../tag/tag.component';\nimport type { ComboboxOption, ComboboxSize } from './combobox.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-combobox',\n standalone: true,\n imports: [IconComponent, TagComponent],\n templateUrl: './combobox.component.html',\n styleUrl: './combobox.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ComboboxComponent<T = unknown> {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n\n readonly options = input<readonly ComboboxOption<T>[]>([]);\n readonly value = model<T | readonly T[] | null>(null);\n readonly multiple = input<boolean>(false);\n readonly size = input<ComboboxSize>('md');\n readonly placeholder = input<string>('Select…');\n /** Accessible name for the combobox input. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly query = signal('');\n protected readonly isOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLElement>>('trigger');\n protected readonly filterInput =\n viewChild.required<ElementRef<HTMLInputElement>>('filter');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n private overlayRef: OverlayRef | null = null;\n\n protected readonly uid = `ds-combobox-${++nextId}`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(index: number): string {\n return `${this.uid}-opt-${index}`;\n }\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.isOpen() && index >= 0 ? this.optionId(index) : null;\n });\n\n protected readonly filteredOptions = computed(() => {\n const trimmedQuery = this.query().toLowerCase().trim();\n const allOptions = this.options();\n if (!trimmedQuery) {\n return allOptions;\n }\n\n return allOptions.filter((option) =>\n option.label.toLowerCase().includes(trimmedQuery),\n );\n });\n\n protected readonly selectedTags = computed(() => {\n if (!this.multiple()) {\n return [];\n }\n const selectedValues = (this.value() as readonly T[] | null) ?? [];\n const selectedSet = new Set(selectedValues);\n\n return this.options().filter((option) => selectedSet.has(option.value));\n });\n\n protected readonly displayLabel = computed(() => {\n if (this.multiple()) {\n return '';\n }\n const currentValue = this.value() as T | null;\n if (currentValue === null) {\n return '';\n }\n\n return (\n this.options().find((option) => option.value === currentValue)?.label ??\n ''\n );\n });\n\n protected readonly placeholderText = computed(() => {\n if (this.multiple()) {\n return '';\n }\n if (this.displayLabel()) {\n return '';\n }\n\n return this.placeholder();\n });\n\n protected isSelected(option: ComboboxOption<T>): boolean {\n if (this.multiple()) {\n const selectedValues = (this.value() as readonly T[] | null) ?? [];\n\n return selectedValues.includes(option.value);\n }\n\n return this.value() === option.value;\n }\n\n protected optionClass(option: ComboboxOption<T>): string {\n const parts = ['option'];\n if (this.multiple()) {\n parts.push('check');\n }\n void option;\n\n return parts.join(' ');\n }\n\n protected onTriggerClick(): void {\n this.filterInput().nativeElement.focus();\n if (!this.overlayRef) {\n this.openPanel();\n }\n }\n\n protected togglePanel(event: MouseEvent): void {\n event.stopPropagation();\n if (this.overlayRef) {\n this.close();\n } else {\n this.filterInput().nativeElement.focus();\n this.openPanel();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const opts = this.filteredOptions();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.overlayRef) {\n this.openPanel();\n\n return;\n }\n this.activeIndex.set(\n opts.length ? (this.activeIndex() + 1) % opts.length : -1,\n );\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.overlayRef) {\n this.openPanel();\n\n return;\n }\n this.activeIndex.set(\n opts.length\n ? (this.activeIndex() - 1 + opts.length) % opts.length\n : -1,\n );\n break;\n case 'Enter': {\n const opt = opts[this.activeIndex()];\n if (opt) {\n event.preventDefault();\n this.onPick(opt);\n }\n break;\n }\n case 'Escape':\n if (this.overlayRef) {\n event.preventDefault();\n this.close();\n }\n break;\n case 'Backspace':\n if (this.multiple() && !this.query()) {\n const tags = this.selectedTags();\n const last = tags[tags.length - 1];\n if (last) {\n this.remove(last.value);\n }\n }\n break;\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const overlayConfig: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: triggerElement.getBoundingClientRect().width,\n };\n this.overlayRef = this.overlay.create(overlayConfig);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.attach(new TemplatePortal(this.panelTpl(), this.vcr));\n this.isOpen.set(true);\n this.activeIndex.set(this.filteredOptions().length ? 0 : -1);\n }\n\n protected close(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n }\n\n protected onFilter(event: Event): void {\n this.query.set((event.target as HTMLInputElement).value);\n }\n\n protected onPick(option: ComboboxOption<T>): void {\n if (this.multiple()) {\n const current = (this.value() as readonly T[] | null) ?? [];\n const next = current.includes(option.value)\n ? current.filter((existing) => existing !== option.value)\n : [...current, option.value];\n this.value.set(next);\n } else {\n this.value.set(option.value);\n this.close();\n }\n }\n\n protected remove(target: T): void {\n if (!this.multiple()) {\n return;\n }\n const current = (this.value() as readonly T[] | null) ?? [];\n this.value.set(current.filter((existing) => existing !== target));\n }\n}\n","<div\n #trigger\n class=\"combo-trigger\"\n [class.open]=\"isOpen()\"\n [class.sm]=\"size() === 'sm'\"\n [class.lg]=\"size() === 'lg'\"\n (click)=\"onTriggerClick()\"\n>\n @if (multiple()) {\n @for (selectedOption of selectedTags(); track selectedOption.value) {\n <ds-tag\n [closable]=\"true\"\n [closeLabel]=\"'Remove ' + selectedOption.label\"\n (closed)=\"remove(selectedOption.value)\"\n >\n {{ selectedOption.label }}\n </ds-tag>\n }\n } @else if (displayLabel()) {\n <span class=\"combo-value\">\n {{ displayLabel() }}\n </span>\n }\n\n <input\n #filter\n type=\"text\"\n class=\"combo-input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [value]=\"query()\"\n [placeholder]=\"placeholderText()\"\n (input)=\"onFilter($event)\"\n (focus)=\"openPanel()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n <ds-icon\n name=\"chevronDown\"\n class=\"combo-chevron\"\n [size]=\"16\"\n (click)=\"togglePanel($event)\"\n />\n</div>\n\n<ng-template #panel>\n <ul\n class=\"combo-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"multiple() ? 'true' : null\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [class]=\"optionClass(option)\"\n [id]=\"optionId(i)\"\n [class.is-active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option)\"\n (click)=\"onPick(option)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (multiple()) {\n <input\n type=\"checkbox\"\n class=\"check\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [checked]=\"isSelected(option)\"\n />\n }\n\n <span>\n {{ option.label }}\n </span>\n\n @if (!multiple() && isSelected(option)) {\n <ds-icon\n name=\"check\"\n class=\"icon\"\n [size]=\"14\"\n />\n }\n </li>\n }\n\n @if (filteredOptions().length === 0) {\n <li\n class=\"empty t-s\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.aria-disabled]=\"true\"\n >\n No matches\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { DividerSpacing, DividerVariant } from './divider.types';\n\n@Component({\n selector: 'ds-divider',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './divider.component.scss',\n host: {\n role: 'separator',\n '[class.strong]': \"variant() === 'strong'\",\n '[class.vertical]': \"variant() === 'vertical'\",\n '[class.label]': \"variant() === 'label'\",\n '[class.spacing-none]': \"spacing() === 'none'\",\n '[class.spacing-sm]': \"spacing() === 'sm'\",\n '[class.spacing-md]': \"spacing() === 'md'\",\n '[class.spacing-lg]': \"spacing() === 'lg'\",\n '[attr.aria-orientation]': \"variant() === 'vertical' ? 'vertical' : null\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DividerComponent {\n readonly variant = input<DividerVariant>('default');\n // Vertical margin around the divider. Defaults to `md` (8px) for parity\n // with menus / sidenavs; bump to `lg` for content-section separators.\n readonly spacing = input<DividerSpacing>('md');\n}\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\n\n@Component({\n selector: 'ds-checkbox',\n standalone: true,\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CheckboxComponent {\n readonly checked = model<boolean>(false);\n readonly indeterminate = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string | null>(null);\n readonly inputId = input<string | null>(null);\n\n protected onChange(event: Event): void {\n this.checked.set((event.target as HTMLInputElement).checked);\n }\n}\n","<input\n type=\"checkbox\"\n class=\"check\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name()\"\n [attr.id]=\"inputId()\"\n (change)=\"onChange($event)\"\n/>\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\n\n@Component({\n selector: 'ds-radio',\n standalone: true,\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class RadioComponent {\n readonly checked = model<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string>('');\n readonly value = input<string>('');\n readonly inputId = input<string | null>(null);\n\n protected onChange(event: Event): void {\n this.checked.set((event.target as HTMLInputElement).checked);\n }\n}\n","<input\n type=\"radio\"\n class=\"radio\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name() || null\"\n [attr.value]=\"value() || null\"\n [attr.id]=\"inputId()\"\n (change)=\"onChange($event)\"\n/>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n model,\n} from '@angular/core';\n\n@Component({\n selector: 'ds-switch',\n standalone: true,\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SwitchComponent {\n readonly checked = model<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string | null>(null);\n readonly variant = input<'default' | 'success' | 'error'>('default');\n readonly inputId = input<string | null>(null);\n\n protected readonly classes = computed(() => {\n const variant = this.variant();\n\n return variant === 'default' ? 'switch' : `switch ${variant}`;\n });\n\n protected onChange(event: Event): void {\n this.checked.set((event.target as HTMLInputElement).checked);\n }\n}\n","<input\n type=\"checkbox\"\n [class]=\"classes()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.name]=\"name()\"\n [attr.id]=\"inputId()\"\n (change)=\"onChange($event)\"\n/>\n","/**\n * Public surface of @ids-group-ltd/ids-design-system.\n */\nexport * from './lib/config/ds-config';\nexport * from './lib/overlay/ds-overlay-close-ref';\nexport * from './lib/icons';\nexport * from './lib/components/button';\nexport * from './lib/components/icon-button';\nexport * from './lib/components/badge';\nexport * from './lib/components/status-dot';\nexport * from './lib/components/avatar';\nexport * from './lib/components/avatar-group';\nexport * from './lib/components/card';\nexport * from './lib/components/stat';\nexport * from './lib/components/tabs';\nexport * from './lib/components/input';\nexport * from './lib/components/number-stepper';\nexport * from './lib/components/textarea';\nexport * from './lib/components/search';\nexport * from './lib/components/select';\nexport * from './lib/components/dropdown';\nexport * from './lib/components/table';\nexport * from './lib/components/pagination';\nexport * from './lib/components/date-picker';\nexport * from './lib/components/breadcrumbs';\nexport * from './lib/components/sidenav';\nexport * from './lib/components/topbar';\nexport * from './lib/components/page-header';\nexport * from './lib/components/modal';\nexport * from './lib/components/banner';\nexport * from './lib/components/dropzone';\nexport * from './lib/components/menu';\nexport * from './lib/components/empty-state';\nexport * from './lib/components/progress';\nexport * from './lib/components/accordion';\nexport * from './lib/components/stepper';\nexport * from './lib/components/tooltip';\nexport * from './lib/components/popover';\nexport * from './lib/components/toast';\nexport * from './lib/components/drawer';\nexport * from './lib/components/bottom-sheet';\nexport * from './lib/components/tag';\nexport * from './lib/components/w3w';\nexport * from './lib/components/page-footer';\nexport * from './lib/components/combobox';\nexport * from './lib/components/divider';\nexport * from './lib/components/skeleton';\nexport * from './lib/components/spinner';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/radio';\nexport * from './lib/components/switch';\nexport * from './lib/components/static-preview.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","i1.DsStaticPreview","i1","DOCUMENT"],"mappings":"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AAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,E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"}
1
+ {"version":3,"file":"ids-group-ltd-ids-design-system.mjs","sources":["../../../src/lib/config/ds-config.ts","../../../src/lib/theme/provide-ds-theme.ts","../../../src/lib/overlay/ds-overlay-close-ref.ts","../../../src/lib/icons/icon-registry.ts","../../../src/lib/icons/icons.data.ts","../../../src/lib/icons/icon.component.ts","../../../src/lib/components/button/button.component.ts","../../../src/lib/components/button/button.component.html","../../../src/lib/components/toggle-button/toggle-button.component.ts","../../../src/lib/components/toggle-button/toggle-button.component.html","../../../src/lib/components/icon-button/icon-button.component.ts","../../../src/lib/components/icon-button/icon-button.component.html","../../../src/lib/components/badge/badge.component.ts","../../../src/lib/components/badge/badge.component.html","../../../src/lib/components/status-dot/status-dot.component.ts","../../../src/lib/components/avatar/avatar.component.ts","../../../src/lib/components/avatar/avatar.component.html","../../../src/lib/components/avatar-group/avatar-group.component.ts","../../../src/lib/components/avatar-group/avatar-group.component.html","../../../src/lib/components/card/card.component.ts","../../../src/lib/components/card/card.component.html","../../../src/lib/components/stat/stat.component.ts","../../../src/lib/components/stat/stat.component.html","../../../src/lib/components/tabs/tab.component.ts","../../../src/lib/components/tabs/tabs.component.ts","../../../src/lib/components/tabs/tabs.component.html","../../../src/lib/components/spinner/spinner.component.ts","../../../src/lib/components/control-value-accessor.ts","../../../src/lib/components/field-message/field-message.component.ts","../../../src/lib/components/field-message/field-message.component.html","../../../src/lib/components/field-ids.ts","../../../src/lib/components/input/input.component.ts","../../../src/lib/components/input/input.component.html","../../../src/lib/components/number-stepper/number-stepper.component.ts","../../../src/lib/components/number-stepper/number-stepper.component.html","../../../src/lib/components/textarea/textarea.component.ts","../../../src/lib/components/textarea/textarea.component.html","../../../src/lib/components/search/search.component.ts","../../../src/lib/components/search/search.component.html","../../../src/lib/components/overlay-motion.ts","../../../src/lib/components/static-preview.directive.ts","../../../src/lib/components/select/select.types.ts","../../../src/lib/components/select/select.component.ts","../../../src/lib/components/select/select.component.html","../../../src/lib/components/dropdown/dropdown.component.ts","../../../src/lib/components/dropdown/dropdown.component.html","../../../src/lib/components/skeleton/skeleton.component.ts","../../../src/lib/components/pagination/pagination.component.ts","../../../src/lib/components/pagination/pagination.component.html","../../../src/lib/components/loading-overlay/loading-overlay.component.ts","../../../src/lib/components/loading-overlay/loading-overlay.component.html","../../../src/lib/components/table/cell-template.directive.ts","../../../src/lib/components/table/table.component.ts","../../../src/lib/components/table/table.component.html","../../../src/lib/components/calendar-day/calendar-day.component.ts","../../../src/lib/components/calendar-day/calendar-day.component.html","../../../src/lib/components/date-picker/date-picker.component.ts","../../../src/lib/components/date-picker/date-picker.component.html","../../../src/lib/components/breadcrumbs/breadcrumbs.service.ts","../../../src/lib/components/breadcrumbs/breadcrumbs.component.ts","../../../src/lib/components/breadcrumbs/breadcrumbs.component.html","../../../src/lib/components/sidenav/sidenav.component.ts","../../../src/lib/components/sidenav/sidenav.component.html","../../../src/lib/components/sidenav/sidenav-group.component.ts","../../../src/lib/components/sidenav/sidenav-group.component.html","../../../src/lib/components/sidenav/sidenav-item.component.ts","../../../src/lib/components/sidenav/sidenav-item.component.html","../../../src/lib/components/topbar/topbar.component.ts","../../../src/lib/components/topbar/topbar.component.html","../../../src/lib/components/page-header/page-header.component.ts","../../../src/lib/components/page-header/page-header.component.html","../../../src/lib/components/modal/modal-card.component.ts","../../../src/lib/components/modal/modal-card.component.html","../../../src/lib/components/modal/modal.component.ts","../../../src/lib/components/modal/modal.component.html","../../../src/lib/components/modal/modal-confirm.types.ts","../../../src/lib/components/modal/modal-confirm.component.ts","../../../src/lib/components/modal/modal-confirm.component.html","../../../src/lib/components/modal/modal.service.ts","../../../src/lib/components/banner/banner.component.ts","../../../src/lib/components/banner/banner.component.html","../../../src/lib/components/alert/alert.component.ts","../../../src/lib/components/alert/alert.component.html","../../../src/lib/components/dropzone/dropzone.component.ts","../../../src/lib/components/dropzone/dropzone.component.html","../../../src/lib/components/menu/menu-item.component.ts","../../../src/lib/components/menu/menu-item.component.html","../../../src/lib/components/menu/menu.component.ts","../../../src/lib/components/menu/menu.component.html","../../../src/lib/components/empty-state/empty-state.component.ts","../../../src/lib/components/empty-state/empty-state.component.html","../../../src/lib/components/progress/progress.component.ts","../../../src/lib/components/progress/progress.component.html","../../../src/lib/components/accordion/accordion.component.ts","../../../src/lib/components/accordion/accordion-item.component.ts","../../../src/lib/components/accordion/accordion-item.component.html","../../../src/lib/components/stepper/stepper.component.ts","../../../src/lib/components/stepper/stepper.component.html","../../../src/lib/components/tooltip/tooltip-panel.component.ts","../../../src/lib/components/tooltip/tooltip.directive.ts","../../../src/lib/components/popover/popover.component.ts","../../../src/lib/components/popover/popover.component.html","../../../src/lib/components/toast/toast.component.ts","../../../src/lib/components/toast/toast.component.html","../../../src/lib/components/toast/toast-region.component.ts","../../../src/lib/components/toast/toast-region.component.html","../../../src/lib/components/toast/toast.config.ts","../../../src/lib/components/toast/toast.service.ts","../../../src/lib/components/drawer/drawer.component.ts","../../../src/lib/components/drawer/drawer.component.html","../../../src/lib/components/bottom-sheet/bottom-sheet.component.ts","../../../src/lib/components/bottom-sheet/bottom-sheet.component.html","../../../src/lib/components/tag/tag.component.ts","../../../src/lib/components/tag/tag.component.html","../../../src/lib/components/w3w/w3w.component.ts","../../../src/lib/components/w3w/w3w.component.html","../../../src/lib/components/page-footer/page-footer.component.ts","../../../src/lib/components/page-footer/page-footer.component.html","../../../src/lib/components/combobox/combobox.component.ts","../../../src/lib/components/combobox/combobox.component.html","../../../src/lib/components/divider/divider.component.ts","../../../src/lib/components/description-list/description-list.component.ts","../../../src/lib/components/description-list/description-list.component.html","../../../src/lib/components/description-list/description-item.component.ts","../../../src/lib/components/description-list/description-item.component.html","../../../src/lib/components/layout/stack.component.ts","../../../src/lib/components/layout/inline.component.ts","../../../src/lib/components/layout/container.component.ts","../../../src/lib/components/segmented/segmented.component.ts","../../../src/lib/components/segmented/segmented.component.html","../../../src/lib/components/button-group/button-group.component.ts","../../../src/lib/components/list/list.component.ts","../../../src/lib/components/list/list-item.component.ts","../../../src/lib/components/list/list-item.component.html","../../../src/lib/components/split-button/split-button.component.ts","../../../src/lib/components/split-button/split-button.component.html","../../../src/lib/components/timeline/timeline.component.ts","../../../src/lib/components/timeline/timeline-item.component.ts","../../../src/lib/components/timeline/timeline-item.component.html","../../../src/lib/components/otp-input/otp-input.component.ts","../../../src/lib/components/otp-input/otp-input.component.html","../../../src/lib/components/slider/slider.component.ts","../../../src/lib/components/slider/slider.component.html","../../../src/lib/components/tree/tree.component.ts","../../../src/lib/components/tree/tree.component.html","../../../src/lib/components/color-picker/color-picker.utils.ts","../../../src/lib/components/color-picker/color-picker.component.ts","../../../src/lib/components/color-picker/color-picker.component.html","../../../src/lib/components/multi-select/multi-select.component.ts","../../../src/lib/components/multi-select/multi-select.component.html","../../../src/lib/components/checkbox/checkbox.component.ts","../../../src/lib/components/checkbox/checkbox.component.html","../../../src/lib/components/radio-group/radio-group.token.ts","../../../src/lib/components/radio/radio.component.ts","../../../src/lib/components/radio/radio.component.html","../../../src/lib/components/radio-group/radio-group.component.ts","../../../src/lib/components/radio-group/radio-group.component.html","../../../src/lib/components/switch/switch.component.ts","../../../src/lib/components/switch/switch.component.html","../../../src/public-api.ts","../../../src/ids-group-ltd-ids-design-system.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport type { IconName } from '../icons/icons.data';\n\nexport interface DsConfig {\n breadcrumbs?: {\n separator?: IconName;\n clickable?: boolean;\n };\n}\n\nexport const DS_CONFIG = new InjectionToken<DsConfig>('DS_CONFIG', {\n factory: () => ({}),\n});\n\n/** Provide DS-level defaults at the app root.\n *\n * providers: [provideDsConfig({ card: { padding: 'sm' } })]\n *\n * Component inputs (e.g. `<ds-card padding=\"lg\">`) still win over the config.\n */\nexport function provideDsConfig(config: DsConfig): Provider {\n return { provide: DS_CONFIG, useValue: config };\n}\n","import {\n EnvironmentProviders,\n PLATFORM_ID,\n inject,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport interface DsThemeOptions {\n /**\n * Follow the operating-system colour scheme: on startup set `data-theme` on\n * `<html>` from `prefers-color-scheme` and keep it in sync as the OS changes.\n * Default `false` — the design system stays on its explicit light default\n * and dark is opt-in via `<html data-theme=\"dark\">`.\n */\n followSystem?: boolean;\n}\n\n/**\n * App-root theme configuration for the design system.\n *\n * ```ts\n * // app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [provideDsTheme({ followSystem: true })],\n * };\n * ```\n *\n * Light is the default with no provider; `followSystem` opts into OS-driven\n * switching. A manual `<html data-theme=\"dark\">` always wins over the initial\n * value this sets.\n */\nexport function provideDsTheme(\n options: DsThemeOptions = {},\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideEnvironmentInitializer((): void => {\n if (!options.followSystem || !isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n const query = window.matchMedia('(prefers-color-scheme: dark)');\n const apply = (): void =>\n document.documentElement.setAttribute(\n 'data-theme',\n query.matches ? 'dark' : 'light',\n );\n apply();\n query.addEventListener('change', apply);\n }),\n ]);\n}\n","/** A reference to the overlay/container the projected content lives in, used to\n * close it from the inside — e.g. a popover (and, later, a dropdown/select)\n * closing when a menu item is selected. The container provides it via DI;\n * content injects it with `{ optional: true }` so the same content also works\n * standalone (outside any overlay).\n *\n * Same shape as Angular Material's `MatDialogRef` (content calls `close()` on a\n * ref), generalised so any dismissible overlay can provide it. */\nexport abstract class DsOverlayCloseRef {\n abstract close(): void;\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/** Map of custom icon name -> raw SVG body markup.\n *\n * The body is what goes *inside* `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">`\n * — typically one or more `<path>` / `<circle>` / `<rect>` elements. Stroke width, line caps and\n * join are applied by the host `<ds-icon>` template, so paths should use `stroke=\"currentColor\"`\n * implicitly (i.e. omit the stroke attribute) and rely on the parent SVG.\n *\n * Example:\n * provideDsIcons({\n * 'cloud-upload': '<path d=\"M12 13v8m0-8 3 3m-3-3-3 3\"/><path d=\"...\"/>',\n * })\n */\nexport type DsIconRegistry = Readonly<Record<string, string>>;\n\nexport const DS_ICON_REGISTRY = new InjectionToken<DsIconRegistry>(\n 'DS_ICON_REGISTRY',\n {\n factory: () => ({}),\n },\n);\n\n/** Register additional icons available to `<ds-icon [name]=\"...\">` alongside the built-in DS set.\n *\n * providers: [\n * provideDsIcons({\n * 'cloud-upload': '<path d=\"...\"/>',\n * 'shield': '<path d=\"...\"/>',\n * }),\n * ]\n *\n * Names take precedence as: built-in `ICONS` > consumer registry. Consumer names that clash with\n * built-ins are ignored — to override a built-in, edit the DS source.\n */\nexport function provideDsIcons(icons: DsIconRegistry): Provider {\n return { provide: DS_ICON_REGISTRY, useValue: icons };\n}\n","// Inline SVG icon set. Ported 1:1 from CLAUDE_DESIGN_DS/ds-icons.jsx.\n// All paths render inside <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">, stroke-width 1.75.\n\nexport const ICONS = {\n search: '<circle cx=\"11\" cy=\"11\" r=\"7\" /><path d=\"m20 20-3.5-3.5\" />',\n plus: '<path d=\"M12 5v14M5 12h14\" />',\n minus: '<path d=\"M5 12h14\" />',\n check: '<path d=\"m4 12 5 5L20 6\" />',\n x: '<path d=\"M6 6l12 12M18 6L6 18\" />',\n chevronDown: '<path d=\"m6 9 6 6 6-6\" />',\n chevronRight: '<path d=\"m9 6 6 6-6 6\" />',\n chevronLeft: '<path d=\"m15 6-6 6 6 6\" />',\n chevronUp: '<path d=\"m6 15 6-6 6 6\" />',\n arrowRight: '<path d=\"M5 12h14M13 6l6 6-6 6\" />',\n arrowUp: '<path d=\"M12 19V5M6 11l6-6 6 6\" />',\n arrowDown: '<path d=\"M12 5v14M6 13l6 6 6-6\" />',\n info: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 8v.01M11 12h1v4h1\" />',\n warn: '<path d=\"M12 3 2 21h20L12 3z\" /><path d=\"M12 10v4M12 18v.01\" />',\n error: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 8v4M12 16v.01\" />',\n success: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"m8 12 3 3 5-6\" />',\n bell: '<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" /><path d=\"M10 21a2 2 0 0 0 4 0\" />',\n settings:\n '<circle cx=\"12\" cy=\"12\" r=\"3\" /><path d=\"M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z\" />',\n user: '<circle cx=\"12\" cy=\"8\" r=\"4\" /><path d=\"M4 21a8 8 0 0 1 16 0\" />',\n users:\n '<circle cx=\"9\" cy=\"8\" r=\"4\" /><path d=\"M2 21a7 7 0 0 1 14 0\" /><path d=\"M16 4a4 4 0 0 1 0 8M22 21a6 6 0 0 0-6-6\" />',\n home: '<path d=\"m3 11 9-8 9 8\" /><path d=\"M5 10v10h14V10\" />',\n calendar:\n '<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" /><path d=\"M3 10h18M8 3v4M16 3v4\" />',\n truck:\n '<path d=\"M3 16V6a1 1 0 0 1 1-1h11v11\" /><path d=\"M15 9h4l2 3v4h-6\" /><circle cx=\"7.5\" cy=\"17.5\" r=\"2\" /><circle cx=\"17.5\" cy=\"17.5\" r=\"2\" />',\n box: '<path d=\"m21 8-9-5-9 5 9 5 9-5z\" /><path d=\"M3 8v8l9 5 9-5V8\" /><path d=\"m12 13 .01 8\" />',\n map: '<path d=\"m9 4-6 3v13l6-3 6 3 6-3V4l-6 3-6-3z\" /><path d=\"M9 4v13M15 7v13\" />',\n activity: '<path d=\"M3 12h4l3-9 4 18 3-9h4\" />',\n folder:\n '<path d=\"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />',\n edit: '<path d=\"M12 20h9\" /><path d=\"M16.5 3.5a2.1 2.1 0 1 1 3 3L7 19l-4 1 1-4z\" />',\n external:\n '<path d=\"M14 4h6v6\" /><path d=\"M20 4 10 14\" /><path d=\"M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5\" />',\n trash:\n '<path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" /><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" />',\n copy: '<rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" /><path d=\"M5 15V5a2 2 0 0 1 2-2h10\" />',\n download: '<path d=\"M12 4v12M6 12l6 6 6-6\" /><path d=\"M4 20h16\" />',\n upload: '<path d=\"M12 20V8M6 12l6-6 6 6\" /><path d=\"M4 4h16\" />',\n eye: '<path d=\"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z\" /><circle cx=\"12\" cy=\"12\" r=\"3\" />',\n filter: '<path d=\"M3 5h18l-7 9v6l-4-2v-4z\" />',\n sort: '<path d=\"M7 4v16M3 8l4-4 4 4\" /><path d=\"M17 20V4M21 16l-4 4-4-4\" />',\n sortAsc: '<path d=\"M7 18V6M3 10l4-4 4 4\" />',\n sortDesc: '<path d=\"M7 6v12M11 14l-4 4-4-4\" />',\n grid: '<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />',\n list: '<path d=\"M8 6h13M8 12h13M8 18h13\" /><circle cx=\"3.5\" cy=\"6\" r=\"1.2\" /><circle cx=\"3.5\" cy=\"12\" r=\"1.2\" /><circle cx=\"3.5\" cy=\"18\" r=\"1.2\" />',\n moreH:\n '<circle cx=\"5\" cy=\"12\" r=\"1.5\" /><circle cx=\"12\" cy=\"12\" r=\"1.5\" /><circle cx=\"19\" cy=\"12\" r=\"1.5\" />',\n moreV:\n '<circle cx=\"12\" cy=\"5\" r=\"1.5\" /><circle cx=\"12\" cy=\"12\" r=\"1.5\" /><circle cx=\"12\" cy=\"19\" r=\"1.5\" />',\n link: '<path d=\"M10 14a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-1 1\" /><path d=\"M14 10a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1\" />',\n flag: '<path d=\"M5 21V5a14 14 0 0 1 14 0v9a14 14 0 0 1-14 0z\" />',\n star: '<path d=\"m12 3 2.9 6 6.6.9-4.8 4.6 1.1 6.5L12 17.8 6.2 21l1.1-6.5L2.5 9.9 9.1 9z\" />',\n inbox:\n '<path d=\"M22 12h-6l-2 3h-4l-2-3H2\" /><path d=\"M5 4h14l3 8v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-8z\" />',\n archive:\n '<rect x=\"3\" y=\"3\" width=\"18\" height=\"5\" rx=\"1\" /><path d=\"M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8M10 12h4\" />',\n clock: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M12 7v5l3 2\" />',\n refresh:\n '<path d=\"M3 12a9 9 0 0 1 15-6.7L21 8\" /><path d=\"M21 3v5h-5\" /><path d=\"M21 12a9 9 0 0 1-15 6.7L3 16\" /><path d=\"M3 21v-5h5\" />',\n play: '<path d=\"M6 4l14 8-14 8z\" />',\n pause: '<path d=\"M7 4v16M17 4v16\" />',\n cmd: '<path d=\"M9 9h6v6H9zM6 9V7a3 3 0 1 1 3 3H6zM6 15v2a3 3 0 1 0 3-3H6zM18 9V7a3 3 0 1 0-3 3h3zM18 15v2a3 3 0 1 1-3-3h3z\" />',\n paperclip:\n '<path d=\"m21 11-9 9a5 5 0 0 1-7-7l9-9a3 3 0 0 1 4 4l-9 9a1 1 0 0 1-1-1l8-8\" />',\n file: '<path d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\" /><path d=\"M14 3v6h6\" />',\n image:\n '<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><circle cx=\"9\" cy=\"9\" r=\"2\" /><path d=\"m21 15-5-5L5 21\" />',\n lock: '<rect x=\"4\" y=\"11\" width=\"16\" height=\"10\" rx=\"2\" /><path d=\"M8 11V7a4 4 0 0 1 8 0v4\" />',\n logout:\n '<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" /><path d=\"m16 17 5-5-5-5M21 12H9\" />',\n help: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9.5 9a2.5 2.5 0 0 1 5 0c0 1.5-2.5 2-2.5 4M12 17v.01\" />',\n pin: '<path d=\"M12 22v-7\" /><path d=\"m9 15 6 0M8 9l8 0M9 15c-2-1.5-3-4-3-7l12 0c0 3-1 5.5-3 7\" />',\n bookmark: '<path d=\"M5 21V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16l-7-4z\" />',\n sparkle:\n '<path d=\"M12 3v6M12 15v6M3 12h6M15 12h6M5.6 5.6l4.2 4.2M14.2 14.2l4.2 4.2M5.6 18.4l4.2-4.2M14.2 9.8l4.2-4.2\" />',\n layers:\n '<path d=\"m12 3 9 5-9 5-9-5z\" /><path d=\"m3 13 9 5 9-5M3 18l9 5 9-5\" />',\n chart: '<path d=\"M3 3v18h18\" /><path d=\"M7 14l4-4 4 4 5-5\" />',\n gauge:\n '<path d=\"M12 14l4-4\" /><circle cx=\"12\" cy=\"14\" r=\"9\" /><path d=\"M3 14a9 9 0 0 1 18 0\" />',\n package:\n '<path d=\"M3 7v10l9 4 9-4V7l-9-4z\" /><path d=\"m3 7 9 5 9-5M12 12v9\" />',\n git: '<circle cx=\"6\" cy=\"6\" r=\"2.5\" /><circle cx=\"6\" cy=\"18\" r=\"2.5\" /><circle cx=\"18\" cy=\"12\" r=\"2.5\" /><path d=\"M6 8.5v7M8.5 6h4a3 3 0 0 1 3 3v0\" />',\n sun: '<circle cx=\"12\" cy=\"12\" r=\"4\" /><path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\" />',\n moon: '<path d=\"M21 13a9 9 0 0 1-12-12 9 9 0 1 0 12 12z\" />',\n save: '<path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\" /><path d=\"M17 21v-8H7v8M7 3v5h8\" />',\n rotate: '<path d=\"M3 12a9 9 0 1 0 3-6.7L3 8\" /><path d=\"M3 3v5h5\" />',\n qr: '<rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" /><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" /><path d=\"M14 14h3v3h-3zM18 18h3v3h-3z\" />',\n globe:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\" />',\n phone:\n '<path d=\"M5 4h4l2 5-2 1a11 11 0 0 0 5 5l1-2 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z\" />',\n bin: '<rect x=\"3\" y=\"6\" width=\"18\" height=\"14\" rx=\"2\" /><path d=\"M7 6V4h10v2\" />',\n pen: '<path d=\"M3 17V21h4l11-11-4-4z\" />',\n smile:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9 9v.01M15 9v.01M8 14a5 5 0 0 0 8 0\" />',\n frown:\n '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9 9v.01M15 9v.01M8 16a5 5 0 0 1 8 0\" />',\n mail: '<rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" /><path d=\"m3 7 9 6 9-6\" />',\n 'eye-off':\n '<path d=\"M3 3l18 18\" /><path d=\"M10.6 6.1A10 10 0 0 1 12 6c6 0 10 7 10 7a14 14 0 0 1-2.4 3.1\" /><path d=\"M6.7 6.7A14 14 0 0 0 2 12s4 7 10 7a10 10 0 0 0 4.5-1\" /><path d=\"M9.9 14.1A3 3 0 0 1 9 12a3 3 0 0 1 3-3 3 3 0 0 1 2.1.9\" />',\n 'check-circle': '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"m8 12 3 3 5-6\" />',\n // Drag handle: 6 dots in 2 cols × 3 rows. Use 1.6 radius to read at 12-16px.\n drag: '<circle cx=\"9\" cy=\"6\" r=\"1.6\" /><circle cx=\"15\" cy=\"6\" r=\"1.6\" /><circle cx=\"9\" cy=\"12\" r=\"1.6\" /><circle cx=\"15\" cy=\"12\" r=\"1.6\" /><circle cx=\"9\" cy=\"18\" r=\"1.6\" /><circle cx=\"15\" cy=\"18\" r=\"1.6\" />',\n scan: '<path d=\"M4 8V5a1 1 0 0 1 1-1h3M16 4h3a1 1 0 0 1 1 1v3M20 16v3a1 1 0 0 1-1 1h-3M8 20H5a1 1 0 0 1-1-1v-3\" />',\n wifi: '<path d=\"M2 9.5a15 15 0 0 1 20 0\" /><path d=\"M5 13a10 10 0 0 1 14 0\" /><path d=\"M8.5 16.5a5 5 0 0 1 7 0\" /><path d=\"M12 20h.01\" />',\n 'wifi-off':\n '<path d=\"m3 3 18 18\" /><path d=\"M12 20h.01\" /><path d=\"M8.5 16.5a5 5 0 0 1 7 0\" /><path d=\"M5 13a10 10 0 0 1 3.5-2.3\" /><path d=\"M11 8.6A10 10 0 0 1 19 13\" /><path d=\"M2 9.5a15 15 0 0 1 5.7-3.2\" /><path d=\"M11.6 5.6A15 15 0 0 1 22 9.5\" />',\n} as const;\n\n/** Built-in DS icon names. Consumers can extend the runtime set via `provideDsIcons({...})` —\n * the type widens to `string` so any custom name is accepted at the call site (at the cost of\n * autocomplete for those custom names). */\nexport type IconName = keyof typeof ICONS | (string & {});\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { DomSanitizer, type SafeHtml } from '@angular/platform-browser';\nimport { DS_ICON_REGISTRY } from './icon-registry';\nimport { ICONS, type IconName } from './icons.data';\n\n@Component({\n selector: 'ds-icon',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n // Host inline-flex + svg block prevents baseline-gap when icon sits next to text.\n styles: [\n `\n ds-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n line-height: 0;\n }\n ds-icon > svg.icon {\n display: block;\n }\n `,\n ],\n template: `\n <svg\n class=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [style.--ds-icon-size]=\"size() + 'px'\"\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.stroke-width]=\"stroke()\"\n [attr.role]=\"ariaLabel() ? 'img' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-hidden]=\"ariaLabel() ? null : 'true'\"\n [innerHTML]=\"paths()\"\n >\n </svg>\n `,\n})\nexport class IconComponent {\n private readonly sanitizer = inject(DomSanitizer);\n // Consumer-supplied icons via provideDsIcons(...). Empty record by default.\n private readonly registry = inject(DS_ICON_REGISTRY);\n readonly name = input.required<IconName>();\n readonly size = input<number>(16);\n readonly stroke = input<number>(1.75);\n /** When set, the icon is exposed to assistive tech as an image with this\n * name; otherwise it is decorative and hidden (`aria-hidden`). */\n readonly ariaLabel = input<string | null>(null);\n protected readonly paths = computed<SafeHtml>(() => {\n const key = this.name();\n // Built-in DS set wins over consumer registry — see provideDsIcons() docs.\n const body =\n (ICONS as Record<string, string>)[key] ?? this.registry[key] ?? '';\n\n return this.sanitizer.bypassSecurityTrustHtml(body);\n });\n}\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n input,\n isDevMode,\n output,\n viewChild,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type {\n ButtonColor,\n ButtonVariant,\n ButtonSize,\n ButtonType,\n} from './button.types';\n\n// color×variant pairs that RENDER but read poorly — surfaced as a dev-mode\n// console.warn (two inputs can't be narrowed against each other at compile\n// time). They are discouraged, not blocked: a brand may still opt in.\nconst DISCOURAGED_COMBOS = new Map<string, string>([\n [\n 'neutral|solid',\n 'a solid grey button reads as disabled — prefer tonal/ghost/outline',\n ],\n [\n 'success|ghost',\n 'low-emphasis success rarely warrants an action affordance — prefer solid/tonal',\n ],\n [\n 'success|outline',\n 'low-emphasis success rarely warrants an action affordance — prefer solid/tonal',\n ],\n [\n 'warning|ghost',\n 'yellow at low emphasis is too low-contrast to read — prefer solid/tonal',\n ],\n [\n 'warning|outline',\n 'yellow at low emphasis is too low-contrast to read — prefer solid/tonal',\n ],\n]);\n\n@Component({\n selector: 'ds-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: { '[class.full-width]': 'fullWidth()' },\n})\nexport class ButtonComponent {\n /** Brand/status hue family. */\n readonly color = input<ButtonColor>('primary');\n /** Fill pattern: solid | tonal | ghost | outline | text. All color×variant\n pairs render; some are UX-discouraged (see DISCOURAGED_COMBOS / the docs)\n and emit a dev-mode warning — they work, but read poorly. `text` is\n discouraged for ALL colours — prefer the global `.link` class; it stays for\n cases needing the ds-button API (loading/fullWidth/typed pressed). */\n readonly variant = input<ButtonVariant>('solid');\n readonly size = input<ButtonSize>('md');\n readonly type = input<ButtonType>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** Stretch the button to fill its container — the host becomes block-level\n and 100% wide (the inner control is already full-width). Use for mobile\n primary CTAs and full-bleed form submit buttons. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Accessible name — forwarded to the inner <button> as aria-label. Use when\n the visible label is absent or non-descriptive. */\n readonly ariaLabel = input<string | null>(null);\n readonly icon = input<IconName | null>(null);\n readonly trailingIcon = input<IconName | null>(null);\n /** ARIA `aria-haspopup`, forwarded to the inner <button> — set when this\n * button triggers a menu/dialog/listbox overlay. */\n readonly ariaHasPopup = input<\n 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null\n >(null);\n /** ARIA `aria-expanded`, forwarded to the inner <button> — bind to the\n * overlay's open state on a trigger button. */\n readonly ariaExpanded = input<boolean | null>(null);\n readonly pressed = output<MouseEvent>();\n\n /** The inner native <button>, exposed so overlay triggers can position\n * against and restore focus to the real focusable element — e.g.\n * `(pressed)=\"pop.toggle(trigger.buttonRef().nativeElement)\"`. */\n readonly buttonRef = viewChild.required<ElementRef<HTMLButtonElement>>('btn');\n\n protected readonly classes = computed(() => {\n const color = this.color();\n const variant = this.variant();\n const parts = [\n 'button',\n color === 'primary' ? '' : `c-${color}`,\n variant === 'solid' ? '' : `v-${variant}`,\n this.size(),\n this.loading() ? 'loading' : '',\n ];\n\n return parts.filter(Boolean).join(' ');\n });\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const variant = this.variant();\n if (variant === 'text') {\n console.warn(\n '[ds-button] variant=\"text\" is discouraged — prefer the global `.link` class for link-styled actions. It renders, but `.link` is the canonical link affordance.',\n );\n\n return;\n }\n const reason = DISCOURAGED_COMBOS.get(`${this.color()}|${variant}`);\n if (reason) {\n console.warn(\n `[ds-button] color=\"${this.color()}\" variant=\"${variant}\" is a UX-discouraged combination — it renders, but ${reason}.`,\n );\n }\n });\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n return;\n }\n this.pressed.emit(event);\n }\n}\n","<button\n #btn\n [class]=\"classes()\"\n [type]=\"type()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-haspopup]=\"ariaHasPopup()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"onClick($event)\"\n>\n <span class=\"button-main\">\n @if (icon(); as name) {\n <ds-icon [name]=\"name\" />\n }\n\n <ng-content></ng-content>\n\n @if (trailingIcon(); as name) {\n <ds-icon [name]=\"name\" />\n }\n </span>\n\n <span class=\"subtext-slot\">\n <ng-content select=\"[dsButtonSubtext]\"></ng-content>\n </span>\n</button>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n model,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n/** A single binary toggle button (pressed / not pressed) with an optional\n * leading icon and a projected label. Distinct from `ds-segmented` (a\n * one-of-many value toggle) — this is a standalone on/off control. */\n@Component({\n selector: 'ds-toggle-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './toggle-button.component.html',\n styleUrl: './toggle-button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ToggleButtonComponent {\n readonly pressed = model<boolean>(false);\n readonly icon = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected toggle(): void {\n if (this.disabled()) {\n return;\n }\n this.pressed.update((value) => !value);\n }\n}\n","<button\n type=\"button\"\n class=\"button-toggle\"\n [attr.aria-pressed]=\"pressed()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n @if (icon(); as name) {\n <ds-icon\n [name]=\"name\"\n [size]=\"14\"\n />\n }\n\n <ng-content></ng-content>\n</button>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { ButtonColor } from '../button/button.types';\nimport type {\n IconButtonSize,\n IconButtonType,\n IconButtonVariant,\n} from './icon-button.types';\n\n/**\n * Icon-only action button with its own variant taxonomy (standard / filled /\n * tonal / outlined) + an optional toggle (`selected`) state. Distinct from\n * `ds-button` — use this for square/round icon affordances; use `ds-button`\n * for labelled actions. `ariaLabel` is REQUIRED (icon-only has no text label).\n */\n@Component({\n selector: 'ds-icon-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class IconButtonComponent {\n readonly icon = input.required<IconName>();\n readonly ariaLabel = input.required<string>();\n readonly variant = input<IconButtonVariant>('standard');\n /** Brand/status hue family (shared with ds-button). `variant` is the fill\n axis; `color` recolours the accent the fill consumes. Default primary. */\n readonly color = input<ButtonColor>('primary');\n readonly size = input<IconButtonSize>('md');\n readonly type = input<IconButtonType>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Toggle state — renders the pressed/active look and sets aria-pressed. */\n readonly selected = input(false, { transform: booleanAttribute });\n readonly pressed = output<MouseEvent>();\n\n protected readonly classes = computed(() => {\n const parts = ['icon-button', this.variant(), this.size()];\n if (this.color() !== 'primary') {\n parts.push(`c-${this.color()}`);\n }\n if (this.selected()) {\n parts.push('selected');\n }\n\n return parts.join(' ');\n });\n\n protected readonly iconSize = computed(() => {\n const size = this.size();\n if (size === 'sm') {\n return 16;\n }\n if (size === 'lg') {\n return 24;\n }\n\n return 20;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.pressed.emit(event);\n }\n}\n","<button\n [class]=\"classes()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"selected() ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ds-icon\n [name]=\"icon()\"\n [size]=\"iconSize()\"\n />\n</button>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { BadgeVariant } from './badge.types';\n\n@Component({\n selector: 'ds-badge',\n standalone: true,\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BadgeComponent {\n readonly variant = input<BadgeVariant>('neutral');\n readonly withDot = input<boolean>(false);\n readonly solid = input<boolean>(false);\n\n protected readonly classes = computed(() => {\n const parts = ['badge', this.variant(), this.solid() ? 'solid' : ''];\n\n return parts.filter(Boolean).join(' ');\n });\n}\n","<span [class]=\"classes()\">\n @if (withDot()) {\n <span class=\"dot\"></span>\n }\n\n <ng-content></ng-content>\n</span>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { StatusValue } from './status-dot.types';\n\n@Component({\n selector: 'ds-status-dot',\n standalone: true,\n template: `<span aria-hidden=\"true\" [class]=\"classes()\"></span>`,\n styleUrl: './status-dot.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'img',\n '[attr.aria-label]': 'ariaLabel() || status()',\n },\n})\nexport class StatusDotComponent {\n readonly status = input<StatusValue>('planning');\n /** Override the colour-only status with a human label for assistive tech. */\n readonly ariaLabel = input<string | null>(null);\n protected readonly classes = computed(() => `status-dot ${this.status()}`);\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { AvatarSize } from './avatar.types';\n\n@Component({\n selector: 'ds-avatar',\n standalone: true,\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.xs]': \"size() === 'xs'\",\n '[class.sm]': \"size() === 'sm'\",\n '[class.lg]': \"size() === 'lg'\",\n '[class.neutral]': \"tint() === 'neutral'\",\n '[style.--ds-avatar-bg-color]': 'tintStyle().bg',\n '[style.--ds-avatar-label-color]': 'tintStyle().fg',\n '[attr.role]': \"ariaLabel() ? 'img' : null\",\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-hidden]': 'ariaLabel() ? null : true',\n },\n})\nexport class AvatarComponent {\n readonly size = input<AvatarSize>('md');\n readonly initials = input<string>('');\n readonly imageUrl = input<string | null>(null);\n /** Accessible name. When omitted, the avatar is treated as decorative\n * (hidden from AT) — correct when a visible name sits beside it. */\n readonly ariaLabel = input<string | null>(null);\n /** Off-token color tint. Accepts a `{ bg, fg }` pair for arbitrary palettes,\n * the literal `'neutral'` for the neutral overflow-chip treatment, or null\n * for the default brand-subtle tones from avatar.scss. */\n readonly tint = input<{ bg: string; fg: string } | 'neutral' | null>(null);\n\n protected readonly tintStyle = computed(() => {\n const value = this.tint();\n if (value && value !== 'neutral') {\n return { bg: value.bg, fg: value.fg };\n }\n\n return { bg: null as string | null, fg: null as string | null };\n });\n}\n","@if (imageUrl()) {\n <img\n alt=\"\"\n [src]=\"imageUrl()\"\n />\n} @else {\n {{ initials() }}\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ds-avatar-group',\n standalone: true,\n templateUrl: './avatar-group.component.html',\n styleUrl: './avatar-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AvatarGroupComponent {\n readonly max = input<number>(4);\n readonly total = input<number | null>(null);\n\n protected readonly overflow = computed<number | null>(() => {\n const total = this.total();\n const max = this.max();\n if (total === null) {\n return null;\n }\n\n return total > max ? total - max : null;\n });\n}\n","<ng-content></ng-content>\n\n@if (overflow() !== null) {\n <span class=\"avatar-overflow\">\n +{{ overflow() }}\n </span>\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { CardElevation, CardPadding } from './card.types';\n\n@Component({\n selector: 'ds-card',\n standalone: true,\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CardComponent {\n readonly elevation = input<CardElevation>('flat');\n readonly padding = input<CardPadding | null>(null);\n readonly pressed = output<MouseEvent>();\n\n protected readonly classes = computed(() => {\n const pad = this.padding();\n\n return `card ${this.elevation()}${pad ? ' padding-' + pad : ''}`;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.elevation() === 'interactive') {\n this.pressed.emit(event);\n }\n }\n}\n","<article\n [class]=\"classes()\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</article>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-stat',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './stat.component.html',\n styleUrl: './stat.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.danger]': \"variant() === 'danger'\",\n '[class.size-sm]': \"size() === 'sm'\",\n '[class.size-lg]': \"size() === 'lg'\",\n },\n})\nexport class StatComponent {\n readonly label = input.required<string>();\n readonly value = input.required<string | number>();\n readonly delta = input<number | null>(null);\n readonly deltaLabel = input<string>('');\n readonly deltaTone = input<'neutral' | 'secondary' | null>(null);\n readonly caption = input<string>('');\n readonly unit = input<string>('');\n readonly variant = input<'default' | 'danger'>('default');\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n protected readonly deltaClasses = computed(() => {\n const delta = this.delta();\n if (delta === null) {\n return '';\n }\n const tone = this.deltaTone();\n if (tone) {\n return `delta ${tone}`;\n }\n if (delta > 0) {\n return 'delta up';\n }\n if (delta < 0) {\n return 'delta down';\n }\n\n return 'delta';\n });\n\n protected readonly deltaIcon = computed<'arrowUp' | 'arrowDown' | null>(\n () => {\n const delta = this.delta();\n if (delta === null || delta === 0) {\n return null;\n }\n\n return delta > 0 ? 'arrowUp' : 'arrowDown';\n },\n );\n\n protected readonly deltaText = computed(() => {\n const delta = this.delta();\n if (delta === null) {\n return '';\n }\n const magnitude = Math.abs(delta);\n const suffix = this.deltaLabel() ? ` ${this.deltaLabel()}` : '';\n\n return `${magnitude}${suffix}`;\n });\n}\n","<div class=\"stat\">\n <div class=\"label\">\n {{ label() }}\n </div>\n\n <div class=\"value\">\n {{ value() }}{{ unit() }}\n </div>\n\n @if (delta() !== null) {\n <div [class]=\"deltaClasses()\">\n @if (deltaIcon(); as icon) {\n <ds-icon\n [name]=\"icon\"\n [size]=\"12\"\n >\n </ds-icon>\n }\n\n <ng-content select=\"[delta]\">{{ deltaText() }}</ng-content>\n </div>\n } @else if (caption()) {\n <div class=\"caption\">\n {{ caption() }}\n </div>\n }\n</div>\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n input,\n viewChild,\n} from '@angular/core';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-tab',\n standalone: true,\n template: `<ng-template #content>\n <ng-content></ng-content>\n </ng-template>`,\n styles: [':host { display: none; }'],\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TabComponent {\n readonly label = input.required<string>();\n readonly icon = input<IconName | null>(null);\n readonly count = input<number | null>(null);\n readonly disabled = input<boolean>(false);\n readonly content = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport { TabComponent } from './tab.component';\nimport type { TabsVariant } from './tabs.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-tabs',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TabsComponent {\n readonly selectedIndex = model<number>(0);\n readonly variant = input<TabsVariant>('line');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly uid = `ds-tabs-${++nextId}`;\n\n protected readonly tabs = contentChildren(TabComponent);\n\n protected tabId(index: number): string {\n return `${this.uid}-tab-${index}`;\n }\n protected panelId(index: number): string {\n return `${this.uid}-panel-${index}`;\n }\n\n protected readonly tabsClasses = computed(() =>\n this.variant() === 'pills' ? 'tabs pills' : 'tabs',\n );\n\n protected readonly selectedTemplate = computed(() => {\n const index = this.selectedIndex();\n const list = this.tabs();\n\n return list[index]?.content() ?? null;\n });\n\n protected tabClasses(index: number, disabled: boolean): string {\n const parts = ['tab'];\n if (index === this.selectedIndex()) {\n parts.push('active');\n }\n if (disabled) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n }\n\n protected select(index: number, disabled: boolean): void {\n if (disabled) {\n return;\n }\n this.selectedIndex.set(index);\n }\n\n /** Roving keyboard navigation across the tablist (APG automatic activation). */\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length;\n if (!count) {\n return;\n }\n const forward = event.key === 'ArrowRight' || event.key === 'ArrowDown';\n const backward = event.key === 'ArrowLeft' || event.key === 'ArrowUp';\n let next: number;\n if (forward) {\n next = (index + 1) % count;\n } else if (backward) {\n next = (index - 1 + count) % count;\n } else if (event.key === 'Home') {\n next = 0;\n } else if (event.key === 'End') {\n next = count - 1;\n } else {\n return;\n }\n event.preventDefault();\n // Skip disabled tabs in the travel direction.\n const step = backward || event.key === 'End' ? -1 : 1;\n let guard = 0;\n while (this.tabs()[next]?.disabled() && guard < count) {\n next = (next + step + count) % count;\n guard++;\n }\n this.select(next, this.tabs()[next]?.disabled() ?? false);\n setTimeout(() => {\n const element = this.host.nativeElement.querySelector(\n `#${this.tabId(next)}`,\n ) as HTMLElement | null;\n element?.focus();\n });\n }\n}\n","<div\n role=\"tablist\"\n [class]=\"tabsClasses()\"\n>\n @for (tab of tabs(); track $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [id]=\"tabId($index)\"\n [class]=\"tabClasses($index, tab.disabled())\"\n [attr.aria-selected]=\"$index === selectedIndex()\"\n [attr.aria-controls]=\"panelId($index)\"\n [attr.tabindex]=\"$index === selectedIndex() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n (click)=\"select($index, tab.disabled())\"\n (keydown)=\"onKeydown($event, $index)\"\n >\n @if (tab.icon()) {\n <ds-icon\n [name]=\"tab.icon()!\"\n [size]=\"14\"\n >\n </ds-icon>\n }\n\n <span>\n {{ tab.label() }}\n </span>\n\n @if (tab.count() !== null) {\n <span class=\"badge neutral count\">\n {{ tab.count() }}\n </span>\n }\n </button>\n }\n</div>\n\n<div\n class=\"panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"panelId(selectedIndex())\"\n [attr.aria-labelledby]=\"tabId(selectedIndex())\"\n>\n @if (selectedTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n }\n</div>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { SpinnerSize } from './spinner.types';\n\n@Component({\n selector: 'ds-spinner',\n standalone: true,\n template: '',\n styleUrl: './spinner.component.scss',\n host: {\n role: 'status',\n 'aria-label': 'Loading',\n '[class.sm]': \"size() === 'sm'\",\n '[class.lg]': \"size() === 'lg'\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SpinnerComponent {\n readonly size = input<SpinnerSize>('md');\n}\n","import { Directive, effect, signal, type ModelSignal } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Shared `ControlValueAccessor` for DS form controls whose value is a signal\n * `model()`. Bridges that model with Angular forms (reactive `formControl` /\n * `formControlName` and template `ngModel`) in both directions, WITHOUT\n * touching the existing `[(value)]` signal API — both keep working.\n *\n * A subclass must expose the `value` model and OR `formDisabled()` into its\n * effective disabled state so `FormControl.disable()` actually reaches the\n * control; it should also call `markTouched()` from a blur handler.\n */\n@Directive()\nexport abstract class DsControlValueAccessor<\n T,\n> implements ControlValueAccessor {\n /** The component's two-way value model. */\n abstract readonly value: ModelSignal<T>;\n\n /** Driven by the forms API via `setDisabledState`. */\n protected readonly formDisabled = signal(false);\n\n private onChange: (value: T) => void = () => {};\n private onTouched: () => void = () => {};\n\n // Last value synced with the forms API. Guards the value-watching effect from\n // echoing a form-driven write back as a user change (which would dirty the\n // control or loop), while still emitting every genuine model change.\n private synced: T | undefined;\n private hasSynced = false;\n\n constructor() {\n effect(() => {\n const next = this.value();\n if (!this.hasSynced) {\n // Adopt the initial value once, silently — never emit on init.\n this.hasSynced = true;\n this.synced = next;\n\n return;\n }\n if (Object.is(next, this.synced)) {\n return;\n }\n this.synced = next;\n this.onChange(next);\n });\n }\n\n /** Call from a blur handler so the control reports `ng-touched`. */\n protected markTouched(): void {\n this.onTouched();\n }\n\n writeValue(value: T): void {\n this.hasSynced = true;\n this.synced = value;\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n\n/**\n * Shared `ControlValueAccessor` for DS boolean controls (checkbox, switch)\n * whose state lives in a `checked` model signal rather than `value`. Bridges\n * with Angular forms in both directions without affecting the `[(checked)]`\n * signal API. Subclasses must OR `formDisabled()` into their effective disabled\n * state and call `markTouched()` from a blur handler.\n */\n@Directive()\nexport abstract class DsBooleanControlValueAccessor implements ControlValueAccessor {\n /** The component's two-way checked model. */\n abstract readonly checked: ModelSignal<boolean>;\n\n /** Driven by the forms API via `setDisabledState`. */\n protected readonly formDisabled = signal(false);\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n private synced: boolean | undefined;\n private hasSynced = false;\n\n constructor() {\n effect(() => {\n const next = this.checked();\n if (!this.hasSynced) {\n this.hasSynced = true;\n this.synced = next;\n\n return;\n }\n if (Object.is(next, this.synced)) {\n return;\n }\n this.synced = next;\n this.onChange(next);\n });\n }\n\n /** Call from a blur handler so the control reports `ng-touched`. */\n protected markTouched(): void {\n this.onTouched();\n }\n\n writeValue(value: boolean): void {\n this.hasSynced = true;\n this.synced = value;\n this.checked.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\nexport type FieldMessageState = 'default' | 'error' | 'success';\n\n/** Internal shared helper/error line for form fields. Renders nothing when\n * `text` is empty. The host field owns the `aria-describedby` relationship\n * and passes `messageId`; this only renders the element that carries it. */\n@Component({\n selector: 'ds-field-message',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './field-message.component.html',\n styleUrl: './field-message.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FieldMessageComponent {\n readonly text = input<string>('');\n readonly state = input<FieldMessageState>('default');\n readonly messageId = input<string | null>(null);\n readonly icon = input<IconName | null>(null);\n}\n","@if (text()) {\n <span\n class=\"field-message {{ state() }}\"\n [id]=\"messageId()\"\n [attr.role]=\"state() === 'error' ? 'alert' : null\"\n >\n @if (icon()) {\n <ds-icon\n [name]=\"icon()!\"\n [size]=\"14\"\n />\n }\n {{ text() }}\n </span>\n}\n","let nextId = 0;\n\n/** Process-wide counter for stable, SSR-safe control ids (no DOM dependency).\n * Replaces the per-component `let nextId = 0` pattern. */\nexport function nextControlId(prefix: string): string {\n return `${prefix}-${++nextId}`;\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SpinnerComponent } from '../spinner/spinner.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\nimport type { InputSize, InputType } from './input.types';\n\n@Component({\n selector: 'ds-input',\n standalone: true,\n imports: [FormsModule, IconComponent, SpinnerComponent, FieldMessageComponent],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent extends DsControlValueAccessor<string> {\n readonly value = model<string>('');\n readonly type = input<InputType>('text');\n readonly size = input<InputSize>('md');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly invalid = input<boolean>(false);\n readonly success = input(false, { transform: booleanAttribute });\n /** Shows a trailing spinner — e.g. async validation in flight. The input\n * stays editable; pair with a `hint` like \"Checking availability…\". */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Floating-label variant — the label sits inside a taller control instead\n * of stacked above it. */\n readonly floating = input(false, { transform: booleanAttribute });\n readonly withAddon = input(false, { transform: booleanAttribute });\n readonly withAddonRight = input(false, { transform: booleanAttribute });\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly name = input<string | null>(null);\n // Numeric constraints (applied when type=\"number\").\n readonly min = input<number | null>(null);\n readonly max = input<number | null>(null);\n readonly step = input<number | null>(null);\n /** Native autocomplete token (e.g. \"email\", \"current-password\"). */\n readonly autocomplete = input<string | null>(null);\n readonly autofocus = input<boolean>(false);\n /** Accessible name when no visible `label` is provided (falls back to the\n * placeholder so the control is never unnamed). */\n readonly ariaLabel = input<string | null>(null);\n /** Mobile keyboard hints — forwarded to the native input as attributes. */\n readonly enterKeyHint = input<\n 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | null\n >(null);\n readonly inputMode = input<\n | 'none'\n | 'text'\n | 'decimal'\n | 'numeric'\n | 'tel'\n | 'search'\n | 'email'\n | 'url'\n | null\n >(null);\n /** Emits when the native input loses focus. */\n readonly blurred = output<void>();\n /**\n * Show an inline clear (×) button when the input has a non-empty value.\n * Mirrors the Material/PrimeNG pattern: explicit button (not native search\n * cancel) so the affordance is consistent across browsers and styled with\n * DS tokens. Defaults to true when type='search', false otherwise — pass\n * an explicit boolean to override.\n */\n readonly clearable = input<boolean | null>(null);\n\n readonly passwordToggle = input(false, { transform: booleanAttribute });\n readonly passwordVisible = model<boolean>(false);\n\n protected readonly canClear = computed<boolean>(() => {\n const explicit = this.clearable();\n if (explicit !== null) {\n return explicit;\n }\n\n return this.type() === 'search';\n });\n\n protected readonly uid = nextControlId('ds-input');\n protected readonly hintId = computed(() =>\n this.hint() ? `${this.uid}-hint` : null,\n );\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : this.success() ? 'success' : 'default',\n );\n /** Only name via aria-label when there's no visible `<label for>`. */\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly showPasswordToggle = computed<boolean>(\n () =>\n this.passwordToggle() && this.type() === 'password' && !this.isDisabled(),\n );\n\n protected readonly effectiveType = computed<InputType>(() =>\n this.passwordToggle() &&\n this.type() === 'password' &&\n this.passwordVisible()\n ? 'text'\n : this.type(),\n );\n\n protected togglePassword(): void {\n this.passwordVisible.update((visible) => !visible);\n }\n\n protected readonly wrapperClasses = computed(() => {\n const parts = ['field'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.invalid()) {\n parts.push('error');\n } else if (this.success()) {\n parts.push('success');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.readOnly()) {\n parts.push('read-only');\n }\n if (this.withAddon()) {\n parts.push('with-addon');\n }\n if (this.withAddonRight()) {\n parts.push('with-addon-right');\n }\n if (this.loading()) {\n parts.push('loading');\n }\n if (this.floating()) {\n parts.push('floating');\n }\n\n return parts.join(' ');\n });\n\n protected clear(): void {\n this.value.set('');\n }\n}\n","<div [class]=\"wrapperClasses()\">\n @if (label() && !floating()) {\n <label\n class=\"label\"\n [attr.for]=\"uid\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </label>\n }\n\n <div class=\"control\">\n @if (floating() && label()) {\n <label\n class=\"floating-label\"\n [attr.for]=\"uid\"\n >\n {{ label() }}\n </label>\n }\n\n <span class=\"addon-slot prefix\">\n <ng-content select=\"[dsInputPrefix]\"></ng-content>\n </span>\n\n <input\n [id]=\"uid\"\n [type]=\"effectiveType()\"\n [attr.name]=\"name()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.autofocus]=\"autofocus() ? '' : null\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.enterkeyhint]=\"enterKeyHint()\"\n [attr.inputmode]=\"inputMode()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readOnly()\"\n [required]=\"required()\"\n [(ngModel)]=\"value\"\n (blur)=\"blurred.emit(); markTouched()\"\n />\n\n @if (canClear() && value() && !isDisabled()) {\n <button\n type=\"button\"\n class=\"clear-btn\"\n aria-label=\"Clear input\"\n (click)=\"clear()\"\n >\n </button>\n }\n\n @if (showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"password-toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"\n passwordVisible() ? 'Hide password' : 'Show password'\n \"\n (click)=\"togglePassword()\"\n >\n <ds-icon\n [name]=\"passwordVisible() ? 'eye-off' : 'eye'\"\n [size]=\"16\"\n />\n </button>\n }\n\n @if (loading()) {\n <ds-spinner size=\"sm\" />\n }\n\n <span class=\"addon-slot suffix\">\n <ng-content select=\"[dsInputSuffix]\"></ng-content>\n </span>\n </div>\n\n <ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n} from '@angular/core';\nimport type { NumberStepperSize } from './number-stepper.types';\n\n@Component({\n selector: 'ds-number-stepper',\n standalone: true,\n templateUrl: './number-stepper.component.html',\n styleUrl: './number-stepper.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberStepperComponent {\n readonly value = model<number>(0);\n readonly min = input<number>(0);\n readonly max = input<number | null>(null);\n readonly step = input<number>(1);\n readonly size = input<NumberStepperSize>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly atMin = computed(() => this.value() <= this.min());\n protected readonly atMax = computed(() => {\n const max = this.max();\n\n return max != null && this.value() >= max;\n });\n\n protected readonly stepperClass = computed(() => {\n const parts = ['stepper', `size-${this.size()}`];\n if (this.disabled()) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n });\n\n inc(): void {\n if (this.atMax() || this.disabled()) {\n return;\n }\n this.value.set(this.value() + this.step());\n }\n\n dec(): void {\n if (this.atMin() || this.disabled()) {\n return;\n }\n this.value.set(this.value() - this.step());\n }\n\n protected setRaw(raw: string): void {\n const parsed = Number.parseInt(raw, 10);\n const number = Number.isNaN(parsed) ? 0 : parsed;\n let clamped = Math.max(this.min(), number);\n const max = this.max();\n if (max != null) {\n clamped = Math.min(max, clamped);\n }\n this.value.set(clamped);\n }\n}\n","<div [class]=\"stepperClass()\">\n <button\n type=\"button\"\n class=\"step minus\"\n [disabled]=\"atMin() || disabled()\"\n (click)=\"dec()\"\n >\n −\n </button>\n\n <input\n type=\"number\"\n class=\"qty\"\n [min]=\"min()\"\n [max]=\"max() ?? undefined\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"setRaw($any($event.target).value)\"\n />\n\n <button\n type=\"button\"\n class=\"step plus\"\n [disabled]=\"atMax() || disabled()\"\n (click)=\"inc()\"\n >\n +\n </button>\n</div>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport type { TextareaSize, TextareaResize } from './textarea.types';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\n@Component({\n selector: 'ds-textarea',\n standalone: true,\n imports: [FormsModule, FieldMessageComponent],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent extends DsControlValueAccessor<string> {\n readonly value = model<string>('');\n readonly size = input<TextareaSize>('md');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly rows = input<number>(3);\n readonly name = input<string | null>(null);\n readonly autosize = input(false, { transform: booleanAttribute });\n readonly minRows = input<number | null>(null);\n readonly maxRows = input<number | null>(null);\n readonly resize = input<TextareaResize>('vertical');\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = nextControlId('ds-textarea');\n protected readonly hintId = computed(() =>\n this.hint() ? `${this.uid}-hint` : null,\n );\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly wrapperClasses = computed(() => {\n const parts = ['field'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.invalid()) {\n parts.push('error');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.autosize()) {\n parts.push('autosize');\n }\n\n return parts.join(' ');\n });\n\n protected readonly autosizeMinHeight = computed(() =>\n this.autosize() && this.minRows() ? `${this.minRows()}lh` : null,\n );\n protected readonly autosizeMaxHeight = computed(() =>\n this.autosize() && this.maxRows() ? `${this.maxRows()}lh` : null,\n );\n\n // Autosize grows with content, so a manual resize handle conflicts — force none.\n protected readonly effectiveResize = computed<TextareaResize>(() =>\n this.autosize() ? 'none' : this.resize(),\n );\n}\n","<div [class]=\"wrapperClasses()\">\n @if (label()) {\n <label\n class=\"label\"\n [attr.for]=\"uid\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </label>\n }\n\n <div class=\"control\">\n <textarea\n [id]=\"uid\"\n [rows]=\"rows()\"\n [attr.name]=\"name()\"\n [attr.placeholder]=\"placeholder() || null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [style.resize]=\"effectiveResize()\"\n [style.min-height]=\"autosizeMinHeight()\"\n [style.max-height]=\"autosizeMaxHeight()\"\n [style.overflow-y]=\"autosize() && maxRows() ? 'auto' : null\"\n [(ngModel)]=\"value\"\n (blur)=\"markTouched()\"\n >\n </textarea>\n </div>\n\n <ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n />\n</div>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-search',\n standalone: true,\n imports: [FormsModule, IconComponent],\n templateUrl: './search.component.html',\n styleUrl: './search.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SearchComponent {\n readonly value = model<string>('');\n readonly placeholder = input<string>('Search');\n readonly shortcut = input<string>('');\n readonly showIcon = input<boolean>(true);\n /** Show an inline clear (×) button on the right when there's a value. */\n readonly clearable = input<boolean>(false);\n /** Accessible name for the input (placeholder is not a reliable label). */\n readonly ariaLabel = input<string>('');\n readonly submitted = output<string>();\n\n private readonly inputEl =\n viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n protected onSubmit(): void {\n this.submitted.emit(this.value());\n }\n\n protected clear(): void {\n this.value.set('');\n // The × is removed once empty; return focus to the input so keyboard\n // users don't get dropped onto <body>.\n this.inputEl()?.nativeElement.focus();\n }\n}\n","<div class=\"search\">\n @if (showIcon()) {\n <ds-icon\n name=\"search\"\n [size]=\"16\"\n >\n </ds-icon>\n }\n\n <input\n #searchInput\n class=\"input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder() || null\"\n [(ngModel)]=\"value\"\n (keydown.enter)=\"onSubmit()\"\n />\n\n @if (clearable() && value()) {\n <button\n type=\"button\"\n class=\"search-clear\"\n aria-label=\"Clear search\"\n (click)=\"clear()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n }\n\n @if (shortcut()) {\n <kbd class=\"kbd\">\n {{ shortcut() }}\n </kbd>\n }\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\n\n/**\n * Dispose a DS overlay panel immediately. Dropdowns, menus, pickers and the\n * confirm dialog close on a deliberate action (pick a value, choose an item),\n * where any exit animation reads as lag — so close is instant. The open\n * animation (`ds-overlay-in`, styles/_overlay-motion.scss) still plays.\n *\n * Kept as a named helper (not an inline `overlayRef.dispose()`) so the close\n * semantics for DS overlay panels live in one place. Use in a panel's\n * `close()`; on host teardown (`ngOnDestroy`) dispose directly too.\n */\nexport function disposeWithLeave(\n overlayRef: OverlayRef | null | undefined,\n): void {\n overlayRef?.dispose();\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n/** Showcase-only: renders the component's open/overlay surface inline in normal\n * flow instead of its real overlay mechanics (for static docs specimens).\n * Not part of the production contract. */\n@Directive({ standalone: true })\nexport class DsStaticPreview {\n readonly staticPreview = input(false, { transform: booleanAttribute });\n}\n","export type SelectSize = 'sm' | 'md' | 'lg';\n\nexport interface SelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: string;\n options: SelectOption[];\n disabled?: boolean;\n}\n\nexport type SelectItem = SelectOption | SelectOptionGroup;\n\nexport function isSelectOptionGroup(\n item: SelectItem,\n): item is SelectOptionGroup {\n return (\n 'options' in item && Array.isArray((item as SelectOptionGroup).options)\n );\n}\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport {\n isSelectOptionGroup,\n type SelectItem,\n type SelectOption,\n type SelectOptionGroup,\n type SelectSize,\n} from './select.types';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\n@Component({\n selector: 'ds-select',\n standalone: true,\n imports: [IconComponent, NgTemplateOutlet, FieldMessageComponent],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent extends DsControlValueAccessor<string> {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly value = model<string>('');\n readonly options = input<SelectItem[]>([]);\n readonly placeholder = input<string>('');\n readonly size = input<SelectSize>('md');\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly hint = input<string>('');\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly name = input<string | null>(null);\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = nextControlId('ds-select');\n protected readonly labelId = `${this.uid}-label`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n protected optionId(flatIndex: number): string {\n return `${this.uid}-opt-${flatIndex}`;\n }\n /** Active option for `aria-activedescendant` (combobox keeps DOM focus). */\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n /** Effective disabled — own `disabled` input OR the reactive-forms state. */\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl =\n viewChild.required<TemplateRef<unknown>>('panelContent');\n protected readonly open = signal<boolean>(false);\n protected readonly activeIndex = signal<number>(-1);\n\n private overlayRef: OverlayRef | null = null;\n\n // Flattened list of selectable options paired with the parent-group `disabled`\n // state, so keyboard nav and selection ignore group-header labels and respect\n // group-level disable. Index of an entry here corresponds to `activeIndex`.\n protected readonly flatOptions = computed<\n { option: SelectOption; groupDisabled: boolean }[]\n >(() => {\n const out: { option: SelectOption; groupDisabled: boolean }[] = [];\n for (const item of this.options()) {\n if (isSelectOptionGroup(item)) {\n const groupDisabled = !!item.disabled;\n for (const opt of item.options) {\n out.push({ option: opt, groupDisabled });\n }\n } else {\n out.push({ option: item, groupDisabled: false });\n }\n }\n\n return out;\n });\n\n protected readonly selectedOption = computed<SelectOption | null>(() => {\n const current = this.value();\n const found = this.flatOptions().find(\n ({ option }) => option.value === current,\n );\n\n return found?.option ?? null;\n });\n\n protected readonly displayLabel = computed<string>(() => {\n return this.selectedOption()?.label ?? this.placeholder();\n });\n\n protected readonly hasValue = computed<boolean>(\n () => !!this.selectedOption(),\n );\n\n protected readonly triggerClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.invalid()) {\n parts.push('error');\n }\n if (this.open() || this.preview.staticPreview()) {\n parts.push('open');\n }\n\n return parts.join(' ');\n });\n\n constructor() {\n super();\n effect(() => {\n if (!this.open()) {\n return;\n }\n const index = this.flatOptions().findIndex(\n ({ option }) => option.value === this.value(),\n );\n this.activeIndex.set(index >= 0 ? index : this.firstEnabledIndex());\n });\n }\n\n protected isOptionGroup(item: SelectItem): item is SelectOptionGroup {\n return isSelectOptionGroup(item);\n }\n\n // Resolve the flat-index for a given option so click/hover/selection\n // map back to the same indices keyboard nav uses (no double bookkeeping).\n protected flatIndexOf(opt: SelectOption): number {\n return this.flatOptions().findIndex(({ option }) => option === opt);\n }\n\n protected toggle(): void {\n if (this.isDisabled() || this.preview.staticPreview()) {\n return;\n }\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const width = triggerElement.getBoundingClientRect().width;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n // Reuse the global panel skin defined in styles/_dropdown-overlay.scss\n // so the portaled panel actually renders styled — `:host ::ng-deep`\n // selectors can't reach a node outside the host's DOM tree.\n panelClass: ['ds-dropdown-panel', 'ds-overlay-pane'],\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width,\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.open.set(true);\n }\n\n protected close(): void {\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.open.set(false);\n this.activeIndex.set(-1);\n this.markTouched();\n }\n\n protected pick(option: SelectOption, groupDisabled = false): void {\n if (option.disabled || groupDisabled) {\n return;\n }\n this.value.set(option.value);\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected isSelected(option: SelectOption): boolean {\n return option.value === this.value();\n }\n\n protected isOptionDisabled(\n option: SelectOption,\n groupDisabled = false,\n ): boolean {\n return !!option.disabled || groupDisabled;\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.preview.staticPreview()) {\n return;\n }\n const key = event.key;\n if (!this.open()) {\n if (\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter' ||\n key === ' '\n ) {\n event.preventDefault();\n this.openPanel();\n }\n\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const index = this.activeIndex();\n const entry = this.flatOptions()[index];\n if (entry) {\n this.pick(entry.option, entry.groupDisabled);\n }\n\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\n\n return;\n }\n if (key === 'End') {\n event.preventDefault();\n this.activeIndex.set(this.lastEnabledIndex());\n }\n }\n\n protected isActive(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private moveActive(delta: number): void {\n const opts = this.flatOptions();\n if (opts.length === 0) {\n return;\n }\n let next = this.activeIndex();\n for (let attempts = 0; attempts < opts.length; attempts++) {\n next = (next + delta + opts.length) % opts.length;\n const candidate = opts[next];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n this.activeIndex.set(next);\n\n return;\n }\n }\n }\n\n private firstEnabledIndex(): number {\n const opts = this.flatOptions();\n for (let i = 0; i < opts.length; i++) {\n const candidate = opts[i];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n return i;\n }\n }\n\n return -1;\n }\n\n private lastEnabledIndex(): number {\n const opts = this.flatOptions();\n for (let i = opts.length - 1; i >= 0; i--) {\n const candidate = opts[i];\n if (candidate && !candidate.option.disabled && !candidate.groupDisabled) {\n return i;\n }\n }\n\n return -1;\n }\n}\n","@if (label()) {\n <span\n class=\"select-label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </span>\n}\n\n<button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [class]=\"triggerClasses()\"\n [attr.name]=\"name()\"\n [attr.aria-expanded]=\"open() || preview.staticPreview()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"trigger-text\"\n [class.is-placeholder]=\"!hasValue()\"\n >\n {{ displayLabel() }}\n </span>\n\n <span class=\"chevron\">\n <ds-icon\n name=\"chevronDown\"\n [size]=\"14\"\n />\n </span>\n</button>\n\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n\n@if (preview.staticPreview()) {\n <div class=\"ds-dropdown-panel\">\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n </div>\n}\n\n<ng-template #panel>\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n</ng-template>\n\n<ng-template #panelContent>\n <div class=\"dropdown-panel\">\n <ul\n class=\"dropdown-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n >\n @for (item of options(); track item.label; let groupIdx = $index) {\n @if (isOptionGroup(item)) {\n <li\n class=\"optgroup\"\n role=\"group\"\n [attr.aria-label]=\"item.label\"\n >\n <span\n class=\"optgroup-label\"\n [class.is-first]=\"groupIdx === 0\"\n >\n {{ item.label }}\n </span>\n\n <ul\n class=\"optgroup-list\"\n role=\"presentation\"\n >\n @for (opt of item.options; track opt.value) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(flatIndexOf(opt))\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"\n isOptionDisabled(opt, item.disabled) ? 'true' : null\n \"\n [class.is-selected]=\"isSelected(opt)\"\n [class.is-active]=\"isActive(flatIndexOf(opt))\"\n [class.is-disabled]=\"isOptionDisabled(opt, item.disabled)\"\n [disabled]=\"isOptionDisabled(opt, item.disabled)\"\n (click)=\"pick(opt, item.disabled)\"\n (mouseenter)=\"activeIndex.set(flatIndexOf(opt))\"\n >\n <span class=\"option-label\">\n {{ opt.label }}\n </span>\n\n @if (isSelected(opt)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n </ul>\n </li>\n } @else {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(flatIndexOf(item))\"\n [attr.aria-selected]=\"isSelected(item)\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [class.is-selected]=\"isSelected(item)\"\n [class.is-active]=\"isActive(flatIndexOf(item))\"\n [class.is-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n (click)=\"pick(item)\"\n (mouseenter)=\"activeIndex.set(flatIndexOf(item))\"\n >\n <span class=\"option-label\">\n {{ item.label }}\n </span>\n\n @if (isSelected(item)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n }\n </ul>\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport type { DropdownOption, DropdownSize } from './dropdown.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-dropdown',\n standalone: true,\n imports: [IconComponent, NgTemplateOutlet],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n})\nexport class DropdownComponent {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly value = model<string>('');\n readonly options = input<DropdownOption[]>([]);\n readonly placeholder = input<string>('Select…');\n readonly size = input<DropdownSize>('md');\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly error = input<boolean>(false);\n readonly name = input<string | null>(null);\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly uid = `ds-dropdown-${++nextId}`;\n protected readonly labelId = `${this.uid}-label`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(index: number): string {\n return `${this.uid}-opt-${index}`;\n }\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl =\n viewChild.required<TemplateRef<unknown>>('panelContent');\n protected readonly open = signal<boolean>(false);\n protected readonly activeIndex = signal<number>(-1);\n\n private overlayRef: OverlayRef | null = null;\n\n protected readonly selectedOption = computed<DropdownOption | null>(() => {\n const current = this.value();\n const found = this.options().find((o) => o.value === current);\n\n return found ?? null;\n });\n\n protected readonly displayLabel = computed<string>(() => {\n return this.selectedOption()?.label ?? this.placeholder();\n });\n\n protected readonly hasValue = computed<boolean>(\n () => !!this.selectedOption(),\n );\n\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n\n protected readonly wrapperClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') {\n parts.push('sm');\n }\n if (this.size() === 'lg') {\n parts.push('lg');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n if (this.readOnly()) {\n parts.push('readonly');\n }\n if (this.error()) {\n parts.push('error');\n }\n if (this.open() || this.preview.staticPreview()) {\n parts.push('open');\n }\n\n return parts.join(' ');\n });\n\n constructor() {\n effect(() => {\n if (!this.open()) {\n return;\n }\n const index = this.options().findIndex((o) => o.value === this.value());\n this.activeIndex.set(index >= 0 ? index : this.firstEnabledIndex());\n });\n }\n\n protected toggle(): void {\n if (this.disabled() || this.readOnly() || this.preview.staticPreview()) {\n return;\n }\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const width = triggerElement.getBoundingClientRect().width;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n // Global panel class — the portaled pane lives outside :host, so\n // styles live in styles/_dropdown-overlay.scss keyed off this class.\n panelClass: ['ds-dropdown-panel', 'ds-overlay-pane'],\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width,\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.open.set(true);\n }\n\n protected close(): void {\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.open.set(false);\n this.activeIndex.set(-1);\n }\n\n protected pick(option: DropdownOption): void {\n if (option.disabled) {\n return;\n }\n this.value.set(option.value);\n this.close();\n this.trigger().nativeElement.focus();\n }\n\n protected isSelected(option: DropdownOption): boolean {\n return option.value === this.value();\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readOnly() || this.preview.staticPreview()) {\n return;\n }\n const key = event.key;\n if (!this.open()) {\n if (\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter' ||\n key === ' '\n ) {\n event.preventDefault();\n this.openPanel();\n }\n\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const index = this.activeIndex();\n const opt = this.options()[index];\n if (opt) {\n this.pick(opt);\n }\n\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\n\n return;\n }\n if (key === 'End') {\n event.preventDefault();\n this.activeIndex.set(this.lastEnabledIndex());\n }\n }\n\n protected isActive(index: number): boolean {\n return this.activeIndex() === index;\n }\n\n private moveActive(delta: number): void {\n const opts = this.options();\n if (opts.length === 0) {\n return;\n }\n let next = this.activeIndex();\n for (let attempts = 0; attempts < opts.length; attempts++) {\n next = (next + delta + opts.length) % opts.length;\n const candidate = opts[next];\n if (candidate && !candidate.disabled) {\n this.activeIndex.set(next);\n\n return;\n }\n }\n }\n\n private firstEnabledIndex(): number {\n const opts = this.options();\n for (let i = 0; i < opts.length; i++) {\n const candidate = opts[i];\n if (candidate && !candidate.disabled) {\n return i;\n }\n }\n\n return -1;\n }\n\n private lastEnabledIndex(): number {\n const opts = this.options();\n for (let i = opts.length - 1; i >= 0; i--) {\n const candidate = opts[i];\n if (candidate && !candidate.disabled) {\n return i;\n }\n }\n\n return -1;\n }\n}\n","@if (label()) {\n <span\n class=\"dropdown-label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n </span>\n}\n\n<button\n #trigger\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [class]=\"wrapperClasses()\"\n [attr.name]=\"name()\"\n [attr.aria-expanded]=\"open() || preview.staticPreview()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"trigger-text\"\n [class.is-placeholder]=\"!hasValue()\"\n >\n {{ displayLabel() }}\n </span>\n\n <span class=\"chevron\">\n <ds-icon\n name=\"chevronDown\"\n [size]=\"14\"\n />\n </span>\n</button>\n\n@if (preview.staticPreview()) {\n <div class=\"ds-dropdown-panel\">\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n </div>\n}\n\n<ng-template #panel>\n <ng-container [ngTemplateOutlet]=\"panelContentTpl()\" />\n</ng-template>\n\n<ng-template #panelContent>\n <div class=\"dropdown-panel\">\n <ul\n class=\"dropdown-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n >\n @for (opt of options(); track opt.value; let i = $index) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(i)\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [attr.aria-disabled]=\"opt.disabled ? 'true' : null\"\n [class.is-selected]=\"isSelected(opt)\"\n [class.is-active]=\"isActive(i)\"\n [class.is-disabled]=\"opt.disabled\"\n [disabled]=\"opt.disabled\"\n (click)=\"pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (opt.icon) {\n <ds-icon\n class=\"option-icon\"\n [name]=\"opt.icon\"\n [size]=\"16\"\n />\n }\n\n <span class=\"option-label\">\n {{ opt.label }}\n </span>\n\n @if (isSelected(opt)) {\n <ds-icon\n class=\"option-check\"\n name=\"check\"\n [size]=\"14\"\n />\n }\n </button>\n </li>\n }\n </ul>\n </div>\n</ng-template>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\n@Component({\n selector: 'ds-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.component.scss',\n host: {\n 'aria-hidden': 'true',\n '[style.width]': 'width()',\n '[style.height]': 'height()',\n '[class.circle]': 'circle()',\n '[class.inline]': 'inline()',\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SkeletonComponent {\n readonly width = input<string | undefined>(undefined);\n readonly height = input<string | undefined>(undefined);\n readonly circle = input<boolean>(false);\n readonly inline = input<boolean>(false);\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SelectComponent } from '../select/select.component';\n\n@Component({\n selector: 'ds-pagination',\n standalone: true,\n imports: [FormsModule, IconComponent, SelectComponent],\n templateUrl: './pagination.component.html',\n styleUrl: './pagination.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PaginationComponent {\n readonly total = input.required<number>();\n readonly pageSize = model<number>(10);\n readonly currentPage = model<number>(1);\n readonly pageSizeOptions = input<number[]>([10, 25, 50, 100]);\n readonly showLabel = input<boolean>(true);\n readonly pageChange = output<number>();\n readonly pageSizeChange = output<number>();\n\n protected readonly totalPages = computed(() =>\n Math.max(1, Math.ceil(this.total() / this.pageSize())),\n );\n\n protected readonly pageItems = computed<(number | 'ellipsis')[]>(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n const items: (number | 'ellipsis')[] = [1];\n if (current > 3) {\n items.push('ellipsis');\n }\n const start = Math.max(2, current - 1);\n const end = Math.min(total - 1, current + 1);\n for (let i = start; i <= end; i++) {\n items.push(i);\n }\n if (current < total - 2) {\n items.push('ellipsis');\n }\n items.push(total);\n\n return items;\n });\n\n protected readonly rangeLabel = computed(() => {\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), this.total());\n\n return `Showing ${start}–${end} of ${this.total()}`;\n });\n\n protected readonly sizeOptions = computed(() => {\n const presets = this.pageSizeOptions();\n const current = this.pageSize();\n const merged = presets.includes(current)\n ? presets\n : [current, ...presets].sort((a, b) => a - b);\n\n return merged.map((size) => ({\n label: `${size} per page`,\n value: String(size),\n }));\n });\n\n protected readonly pageSizeStr = computed(() => String(this.pageSize()));\n\n protected goTo(page: number): void {\n if (page < 1 || page > this.totalPages() || page === this.currentPage()) {\n return;\n }\n this.currentPage.set(page);\n this.pageChange.emit(page);\n }\n\n protected onSizeChange(value: string): void {\n const next = Number(value);\n this.pageSize.set(next);\n this.currentPage.set(1);\n this.pageSizeChange.emit(next);\n this.pageChange.emit(1);\n }\n}\n","<nav\n class=\"pagination\"\n aria-label=\"Pagination\"\n>\n @if (showLabel()) {\n <span class=\"label\">\n {{ rangeLabel() }}\n </span>\n }\n\n <button\n class=\"pagination-button\"\n type=\"button\"\n aria-label=\"Previous page\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"goTo(currentPage() - 1)\"\n >\n <ds-icon\n name=\"chevronLeft\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n @for (item of pageItems(); track $index) {\n @if (item === 'ellipsis') {\n <span\n class=\"ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </span>\n } @else {\n <button\n class=\"pagination-button\"\n type=\"button\"\n [class.active]=\"item === currentPage()\"\n [attr.aria-label]=\"'Page ' + item\"\n [attr.aria-current]=\"item === currentPage() ? 'page' : null\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n }\n }\n\n <button\n class=\"pagination-button\"\n type=\"button\"\n aria-label=\"Next page\"\n [disabled]=\"currentPage() === totalPages()\"\n (click)=\"goTo(currentPage() + 1)\"\n >\n <ds-icon\n name=\"chevronRight\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n <ds-select\n class=\"size\"\n ariaLabel=\"Rows per page\"\n size=\"sm\"\n [options]=\"sizeOptions()\"\n [value]=\"pageSizeStr()\"\n (valueChange)=\"onSizeChange($event)\"\n >\n </ds-select>\n</nav>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n} from '@angular/core';\nimport { SpinnerComponent } from '../spinner/spinner.component';\nimport type { SpinnerSize } from '../spinner/spinner.types';\n\n@Component({\n selector: 'ds-loading-overlay',\n standalone: true,\n imports: [SpinnerComponent],\n templateUrl: './loading-overlay.component.html',\n styleUrl: './loading-overlay.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n },\n})\nexport class LoadingOverlayComponent {\n // Show the scrim + spinner over the projected region.\n readonly loading = input(false, { transform: booleanAttribute });\n // Optional caption beneath the spinner.\n readonly label = input<string>('');\n readonly blur = input(true, { transform: booleanAttribute });\n readonly spinnerSize = input<SpinnerSize>('md');\n // Offset the scrim top edge — useful when a sticky header should stay uncovered.\n readonly insetTop = input<string>('0');\n}\n","<ng-content></ng-content>\n\n@if (loading()) {\n <div\n class=\"scrim\"\n [class.blur]=\"blur()\"\n [style.top]=\"insetTop()\"\n >\n <ds-spinner [size]=\"spinnerSize()\" />\n\n @if (label()) {\n <span class=\"label\">\n {{ label() }}\n </span>\n }\n </div>\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Projects a custom cell template into <ds-table> for a specific column.\n *\n * Usage:\n * <ds-table [data]=\"rows\" [columns]=\"cols\">\n * <ng-template dsCellTemplate=\"product\" let-row>\n * <div>{{ asRule(row).product }}</div>\n * </ng-template>\n * </ds-table>\n *\n * The template context type is `unknown` because Angular cannot propagate\n * the parent <ds-table>'s row type to projected templates. Consumers should\n * narrow the row with a typed helper method on the host component.\n *\n * Context shape:\n * - $implicit: the row object (typed `unknown`)\n * - row: alias for the row object (typed `unknown`)\n */\n@Directive({\n selector: '[dsCellTemplate]',\n standalone: true,\n})\nexport class CellTemplateDirective {\n readonly dsCellTemplate = input.required<string>();\n readonly template = inject(TemplateRef<{ $implicit: unknown; row: unknown }>);\n}\n","import {\n Component,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icons/icon.component';\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\nimport { PaginationComponent } from '../pagination/pagination.component';\nimport { LoadingOverlayComponent } from '../loading-overlay/loading-overlay.component';\nimport { CellTemplateDirective } from './cell-template.directive';\nimport type { SortChangeEvent, SortDir, TableColumn } from './table.types';\n\nconst NUMERIC = /^-?\\d+(\\.\\d+)?$/;\n\n@Component({\n selector: 'ds-table',\n standalone: true,\n imports: [\n IconComponent,\n NgTemplateOutlet,\n SkeletonComponent,\n PaginationComponent,\n LoadingOverlayComponent,\n ],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.bordered]': 'bordered()',\n '[class.selectable]': 'selectable()',\n '[class.pinned]': 'stickyFirstColumn()',\n },\n})\nexport class TableComponent<T extends { id: string }> {\n readonly data = input.required<readonly T[]>();\n readonly columns = input.required<readonly TableColumn<T>[]>();\n readonly selectable = input<boolean>(false);\n /** Opt-in outer border + radius. Off by default so tables flush inside a\n * `<ds-card padding=\"none\">` (workspaces, programs-list) don't double-border.\n * When `true`, the scroll-wrap gets a `var(--border-default)` outline and\n * `var(--radius-md)` radius — useful when the table stands alone in a padded card. */\n readonly bordered = input<boolean>(false);\n /** false — no loading state.\n * 'skeleton' — first-load placeholder; rows are replaced with shimmer\n * rows that read the global --skeleton-shimmer-x driver.\n * 'overlay' — re-fetch indicator; existing rows stay visible behind\n * a translucent overlay with a centred spinner. */\n readonly loading = input<false | 'skeleton' | 'overlay'>(false);\n readonly stickyHeader = input<boolean>(true);\n readonly selectedIds = model<Set<string>>(new Set<string>());\n readonly sortKey = model<string | null>(null);\n readonly sortDir = model<SortDir>(null);\n readonly skeletonRows = input<number>(5);\n /** Accessible name for the table (rendered as a visually-hidden caption).\n * Without it, screen-reader users get an unlabelled table. */\n readonly caption = input<string>('');\n /** When true, each row becomes a keyboard-operable control (role=button,\n * tabindex, Enter/Space → rowClick) with an accessible name from the first\n * column. Off by default so non-navigating tables don't advertise a false\n * click affordance. */\n readonly rowInteractive = input<boolean>(false);\n\n /** Rows per page. `null` (default) disables pagination — all rows render. */\n readonly pageSize = model<number | null>(null);\n /** Current 1-based page. Only meaningful when `pageSize()` is set. */\n readonly page = model<number>(1);\n readonly pageSizeOptions = input<number[]>([10, 25, 50, 100]);\n /** When true, the table sorts `data()` itself; otherwise it only emits\n * `sortChange` and leaves ordering to the consumer (default). */\n readonly clientSort = input<boolean>(false);\n /** Pin the first data column (and the select column) on horizontal scroll. */\n readonly stickyFirstColumn = input<boolean>(false);\n\n readonly rowClick = output<T>();\n readonly sortChange = output<SortChangeEvent>();\n\n /** Cell templates supplied as an explicit map instead of (or in addition to)\n * projected `dsCellTemplate` directives. Lets a wrapper component (e.g.\n * ids-data-table) collect the directives itself and pass them down, since\n * content projected through a wrapper's `<ng-content>` is not seen by this\n * component's content query. Entries here override projected ones. */\n readonly cellTemplateMap = input<\n Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>>\n >({});\n\n /** Empty-state template, as an alternative to the `[empty]` content slot —\n * again for wrappers that can't rely on slot re-projection. */\n readonly emptyTemplate = input<TemplateRef<unknown> | null>(null);\n\n protected readonly cellTemplateDirectives = contentChildren(\n CellTemplateDirective,\n );\n\n protected readonly cellTemplates = computed<\n Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>>\n >(() => {\n const map: Record<\n string,\n TemplateRef<{ $implicit: unknown; row: unknown }>\n > = {};\n for (const dir of this.cellTemplateDirectives()) {\n map[dir.dsCellTemplate()] = dir.template;\n }\n\n return { ...map, ...this.cellTemplateMap() };\n });\n\n protected cellTemplate(\n col: TableColumn<T>,\n ): TemplateRef<{ $implicit: unknown; row: unknown }> | null {\n return this.cellTemplates()[col.key] ?? null;\n }\n\n protected readonly tableClasses = computed(() => {\n const parts = ['table'];\n if (this.loading() === 'skeleton') {\n parts.push('skeleton-mode');\n }\n if (this.stickyHeader()) {\n parts.push('sticky-header');\n }\n\n return parts.join(' ');\n });\n\n protected readonly isSkeletonLoading = computed(\n () => this.loading() === 'skeleton',\n );\n protected readonly isOverlayLoading = computed(\n () => this.loading() === 'overlay',\n );\n\n /** Client-side sort over the full data set — only when `clientSort()`. */\n protected readonly sortedData = computed<readonly T[]>(() => {\n const rows = this.data();\n if (!this.clientSort()) {\n return rows;\n }\n const key = this.sortKey();\n const dir = this.sortDir();\n if (!key || !dir) {\n return rows;\n }\n const column = this.columns().find((col) => col.key === key);\n if (!column) {\n return rows;\n }\n\n return rows.slice().sort((a, b) => {\n const aValue = this.cellValue(a, column);\n const bValue = this.cellValue(b, column);\n const comparison =\n NUMERIC.test(aValue) && NUMERIC.test(bValue)\n ? Number(aValue) - Number(bValue)\n : aValue.localeCompare(bValue);\n\n return dir === 'asc' ? comparison : -comparison;\n });\n });\n\n /** Current page's slice of the sorted rows, when paginating. */\n protected readonly pagedData = computed<readonly T[]>(() => {\n const size = this.pageSize();\n if (size === null) {\n return this.sortedData();\n }\n const start = (this.page() - 1) * size;\n\n return this.sortedData().slice(start, start + size);\n });\n\n /** Rows actually rendered: paged when paginating, else sorted/raw data. */\n protected readonly displayData = computed<readonly T[]>(() =>\n this.pageSize() !== null ? this.pagedData() : this.sortedData(),\n );\n\n protected readonly allSelected = computed(() => {\n const data = this.displayData();\n if (data.length === 0) {\n return false;\n }\n const sel = this.selectedIds();\n\n return data.every((row) => sel.has(row.id));\n });\n\n protected readonly someSelected = computed(() => {\n const data = this.displayData();\n const sel = this.selectedIds();\n\n return data.some((row) => sel.has(row.id)) && !this.allSelected();\n });\n\n /** Select-all is page-scoped only when paginating. */\n protected readonly selectAllLabel = computed(() =>\n this.pageSize() !== null ? 'Select all rows on this page' : 'Select all rows',\n );\n\n protected readonly skeletonArray = computed(() =>\n Array(this.skeletonRows()).fill(0),\n );\n\n protected isSelected(row: T): boolean {\n return this.selectedIds().has(row.id);\n }\n\n protected onToggleAll(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n const next = new Set<string>(this.selectedIds());\n if (checked) {\n this.displayData().forEach((row) => next.add(row.id));\n } else {\n this.displayData().forEach((row) => next.delete(row.id));\n }\n this.selectedIds.set(next);\n }\n\n protected onToggleRow(row: T, event: Event): void {\n event.stopPropagation();\n const checked = (event.target as HTMLInputElement).checked;\n const next = new Set<string>(this.selectedIds());\n if (checked) {\n next.add(row.id);\n } else {\n next.delete(row.id);\n }\n this.selectedIds.set(next);\n }\n\n protected onRowClick(row: T, event: Event): void {\n if ((event.target as HTMLElement).closest('input')) {\n return;\n }\n this.rowClick.emit(row);\n }\n\n protected onRowKey(row: T, event: Event): void {\n if (!this.rowInteractive()) {\n return;\n }\n event.preventDefault();\n this.rowClick.emit(row);\n }\n\n /** Accessible name for an interactive row, taken from the first column. */\n protected rowAriaLabel(row: T): string {\n const first = this.columns()[0];\n\n return first ? this.cellValue(row, first) : '';\n }\n\n /** `aria-sort` value for a header: only meaningful on sortable columns. */\n protected ariaSort(\n col: TableColumn<T>,\n ): 'ascending' | 'descending' | 'none' | null {\n if (!col.sortable) {\n return null;\n }\n if (this.sortKey() === col.key && this.sortDir()) {\n return this.sortDir() === 'asc' ? 'ascending' : 'descending';\n }\n\n return 'none';\n }\n\n protected onSort(col: TableColumn<T>): void {\n if (!col.sortable) {\n return;\n }\n const currentKey = this.sortKey();\n const currentDir = this.sortDir();\n let dir: SortDir;\n if (currentKey !== col.key) {\n dir = 'asc';\n } else if (currentDir === 'asc') {\n dir = 'desc';\n } else if (currentDir === 'desc') {\n dir = null;\n } else {\n dir = 'asc';\n }\n this.sortKey.set(dir ? col.key : null);\n this.sortDir.set(dir);\n this.sortChange.emit({ key: col.key, dir });\n }\n\n protected headerClasses(col: TableColumn<T>): string {\n const parts: string[] = [];\n if (col.sortable) {\n parts.push('sortable');\n }\n if (this.sortKey() === col.key && this.sortDir()) {\n parts.push(`sorted-${this.sortDir()}`);\n }\n\n return parts.join(' ');\n }\n\n protected sortIcon(col: TableColumn<T>): 'sortAsc' | 'sortDesc' | 'sort' {\n if (this.sortKey() !== col.key || !this.sortDir()) {\n return 'sort';\n }\n\n return this.sortDir() === 'asc' ? 'sortAsc' : 'sortDesc';\n }\n\n protected cellValue(row: T, col: TableColumn<T>): string {\n if (col.cell) {\n return col.cell(row);\n }\n\n return String((row as Record<string, unknown>)[col.key] ?? '');\n }\n\n /** Deterministic per-cell width so skeleton rows look organic but stable\n * across re-renders. Mixes column key + row index into one of five widths. */\n protected skeletonWidth(col: TableColumn<T>, rowIndex: number): string {\n const seed = `${col.key}-${rowIndex}`;\n let hash = 0;\n for (let charIndex = 0; charIndex < seed.length; charIndex++) {\n hash = (hash + seed.charCodeAt(charIndex)) | 0;\n }\n const widths = ['45%', '55%', '65%', '75%', '85%'];\n\n return widths[Math.abs(hash) % widths.length] ?? '70%';\n }\n}\n","<div class=\"scroll-wrap\">\n <div\n class=\"visually-hidden\"\n role=\"status\"\n aria-live=\"polite\"\n >\n @if (loading() !== false) {\n Loading…\n }\n </div>\n\n <ds-loading-overlay\n [loading]=\"isOverlayLoading()\"\n [blur]=\"true\"\n [insetTop]=\"'var(--ds-table-head-h, 40px)'\"\n >\n <table\n [class]=\"tableClasses()\"\n [attr.role]=\"rowInteractive() ? 'grid' : null\"\n [attr.aria-busy]=\"loading() !== false ? 'true' : null\"\n >\n @if (caption()) {\n <caption class=\"visually-hidden\">\n {{\n caption()\n }}\n </caption>\n }\n\n <thead>\n <tr>\n @if (selectable()) {\n <th\n scope=\"col\"\n class=\"select-col pin-select\"\n >\n <input\n type=\"checkbox\"\n class=\"check\"\n [attr.aria-label]=\"selectAllLabel()\"\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (change)=\"onToggleAll($event)\"\n />\n </th>\n }\n\n @for (col of columns(); track col.key; let first = $first) {\n <th\n scope=\"col\"\n [class]=\"headerClasses(col)\"\n [class.numeric]=\"col.align === 'right'\"\n [class.pin-first]=\"first && stickyFirstColumn()\"\n [attr.aria-sort]=\"ariaSort(col)\"\n >\n @if (col.sortable) {\n <button\n type=\"button\"\n class=\"th-label\"\n (click)=\"onSort(col)\"\n >\n {{ col.label }}\n <ds-icon\n class=\"sort-icon\"\n [name]=\"sortIcon(col)\"\n [size]=\"12\"\n >\n </ds-icon>\n </button>\n } @else {\n <span class=\"th-label\">\n {{ col.label }}\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSkeletonLoading()) {\n @for (_ of skeletonArray(); track $index; let rowIndex = $index) {\n <tr>\n @if (selectable()) {\n <td class=\"select-col pin-select\">\n <ds-skeleton\n width=\"14px\"\n height=\"14px\"\n [inline]=\"true\"\n />\n </td>\n }\n\n @for (col of columns(); track col.key; let first = $first) {\n <td\n [class.numeric]=\"col.align === 'right'\"\n [class.pin-first]=\"first && stickyFirstColumn()\"\n >\n <ds-skeleton\n height=\"14px\"\n [width]=\"skeletonWidth(col, rowIndex)\"\n [inline]=\"true\"\n />\n </td>\n }\n </tr>\n }\n } @else if (!data().length) {\n <tr>\n <td\n class=\"empty\"\n [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\"\n >\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\">\n </ng-container>\n } @else {\n <ng-content select=\"[empty]\"></ng-content>\n }\n </td>\n </tr>\n } @else {\n @for (row of displayData(); track row.id) {\n <tr\n [class.selected]=\"isSelected(row)\"\n [class.clickable]=\"rowInteractive()\"\n [attr.tabindex]=\"rowInteractive() ? 0 : null\"\n [attr.aria-label]=\"rowInteractive() ? rowAriaLabel(row) : null\"\n (click)=\"onRowClick(row, $event)\"\n (keydown.enter)=\"onRowKey(row, $event)\"\n (keydown.space)=\"onRowKey(row, $event)\"\n >\n @if (selectable()) {\n <td class=\"select-col pin-select\">\n <input\n type=\"checkbox\"\n class=\"check\"\n [attr.aria-label]=\"'Select ' + rowAriaLabel(row)\"\n [checked]=\"isSelected(row)\"\n (change)=\"onToggleRow(row, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n }\n\n @for (col of columns(); track col.key; let first = $first) {\n <td\n [class.numeric]=\"col.align === 'right'\"\n [class.pin-first]=\"first && stickyFirstColumn()\"\n >\n @if (cellTemplate(col); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row }\"\n >\n </ng-container>\n } @else {\n {{ cellValue(row, col) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </ds-loading-overlay>\n</div>\n\n@if (pageSize(); as size) {\n <div class=\"pagination-footer\">\n <ds-pagination\n [total]=\"data().length\"\n [(currentPage)]=\"page\"\n [pageSize]=\"size\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n (pageSizeChange)=\"pageSize.set($event)\"\n />\n </div>\n}\n\n@if (selectable() && someSelected()) {\n <div class=\"bulk-bar\">\n <span class=\"count\">\n {{ selectedIds().size }} selected\n </span>\n\n <span class=\"sep\"></span>\n\n <ng-content select=\"[bulk-actions]\"></ng-content>\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\n\n/** A single calendar day cell — the building block of `<ds-date-picker>`'s grid,\n * also usable standalone (e.g. a state showcase). Renders a focusable\n * `<button class=\"day\">` whose state classes are driven by inputs. The host is\n * `display: contents` so the inner button is the grid item, and the date-picker\n * can still focus a specific day via `[data-day]` (roving tabindex). */\n@Component({\n selector: 'ds-calendar-day',\n standalone: true,\n templateUrl: './calendar-day.component.html',\n styleUrl: './calendar-day.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CalendarDayComponent {\n readonly selected = input(false, { transform: booleanAttribute });\n readonly inRange = input(false, { transform: booleanAttribute });\n readonly rangeStart = input(false, { transform: booleanAttribute });\n readonly rangeEnd = input(false, { transform: booleanAttribute });\n readonly today = input(false, { transform: booleanAttribute });\n /** Day from an adjacent month — dimmed. */\n readonly muted = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Stable key the date-picker uses to focus a specific day (roving tabindex). */\n readonly dataDay = input<string | null>(null);\n readonly tabIndex = input<number>(-1);\n readonly ariaLabel = input<string | null>(null);\n\n readonly daySelect = output<MouseEvent>();\n readonly dayKeydown = output<KeyboardEvent>();\n\n protected readonly classes = computed(() => {\n const parts = ['day'];\n if (this.muted()) {\n parts.push('muted');\n }\n if (this.today()) {\n parts.push('today');\n }\n if (this.inRange()) {\n parts.push('in-range');\n }\n if (this.rangeStart()) {\n parts.push('range-start');\n }\n if (this.rangeEnd()) {\n parts.push('range-end');\n }\n if (this.selected()) {\n parts.push('selected');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n });\n}\n","<button\n type=\"button\"\n [class]=\"classes()\"\n [attr.data-day]=\"dataDay()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"selected() ? 'true' : null\"\n [attr.aria-current]=\"today() ? 'date' : null\"\n [disabled]=\"disabled()\"\n (click)=\"daySelect.emit($event)\"\n (keydown)=\"dayKeydown.emit($event)\"\n>\n <ng-content></ng-content>\n</button>\n","import {\n Component,\n ElementRef,\n Injector,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { IconComponent } from '../../icons/icon.component';\nimport { CalendarDayComponent } from '../calendar-day/calendar-day.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport type {\n DatePickerMode,\n DatePickerSize,\n RangeValue,\n} from './date-picker.types';\n\nlet nextId = 0;\nconst YEAR_PAGE_SIZE = 12;\n\ninterface DayCell {\n date: Date;\n day: number;\n inMonth: boolean;\n isToday: boolean;\n inRange: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isSelected: boolean;\n}\n\n@Component({\n selector: 'ds-date-picker',\n standalone: true,\n imports: [IconComponent, CalendarDayComponent, FieldMessageComponent],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent extends DsControlValueAccessor<Date | RangeValue | null> {\n constructor() {\n super();\n }\n\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n\n readonly mode = input<DatePickerMode>('single');\n readonly size = input<DatePickerSize>('md');\n readonly value = model<Date | RangeValue | null>(null);\n readonly placeholder = input<string>('Select date');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n /** Accessible name when no visible `label` is provided. */\n readonly ariaLabel = input<string | null>(null);\n /** Bounds for the year dropdown in the calendar header. */\n readonly minYear = input<number>(new Date().getFullYear() - 100);\n readonly maxYear = input<number>(new Date().getFullYear() + 10);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly uid = `ds-datepicker-${++nextId}`;\n protected readonly labelId = `${this.uid}-label`;\n protected readonly isOpen = signal(false);\n /** The day that holds keyboard focus in the open grid (roving tabindex). */\n protected readonly gridFocus = signal<Date | null>(null);\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected dayKey(d: Date): string {\n return `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n }\n\n protected isFocusDay(cell: DayCell): boolean {\n const f = this.gridFocus();\n\n return !!f && this.dayKey(f) === this.dayKey(cell.date);\n }\n\n /** Arrow-key roving navigation across the calendar grid (APG date grid). */\n protected onGridKeydown(event: KeyboardEvent, cell: DayCell): void {\n if (this.isDisabled()) {\n return;\n }\n const f = this.gridFocus() ?? cell.date;\n let next: Date | null = null;\n switch (event.key) {\n case 'ArrowLeft':\n next = this.addDays(f, -1);\n break;\n case 'ArrowRight':\n next = this.addDays(f, 1);\n break;\n case 'ArrowUp':\n next = this.addDays(f, -7);\n break;\n case 'ArrowDown':\n next = this.addDays(f, 7);\n break;\n case 'Home':\n next = this.addDays(f, -((f.getDay() + 6) % 7));\n break;\n case 'End':\n next = this.addDays(f, 6 - ((f.getDay() + 6) % 7));\n break;\n case 'PageUp':\n next = this.addMonths(f, -1);\n break;\n case 'PageDown':\n next = this.addMonths(f, 1);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectDay(cell);\n\n return;\n case 'Escape':\n event.preventDefault();\n this.close();\n this.trigger().nativeElement.focus();\n\n return;\n default:\n return;\n }\n event.preventDefault();\n this.gridFocus.set(next);\n this.viewMonth.set(new Date(next.getFullYear(), next.getMonth(), 1));\n afterNextRender(() => this.focusGridDay(), { injector: this.injector });\n }\n\n private addDays(date: Date, days: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + days);\n\n return d;\n }\n\n private addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + months);\n\n return d;\n }\n\n private focusGridDay(): void {\n const f = this.gridFocus();\n if (!f || !this.overlayRef) {\n return;\n }\n const element = this.overlayRef.overlayElement.querySelector(\n `[data-day=\"${this.dayKey(f)}\"]`,\n ) as HTMLElement | null;\n element?.focus();\n }\n\n /** Full, unambiguous date for a day cell's accessible name. */\n protected dayLabel(cell: DayCell): string {\n return cell.date.toLocaleDateString(undefined, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n }\n\n protected readonly triggerClasses = computed(() => {\n const parts = ['trigger'];\n const size = this.size();\n if (size !== 'md') {\n parts.push(size);\n }\n if (this.isDisabled()) {\n parts.push('disabled');\n }\n if (this.invalid()) {\n parts.push('error');\n }\n\n return parts.join(' ');\n });\n\n protected readonly viewMonth = signal<Date>(new Date());\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n private overlayRef: OverlayRef | null = null;\n\n protected readonly displayLabel = computed(() => {\n const value = this.value();\n if (this.mode() === 'single') {\n const d = value as Date | null;\n\n return d ? d.toLocaleDateString() : this.placeholder();\n }\n const r = (value as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (a && b) {\n return `${a.toLocaleDateString()} – ${b.toLocaleDateString()}`;\n }\n if (a) {\n return `${a.toLocaleDateString()} – …`;\n }\n\n return this.placeholder();\n });\n\n // ---- Month / year grid pickers in the calendar header ----\n protected readonly monthMenuOpen = signal(false);\n protected readonly yearMenuOpen = signal(false);\n protected readonly monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n protected readonly viewMonthIndex = computed(() => this.viewMonth().getMonth());\n protected readonly viewYear = computed(() => this.viewMonth().getFullYear());\n\n /** First year shown in the year grid; paged by YEAR_PAGE_SIZE within [minYear, maxYear]. */\n protected readonly yearPageStart = signal<number>(0);\n\n protected readonly yearsOnPage = computed<number[]>(() => {\n const start = this.yearPageStart();\n const max = this.maxYear();\n const list: number[] = [];\n for (let year = start; year < start + YEAR_PAGE_SIZE && year <= max; year++) {\n list.push(year);\n }\n\n return list;\n });\n\n protected readonly yearRangeLabel = computed(() => {\n const page = this.yearsOnPage();\n\n return page.length ? `${page[0]} – ${page[page.length - 1]}` : '';\n });\n\n protected readonly canPrevYearPage = computed(\n () => this.yearPageStart() > this.minYear(),\n );\n protected readonly canNextYearPage = computed(\n () => this.yearPageStart() + YEAR_PAGE_SIZE <= this.maxYear(),\n );\n\n /** Aligns the page so `year` lands on a stable grid boundary measured from minYear. */\n private yearPageStartFor(year: number): number {\n const min = this.minYear();\n\n return min + Math.floor((year - min) / YEAR_PAGE_SIZE) * YEAR_PAGE_SIZE;\n }\n\n protected toggleMonthMenu(event: Event): void {\n event.stopPropagation();\n this.yearMenuOpen.set(false);\n this.monthMenuOpen.update((open) => !open);\n }\n\n protected toggleYearMenu(event: Event): void {\n event.stopPropagation();\n this.monthMenuOpen.set(false);\n this.yearMenuOpen.update((open) => !open);\n if (this.yearMenuOpen()) {\n this.yearPageStart.set(this.yearPageStartFor(this.viewYear()));\n }\n }\n\n protected prevYearPage(event: Event): void {\n event.stopPropagation();\n this.yearPageStart.update((start) =>\n Math.max(this.minYear(), start - YEAR_PAGE_SIZE),\n );\n }\n\n protected nextYearPage(event: Event): void {\n event.stopPropagation();\n this.yearPageStart.update((start) => start + YEAR_PAGE_SIZE);\n }\n\n protected closeMenus(): void {\n this.monthMenuOpen.set(false);\n this.yearMenuOpen.set(false);\n }\n\n protected selectMonth(index: number, event: Event): void {\n event.stopPropagation();\n this.viewMonth.set(new Date(this.viewYear(), index, 1));\n this.monthMenuOpen.set(false);\n }\n\n protected selectYear(year: number, event: Event): void {\n event.stopPropagation();\n this.viewMonth.set(new Date(year, this.viewMonthIndex(), 1));\n this.yearMenuOpen.set(false);\n }\n\n protected readonly daysGrid = computed<DayCell[]>(() => {\n const view = this.viewMonth();\n const year = view.getFullYear();\n const month = view.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n const gridStart = new Date(firstOfMonth);\n gridStart.setDate(gridStart.getDate() - ((gridStart.getDay() + 6) % 7));\n const cells: DayCell[] = [];\n const today = new Date();\n const todayKey = today.toDateString();\n for (let i = 0; i < 42; i++) {\n const d = new Date(gridStart);\n d.setDate(d.getDate() + i);\n const inMonth = d.getMonth() === month;\n const isToday = d.toDateString() === todayKey;\n const range = this.getRangeContext(d);\n cells.push({\n date: d,\n day: d.getDate(),\n inMonth,\n isToday,\n inRange: range.inRange,\n isRangeStart: range.isStart,\n isRangeEnd: range.isEnd,\n isSelected: range.isSelected,\n });\n }\n\n return cells;\n });\n\n private getRangeContext(d: Date): {\n inRange: boolean;\n isStart: boolean;\n isEnd: boolean;\n isSelected: boolean;\n } {\n const value = this.value();\n if (this.mode() === 'single') {\n const sel = value as Date | null;\n\n return {\n inRange: false,\n isStart: false,\n isEnd: false,\n isSelected: !!sel && sel.toDateString() === d.toDateString(),\n };\n }\n const r = (value as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (!a) {\n return {\n inRange: false,\n isStart: false,\n isEnd: false,\n isSelected: false,\n };\n }\n if (!b) {\n return {\n inRange: false,\n isStart: a.toDateString() === d.toDateString(),\n isEnd: false,\n isSelected: false,\n };\n }\n const t = d.getTime();\n const aT = a.getTime();\n const bT = b.getTime();\n\n return {\n inRange: t > Math.min(aT, bT) && t < Math.max(aT, bT),\n isStart: t === Math.min(aT, bT),\n isEnd: t === Math.max(aT, bT),\n isSelected: false,\n };\n }\n\n protected open(): void {\n if (this.isDisabled() || this.overlayRef) {\n return;\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.trigger().nativeElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'ds-overlay-pane',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n const portal = new TemplatePortal(this.panelTpl(), this.vcr);\n this.overlayRef.attach(portal);\n this.isOpen.set(true);\n // Seed grid focus on the selected day (or today) and move focus into it.\n const selected =\n this.mode() === 'single'\n ? (this.value() as Date | null)\n : ((this.value() as RangeValue | null)?.[0] ?? null);\n const focus = selected ?? new Date();\n this.gridFocus.set(focus);\n this.viewMonth.set(new Date(focus.getFullYear(), focus.getMonth(), 1));\n afterNextRender(() => this.focusGridDay(), { injector: this.injector });\n }\n\n protected close(): void {\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.isOpen.set(false);\n this.closeMenus();\n this.markTouched();\n }\n\n protected prevMonth(): void {\n const m = new Date(this.viewMonth());\n m.setMonth(m.getMonth() - 1);\n this.viewMonth.set(m);\n }\n\n protected nextMonth(): void {\n const m = new Date(this.viewMonth());\n m.setMonth(m.getMonth() + 1);\n this.viewMonth.set(m);\n }\n\n protected selectDay(cell: DayCell): void {\n if (this.mode() === 'single') {\n this.value.set(new Date(cell.date));\n this.close();\n this.trigger().nativeElement.focus();\n\n return;\n }\n const r = (this.value() as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (!a || (a && b)) {\n this.value.set([new Date(cell.date), null]);\n this.gridFocus.set(new Date(cell.date));\n } else {\n const picked = new Date(cell.date);\n const range: RangeValue =\n a.getTime() <= picked.getTime() ? [a, picked] : [picked, a];\n this.value.set(range);\n this.close();\n this.trigger().nativeElement.focus();\n }\n }\n}\n","<div class=\"field\">\n @if (label()) {\n <span\n class=\"label\"\n [id]=\"labelId\"\n >\n {{ label() }}\n @if (required()) {\n <span\n class=\"req\"\n aria-hidden=\"true\"\n >\n *\n </span>\n } @else if (optional()) {\n <span\n class=\"optional-marker\"\n aria-hidden=\"true\"\n >\n (optional)\n </span>\n }\n </span>\n }\n\n <button\n #trigger\n type=\"button\"\n aria-haspopup=\"dialog\"\n [class]=\"triggerClasses()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-labelledby]=\"label() ? labelId : null\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n (click)=\"open()\"\n >\n <ds-icon\n name=\"calendar\"\n [size]=\"14\"\n >\n </ds-icon>\n\n <span>\n {{ displayLabel() }}\n </span>\n </button>\n\n <ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n />\n</div>\n\n<ng-template #panel>\n <div\n class=\"calendar\"\n (click)=\"closeMenus()\"\n >\n <div class=\"head\">\n <span class=\"period\">\n <span class=\"period-item\">\n <button\n type=\"button\"\n class=\"period-trigger\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"monthMenuOpen()\"\n (click)=\"toggleMonthMenu($event)\"\n >\n {{ monthNames[viewMonthIndex()] }}\n <ds-icon\n name=\"chevronDown\"\n [size]=\"12\"\n />\n </button>\n\n @if (monthMenuOpen()) {\n <div\n class=\"picker-menu\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeMenus()\"\n >\n <div\n class=\"picker-grid\"\n role=\"listbox\"\n >\n @for (name of monthNames; track $index) {\n <button\n type=\"button\"\n role=\"option\"\n class=\"picker-cell\"\n [class.selected]=\"$index === viewMonthIndex()\"\n [attr.aria-selected]=\"$index === viewMonthIndex()\"\n (click)=\"selectMonth($index, $event)\"\n >\n {{ name.slice(0, 3) }}\n </button>\n }\n </div>\n </div>\n }\n </span>\n\n <span class=\"period-item\">\n <button\n type=\"button\"\n class=\"period-trigger\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"yearMenuOpen()\"\n (click)=\"toggleYearMenu($event)\"\n >\n {{ viewYear() }}\n <ds-icon\n name=\"chevronDown\"\n [size]=\"12\"\n />\n </button>\n\n @if (yearMenuOpen()) {\n <div\n class=\"picker-menu\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeMenus()\"\n >\n <div class=\"picker-head\">\n <button\n type=\"button\"\n class=\"picker-nav\"\n aria-label=\"Previous years\"\n [disabled]=\"!canPrevYearPage()\"\n (click)=\"prevYearPage($event)\"\n >\n <ds-icon\n name=\"chevronLeft\"\n [size]=\"14\"\n />\n </button>\n\n <span class=\"picker-range\">\n {{ yearRangeLabel() }}\n </span>\n\n <button\n type=\"button\"\n class=\"picker-nav\"\n aria-label=\"Next years\"\n [disabled]=\"!canNextYearPage()\"\n (click)=\"nextYearPage($event)\"\n >\n <ds-icon\n name=\"chevronRight\"\n [size]=\"14\"\n />\n </button>\n </div>\n\n <div\n class=\"picker-grid\"\n role=\"listbox\"\n >\n @for (year of yearsOnPage(); track year) {\n <button\n type=\"button\"\n role=\"option\"\n class=\"picker-cell year-cell\"\n [class.selected]=\"year === viewYear()\"\n [attr.aria-selected]=\"year === viewYear()\"\n (click)=\"selectYear(year, $event)\"\n >\n {{ year }}\n </button>\n }\n </div>\n </div>\n }\n </span>\n </span>\n\n <span class=\"nav\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n >\n <ds-icon\n name=\"chevronLeft\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n >\n <ds-icon\n name=\"chevronRight\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n </span>\n </div>\n\n <div class=\"grid\">\n <span class=\"dow\">\n Mo\n </span>\n\n <span class=\"dow\">\n Tu\n </span>\n\n <span class=\"dow\">\n We\n </span>\n\n <span class=\"dow\">\n Th\n </span>\n\n <span class=\"dow\">\n Fr\n </span>\n\n <span class=\"dow\">\n Sa\n </span>\n\n <span class=\"dow\">\n Su\n </span>\n\n @for (cell of daysGrid(); track $index) {\n <ds-calendar-day\n [muted]=\"!cell.inMonth\"\n [today]=\"cell.isToday\"\n [selected]=\"cell.isSelected\"\n [inRange]=\"cell.inRange\"\n [rangeStart]=\"cell.isRangeStart\"\n [rangeEnd]=\"cell.isRangeEnd\"\n [dataDay]=\"dayKey(cell.date)\"\n [tabIndex]=\"isFocusDay(cell) ? 0 : -1\"\n [ariaLabel]=\"dayLabel(cell)\"\n (daySelect)=\"selectDay(cell)\"\n (dayKeydown)=\"onGridKeydown($event, cell)\"\n >\n {{ cell.day }}\n </ds-calendar-day>\n }\n </div>\n </div>\n</ng-template>\n","import { Injectable, signal } from '@angular/core';\nimport type { BreadcrumbItem } from './breadcrumbs.types';\n\n/**\n * Library-level breadcrumb state. Apps push items either programmatically\n * (page constructor / effect) or via a router-data driver (see app docs).\n * `<ds-breadcrumbs>` reads from here when no `[items]` input is provided.\n */\n@Injectable({ providedIn: 'root' })\nexport class BreadcrumbsService {\n private readonly _items = signal<BreadcrumbItem[]>([]);\n readonly items = this._items.asReadonly();\n\n set(items: BreadcrumbItem[]): void {\n this._items.set(items);\n }\n\n push(item: BreadcrumbItem): void {\n this._items.update((arr) => [...arr, item]);\n }\n\n pop(): void {\n this._items.update((arr) => arr.slice(0, -1));\n }\n\n replaceLast(item: BreadcrumbItem): void {\n this._items.update((arr) =>\n arr.length ? [...arr.slice(0, -1), item] : [item],\n );\n }\n\n clear(): void {\n this._items.set([]);\n }\n}\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { DS_CONFIG } from '../../config/ds-config';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport { BreadcrumbsService } from './breadcrumbs.service';\nimport type { BreadcrumbItem } from './breadcrumbs.types';\n\n@Component({\n selector: 'ds-breadcrumbs',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './breadcrumbs.component.html',\n styleUrl: './breadcrumbs.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BreadcrumbsComponent {\n private readonly cfg = inject(DS_CONFIG);\n private readonly svc = inject(BreadcrumbsService);\n\n /**\n * When omitted, the component reads from `BreadcrumbsService.items`.\n * Pass an explicit array to opt out of the service (per-page override).\n */\n readonly items = input<BreadcrumbItem[] | null>(null);\n readonly separator = input<IconName | null>(null);\n readonly clickable = input<boolean | null>(null);\n readonly navigate = output<BreadcrumbItem>();\n\n protected readonly resolvedItems = computed<BreadcrumbItem[]>(\n () => this.items() ?? this.svc.items(),\n );\n protected readonly effectiveSeparator = computed<IconName>(\n () => this.separator() ?? this.cfg.breadcrumbs?.separator ?? 'chevronRight',\n );\n protected readonly effectiveClickable = computed<boolean>(\n () => this.clickable() ?? this.cfg.breadcrumbs?.clickable ?? true,\n );\n\n protected onNav(event: Event, item: BreadcrumbItem): void {\n if (!item.href || !this.effectiveClickable()) {\n event.preventDefault();\n\n return;\n }\n event.preventDefault();\n this.navigate.emit(item);\n }\n}\n","<nav\n class=\"breadcrumbs\"\n aria-label=\"Breadcrumb\"\n [class.is-static]=\"!effectiveClickable()\"\n>\n @for (item of resolvedItems(); track $index; let last = $last) {\n @if (item.href && !last && effectiveClickable()) {\n <a\n [href]=\"item.href\"\n (click)=\"onNav($event, item)\"\n >\n @if (item.icon) {\n <ds-icon\n [name]=\"item.icon\"\n [size]=\"14\"\n />\n }\n\n @if (item.label) {\n <span class=\"label\">\n {{ item.label }}\n </span>\n }\n </a>\n } @else {\n <span\n [class.current]=\"last\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n @if (item.icon) {\n <ds-icon\n [name]=\"item.icon\"\n [size]=\"14\"\n />\n }\n\n @if (item.label) {\n <span class=\"label\">\n {{ item.label }}\n </span>\n }\n </span>\n }\n\n @if (!last) {\n <span\n class=\"sep\"\n aria-hidden=\"true\"\n >\n <ds-icon\n [name]=\"effectiveSeparator()\"\n [size]=\"12\"\n />\n </span>\n }\n }\n</nav>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\n@Component({\n selector: 'ds-sidenav',\n standalone: true,\n templateUrl: './sidenav.component.html',\n styleUrl: './sidenav.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.sidenav]': 'true',\n '[class.collapsed]': 'collapsed()',\n },\n})\nexport class SidenavComponent {\n readonly collapsed = input<boolean>(false);\n readonly brand = input<string>('');\n}\n","@if (brand()) {\n <div class=\"brand\">\n <span class=\"mark\">\n {{ brand().charAt(0) }}\n </span>\n\n <span class=\"brand-name\">\n {{ brand() }}\n </span>\n </div>\n}\n\n<ng-content></ng-content>\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-sidenav-group',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './sidenav-group.component.html',\n styleUrl: './sidenav-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SidenavGroupComponent {\n readonly label = input<string>('');\n // Optional group icon (DS IconName). Consumers without a DS icon can project\n // custom content via the `[icon]` slot.\n readonly icon = input<IconName | null>(null);\n // When true the label/icon row becomes a clickable header that expands /\n // collapses the projected children with a caret rotation.\n readonly expandable = input<boolean>(false);\n // Two-way bindable open state. Defaults to open (true) so a non-expandable\n // group always shows its items.\n readonly expanded = model<boolean>(true);\n\n protected toggle(): void {\n if (!this.expandable()) {\n return;\n }\n this.expanded.update((value) => !value);\n }\n}\n","<!-- Single <ng-content> outside any @if blocks. Angular accepts only one\n default slot per component; duplicate <ng-content> elements caused\n children to silently drop when control flow chose a non-matching branch. -->\n@if (expandable()) {\n <button\n type=\"button\"\n class=\"group-header\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n @if (icon()) {\n <ds-icon\n class=\"group-icon\"\n [name]=\"icon()!\"\n [size]=\"18\"\n >\n </ds-icon>\n } @else {\n <!-- `[ds-group-icon]` is selector-distinct from `[icon]` slots used on\n sidenav-item children, so projected icons don't get swallowed when\n a consumer puts items inside the group. -->\n <span class=\"group-icon\">\n <ng-content select=\"[ds-group-icon]\"></ng-content>\n </span>\n }\n\n @if (label()) {\n <span class=\"group-title\">\n {{ label() }}\n </span>\n }\n\n <ds-icon\n class=\"group-caret\"\n name=\"chevronDown\"\n [class.open]=\"expanded()\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n} @else if (label()) {\n <span class=\"group-label\">\n {{ label() }}\n </span>\n}\n\n<div\n class=\"group-body\"\n [class.hidden]=\"expandable() && !expanded()\"\n [attr.inert]=\"expandable() && !expanded() ? '' : null\"\n>\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\n@Component({\n selector: 'ds-sidenav-item',\n standalone: true,\n imports: [IconComponent, RouterLink, RouterLinkActive, NgTemplateOutlet],\n templateUrl: './sidenav-item.component.html',\n styleUrl: './sidenav-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SidenavItemComponent {\n // `icon` is optional — consumers without a DS IconName can project a custom\n // icon via the `[icon]` content slot. When both are supplied, the input\n // wins (legacy DS-consumer behaviour).\n readonly icon = input<IconName | null>(null);\n readonly label = input.required<string>();\n readonly href = input<string>('');\n // Angular RouterLink accepts both string and array forms — mirror that so\n // consumers can pass dynamic segments (e.g. `['/programs', id, 'overview']`).\n readonly routerLink = input<string | readonly unknown[] | null>(null);\n readonly active = input<boolean>(false);\n readonly badge = input<number | null>(null);\n readonly hasAlert = input<boolean>(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly linkClasses = computed(() => {\n const parts = ['item'];\n if (this.active()) {\n parts.push('active');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n\n return parts.join(' ');\n });\n}\n","<!-- Selector-scoped slots ([icon], [trailing]) coexist with no default\n <ng-content> here — projection goes via attributes only, so consumers\n can compose icon + label + arbitrary trailing content (status pill,\n status icon, etc.). The two <a> variants (routerLink vs href) share one\n #content template so the inner markup isn't duplicated. -->\n@if (routerLink()) {\n <a\n #rla=\"routerLinkActive\"\n routerLinkActive=\"active\"\n [routerLink]=\"disabled() ? null : routerLink()\"\n [class]=\"linkClasses()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n} @else {\n <a\n [href]=\"href() || '#'\"\n [class]=\"linkClasses()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n}\n\n<ng-template #content>\n @if (icon()) {\n <ds-icon\n class=\"icon\"\n [name]=\"icon()!\"\n [size]=\"20\"\n >\n </ds-icon>\n } @else {\n <span class=\"icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n\n @if (label()) {\n <span class=\"item-label\">\n {{ label() }}\n </span>\n }\n\n <span class=\"trailing\">\n <ng-content select=\"[trailing]\"></ng-content>\n </span>\n\n @if (badge() !== null) {\n <span class=\"count\">\n {{ badge() }}\n </span>\n }\n\n @if (hasAlert()) {\n <span class=\"alert\"></span>\n }\n</ng-template>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ds-topbar',\n standalone: true,\n templateUrl: './topbar.component.html',\n styleUrl: './topbar.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TopBarComponent {}\n","<header class=\"topbar\">\n <div class=\"title\">\n <ng-content select=\"[title]\"></ng-content>\n </div>\n\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n\n <div class=\"spacer\">\n <ng-content select=\"[search]\"></ng-content>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</header>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\n\n@Component({\n selector: 'ds-page-header',\n standalone: true,\n templateUrl: './page-header.component.html',\n styleUrl: './page-header.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PageHeaderComponent {\n readonly eyebrow = input<string>('');\n readonly title = input.required<string>();\n readonly subtitle = input<string>('');\n readonly compact = input<boolean>(false);\n readonly divider = input<boolean>(false);\n readonly metaDivider = input<boolean>(false);\n\n protected readonly classes = computed(() => {\n const parts = ['page-header'];\n if (this.compact()) {\n parts.push('compact');\n }\n if (this.divider()) {\n parts.push('with-divider');\n }\n if (this.metaDivider()) {\n parts.push('with-meta-divider');\n }\n\n return parts.join(' ');\n });\n}\n","<header [class]=\"classes()\">\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n\n <div class=\"row title-row\">\n <div class=\"title-block\">\n @if (eyebrow()) {\n <div class=\"eyebrow\">\n {{ eyebrow() }}\n </div>\n }\n\n <div class=\"title-line\">\n <h1 class=\"title\">\n {{ title() }}\n </h1>\n\n <ng-content select=\"[title-badge]\"></ng-content>\n </div>\n\n @if (subtitle()) {\n <p class=\"subtitle\">\n {{ subtitle() }}\n </p>\n }\n\n <div class=\"meta\">\n <ng-content select=\"[meta]\"></ng-content>\n </div>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n\n <ng-content select=\"[tabs]\"></ng-content>\n</header>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { ModalSize } from './modal.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-modal-card',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './modal-card.component.html',\n styleUrl: './modal.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ModalCardComponent {\n readonly size = input<ModalSize>('md');\n readonly danger = input<boolean>(false);\n readonly title = input.required<string>();\n readonly showClose = input<boolean>(true);\n readonly icon = input<IconName | null>(null);\n readonly dialogRole = input<'dialog' | 'alertdialog'>('dialog');\n readonly closed = output<void>();\n\n protected readonly titleId = `ds-modal-title-${++nextId}`;\n\n protected readonly classes = computed(() => {\n const parts = ['modal', this.size()];\n if (this.danger()) {\n parts.push('danger');\n }\n\n return parts.join(' ');\n });\n\n protected onClose(): void {\n this.closed.emit();\n }\n}\n","<div\n [attr.role]=\"dialogRole()\"\n aria-modal=\"true\"\n [class]=\"classes()\"\n [attr.aria-labelledby]=\"titleId\"\n>\n <div class=\"header\">\n @if (icon(); as iconName) {\n <span\n class=\"icon-badge\"\n [class.danger]=\"danger()\"\n >\n <ds-icon\n [name]=\"iconName\"\n [size]=\"20\"\n />\n </span>\n }\n\n <h2\n class=\"title\"\n [id]=\"titleId\"\n >\n {{ title() }}\n </h2>\n\n @if (showClose()) {\n <button\n class=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n (click)=\"onClose()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n >\n </ds-icon>\n </button>\n }\n </div>\n\n <div class=\"body\">\n <ng-content select=\"[body]\"></ng-content>\n\n <div class=\"impact\">\n <ng-content select=\"[impact]\"></ng-content>\n </div>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n","import {\n Component,\n DestroyRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ModalCardComponent } from './modal-card.component';\nimport { DsStaticPreview } from '../static-preview.directive';\nimport type { ModalSize } from './modal.types';\n\n@Component({\n selector: 'ds-modal',\n standalone: true,\n imports: [ModalCardComponent, A11yModule],\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n})\nexport class ModalComponent {\n private readonly doc = inject(DOCUMENT);\n protected readonly preview = inject(DsStaticPreview);\n\n readonly open = model<boolean>(false);\n readonly size = input<ModalSize>('md');\n readonly danger = input<boolean>(false);\n readonly title = input.required<string>();\n readonly closed = output<void>();\n readonly confirmed = output<void>();\n\n /** Dialog is in the DOM (kept true through the leave animation). */\n protected readonly rendered = signal(false);\n /** Playing the scrim fade-out leave animation. */\n protected readonly closing = signal(false);\n private wasOpen = false;\n\n constructor() {\n // open → DOM lifecycle: opening renders now; closing keeps the dialog mounted\n // so the leave animation can play (teardown in onLeaveEnd). Skipped in preview\n // (always shown). Reduced-motion zeroes the durations → close is instant.\n effect(() => {\n if (this.preview.staticPreview()) {\n return;\n }\n const isOpen = this.open();\n if (isOpen) {\n this.closing.set(false);\n this.rendered.set(true);\n } else if (this.wasOpen) {\n this.closing.set(true);\n }\n this.wasOpen = isOpen;\n });\n\n // Lock background scroll while the dialog occupies the screen (skipped in\n // preview); keyed on `rendered` so the lock survives the leave animation.\n effect(() => {\n if (this.preview.staticPreview()) {\n return;\n }\n this.doc.body.style.overflow = this.rendered() ? 'hidden' : '';\n });\n inject(DestroyRef).onDestroy(() => {\n this.doc.body.style.overflow = '';\n });\n }\n\n protected onClose(): void {\n if (this.preview.staticPreview()) {\n return;\n }\n this.open.set(false);\n }\n\n protected onLeaveEnd(event: AnimationEvent): void {\n // Angular scopes @keyframes names under emulated encapsulation, so\n // event.animationName arrives as `_ngcontent-…_modal-out`, not the bare\n // name — match the suffix or teardown never fires and the lock leaks.\n if (!event.animationName.endsWith('modal-out') || !this.closing()) {\n return;\n }\n this.closing.set(false);\n this.rendered.set(false);\n this.closed.emit();\n }\n\n protected onBackdrop(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.onClose();\n }\n }\n}\n","@if (rendered() || preview.staticPreview()) {\n <div\n [class]=\"preview.staticPreview() ? 'modal-static' : 'modal-backdrop'\"\n [class.closing]=\"closing()\"\n (click)=\"onBackdrop($event)\"\n (keydown.escape)=\"onClose()\"\n (animationend)=\"onLeaveEnd($event)\"\n >\n <ds-modal-card\n [cdkTrapFocus]=\"!preview.staticPreview()\"\n [cdkTrapFocusAutoCapture]=\"!preview.staticPreview()\"\n [size]=\"size()\"\n [danger]=\"danger()\"\n [title]=\"title()\"\n (closed)=\"onClose()\"\n >\n <ng-container body>\n <ng-content select=\"[body]\"></ng-content>\n </ng-container>\n\n <ng-container impact>\n <ng-content select=\"[impact]\"></ng-content>\n </ng-container>\n\n <ng-container actions>\n <ng-content select=\"[actions]\"></ng-content>\n </ng-container>\n </ds-modal-card>\n </div>\n}\n","import { InjectionToken } from '@angular/core';\nimport type { IconName } from '../../icons/icons.data';\n\nexport type ModalConfirmTone = 'default' | 'danger';\n\nexport interface ModalConfirmOptions {\n title: string;\n message?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n tone?: ModalConfirmTone;\n icon?: IconName;\n /** When set, the confirm button stays disabled until the user types this\n * exact phrase — a guard for high-stakes destructive actions. */\n typeToConfirm?: string;\n}\n\nexport interface ModalConfirmContext {\n options: ModalConfirmOptions;\n resolve: (result: boolean) => void;\n}\n\nexport const MODAL_CONFIRM_DATA = new InjectionToken<ModalConfirmContext>(\n 'MODAL_CONFIRM_DATA',\n);\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ButtonComponent } from '../button/button.component';\nimport type { ButtonColor } from '../button/button.types';\nimport { ModalCardComponent } from './modal-card.component';\nimport { MODAL_CONFIRM_DATA } from './modal-confirm.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-modal-confirm',\n standalone: true,\n imports: [CdkTrapFocus, ButtonComponent, ModalCardComponent],\n templateUrl: './modal-confirm.component.html',\n styleUrl: './modal-confirm.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ModalConfirmComponent {\n private readonly context = inject(MODAL_CONFIRM_DATA);\n\n protected readonly options = this.context.options;\n protected readonly tone = this.options.tone ?? 'default';\n protected readonly confirmColor: ButtonColor =\n this.tone === 'danger' ? 'error' : 'primary';\n\n protected readonly uid = `ds-modal-confirm-${++nextId}`;\n protected readonly messageId = `${this.uid}-message`;\n\n protected readonly typed = signal('');\n protected readonly confirmDisabled = computed(() => {\n const phrase = this.options.typeToConfirm;\n\n return !!phrase && this.typed() !== phrase;\n });\n\n protected onType(event: Event): void {\n this.typed.set((event.target as HTMLInputElement).value);\n }\n\n protected confirm(): void {\n if (this.confirmDisabled()) {\n return;\n }\n this.context.resolve(true);\n }\n\n protected cancel(): void {\n this.context.resolve(false);\n }\n}\n","<ds-modal-card\n [title]=\"options.title\"\n [danger]=\"tone === 'danger'\"\n [icon]=\"options.icon ?? null\"\n [showClose]=\"false\"\n dialogRole=\"alertdialog\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [attr.aria-describedby]=\"options.message ? messageId : null\"\n>\n <ng-container body>\n @if (options.message) {\n <p\n class=\"message\"\n [id]=\"messageId\"\n >\n {{ options.message }}\n </p>\n }\n\n @if (options.typeToConfirm; as phrase) {\n <label class=\"confirm-field\">\n <span class=\"confirm-hint\">\n Type <b>{{ phrase }}</b> to confirm\n </span>\n\n <input\n type=\"text\"\n class=\"confirm-input\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [value]=\"typed()\"\n (input)=\"onType($event)\"\n />\n </label>\n }\n </ng-container>\n\n <ng-container actions>\n <ds-button\n color=\"neutral\"\n variant=\"outline\"\n (pressed)=\"cancel()\"\n >\n {{ options.cancelLabel ?? 'Cancel' }}\n </ds-button>\n\n <ds-button\n [color]=\"confirmColor\"\n [disabled]=\"confirmDisabled()\"\n (pressed)=\"confirm()\"\n >\n {{ options.confirmLabel ?? 'Confirm' }}\n </ds-button>\n </ng-container>\n</ds-modal-card>\n","import { Injectable, Injector, inject } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ModalConfirmComponent } from './modal-confirm.component';\nimport { disposeWithLeave } from '../overlay-motion';\nimport {\n MODAL_CONFIRM_DATA,\n type ModalConfirmContext,\n type ModalConfirmOptions,\n} from './modal-confirm.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n /** Open a confirmation dialog. Resolves true on confirm, false on cancel,\n * backdrop click or Escape. */\n confirm(options: ModalConfirmOptions): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n panelClass: 'ds-overlay-pane',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n let settled = false;\n const finish = (result: boolean): void => {\n if (settled) {\n return;\n }\n settled = true;\n disposeWithLeave(overlayRef);\n resolve(result);\n };\n\n const context: ModalConfirmContext = { options, resolve: finish };\n const injector = Injector.create({\n parent: this.injector,\n providers: [{ provide: MODAL_CONFIRM_DATA, useValue: context }],\n });\n\n overlayRef.backdropClick().subscribe(() => finish(false));\n overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n finish(false);\n }\n });\n overlayRef.attach(\n new ComponentPortal(ModalConfirmComponent, null, injector),\n );\n\n // Paint the scrim via the DS token rather than relying on CDK's prebuilt\n // dark-backdrop CSS (which the library doesn't ship). Matches ds-modal.\n if (overlayRef.backdropElement) {\n overlayRef.backdropElement.style.backgroundColor =\n 'var(--surface-scrim)';\n }\n });\n }\n}\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { BannerVariant } from './banner.types';\n\n@Component({\n selector: 'ds-banner',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './banner.component.html',\n styleUrl: './banner.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class BannerComponent {\n readonly variant = input<BannerVariant>('info');\n readonly title = input<string>('');\n readonly dismissible = input<boolean>(false);\n readonly icon = input<IconName | null>(null);\n readonly compact = input<boolean>(false);\n readonly layout = input<'stacked' | 'row'>('stacked');\n readonly accentRail = input<boolean>(true);\n readonly dismissed = output<void>();\n\n @HostBinding('class.no-rail')\n protected get noRail(): boolean {\n return !this.accentRail();\n }\n\n // Announce banners to assistive tech: errors/warnings interrupt (alert),\n // info/success wait their turn (status). A statically-rendered banner is\n // present at first paint, so a `status` region won't be re-read needlessly.\n @HostBinding('attr.role')\n protected get ariaRole(): 'alert' | 'status' {\n const value = this.variant();\n\n return value === 'error' || value === 'warning' || value === 'severe'\n ? 'alert'\n : 'status';\n }\n\n @HostBinding('attr.aria-live')\n protected get ariaLive(): 'assertive' | 'polite' {\n return this.ariaRole === 'alert' ? 'assertive' : 'polite';\n }\n\n protected readonly classes = computed(() => {\n const parts = ['banner', this.variant(), `layout-${this.layout()}`];\n if (this.compact()) {\n parts.push('compact');\n }\n\n return parts.join(' ');\n });\n\n protected readonly defaultIcon = computed<IconName>(() => {\n const variant = this.variant();\n if (variant === 'success') {\n return 'success';\n }\n if (variant === 'warning' || variant === 'severe') {\n return 'warn';\n }\n if (variant === 'error') {\n return 'error';\n }\n\n return 'info';\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div [class]=\"classes()\">\n <ds-icon\n class=\"icon\"\n [name]=\"icon() ?? defaultIcon()\"\n [size]=\"20\"\n >\n </ds-icon>\n\n <div class=\"body\">\n @if (title()) {\n <div class=\"title\">\n {{ title() }}\n </div>\n }\n\n <ng-content></ng-content>\n </div>\n\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n @if (dismissible()) {\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"onDismiss()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n >\n </ds-icon>\n </button>\n }\n</div>\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { AlertVariant } from './alert.types';\n\n@Component({\n selector: 'ds-alert',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AlertComponent {\n readonly variant = input<AlertVariant>('info');\n readonly title = input<string>('');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly icon = input<IconName | null>(null);\n readonly dismissed = output<void>();\n\n @HostBinding('attr.role')\n protected get ariaRole(): 'alert' | 'status' {\n const value = this.variant();\n\n return value === 'error' || value === 'warning' ? 'alert' : 'status';\n }\n\n @HostBinding('attr.aria-live')\n protected get ariaLive(): 'assertive' | 'polite' {\n return this.ariaRole === 'alert' ? 'assertive' : 'polite';\n }\n\n protected readonly classes = computed(() => `alert ${this.variant()}`);\n\n protected readonly defaultIcon = computed<IconName>(() => {\n const variant = this.variant();\n if (variant === 'success') {\n return 'success';\n }\n if (variant === 'warning') {\n return 'warn';\n }\n if (variant === 'error') {\n return 'error';\n }\n\n return 'info';\n });\n\n protected readonly resolvedIcon = computed<IconName>(\n () => this.icon() ?? this.defaultIcon(),\n );\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div [class]=\"classes()\">\n <ds-icon\n class=\"a-icon\"\n [name]=\"resolvedIcon()\"\n [size]=\"16\"\n >\n </ds-icon>\n\n <div class=\"a-body\">\n @if (title()) {\n <div class=\"a-title\">{{ title() }}</div>\n }\n <div class=\"a-msg\"><ng-content /></div>\n <div class=\"a-actions\"><ng-content select=\"[actions]\" /></div>\n </div>\n\n @if (dismissible()) {\n <button\n class=\"a-close\"\n type=\"button\"\n (click)=\"onDismiss()\"\n aria-label=\"Dismiss\"\n >\n <ds-icon name=\"x\" [size]=\"14\"></ds-icon>\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { DropzoneFile } from './dropzone.types';\n\n@Component({\n selector: 'ds-dropzone',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './dropzone.component.html',\n styleUrl: './dropzone.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DropzoneComponent {\n readonly accept = input<string>('');\n readonly multiple = input<boolean>(false);\n readonly files = model<DropzoneFile[]>([]);\n /** Disables the dropzone: blocks all file-picking interactions and signals unavailability. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Restricts the dropzone to a single file; narrows the panel to `--col-cap-text`. */\n readonly single = input(false, { transform: booleanAttribute });\n\n protected readonly dragOver = signal<boolean>(false);\n\n readonly filesAdded = output<File[]>();\n readonly fileRemoved = output<DropzoneFile>();\n\n protected readonly classes = computed(() => {\n const parts = ['dropzone'];\n if (this.dragOver()) {\n parts.push('active');\n }\n if (this.files().length > 0) {\n parts.push('has-files');\n }\n if (this.disabled()) {\n parts.push('disabled');\n }\n if (this.single()) {\n parts.push('single');\n }\n\n return parts.join(' ');\n });\n\n protected onDragOver(event: DragEvent): void {\n if (this.disabled()) {\n return;\n }\n event.preventDefault();\n this.dragOver.set(true);\n }\n\n protected onDragLeave(): void {\n this.dragOver.set(false);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver.set(false);\n if (this.disabled()) {\n return;\n }\n const list = event.dataTransfer?.files;\n if (list) {\n this.filesAdded.emit(Array.from(list));\n }\n }\n\n protected onPickerChange(event: Event): void {\n if (this.disabled()) {\n return;\n }\n const list = (event.target as HTMLInputElement).files;\n if (list) {\n this.filesAdded.emit(Array.from(list));\n }\n }\n\n protected onRemove(file: DropzoneFile): void {\n this.fileRemoved.emit(file);\n }\n\n protected fileMeta(file: DropzoneFile): string {\n const size = this.formatSize(file.size);\n if (file.message) {\n return `${size} · ${file.message}`;\n }\n if (file.state === 'queued') {\n return size;\n }\n\n return `${size} · ${file.state}`;\n }\n\n protected formatSize(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n protected fileIcon(state: DropzoneFile['state']): 'file' | 'check' | 'error' {\n if (state === 'success') {\n return 'check';\n }\n if (state === 'error') {\n return 'error';\n }\n\n return 'file';\n }\n}\n","<label\n [class]=\"classes()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event)\"\n>\n <input\n type=\"file\"\n class=\"dz-input\"\n aria-label=\"Upload files\"\n [attr.accept]=\"accept() || null\"\n [multiple]=\"single() ? false : multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onPickerChange($event)\"\n />\n\n @if (files().length === 0) {\n <ds-icon\n name=\"upload\"\n [size]=\"24\"\n >\n </ds-icon>\n\n <div class=\"title\">\n Drop files here\n </div>\n\n <div class=\"hint\">\n or click to browse\n </div>\n\n <ng-content select=\"[hint]\"></ng-content>\n } @else {\n <div class=\"file-list\">\n @for (file of files(); track file.id) {\n <div [class]=\"'file ' + file.state\">\n <ds-icon\n class=\"icon\"\n [name]=\"fileIcon(file.state)\"\n [size]=\"20\"\n >\n </ds-icon>\n\n <div class=\"main\">\n <div class=\"name\">\n {{ file.name }}\n </div>\n\n <div class=\"meta\">\n {{ fileMeta(file) }}\n </div>\n\n @if (file.state === 'uploading') {\n <div class=\"progress\">\n <div\n class=\"progress-fill\"\n [style.width.%]=\"file.progress\"\n >\n </div>\n </div>\n }\n </div>\n\n <button\n class=\"remove\"\n type=\"button\"\n [attr.aria-label]=\"'Remove ' + file.name\"\n (click)=\"\n onRemove(file); $event.preventDefault(); $event.stopPropagation()\n \"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n >\n </ds-icon>\n </button>\n </div>\n }\n </div>\n }\n</label>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport { DsOverlayCloseRef } from '../../overlay/ds-overlay-close-ref';\n\n@Component({\n selector: 'ds-menu-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './menu-item.component.html',\n styleUrl: './menu-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n // The host sits between the role=\"menu\" <ul> and the role=\"menuitem\" button,\n // so mark it presentational to keep the menu→menuitem ownership intact.\n host: { role: 'none' },\n})\nexport class MenuItemComponent {\n // The containing overlay (e.g. popover), if any — selecting an item closes it.\n // Optional, so menu-items also work standalone.\n private readonly closeRef = inject(DsOverlayCloseRef, { optional: true });\n private readonly button =\n viewChild.required<ElementRef<HTMLButtonElement>>('button');\n\n readonly icon = input<IconName | null>(null);\n readonly disabled = input<boolean>(false);\n readonly danger = input<boolean>(false);\n readonly pressed = output<MouseEvent>();\n\n /** Roving tabindex, owned by ds-menu — exactly one item is tabbable (0), the\n * rest -1. Defaults true so a standalone item (outside ds-menu) stays\n * reachable. */\n readonly tabbable = signal(true);\n\n /** Move keyboard focus to this item's control. */\n focus(): void {\n this.button().nativeElement.focus();\n }\n\n /** Whether `node` lives inside this item's control (used by ds-menu to find\n * the currently focused item during keyboard nav). */\n contains(node: Node | null): boolean {\n return !!node && this.button().nativeElement.contains(node);\n }\n\n /** Visible label text — used by ds-menu's type-ahead. */\n label(): string {\n return this.button().nativeElement.textContent?.trim() ?? '';\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.pressed.emit(event);\n this.closeRef?.close();\n }\n}\n","<button\n #button\n class=\"menu-item\"\n type=\"button\"\n role=\"menuitem\"\n [attr.tabindex]=\"tabbable() ? 0 : -1\"\n [disabled]=\"disabled()\"\n [class.danger]=\"danger()\"\n (click)=\"onClick($event)\"\n>\n @if (icon()) {\n <ds-icon\n [name]=\"icon()!\"\n [size]=\"16\"\n >\n </ds-icon>\n } @else {\n <span class=\"menu-item-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n }\n\n <span>\n <ng-content></ng-content>\n </span>\n</button>\n","import {\n Component,\n ViewEncapsulation,\n contentChildren,\n effect,\n signal,\n} from '@angular/core';\nimport { MenuItemComponent } from './menu-item.component';\n\n@Component({\n selector: 'ds-menu',\n standalone: true,\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n // Keyboard nav bubbles up from the focused menuitem button. Hand-rolled roving\n // (mirrors ds-tabs) — kept signal-based and consistent with the rest of the DS.\n host: { '(keydown)': 'onKeydown($event)' },\n})\nexport class MenuComponent {\n private readonly items = contentChildren(MenuItemComponent);\n /** Index of the roving-focus item — the single item reachable via Tab. */\n private readonly activeIndex = signal(0);\n\n constructor() {\n // Roving tabindex: exactly one enabled item is tabbable (0), the rest -1.\n effect(() => {\n const items = this.items();\n if (!items.length) {\n return;\n }\n let index = this.activeIndex();\n if (index >= items.length || items[index].disabled()) {\n index = items.findIndex((item) => !item.disabled());\n }\n items.forEach((item, i) => item.tabbable.set(i === index));\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.items();\n if (!items.length) {\n return;\n }\n const count = items.length;\n const focused = items.findIndex((item) =>\n item.contains(event.target as Node | null),\n );\n const from = focused >= 0 ? focused : this.activeIndex();\n\n // Single-character type-ahead: jump to the next enabled item whose label\n // starts with the typed character.\n if (\n event.key.length === 1 &&\n /\\S/.test(event.key) &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n ) {\n this.typeAhead(event.key, from, items);\n event.preventDefault();\n\n return;\n }\n\n let next: number;\n switch (event.key) {\n case 'ArrowDown':\n next = (from + 1) % count;\n break;\n case 'ArrowUp':\n next = (from - 1 + count) % count;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = count - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n // Skip disabled items in the travel direction (guard against all-disabled).\n const step = event.key === 'ArrowUp' || event.key === 'End' ? -1 : 1;\n let guard = 0;\n while (items[next]?.disabled() && guard < count) {\n next = (next + step + count) % count;\n guard++;\n }\n if (!items[next] || items[next].disabled()) {\n return;\n }\n this.focusItem(next);\n }\n\n private typeAhead(\n char: string,\n from: number,\n items: readonly MenuItemComponent[],\n ): void {\n const needle = char.toLowerCase();\n const count = items.length;\n for (let offset = 1; offset <= count; offset++) {\n const i = (from + offset) % count;\n const item = items[i];\n if (!item.disabled() && item.label().toLowerCase().startsWith(needle)) {\n this.focusItem(i);\n\n return;\n }\n }\n }\n\n private focusItem(index: number): void {\n this.activeIndex.set(index);\n this.items()[index].focus();\n }\n}\n","<ul\n class=\"menu\"\n role=\"menu\"\n>\n <ng-content></ng-content>\n</ul>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport { LoadingOverlayComponent } from '../loading-overlay/loading-overlay.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { EmptyStateVariant } from './empty-state.types';\n\n@Component({\n selector: 'ds-empty-state',\n standalone: true,\n imports: [IconComponent, LoadingOverlayComponent],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class EmptyStateComponent {\n readonly variant = input<EmptyStateVariant>('none');\n readonly icon = input<IconName | null>(null);\n readonly title = input<string>('');\n readonly body = input<string>('');\n\n protected readonly classes = computed(() => {\n const variant = this.variant();\n\n return variant === 'none' ? 'empty-state' : `empty-state ${variant}`;\n });\n\n protected readonly resolvedIcon = computed<IconName>(() => {\n const explicit = this.icon();\n if (explicit) {\n return explicit;\n }\n const variant = this.variant();\n if (variant === 'error') {\n return 'warn';\n }\n if (variant === 'locked') {\n return 'lock';\n }\n if (variant === 'success') {\n return 'success';\n }\n if (variant === 'loading') {\n return 'package';\n }\n\n return 'package';\n });\n}\n","<ds-loading-overlay\n [loading]=\"variant() === 'loading'\"\n [blur]=\"true\"\n spinnerSize=\"lg\"\n>\n <span [class]=\"classes()\">\n <span class=\"icon-tile\">\n <ds-icon\n [name]=\"resolvedIcon()\"\n [size]=\"28\"\n >\n </ds-icon>\n </span>\n\n @if (title()) {\n <span class=\"title\">\n {{ title() }}\n </span>\n }\n\n @if (body()) {\n <span class=\"body\">\n {{ body() }}\n </span>\n }\n\n <span class=\"cta\">\n <ng-content select=\"[actions]\"></ng-content>\n </span>\n </span>\n</ds-loading-overlay>\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport type { ProgressVariant } from './progress.types';\n\n@Component({\n selector: 'ds-progress',\n standalone: true,\n imports: [],\n templateUrl: './progress.component.html',\n styleUrl: './progress.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'isIndet() ? null : clampedValue()',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.success]': \"variant() === 'success'\",\n '[class.warn]': \"variant() === 'warn'\",\n '[class.error]': \"variant() === 'error'\",\n '[class.indeterminate]': 'isIndet()',\n },\n})\nexport class ProgressComponent {\n readonly value = input<number>(0);\n readonly variant = input<ProgressVariant>('default');\n /** Accessible name for the progress bar (e.g. \"Upload progress\"). */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly clampedValue = computed(() => {\n const value = this.value();\n\n return Math.max(0, Math.min(100, value));\n });\n\n protected readonly isIndet = computed(\n () => this.variant() === 'indeterminate',\n );\n}\n","@if (isIndet()) {\n <span></span>\n} @else {\n <span [style.width.%]=\"clampedValue()\"></span>\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ds-accordion',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n display: block;\n border: var(--border-width-default) solid var(--border-divider);\n border-radius: var(--radius-lg);\n overflow: hidden;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AccordionComponent {}\n","import { Component, ViewEncapsulation, input, model } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-accordion-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AccordionItemComponent {\n readonly title = input<string>('');\n readonly expanded = model<boolean>(false);\n\n protected readonly uid = `ds-accordion-${++nextId}`;\n protected readonly headId = `${this.uid}-head`;\n protected readonly bodyId = `${this.uid}-body`;\n\n protected toggle(): void {\n this.expanded.set(!this.expanded());\n }\n}\n","<button\n type=\"button\"\n class=\"head\"\n [id]=\"headId\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"bodyId\"\n (click)=\"toggle()\"\n>\n <span>\n {{ title() }}\n </span>\n\n <ng-content select=\"[badge]\"></ng-content>\n\n <ds-icon\n name=\"chevronRight\"\n class=\"chev\"\n [size]=\"16\"\n />\n</button>\n\n<div\n class=\"body\"\n role=\"region\"\n [id]=\"bodyId\"\n [attr.aria-labelledby]=\"headId\"\n [class.is-open]=\"expanded()\"\n [attr.inert]=\"expanded() ? null : ''\"\n>\n <div class=\"body-inner\">\n <div class=\"body-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n/** Where the step caption sits relative to its node: stacked beneath it\n * (`bottom`, full-width wizard) or beside it (`inline`, compact header row). */\nexport type StepperLabelPosition = 'bottom' | 'inline';\n\n@Component({\n selector: 'ds-stepper',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'list',\n 'aria-label': 'Progress',\n '[class.labels-inline]': \"labelPosition() === 'inline'\",\n },\n})\nexport class StepperComponent {\n readonly steps = input<readonly string[]>([]);\n readonly current = input<number>(0);\n readonly labelPosition = input<StepperLabelPosition>('bottom');\n\n protected stepState(i: number): 'completed' | 'current' | 'upcoming' {\n const currentStep = this.current();\n if (i < currentStep) {\n return 'completed';\n }\n if (i === currentStep) {\n return 'current';\n }\n\n return 'upcoming';\n }\n\n protected nodeClass(i: number): string {\n const currentStep = this.current();\n if (i < currentStep) {\n return 'node done';\n }\n if (i === currentStep) {\n return 'node active';\n }\n\n return 'node';\n }\n\n protected connectorClass(i: number): string {\n return i < this.current() ? 'connector done' : 'connector';\n }\n}\n","@for (label of steps(); track $index; let i = $index, last = $last) {\n <span\n role=\"listitem\"\n class=\"step\"\n [class.is-current]=\"i === current()\"\n [attr.aria-current]=\"i === current() ? 'step' : null\"\n >\n <span\n aria-hidden=\"true\"\n [class]=\"nodeClass(i)\"\n >\n @if (i < current()) {\n <ds-icon\n name=\"check\"\n [size]=\"14\"\n />\n } @else {\n {{ i + 1 }}\n }\n </span>\n\n <span\n aria-hidden=\"true\"\n class=\"step-label\"\n >\n {{ label }}\n </span>\n\n @if (!last) {\n <span\n aria-hidden=\"true\"\n [class]=\"connectorClass(i)\"\n >\n </span>\n }\n\n <span class=\"visually-hidden\">\n Step {{ i + 1 }}: {{ label }} ({{ stepState(i) }})\n </span>\n </span>\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { TooltipPlacement } from './tooltip.types';\n\n@Component({\n selector: 'ds-tooltip-panel',\n standalone: true,\n template: `{{ text() }}`,\n styleUrl: './tooltip-panel.component.scss',\n host: {\n role: 'tooltip',\n '[attr.id]': 'panelId()',\n '[class.top]': \"placement() === 'top'\",\n '[class.bottom]': \"placement() === 'bottom'\",\n '[class.left]': \"placement() === 'left'\",\n '[class.right]': \"placement() === 'right'\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class TooltipPanelComponent {\n readonly text = input.required<string>();\n readonly placement = input.required<TooltipPlacement>();\n readonly panelId = input<string>('');\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnDestroy,\n inject,\n input,\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TooltipPanelComponent } from './tooltip-panel.component';\nimport type { TooltipPlacement } from './tooltip.types';\n\nlet nextId = 0;\n\n@Directive({\n selector: '[dsTooltip]',\n standalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly overlay = inject(Overlay);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly dsTooltip = input<string>('');\n readonly dsTooltipPlacement = input<TooltipPlacement>('top');\n readonly dsTooltipDelay = input<number>(120);\n\n private ref: OverlayRef | null = null;\n private timer: number | null = null;\n private readonly tipId = `ds-tooltip-${++nextId}`;\n\n @HostListener('mouseenter')\n @HostListener('focus')\n protected onOpen(): void {\n if (!this.dsTooltip()) {\n return;\n }\n if (this.timer !== null) {\n clearTimeout(this.timer);\n }\n this.timer = window.setTimeout(() => this.show(), this.dsTooltipDelay());\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n protected onClose(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.ref?.dispose();\n this.ref = null;\n const host = this.host.nativeElement;\n const remaining = (host.getAttribute('aria-describedby') ?? '')\n .split(' ')\n .filter((id: string) => id && id !== this.tipId)\n .join(' ');\n if (remaining) {\n host.setAttribute('aria-describedby', remaining);\n } else {\n host.removeAttribute('aria-describedby');\n }\n }\n\n @HostListener('keydown.escape')\n protected onEscape(): void {\n if (this.ref) {\n this.onClose();\n }\n }\n\n private show(): void {\n const placement = this.dsTooltipPlacement();\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withPositions([this.positionFor(placement)]);\n\n this.ref = this.overlay.create({\n positionStrategy,\n panelClass: 'ds-overlay-pane',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const cmpRef = this.ref.attach(new ComponentPortal(TooltipPanelComponent));\n cmpRef.setInput('text', this.dsTooltip());\n cmpRef.setInput('placement', placement);\n cmpRef.setInput('panelId', this.tipId);\n const host = this.host.nativeElement;\n const existing = host.getAttribute('aria-describedby');\n host.setAttribute(\n 'aria-describedby',\n existing ? `${existing} ${this.tipId}` : this.tipId,\n );\n }\n\n private positionFor(placement: TooltipPlacement) {\n switch (placement) {\n case 'top':\n return {\n originX: 'center' as const,\n originY: 'top' as const,\n overlayX: 'center' as const,\n overlayY: 'bottom' as const,\n offsetY: -8,\n };\n case 'bottom':\n return {\n originX: 'center' as const,\n originY: 'bottom' as const,\n overlayX: 'center' as const,\n overlayY: 'top' as const,\n offsetY: 8,\n };\n case 'left':\n return {\n originX: 'start' as const,\n originY: 'center' as const,\n overlayX: 'end' as const,\n overlayY: 'center' as const,\n offsetX: -8,\n };\n case 'right':\n return {\n originX: 'end' as const,\n originY: 'center' as const,\n overlayX: 'start' as const,\n overlayY: 'center' as const,\n offsetX: 8,\n };\n }\n }\n\n ngOnDestroy(): void {\n this.onClose();\n }\n}\n","import {\n Component,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DsOverlayCloseRef } from '../../overlay/ds-overlay-close-ref';\nimport { DsStaticPreview } from '../static-preview.directive';\n\nexport type PopoverAlign = 'start' | 'end';\n\n@Component({\n selector: 'ds-popover',\n standalone: true,\n imports: [CdkTrapFocus, NgTemplateOutlet],\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n hostDirectives: [{ directive: DsStaticPreview, inputs: ['staticPreview'] }],\n // Expose this popover as a DsOverlayCloseRef so projected content (e.g.\n // ds-menu-item) can close it via DI — the popover never references a child.\n providers: [\n {\n provide: DsOverlayCloseRef,\n useExisting: forwardRef(() => PopoverComponent),\n },\n ],\n})\nexport class PopoverComponent implements OnDestroy, DsOverlayCloseRef {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n protected readonly preview = inject(DsStaticPreview);\n protected readonly panelTpl = viewChild<TemplateRef<unknown>>('panel');\n private ref: OverlayRef | null = null;\n\n readonly align = input<PopoverAlign>('start');\n\n /** ARIA role for the panel (e.g. 'dialog' for interactive popovers). When set,\n * the panel also traps focus, auto-captures it into the panel on open, and\n * restores it to the trigger on close (Escape or backdrop). Leave null for\n * plain, non-interactive text popovers. */\n readonly panelRole = input<string | null>(null);\n /** Accessible name for the panel; pair with `panelRole`. */\n readonly panelLabel = input<string | null>(null);\n\n /** Open/closed state — for callers binding `aria-expanded` on the trigger. */\n readonly opened = signal(false);\n\n toggle(trigger: HTMLElement): void {\n if (this.preview.staticPreview()) {\n return;\n }\n if (this.ref) {\n this.close();\n\n return;\n }\n const align = this.align();\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withPositions([\n {\n originX: align,\n originY: 'bottom',\n overlayX: align,\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: align,\n originY: 'top',\n overlayX: align,\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'ds-overlay-pane',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n };\n this.ref = this.overlay.create(cfg);\n this.ref.backdropClick().subscribe(() => this.close());\n this.ref.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n trigger.focus();\n }\n });\n this.ref.attach(new TemplatePortal(this.panelTpl()!, this.vcr));\n this.opened.set(true);\n }\n\n close(): void {\n disposeWithLeave(this.ref);\n this.ref = null;\n this.opened.set(false);\n }\n\n ngOnDestroy(): void {\n this.ref?.dispose();\n this.ref = null;\n }\n}\n","<!-- Projected content is captured ONCE here and stamped into whichever render\n site is active — duplicating ng-content across branches breaks projection. -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n\n@if (preview.staticPreview()) {\n <div\n class=\"popover\"\n [attr.role]=\"panelRole()\"\n [attr.aria-label]=\"panelLabel()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n}\n\n<ng-template #panel>\n <div\n class=\"popover\"\n [attr.role]=\"panelRole()\"\n [attr.aria-label]=\"panelLabel()\"\n [cdkTrapFocus]=\"!!panelRole()\"\n [cdkTrapFocusAutoCapture]=\"!!panelRole()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n</ng-template>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { ToastAction, ToastVariant } from './toast.types';\n\n/**\n * Single toast pill. Consumed by ToastRegion for service-driven runtime toasts\n * AND by static showcases that need to display a toast specimen inline.\n */\n@Component({\n selector: 'ds-toast',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ToastComponent {\n readonly variant = input<ToastVariant>('info');\n readonly title = input<string>('');\n readonly message = input<string>('');\n readonly dismissible = input<boolean>(false);\n readonly icon = input<IconName | null>(null);\n readonly action = input<ToastAction | null>(null);\n readonly dismissed = output<void>();\n\n protected onAction(action: ToastAction): void {\n action.handler();\n this.dismissed.emit();\n }\n\n protected readonly classes = computed(() => `toast ${this.variant()}`);\n\n /** Errors/warnings interrupt (assertive); info/success wait their turn. */\n protected readonly role = computed<'alert' | 'status'>(() =>\n this.variant() === 'error' || this.variant() === 'warning'\n ? 'alert'\n : 'status',\n );\n\n protected readonly defaultIcon = computed<IconName>(() => {\n switch (this.variant()) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warn';\n case 'error':\n return 'error';\n default:\n return 'info';\n }\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div\n aria-atomic=\"true\"\n [class]=\"classes()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"role() === 'alert' ? 'assertive' : 'polite'\"\n>\n <ds-icon\n class=\"icon\"\n [name]=\"icon() ?? defaultIcon()\"\n [size]=\"16\"\n />\n\n <div class=\"body\">\n @if (title()) {\n <div class=\"title\">\n {{ title() }}\n </div>\n }\n {{ message() }}\n <ng-content></ng-content>\n </div>\n\n @if (action(); as act) {\n <button\n type=\"button\"\n class=\"action\"\n (click)=\"onAction(act)\"\n >\n {{ act.label }}\n </button>\n }\n\n <span class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </span>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Dismiss\"\n (click)=\"onDismiss()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"14\"\n />\n </button>\n }\n</div>\n","import { Component, ViewEncapsulation, signal } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport type { ToastEntry } from './toast.types';\n\n// Must match the leave transition on :host in toast.component.scss (--duration-base).\nconst LEAVE_DURATION_MS = 180;\n\n@Component({\n selector: 'ds-toast-region',\n standalone: true,\n imports: [ToastComponent],\n templateUrl: './toast-region.component.html',\n styleUrl: './toast-region.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'region',\n 'aria-label': 'Notifications',\n },\n})\nexport class ToastRegionComponent {\n protected readonly entries = signal<readonly ToastEntry[]>([]);\n protected readonly leaving = signal<ReadonlySet<number>>(new Set());\n\n add(entry: ToastEntry): void {\n this.entries.update((existing) => [...existing, entry]);\n }\n\n remove(id: number): void {\n if (this.leaving().has(id)) {\n return;\n }\n this.leaving.update((set) => new Set(set).add(id));\n setTimeout(() => {\n this.entries.update((existing) =>\n existing.filter((entry) => entry.id !== id),\n );\n this.leaving.update((set) => {\n const next = new Set(set);\n next.delete(id);\n\n return next;\n });\n }, LEAVE_DURATION_MS);\n }\n\n protected isLeaving(id: number): boolean {\n return this.leaving().has(id);\n }\n\n clear(): void {\n this.entries.set([]);\n this.leaving.set(new Set());\n }\n}\n","@for (entry of entries(); track entry.id) {\n <ds-toast\n [variant]=\"entry.variant\"\n [title]=\"entry.title ?? ''\"\n [message]=\"entry.body\"\n [dismissible]=\"entry.dismissible\"\n [action]=\"entry.action ?? null\"\n [class.leaving]=\"isLeaving(entry.id)\"\n (dismissed)=\"remove(entry.id)\"\n />\n}\n","import { InjectionToken } from '@angular/core';\nimport type { DsToastPosition } from './toast.types';\n\nexport const DS_TOAST_POSITION = new InjectionToken<DsToastPosition>(\n 'DS_TOAST_POSITION',\n);\n\nexport const DS_TOAST_POSITION_DEFAULT: DsToastPosition = {\n horizontalPosition: 'right',\n verticalPosition: 'top',\n offset: 'var(--space-6)',\n};\n","import { ComponentRef, Injectable, inject } from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n GlobalPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastRegionComponent } from './toast-region.component';\nimport { DS_TOAST_POSITION, DS_TOAST_POSITION_DEFAULT } from './toast.config';\nimport type { ToastOptions, ToastRef, ToastEntry } from './toast.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private readonly overlay = inject(Overlay);\n private readonly position = inject(DS_TOAST_POSITION, { optional: true });\n private overlayRef: OverlayRef | null = null;\n private regionRef: ComponentRef<ToastRegionComponent> | null = null;\n private nextId = 1;\n\n show(opts: ToastOptions): ToastRef {\n this.ensureRegion();\n const id = this.nextId++;\n const entry: ToastEntry = {\n id,\n title: opts.title,\n body: opts.body,\n variant: opts.variant ?? 'info',\n dismissible: opts.dismissible ?? true,\n action: opts.action,\n };\n this.regionRef!.instance.add(entry);\n\n const ref: ToastRef = {\n id,\n dismiss: () => this.regionRef?.instance.remove(id),\n };\n\n const duration = opts.durationMs ?? 5000;\n if (duration > 0) {\n window.setTimeout(() => ref.dismiss(), duration);\n }\n\n return ref;\n }\n\n dismissAll(): void {\n this.regionRef?.instance.clear();\n }\n\n private ensureRegion(): void {\n if (this.overlayRef) {\n return;\n }\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n panelClass: 'ds-toast-panel',\n positionStrategy: this.buildPositionStrategy(),\n });\n this.regionRef = this.overlayRef.attach(\n new ComponentPortal(ToastRegionComponent),\n );\n }\n\n private buildPositionStrategy(): GlobalPositionStrategy {\n const config = this.position ?? DS_TOAST_POSITION_DEFAULT;\n const strategy = this.overlay.position().global();\n if (config.verticalPosition === 'top') {\n strategy.top(config.offset);\n } else {\n strategy.bottom(config.offset);\n }\n if (config.horizontalPosition === 'left') {\n strategy.left(config.offset);\n } else if (config.horizontalPosition === 'right') {\n strategy.right(config.offset);\n } else {\n strategy.centerHorizontally();\n }\n\n return strategy;\n }\n}\n","import {\n Component,\n DestroyRef,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { DrawerSize } from './drawer.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-drawer',\n standalone: true,\n imports: [IconComponent, A11yModule],\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n})\nexport class DrawerComponent {\n private readonly doc = inject(DOCUMENT);\n\n readonly open = model<boolean>(false);\n readonly size = input<DrawerSize>('md');\n readonly title = input<string>('');\n readonly closed = output<void>();\n\n protected readonly titleId = `ds-drawer-title-${++nextId}`;\n /** Panel is in the DOM (kept true through the slide-out). */\n protected readonly rendered = signal(false);\n /** Playing the slide-out + scrim-fade leave animation. */\n protected readonly closing = signal(false);\n private wasOpen = false;\n\n protected readonly classes = computed(() =>\n this.size() === 'lg' ? 'drawer lg' : 'drawer',\n );\n\n constructor() {\n // open → DOM lifecycle: opening renders now; closing keeps the panel mounted\n // and flips `closing` so the slide-out can play (teardown in onLeaveEnd).\n effect(() => {\n const isOpen = this.open();\n if (isOpen) {\n this.closing.set(false);\n this.rendered.set(true);\n } else if (this.wasOpen) {\n this.closing.set(true);\n }\n this.wasOpen = isOpen;\n });\n\n // Lock body scroll while the panel occupies the screen — keyed on `rendered`\n // so the lock survives the leave animation.\n effect(() => {\n this.doc.body.style.overflow = this.rendered() ? 'hidden' : '';\n });\n inject(DestroyRef).onDestroy(() => {\n this.doc.body.style.overflow = '';\n });\n }\n\n protected onClose(): void {\n this.open.set(false);\n }\n\n protected onLeaveEnd(event: AnimationEvent): void {\n // Angular scopes @keyframes names under emulated encapsulation, so\n // event.animationName arrives as `_ngcontent-…_drawer-out`, not the bare\n // name — match the suffix or teardown never fires and the lock leaks.\n if (!event.animationName.endsWith('drawer-out') || !this.closing()) {\n return;\n }\n this.closing.set(false);\n this.rendered.set(false);\n this.closed.emit();\n }\n\n protected onEscape(): void {\n if (this.open()) {\n this.onClose();\n }\n }\n}\n","@if (rendered()) {\n <div\n class=\"drawer-scrim\"\n [class.closing]=\"closing()\"\n (click)=\"onClose()\"\n >\n </div>\n\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [class]=\"classes()\"\n [class.closing]=\"closing()\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n (keydown.escape)=\"onClose()\"\n (animationend)=\"onLeaveEnd($event)\"\n >\n <header class=\"header\">\n <h4\n class=\"title\"\n [id]=\"titleId\"\n >\n {{ title() }}\n </h4>\n\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"onClose()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"16\"\n />\n </button>\n </header>\n\n <div class=\"body\">\n <ng-content select=\"[drawer-body]\"></ng-content>\n </div>\n\n <div class=\"footer\">\n <ng-content select=\"[drawer-footer]\"></ng-content>\n </div>\n </div>\n}\n","import {\n Component,\n DOCUMENT,\n ElementRef,\n ViewEncapsulation,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\n\n/** Bottom-anchored sheet — the mobile sibling of ds-drawer. Closes on scrim\n * tap, Escape, or a downward drag on the grab strip. While open it locks\n * body scroll. On wide viewports the panel is capped by\n * --ds-bottom-sheet-maxw and centred; prefer ds-modal / ds-drawer for\n * desktop-first layouts. position: fixed resolves against the nearest\n * ancestor containing block, so framed hosts contain the sheet. */\n@Component({\n selector: 'ds-bottom-sheet',\n standalone: true,\n templateUrl: './bottom-sheet.component.html',\n styleUrl: './bottom-sheet.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '(document:keydown.escape)': 'onEscape()',\n },\n})\nexport class BottomSheetComponent {\n readonly open = model<boolean>(false);\n readonly title = input<string>('');\n readonly closed = output<void>();\n\n private readonly doc = inject(DOCUMENT);\n private readonly sheetRef = viewChild<ElementRef<HTMLElement>>('sheet');\n\n protected readonly dragOffset = signal<number | null>(null);\n /** Sheet is in the DOM (kept true through the leave animation). */\n protected readonly rendered = signal(false);\n /** Playing the slide-down + scrim-fade leave animation. */\n protected readonly closing = signal(false);\n\n private dragStartY = 0;\n private lastMoveY = 0;\n private lastMoveTime = 0;\n private velocity = 0;\n private previousBodyOverflow: string | null = null;\n private wasOpen = false;\n\n constructor() {\n // open → DOM lifecycle. Opening renders immediately; closing keeps the\n // sheet mounted and flips `closing` so the leave animation can play —\n // teardown happens in onLeaveEnd() once animationend fires.\n effect(() => {\n const isOpen = this.open();\n if (isOpen) {\n this.closing.set(false);\n this.rendered.set(true);\n } else if (this.wasOpen) {\n this.closing.set(true);\n }\n this.wasOpen = isOpen;\n });\n\n // Lock body scroll while the sheet occupies the screen — keyed on\n // `rendered` so the lock survives the leave animation.\n effect((onCleanup) => {\n if (!this.rendered()) {\n return;\n }\n this.previousBodyOverflow = this.doc.body.style.overflow;\n this.doc.body.style.overflow = 'hidden';\n onCleanup(() => {\n this.doc.body.style.overflow = this.previousBodyOverflow ?? '';\n this.previousBodyOverflow = null;\n });\n });\n }\n\n protected close(): void {\n this.dragOffset.set(null);\n this.open.set(false);\n }\n\n protected onLeaveEnd(event: AnimationEvent): void {\n // Angular scopes @keyframes names under emulated encapsulation, so\n // event.animationName arrives as `_ngcontent-…_ds-sheet-down`, not the bare\n // name — match the suffix or teardown never fires and the lock leaks.\n if (!event.animationName.endsWith('ds-sheet-down') || !this.closing()) {\n return;\n }\n this.closing.set(false);\n this.rendered.set(false);\n this.closed.emit();\n }\n\n protected onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n\n protected stop(event: Event): void {\n event.stopPropagation();\n }\n\n protected onGrabStart(event: PointerEvent): void {\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n this.dragStartY = event.clientY;\n this.lastMoveY = event.clientY;\n this.lastMoveTime = event.timeStamp;\n this.velocity = 0;\n this.dragOffset.set(0);\n }\n\n protected onGrabMove(event: PointerEvent): void {\n if (this.dragOffset() === null) {\n return;\n }\n const deltaTime = event.timeStamp - this.lastMoveTime;\n if (deltaTime > 0) {\n this.velocity = (event.clientY - this.lastMoveY) / deltaTime;\n }\n this.lastMoveY = event.clientY;\n this.lastMoveTime = event.timeStamp;\n this.dragOffset.set(Math.max(0, event.clientY - this.dragStartY));\n }\n\n protected onGrabEnd(): void {\n const offset = this.dragOffset();\n if (offset === null) {\n return;\n }\n const sheetHeight = this.sheetRef()?.nativeElement.offsetHeight ?? 0;\n const pastThreshold = sheetHeight > 0 && offset > sheetHeight * 0.3;\n const flicked = this.velocity > 0.5;\n if (pastThreshold || flicked) {\n this.close();\n } else {\n this.dragOffset.set(null);\n }\n }\n}\n","@if (rendered()) {\n <div\n class=\"sheet-overlay\"\n [class.closing]=\"closing()\"\n (click)=\"close()\"\n >\n <div\n #sheet\n class=\"sheet\"\n [class.dragging]=\"dragOffset() !== null\"\n [class.closing]=\"closing()\"\n [style.transform]=\"\n dragOffset() ? 'translateY(' + dragOffset() + 'px)' : null\n \"\n (click)=\"stop($event)\"\n (animationend)=\"onLeaveEnd($event)\"\n >\n <div\n class=\"grab\"\n (pointerdown)=\"onGrabStart($event)\"\n (pointermove)=\"onGrabMove($event)\"\n (pointerup)=\"onGrabEnd()\"\n (pointercancel)=\"onGrabEnd()\"\n >\n <div class=\"sheet-handle\"></div>\n </div>\n\n @if (title()) {\n <h3 class=\"sheet-title\">\n {{ title() }}\n </h3>\n }\n\n <div class=\"sheet-body\">\n <ng-content />\n </div>\n\n <div class=\"sheet-actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { TagVariant } from './tag.types';\n\n@Component({\n selector: 'ds-tag',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.neutral]': \"variant() === 'neutral'\",\n '[class.closable]': 'closable()',\n '[class.interactive]': 'interactive()',\n '[class.is-active]': 'selected()',\n '(click)': 'onClick()',\n },\n})\nexport class TagComponent {\n readonly variant = input<TagVariant>('solid');\n readonly closable = input(false, { transform: booleanAttribute });\n readonly interactive = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n /** Accessible label for the close button (e.g. \"Remove Source filter\"). */\n readonly closeLabel = input<string>('Remove');\n readonly closed = output<void>();\n readonly toggled = output<void>();\n\n protected onClick(): void {\n if (this.interactive()) {\n this.toggled.emit();\n }\n }\n}\n","<ng-content></ng-content>\n\n@if (closable()) {\n <button\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"$event.stopPropagation(); closed.emit()\"\n >\n <ds-icon\n name=\"x\"\n [size]=\"12\"\n />\n </button>\n}\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\n\n@Component({\n selector: 'ds-w3w',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './w3w.component.html',\n styleUrl: './w3w.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.role]': \"copyable() ? 'button' : null\",\n '[attr.tabindex]': 'copyable() ? 0 : null',\n '[attr.aria-label]':\n \"copyable() ? ('Copy what3words address ' + prefix() + address()) : null\",\n '(click)': 'onCopy()',\n '(keydown.enter)': 'onCopy()',\n '(keydown.space)': 'onKeyActivate($event)',\n },\n})\nexport class W3wComponent {\n readonly prefix = input<string>('///');\n readonly address = input.required<string>();\n readonly copyable = input<boolean>(true);\n readonly copied = output<string>();\n\n protected onKeyActivate(event: Event): void {\n event.preventDefault();\n this.onCopy();\n }\n\n protected onCopy(): void {\n if (!this.copyable()) {\n return;\n }\n const text = `${this.prefix()}${this.address()}`;\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n this.copied.emit(this.address());\n }\n}\n","<ds-icon\n name=\"map\"\n [size]=\"14\"\n/>\n\n<span>\n <span class=\"mark\">\n {{ prefix() }}\n </span>{{ address() }}\n</span>\n\n@if (copyable()) {\n <ds-icon\n name=\"copy\"\n [size]=\"12\"\n />\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { PageFooterVariant } from './page-footer.types';\n\n@Component({\n selector: 'ds-page-footer',\n standalone: true,\n imports: [],\n templateUrl: './page-footer.component.html',\n styleUrl: './page-footer.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.compact]': \"variant() === 'compact'\",\n '[class.save]': \"variant() === 'save'\",\n },\n})\nexport class PageFooterComponent {\n readonly variant = input<PageFooterVariant>('default');\n}\n","<ng-content select=\"[brand]\"></ng-content>\n\n<ng-content select=\"[nav]\"></ng-content>\n\n<ng-content select=\"[actions]\"></ng-content>\n\n<ng-content></ng-content>\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { IconComponent } from '../../icons/icon.component';\nimport { TagComponent } from '../tag/tag.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport type { ComboboxOption, ComboboxSize } from './combobox.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'ds-combobox',\n standalone: true,\n imports: [IconComponent, TagComponent, FieldMessageComponent],\n templateUrl: './combobox.component.html',\n styleUrl: './combobox.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboboxComponent),\n multi: true,\n },\n ],\n})\nexport class ComboboxComponent<T = unknown> extends DsControlValueAccessor<T | readonly T[] | null> {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n\n readonly options = input<readonly ComboboxOption<T>[]>([]);\n readonly value = model<T | readonly T[] | null>(null);\n readonly multiple = input<boolean>(false);\n readonly size = input<ComboboxSize>('md');\n readonly placeholder = input<string>('Select…');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n /** Accessible name for the combobox input. */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly query = signal('');\n protected readonly isOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLElement>>('trigger');\n protected readonly filterInput =\n viewChild.required<ElementRef<HTMLInputElement>>('filter');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n private overlayRef: OverlayRef | null = null;\n\n protected readonly uid = `ds-combobox-${++nextId}`;\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(index: number): string {\n return `${this.uid}-opt-${index}`;\n }\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.isOpen() && index >= 0 ? this.optionId(index) : null;\n });\n\n protected readonly filteredOptions = computed(() => {\n const trimmedQuery = this.query().toLowerCase().trim();\n const allOptions = this.options();\n if (!trimmedQuery) {\n return allOptions;\n }\n\n return allOptions.filter((option) =>\n option.label.toLowerCase().includes(trimmedQuery),\n );\n });\n\n protected readonly selectedTags = computed(() => {\n if (!this.multiple()) {\n return [];\n }\n const selectedValues = (this.value() as readonly T[] | null) ?? [];\n const selectedSet = new Set(selectedValues);\n\n return this.options().filter((option) => selectedSet.has(option.value));\n });\n\n protected readonly displayLabel = computed(() => {\n if (this.multiple()) {\n return '';\n }\n const currentValue = this.value() as T | null;\n if (currentValue === null) {\n return '';\n }\n\n return (\n this.options().find((option) => option.value === currentValue)?.label ??\n ''\n );\n });\n\n protected readonly placeholderText = computed(() => {\n if (this.multiple()) {\n return '';\n }\n if (this.displayLabel()) {\n return '';\n }\n\n return this.placeholder();\n });\n\n protected isSelected(option: ComboboxOption<T>): boolean {\n if (this.multiple()) {\n const selectedValues = (this.value() as readonly T[] | null) ?? [];\n\n return selectedValues.includes(option.value);\n }\n\n return this.value() === option.value;\n }\n\n protected optionClass(option: ComboboxOption<T>): string {\n const parts = ['option'];\n if (this.multiple()) {\n parts.push('multi');\n }\n void option;\n\n return parts.join(' ');\n }\n\n protected onTriggerClick(): void {\n if (this.isDisabled()) {\n return;\n }\n this.filterInput().nativeElement.focus();\n if (!this.overlayRef) {\n this.openPanel();\n }\n }\n\n protected togglePanel(event: MouseEvent): void {\n if (this.isDisabled()) {\n return;\n }\n event.stopPropagation();\n if (this.overlayRef) {\n this.close();\n } else {\n this.filterInput().nativeElement.focus();\n this.openPanel();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n const opts = this.filteredOptions();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.overlayRef) {\n this.openPanel();\n\n return;\n }\n this.activeIndex.set(\n opts.length ? (this.activeIndex() + 1) % opts.length : -1,\n );\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.overlayRef) {\n this.openPanel();\n\n return;\n }\n this.activeIndex.set(\n opts.length\n ? (this.activeIndex() - 1 + opts.length) % opts.length\n : -1,\n );\n break;\n case 'Enter': {\n const opt = opts[this.activeIndex()];\n if (opt) {\n event.preventDefault();\n this.onPick(opt);\n }\n break;\n }\n case 'Escape':\n if (this.overlayRef) {\n event.preventDefault();\n this.close();\n }\n break;\n case 'Backspace':\n if (this.multiple() && !this.query()) {\n const tags = this.selectedTags();\n const last = tags[tags.length - 1];\n if (last) {\n this.remove(last.value);\n }\n }\n break;\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const overlayConfig: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'ds-overlay-pane',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: triggerElement.getBoundingClientRect().width,\n };\n this.overlayRef = this.overlay.create(overlayConfig);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.attach(new TemplatePortal(this.panelTpl(), this.vcr));\n this.isOpen.set(true);\n this.activeIndex.set(this.filteredOptions().length ? 0 : -1);\n }\n\n protected close(): void {\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n this.markTouched();\n }\n\n protected onFilter(event: Event): void {\n this.query.set((event.target as HTMLInputElement).value);\n }\n\n protected onPick(option: ComboboxOption<T>): void {\n if (this.multiple()) {\n const current = (this.value() as readonly T[] | null) ?? [];\n const next = current.includes(option.value)\n ? current.filter((existing) => existing !== option.value)\n : [...current, option.value];\n this.value.set(next);\n } else {\n this.value.set(option.value);\n this.close();\n }\n }\n\n protected remove(target: T): void {\n if (!this.multiple()) {\n return;\n }\n const current = (this.value() as readonly T[] | null) ?? [];\n this.value.set(current.filter((existing) => existing !== target));\n }\n}\n","<div\n #trigger\n class=\"combo-trigger\"\n [class.open]=\"isOpen()\"\n [class.sm]=\"size() === 'sm'\"\n [class.lg]=\"size() === 'lg'\"\n [class.disabled]=\"isDisabled()\"\n [class.error]=\"invalid()\"\n (click)=\"onTriggerClick()\"\n>\n @if (multiple()) {\n @for (selectedOption of selectedTags(); track selectedOption.value) {\n <ds-tag\n [closable]=\"true\"\n [closeLabel]=\"'Remove ' + selectedOption.label\"\n (closed)=\"remove(selectedOption.value)\"\n >\n {{ selectedOption.label }}\n </ds-tag>\n }\n } @else if (displayLabel()) {\n <span class=\"combo-value\">\n {{ displayLabel() }}\n </span>\n }\n\n <input\n #filter\n type=\"text\"\n class=\"combo-input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [disabled]=\"isDisabled()\"\n [value]=\"query()\"\n [placeholder]=\"placeholderText()\"\n (input)=\"onFilter($event)\"\n (focus)=\"openPanel()\"\n (blur)=\"markTouched()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n <ds-icon\n name=\"chevronDown\"\n class=\"combo-chevron\"\n [size]=\"16\"\n (click)=\"togglePanel($event)\"\n />\n</div>\n\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n\n<ng-template #panel>\n <ul\n class=\"combo-list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"multiple() ? 'true' : null\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [class]=\"optionClass(option)\"\n [id]=\"optionId(i)\"\n [class.is-active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option)\"\n (click)=\"onPick(option)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (multiple()) {\n <span\n class=\"check-box\"\n [class.checked]=\"isSelected(option)\"\n >\n @if (isSelected(option)) {\n <ds-icon\n name=\"check\"\n [size]=\"13\"\n />\n }\n </span>\n }\n\n <span class=\"option-label\">\n {{ option.label }}\n </span>\n\n @if (!multiple() && isSelected(option)) {\n <ds-icon\n name=\"check\"\n class=\"icon\"\n [size]=\"14\"\n />\n }\n </li>\n }\n\n @if (filteredOptions().length === 0) {\n <li\n class=\"empty t-s\"\n role=\"option\"\n [attr.aria-selected]=\"false\"\n [attr.aria-disabled]=\"true\"\n >\n No matches\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { DividerSpacing, DividerVariant } from './divider.types';\n\n@Component({\n selector: 'ds-divider',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './divider.component.scss',\n host: {\n role: 'separator',\n '[class.strong]': \"variant() === 'strong'\",\n '[class.vertical]': \"variant() === 'vertical'\",\n '[class.label]': \"variant() === 'label'\",\n '[class.spacing-none]': \"spacing() === 'none'\",\n '[class.spacing-sm]': \"spacing() === 'sm'\",\n '[class.spacing-md]': \"spacing() === 'md'\",\n '[class.spacing-lg]': \"spacing() === 'lg'\",\n '[attr.aria-orientation]': \"variant() === 'vertical' ? 'vertical' : null\",\n },\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class DividerComponent {\n readonly variant = input<DividerVariant>('default');\n // Vertical margin around the divider. Defaults to `md` (8px) for parity\n // with menus / sidenavs; bump to `lg` for content-section separators.\n readonly spacing = input<DividerSpacing>('md');\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\nexport type DescriptionListOrientation = 'horizontal' | 'stacked';\n\n@Component({\n selector: 'ds-description-list',\n standalone: true,\n templateUrl: './description-list.component.html',\n styleUrl: './description-list.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.stacked]': \"orientation() === 'stacked'\",\n },\n})\nexport class DescriptionListComponent {\n // horizontal = label column + value; stacked = label above value.\n readonly orientation = input<DescriptionListOrientation>('horizontal');\n}\n","<ng-content></ng-content>\n","import {\n Component,\n ViewEncapsulation,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DescriptionListComponent } from './description-list.component';\n\n@Component({\n selector: 'ds-description-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './description-item.component.html',\n styleUrl: './description-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'group',\n '[class.stacked]': 'stacked()',\n },\n})\nexport class DescriptionItemComponent {\n private readonly list = inject(DescriptionListComponent, { optional: true });\n\n // The label. Plain text; rich values go in the projected content.\n readonly term = input<string>('');\n // When set, a copy button appears that copies this string to the clipboard.\n readonly copyValue = input<string | null>(null);\n\n protected readonly stacked = computed(\n () => this.list?.orientation() === 'stacked',\n );\n protected readonly copied = signal(false);\n\n protected async copy(): Promise<void> {\n const value = this.copyValue();\n if (!value) {\n return;\n }\n await navigator.clipboard?.writeText(value);\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 1200);\n }\n}\n","<span\n class=\"term\"\n role=\"term\"\n>\n {{ term() }}\n</span>\n\n<div\n class=\"details\"\n role=\"definition\"\n>\n <span class=\"value\">\n <ng-content></ng-content>\n </span>\n\n @if (copyValue()) {\n <button\n type=\"button\"\n class=\"copy\"\n [attr.aria-label]=\"copied() ? 'Copied' : 'Copy value'\"\n (click)=\"copy()\"\n >\n <ds-icon\n [name]=\"copied() ? 'check' : 'copy'\"\n [size]=\"14\"\n />\n </button>\n }\n</div>\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { LayoutAlign, LayoutGap } from './layout.types';\n\n@Component({\n selector: 'ds-stack',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './stack.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.data-gap]': 'gap()',\n '[attr.data-align]': 'align()',\n },\n})\nexport class StackComponent {\n // null → semantic --space-stack default; named sizes map to the spacing scale.\n readonly gap = input<LayoutGap | null>(null);\n readonly align = input<LayoutAlign | null>(null);\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n} from '@angular/core';\nimport type { LayoutAlign, LayoutGap, LayoutJustify } from './layout.types';\n\n@Component({\n selector: 'ds-inline',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './inline.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.data-gap]': 'gap()',\n '[attr.data-align]': 'align()',\n '[attr.data-justify]': 'justify()',\n '[class.nowrap]': '!wrap()',\n },\n})\nexport class InlineComponent {\n // null → semantic --space-inline default; named sizes map to the spacing scale.\n readonly gap = input<LayoutGap | null>(null);\n readonly align = input<LayoutAlign | null>(null);\n readonly justify = input<LayoutJustify | null>(null);\n readonly wrap = input(true, { transform: booleanAttribute });\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport type { ContainerSize } from './layout.types';\n\n@Component({\n selector: 'ds-container',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './container.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class ContainerComponent {\n // Max content width; defaults to the global content cap (--col-cap-content).\n readonly size = input<ContainerSize>('xl');\n}\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n input,\n model,\n viewChildren,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { SegmentedOption } from './segmented.types';\n\n@Component({\n selector: 'ds-segmented',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './segmented.component.html',\n styleUrl: './segmented.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'radiogroup',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class SegmentedComponent {\n readonly options = input<readonly SegmentedOption[]>([]);\n readonly value = model<string>('');\n readonly ariaLabel = input<string | null>(null);\n\n private readonly buttons = viewChildren<ElementRef<HTMLButtonElement>>('seg');\n\n // The single roving-tabindex entry point: the selected segment, or the first\n // enabled one when nothing is selected yet.\n protected readonly focusableValue = computed(() => {\n const value = this.value();\n const options = this.options();\n if (options.some((option) => option.value === value && !option.disabled)) {\n return value;\n }\n\n return options.find((option) => !option.disabled)?.value ?? null;\n });\n\n protected select(option: SegmentedOption): void {\n if (option.disabled) {\n return;\n }\n this.value.set(option.value);\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const options = this.options();\n let target = -1;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n target = this.nextEnabled(index, 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n target = this.nextEnabled(index, -1);\n break;\n case 'Home':\n target = this.nextEnabled(-1, 1);\n break;\n case 'End':\n target = this.nextEnabled(options.length, -1);\n break;\n default:\n return;\n }\n if (target < 0) {\n return;\n }\n event.preventDefault();\n this.value.set(options[target].value);\n this.buttons()[target]?.nativeElement.focus();\n }\n\n private nextEnabled(from: number, step: number): number {\n const options = this.options();\n const count = options.length;\n if (count === 0) {\n return -1;\n }\n let index = from;\n for (let i = 0; i < count; i++) {\n index = (index + step + count) % count;\n if (!options[index].disabled) {\n return index;\n }\n }\n\n return -1;\n }\n}\n","@for (option of options(); track option.value; let i = $index) {\n <button\n #seg\n type=\"button\"\n role=\"radio\"\n class=\"segment\"\n [class.selected]=\"option.value === value()\"\n [attr.aria-checked]=\"option.value === value()\"\n [attr.tabindex]=\"option.value === focusableValue() ? 0 : -1\"\n [disabled]=\"option.disabled\"\n (click)=\"select(option)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n @if (option.icon; as icon) {\n <ds-icon\n [name]=\"icon\"\n [size]=\"16\"\n />\n }\n\n <span class=\"label\">\n {{ option.label }}\n </span>\n </button>\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\n\n@Component({\n selector: 'ds-button-group',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './button-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class ButtonGroupComponent {\n readonly ariaLabel = input<string | null>(null);\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'ds-list',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './list.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'list',\n '[class.dividers]': 'dividers()',\n },\n})\nexport class ListComponent {\n // Draw a hairline separator between adjacent items.\n readonly dividers = input(true, { transform: booleanAttribute });\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n output,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ds-list-item',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './list-item.component.html',\n styleUrl: './list-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'listitem',\n '[class.clickable]': 'clickable()',\n '[class.selected]': 'selected()',\n '[class.disabled]': 'disabled()',\n },\n})\nexport class ListItemComponent {\n // Convenience text; richer middle content can be projected as default content.\n readonly title = input<string>('');\n readonly subtitle = input<string>('');\n // Whole-row navigation: renders an inner button and emits `activated`. Use for\n // rows without their own interactive trailing control.\n readonly clickable = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly activated = output<void>();\n}\n","<ng-template #content>\n <span class=\"leading\">\n <ng-content select=\"[leading]\"></ng-content>\n </span>\n\n <span class=\"body\">\n @if (title()) {\n <span class=\"title\">\n {{ title() }}\n </span>\n }\n\n @if (subtitle()) {\n <span class=\"subtitle\">\n {{ subtitle() }}\n </span>\n }\n\n <ng-content></ng-content>\n </span>\n\n <span class=\"trailing\">\n <ng-content select=\"[trailing]\"></ng-content>\n </span>\n</ng-template>\n\n@if (clickable()) {\n <button\n type=\"button\"\n class=\"activator\"\n [disabled]=\"disabled()\"\n [attr.aria-current]=\"selected() ? 'true' : null\"\n (click)=\"activated.emit()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </button>\n} @else {\n <div class=\"activator\">\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport { MenuComponent } from '../menu/menu.component';\nimport { MenuItemComponent } from '../menu/menu-item.component';\nimport { PopoverComponent } from '../popover/popover.component';\nimport type { SplitButtonItem, SplitButtonVariant } from './split-button.types';\n\n@Component({\n selector: 'ds-split-button',\n standalone: true,\n imports: [IconComponent, MenuComponent, MenuItemComponent, PopoverComponent],\n templateUrl: './split-button.component.html',\n styleUrl: './split-button.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n '[class.primary]': \"variant() === 'primary'\",\n '[class.outline]': \"variant() === 'outline'\",\n },\n})\nexport class SplitButtonComponent {\n readonly label = input<string>('');\n readonly variant = input<SplitButtonVariant>('primary');\n readonly icon = input<IconName | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly menuItems = input<readonly SplitButtonItem[]>([]);\n /** Accessible name for the dropdown trigger. */\n readonly menuLabel = input<string>('More actions');\n readonly pressed = output<MouseEvent>();\n readonly itemSelect = output<SplitButtonItem>();\n\n protected onItemSelect(item: SplitButtonItem): void {\n if (item.disabled) {\n return;\n }\n // ds-menu-item closes the popover itself via the injected DsOverlayCloseRef.\n this.itemSelect.emit(item);\n }\n\n protected onTriggerKeydown(\n event: KeyboardEvent,\n popover: PopoverComponent,\n trigger: HTMLElement,\n ): void {\n if (event.key === 'ArrowDown' && !popover.opened()) {\n event.preventDefault();\n popover.toggle(trigger);\n }\n }\n}\n","<button\n type=\"button\"\n class=\"main\"\n [disabled]=\"disabled()\"\n (click)=\"pressed.emit($event)\"\n>\n @if (icon(); as name) {\n <ds-icon\n [name]=\"name\"\n [size]=\"18\"\n />\n }\n\n @if (label()) {\n <span class=\"label\">\n {{ label() }}\n </span>\n }\n\n <ng-content></ng-content>\n</button>\n\n<button\n #trigger\n type=\"button\"\n class=\"toggle\"\n aria-haspopup=\"menu\"\n [class.open]=\"pop.opened()\"\n [attr.aria-expanded]=\"pop.opened()\"\n [attr.aria-label]=\"menuLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"pop.toggle(trigger)\"\n (keydown)=\"onTriggerKeydown($event, pop, trigger)\"\n>\n <ds-icon\n class=\"chevron\"\n name=\"chevronDown\"\n [size]=\"18\"\n />\n</button>\n\n<ds-popover\n #pop\n align=\"end\"\n panelRole=\"presentation\"\n>\n <ds-menu>\n @for (item of menuItems(); track item) {\n <ds-menu-item\n [icon]=\"item.icon ?? null\"\n [disabled]=\"item.disabled ?? false\"\n [danger]=\"item.danger ?? false\"\n (pressed)=\"onItemSelect(item)\"\n >\n {{ item.label }}\n </ds-menu-item>\n }\n </ds-menu>\n</ds-popover>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ds-timeline',\n standalone: true,\n template: '<ng-content></ng-content>',\n styleUrl: './timeline.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'list',\n },\n})\nexport class TimelineComponent {}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\n\nexport type TimelineTone =\n | 'default'\n | 'primary'\n | 'success'\n | 'warning'\n | 'error'\n | 'muted';\n\n@Component({\n selector: 'ds-timeline-item',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './timeline-item.component.html',\n styleUrl: './timeline-item.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'listitem',\n '[attr.data-tone]': 'tone()',\n },\n})\nexport class TimelineItemComponent {\n readonly heading = input<string>('');\n readonly time = input<string>('');\n readonly icon = input<IconName | null>(null);\n readonly tone = input<TimelineTone>('default');\n}\n","<div class=\"node-col\">\n <span class=\"node\">\n @if (icon(); as name) {\n <ds-icon\n [name]=\"name\"\n [size]=\"15\"\n />\n }\n </span>\n\n <span class=\"spine\"></span>\n</div>\n\n<div class=\"content\">\n @if (heading()) {\n <span class=\"heading\">\n {{ heading() }}\n </span>\n }\n\n <ng-content></ng-content>\n\n @if (time()) {\n <span class=\"time\">\n {{ time() }}\n </span>\n }\n</div>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n output,\n viewChildren,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\nexport type OtpMode = 'numeric' | 'alphanumeric';\n\n@Component({\n selector: 'ds-otp-input',\n standalone: true,\n imports: [FieldMessageComponent],\n templateUrl: './otp-input.component.html',\n styleUrl: './otp-input.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OtpInputComponent),\n multi: true,\n },\n ],\n host: {\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.invalid]': 'invalid()',\n '[attr.aria-describedby]': 'hintId()',\n },\n})\nexport class OtpInputComponent extends DsControlValueAccessor<string> {\n readonly value = model<string>('');\n readonly length = input<number>(6);\n readonly mode = input<OtpMode>('numeric');\n readonly mask = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n readonly ariaLabel = input<string>('Verification code');\n readonly completed = output<string>();\n\n private readonly boxes = viewChildren<ElementRef<HTMLInputElement>>('box');\n private wasComplete = false;\n\n protected readonly uid = nextControlId('ds-otp-input');\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n // Fixed-length, position-preserving view of the current value.\n protected readonly cells = computed<string[]>(() => {\n const value = this.value().slice(0, this.length());\n\n return Array.from({ length: this.length() }, (_, i) => value[i] ?? '');\n });\n\n protected onInput(event: Event, index: number): void {\n const element = event.target as HTMLInputElement;\n const cleaned = this.sanitize(element.value);\n if (!cleaned) {\n this.writeCell(index, '');\n element.value = '';\n\n return;\n }\n if (cleaned.length === 1) {\n this.writeCell(index, cleaned);\n element.value = cleaned;\n this.focusBox(index + 1);\n } else {\n this.distribute(cleaned, index);\n }\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n switch (event.key) {\n case 'Backspace':\n if (!this.cells()[index]) {\n event.preventDefault();\n this.writeCell(index - 1, '');\n this.focusBox(index - 1);\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n this.focusBox(index - 1);\n break;\n case 'ArrowRight':\n event.preventDefault();\n this.focusBox(index + 1);\n break;\n default:\n break;\n }\n }\n\n protected onPaste(event: ClipboardEvent, index: number): void {\n const text = event.clipboardData?.getData('text') ?? '';\n const cleaned = this.sanitize(text);\n if (!cleaned) {\n return;\n }\n event.preventDefault();\n this.distribute(cleaned, index);\n }\n\n protected onFocus(event: FocusEvent, index: number): void {\n (event.target as HTMLInputElement).select();\n // Keep entry left-packed: redirect focus to the first empty cell so the user\n // can't type into a gap (the flat value string can't represent middle gaps).\n const firstEmpty = this.firstEmptyIndex();\n if (firstEmpty >= 0 && index > firstEmpty) {\n this.focusBox(firstEmpty);\n }\n }\n\n protected cellLabel(index: number): string {\n const noun = this.mode() === 'numeric' ? 'Digit' : 'Character';\n\n return `${noun} ${index + 1}`;\n }\n\n protected onBlur(): void {\n this.markTouched();\n }\n\n private writeCell(index: number, char: string): void {\n if (index < 0 || index >= this.length()) {\n return;\n }\n const next = this.cells().slice();\n next[index] = char;\n this.commit(next);\n }\n\n private distribute(text: string, startIndex: number): void {\n const next = this.cells().slice();\n let cursor = startIndex;\n for (const char of text) {\n if (cursor >= this.length()) {\n break;\n }\n next[cursor] = char;\n cursor++;\n }\n this.commit(next);\n this.focusBox(Math.min(cursor, this.length() - 1));\n }\n\n private commit(cells: string[]): void {\n const value = cells.join('').slice(0, this.length());\n this.value.set(value);\n // Fire `completed` only on the partial → full transition, not on every\n // edit of an already-complete code (which would re-trigger consumers).\n const complete = value.length === this.length();\n if (complete && !this.wasComplete) {\n this.completed.emit(value);\n }\n this.wasComplete = complete;\n }\n\n private firstEmptyIndex(): number {\n return this.cells().findIndex((cell) => cell === '');\n }\n\n private focusBox(index: number): void {\n const box = this.boxes()[index]?.nativeElement;\n if (box) {\n box.focus();\n box.select();\n }\n }\n\n private sanitize(raw: string): string {\n const pattern = this.mode() === 'numeric' ? /[^0-9]/g : /[^0-9a-zA-Z]/g;\n\n return raw.replace(pattern, '');\n }\n}\n","<div class=\"cells\">\n @for (cell of cells(); track $index; let i = $index) {\n <input\n #box\n class=\"cell\"\n [type]=\"mask() ? 'password' : 'text'\"\n [attr.inputmode]=\"mode() === 'numeric' ? 'numeric' : 'text'\"\n [attr.autocomplete]=\"i === 0 ? 'one-time-code' : 'off'\"\n [attr.aria-label]=\"cellLabel(i)\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [value]=\"cell\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event, i)\"\n (keydown)=\"onKeydown($event, i)\"\n (paste)=\"onPaste($event, i)\"\n (focus)=\"onFocus($event, i)\"\n (blur)=\"onBlur()\"\n />\n }\n</div>\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n numberAttribute,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\ntype SliderValue = number | readonly [number, number];\n\n@Component({\n selector: 'ds-slider',\n standalone: true,\n imports: [FieldMessageComponent],\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n ],\n host: {\n '[class.range]': 'range()',\n '[class.disabled]': 'isDisabled()',\n '[class.invalid]': 'invalid()',\n },\n})\nexport class SliderComponent extends DsControlValueAccessor<SliderValue> {\n readonly value = model<SliderValue>(0);\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly step = input(1, { transform: numberAttribute });\n readonly range = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null);\n readonly invalid = input<boolean>(false);\n readonly hint = input<string>('');\n\n private readonly track = viewChild.required<ElementRef<HTMLElement>>('track');\n private dragging = -1;\n\n protected readonly uid = nextControlId('ds-slider');\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n protected readonly thumbValues = computed<number[]>(() => {\n const value = this.value();\n if (this.range()) {\n const [low, high] = value as readonly [number, number];\n\n return [low, high];\n }\n\n return [value as number];\n });\n\n protected readonly fill = computed<{ left: number; width: number }>(() => {\n const values = this.thumbValues();\n if (this.range()) {\n const low = this.percent(values[0]);\n const high = this.percent(values[1]);\n\n return { left: low, width: high - low };\n }\n\n return { left: 0, width: this.percent(values[0]) };\n });\n\n protected percent(value: number): number {\n const min = this.min();\n const max = this.max();\n\n return max === min ? 0 : ((value - min) / (max - min)) * 100;\n }\n\n protected thumbMin(index: number): number {\n return this.range() && index === 1 ? this.thumbValues()[0] : this.min();\n }\n\n protected thumbMax(index: number): number {\n return this.range() && index === 0 ? this.thumbValues()[1] : this.max();\n }\n\n protected onTrackPointerDown(event: PointerEvent): void {\n if (this.isDisabled()) {\n return;\n }\n const track = this.track().nativeElement;\n track.setPointerCapture(event.pointerId);\n this.dragging = this.nearestThumb(event.clientX);\n this.updateFromClientX(event.clientX);\n track.querySelectorAll<HTMLElement>('.thumb')[this.dragging]?.focus();\n }\n\n protected onTrackPointerMove(event: PointerEvent): void {\n if (this.dragging < 0) {\n return;\n }\n this.updateFromClientX(event.clientX);\n }\n\n // Bound to both pointerup and pointercancel — touch interventions (scroll\n // takeover, stylus lift) fire pointercancel, and without it the drag state\n // would leak and keep moving the thumb with no pointer down.\n protected onTrackPointerUp(event: PointerEvent): void {\n if (this.dragging < 0) {\n return;\n }\n const track = this.track().nativeElement;\n if (track.hasPointerCapture(event.pointerId)) {\n track.releasePointerCapture(event.pointerId);\n }\n this.dragging = -1;\n this.markTouched();\n }\n\n protected thumbAriaLabel(index: number): string | null {\n const base = this.ariaLabel();\n if (!this.range()) {\n return base;\n }\n if (index === 0) {\n return base ? `${base} minimum` : 'Minimum';\n }\n\n return base ? `${base} maximum` : 'Maximum';\n }\n\n protected onThumbKeydown(event: KeyboardEvent, index: number): void {\n if (this.isDisabled()) {\n return;\n }\n const step = this.step() || 1;\n let delta = 0;\n let absolute: number | null = null;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -step;\n break;\n case 'PageUp':\n delta = step * 10;\n break;\n case 'PageDown':\n delta = -step * 10;\n break;\n case 'Home':\n absolute = this.thumbMin(index);\n break;\n case 'End':\n absolute = this.thumbMax(index);\n break;\n default:\n return;\n }\n event.preventDefault();\n const current = this.thumbValues()[index];\n this.setThumb(index, absolute ?? this.snap(current + delta));\n }\n\n private nearestThumb(clientX: number): number {\n if (!this.range()) {\n return 0;\n }\n const value = this.valueFromClientX(clientX);\n const [low, high] = this.thumbValues();\n\n return Math.abs(value - low) <= Math.abs(value - high) ? 0 : 1;\n }\n\n private updateFromClientX(clientX: number): void {\n this.setThumb(this.dragging, this.snap(this.valueFromClientX(clientX)));\n }\n\n private valueFromClientX(clientX: number): number {\n const rect = this.track().nativeElement.getBoundingClientRect();\n if (rect.width === 0) {\n return this.min();\n }\n const ratio = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n\n return this.min() + ratio * (this.max() - this.min());\n }\n\n private setThumb(index: number, next: number): void {\n if (this.range()) {\n const [low, high] = this.thumbValues();\n this.value.set(\n index === 0 ? [Math.min(next, high), high] : [low, Math.max(next, low)],\n );\n } else {\n this.value.set(next);\n }\n }\n\n private snap(raw: number): number {\n const step = this.step() || 1;\n const min = this.min();\n const snapped = Math.round((raw - min) / step) * step + min;\n\n return Math.min(this.max(), Math.max(min, snapped));\n }\n}\n","<div\n #track\n class=\"track\"\n (pointerdown)=\"onTrackPointerDown($event)\"\n (pointermove)=\"onTrackPointerMove($event)\"\n (pointerup)=\"onTrackPointerUp($event)\"\n (pointercancel)=\"onTrackPointerUp($event)\"\n>\n <span\n class=\"fill\"\n [style.left.%]=\"fill().left\"\n [style.width.%]=\"fill().width\"\n >\n </span>\n\n @for (thumbValue of thumbValues(); track $index; let i = $index) {\n <span\n class=\"thumb\"\n role=\"slider\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n [style.left.%]=\"percent(thumbValue)\"\n [attr.aria-valuemin]=\"thumbMin(i)\"\n [attr.aria-valuemax]=\"thumbMax(i)\"\n [attr.aria-valuenow]=\"thumbValue\"\n [attr.aria-orientation]=\"'horizontal'\"\n [attr.aria-label]=\"thumbAriaLabel(i)\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : null\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n (keydown)=\"onThumbKeydown($event, i)\"\n >\n </span>\n }\n</div>\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { TreeNode } from './tree.types';\n\ninterface VisibleNode {\n node: TreeNode;\n level: number;\n hasChildren: boolean;\n expanded: boolean;\n}\n\n@Component({\n selector: 'ds-tree',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'tree',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class TreeComponent {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly nodes = input<readonly TreeNode[]>([]);\n readonly expandedIds = model<Set<string>>(new Set());\n readonly selectedId = model<string | null>(null);\n readonly nodeSelect = output<TreeNode>();\n\n private readonly activeId = signal<string | null>(null);\n\n // Depth-first list of currently-visible nodes; drives rendering and keyboard nav.\n protected readonly visibleNodes = computed<VisibleNode[]>(() => {\n const out: VisibleNode[] = [];\n const walk = (list: readonly TreeNode[], level: number): void => {\n for (const node of list) {\n const hasChildren = !!node.children?.length;\n const expanded = this.isExpanded(node.id);\n out.push({ node, level, hasChildren, expanded });\n if (hasChildren && expanded) {\n walk(node.children ?? [], level + 1);\n }\n }\n };\n walk(this.nodes(), 0);\n\n return out;\n });\n\n // The single roving-tabindex treeitem — the active node, or the first one.\n protected readonly effectiveActiveId = computed(\n () => this.activeId() ?? this.visibleNodes()[0]?.node.id ?? null,\n );\n\n protected isExpanded(id: string): boolean {\n return this.expandedIds().has(id);\n }\n\n protected isSelected(id: string): boolean {\n return this.selectedId() === id;\n }\n\n protected isActive(id: string): boolean {\n return this.effectiveActiveId() === id;\n }\n\n protected onRowClick(entry: VisibleNode): void {\n if (entry.node.disabled) {\n return;\n }\n this.select(entry.node);\n if (entry.hasChildren) {\n this.toggle(entry.node);\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const visible = this.visibleNodes();\n const index = visible.findIndex(\n (entry) => entry.node.id === this.effectiveActiveId(),\n );\n if (index < 0) {\n return;\n }\n const current = visible[index];\n switch (event.key) {\n case 'ArrowDown':\n this.moveActive(index + 1);\n break;\n case 'ArrowUp':\n this.moveActive(index - 1);\n break;\n case 'Home':\n this.moveActive(0);\n break;\n case 'End':\n this.moveActive(visible.length - 1);\n break;\n case 'ArrowRight':\n if (current.hasChildren && !current.expanded) {\n this.toggle(current.node);\n } else if (current.hasChildren) {\n this.moveActive(index + 1);\n }\n break;\n case 'ArrowLeft':\n if (current.hasChildren && current.expanded) {\n this.toggle(current.node);\n } else {\n this.moveToParent(visible, index);\n }\n break;\n default:\n // Enter / Space activate the focused row via its native button click.\n return;\n }\n event.preventDefault();\n }\n\n private toggle(node: TreeNode): void {\n if (node.disabled || !node.children?.length) {\n return;\n }\n const next = new Set(this.expandedIds());\n if (next.has(node.id)) {\n next.delete(node.id);\n } else {\n next.add(node.id);\n }\n this.expandedIds.set(next);\n }\n\n private select(node: TreeNode): void {\n if (node.disabled) {\n return;\n }\n this.selectedId.set(node.id);\n this.activeId.set(node.id);\n this.nodeSelect.emit(node);\n }\n\n private moveActive(targetIndex: number): void {\n const visible = this.visibleNodes();\n if (targetIndex < 0 || targetIndex >= visible.length) {\n return;\n }\n this.focusNode(visible[targetIndex].node.id);\n }\n\n private moveToParent(visible: VisibleNode[], index: number): void {\n const level = visible[index].level;\n for (let i = index - 1; i >= 0; i--) {\n if (visible[i].level < level) {\n this.focusNode(visible[i].node.id);\n\n return;\n }\n }\n }\n\n private focusNode(id: string): void {\n this.activeId.set(id);\n this.host.nativeElement\n .querySelector<HTMLElement>(`[data-node-id=\"${id}\"]`)\n ?.focus();\n }\n}\n","@for (entry of visibleNodes(); track entry.node.id) {\n <button\n type=\"button\"\n class=\"row\"\n role=\"treeitem\"\n [attr.data-node-id]=\"entry.node.id\"\n [attr.aria-level]=\"entry.level + 1\"\n [attr.aria-expanded]=\"entry.hasChildren ? entry.expanded : null\"\n [attr.aria-selected]=\"isSelected(entry.node.id)\"\n [attr.tabindex]=\"isActive(entry.node.id) ? 0 : -1\"\n [class.selected]=\"isSelected(entry.node.id)\"\n [disabled]=\"entry.node.disabled\"\n [style.--_level]=\"entry.level\"\n (click)=\"onRowClick(entry)\"\n >\n @if (entry.hasChildren) {\n <ds-icon\n class=\"caret\"\n [name]=\"entry.expanded ? 'chevronDown' : 'chevronRight'\"\n [size]=\"16\"\n />\n } @else {\n <span class=\"caret-spacer\"></span>\n }\n\n @if (entry.node.icon; as icon) {\n <ds-icon\n class=\"node-icon\"\n [name]=\"icon\"\n [size]=\"16\"\n />\n }\n\n <span class=\"label\">\n {{ entry.node.label }}\n </span>\n </button>\n}\n","/** Hue 0–360, saturation/value 0–100 — the model the Photoshop-style picker\n * manipulates. Hex is the public value; these convert between the two. */\nexport interface Hsv {\n h: number;\n s: number;\n v: number;\n}\n\nexport function normalizeHex(hex: string): string | null {\n const match = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!match) {\n return null;\n }\n const body = match[1];\n const full =\n body.length === 3\n ? `${body[0]}${body[0]}${body[1]}${body[1]}${body[2]}${body[2]}`\n : body;\n\n return `#${full.toLowerCase()}`;\n}\n\nexport function hexToHsv(hex: string): Hsv | null {\n const normalized = normalizeHex(hex);\n if (!normalized) {\n return null;\n }\n const red = parseInt(normalized.slice(1, 3), 16) / 255;\n const green = parseInt(normalized.slice(3, 5), 16) / 255;\n const blue = parseInt(normalized.slice(5, 7), 16) / 255;\n\n const max = Math.max(red, green, blue);\n const min = Math.min(red, green, blue);\n const delta = max - min;\n\n let hue = 0;\n if (delta !== 0) {\n if (max === red) {\n hue = ((green - blue) / delta) % 6;\n } else if (max === green) {\n hue = (blue - red) / delta + 2;\n } else {\n hue = (red - green) / delta + 4;\n }\n hue = Math.round(hue * 60);\n if (hue < 0) {\n hue += 360;\n }\n }\n const saturation = max === 0 ? 0 : delta / max;\n\n return {\n h: hue,\n s: Math.round(saturation * 100),\n v: Math.round(max * 100),\n };\n}\n\nexport function hsvToHex({ h, s, v }: Hsv): string {\n const saturation = s / 100;\n const value = v / 100;\n const chroma = value * saturation;\n const second = chroma * (1 - Math.abs(((h / 60) % 2) - 1));\n const matchLightness = value - chroma;\n\n let red = 0;\n let green = 0;\n let blue = 0;\n if (h < 60) {\n red = chroma;\n green = second;\n } else if (h < 120) {\n red = second;\n green = chroma;\n } else if (h < 180) {\n green = chroma;\n blue = second;\n } else if (h < 240) {\n green = second;\n blue = chroma;\n } else if (h < 300) {\n red = second;\n blue = chroma;\n } else {\n red = chroma;\n blue = second;\n }\n\n const toHex = (channel: number): string =>\n Math.round((channel + matchLightness) * 255)\n .toString(16)\n .padStart(2, '0');\n\n return `#${toHex(red)}${toHex(green)}${toHex(blue)}`;\n}\n","import {\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { IconComponent } from '../../icons/icon.component';\nimport { DsOverlayCloseRef } from '../../overlay/ds-overlay-close-ref';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\nimport { disposeWithLeave } from '../overlay-motion';\nimport {\n type Hsv,\n hexToHsv,\n hsvToHex,\n normalizeHex,\n} from './color-picker.utils';\n\nconst DEFAULT_PRESETS: readonly string[] = [\n '#2F54FF',\n '#0EA5E9',\n '#16A34A',\n '#EAB308',\n '#F97316',\n '#EF4444',\n '#EC4899',\n '#8B5CF6',\n '#6B7280',\n '#111827',\n '#FFFFFF',\n];\n\n@Component({\n selector: 'ds-color-picker',\n standalone: true,\n imports: [IconComponent, FieldMessageComponent],\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true,\n },\n {\n provide: DsOverlayCloseRef,\n useExisting: forwardRef(() => ColorPickerComponent),\n },\n ],\n host: {\n '[class.open]': 'open()',\n '[class.disabled]': 'isDisabled()',\n '[class.invalid]': 'invalid()',\n },\n})\nexport class ColorPickerComponent\n extends DsControlValueAccessor<string>\n implements DsOverlayCloseRef\n{\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly value = model<string>('#2F54FF');\n readonly presets = input<readonly string[]>(DEFAULT_PRESETS);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Choose colour');\n readonly invalid = input<boolean>(false);\n readonly hint = input<string>('');\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly open = signal(false);\n\n // Working HSV state while the panel is open — the saturation/value plane and\n // the hue slider both manipulate this; the hex `value` is derived from it.\n protected readonly hsv = signal<Hsv>(\n hexToHsv('#2F54FF') ?? { h: 0, s: 0, v: 0 },\n );\n\n private overlayRef: OverlayRef | null = null;\n private svDragging = false;\n private hueDragging = false;\n\n constructor() {\n super();\n inject(DestroyRef).onDestroy(() => {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n });\n }\n\n protected readonly uid = nextControlId('ds-color-picker');\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n // Normalised hex for the trigger swatch + hex field.\n protected readonly displayHex = computed(\n () => normalizeHex(this.value()) ?? '#000000',\n );\n\n // Pure-hue fill behind the saturation/value plane.\n protected readonly hueColor = computed(() =>\n hsvToHex({ h: this.hsv().h, s: 100, v: 100 }),\n );\n\n protected readonly svThumb = computed(() => {\n const { s: saturation, v: value } = this.hsv();\n\n return { left: saturation, top: 100 - value };\n });\n\n protected readonly huePercent = computed(() => (this.hsv().h / 360) * 100);\n\n protected toggle(): void {\n if (this.isDisabled()) {\n return;\n }\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected selectPreset(hex: string): void {\n this.commitHex(hex);\n this.close();\n }\n\n protected isSelected(hex: string): boolean {\n return normalizeHex(hex) === this.displayHex();\n }\n\n protected onHexInput(event: Event): void {\n const parsed = hexToHsv((event.target as HTMLInputElement).value);\n if (parsed) {\n this.hsv.set(parsed);\n this.value.set(hsvToHex(parsed));\n }\n }\n\n // --- Saturation / value plane ---\n protected onSvPointerDown(event: PointerEvent): void {\n const plane = event.currentTarget as HTMLElement;\n plane.setPointerCapture(event.pointerId);\n this.svDragging = true;\n this.updateSv(event, plane);\n }\n\n protected onSvPointerMove(event: PointerEvent): void {\n if (this.svDragging) {\n this.updateSv(event, event.currentTarget as HTMLElement);\n }\n }\n\n protected onSvPointerUp(event: PointerEvent): void {\n if (!this.svDragging) {\n return;\n }\n const plane = event.currentTarget as HTMLElement;\n if (plane.hasPointerCapture(event.pointerId)) {\n plane.releasePointerCapture(event.pointerId);\n }\n this.svDragging = false;\n }\n\n protected onSvKeydown(event: KeyboardEvent): void {\n const { s: saturation, v: value } = this.hsv();\n const step = event.shiftKey ? 10 : 1;\n let nextSaturation = saturation;\n let nextValue = value;\n switch (event.key) {\n case 'ArrowRight':\n nextSaturation = saturation + step;\n break;\n case 'ArrowLeft':\n nextSaturation = saturation - step;\n break;\n case 'ArrowUp':\n nextValue = value + step;\n break;\n case 'ArrowDown':\n nextValue = value - step;\n break;\n default:\n return;\n }\n event.preventDefault();\n this.setHsv({\n s: this.clampPct(nextSaturation),\n v: this.clampPct(nextValue),\n });\n }\n\n // --- Hue slider ---\n protected onHuePointerDown(event: PointerEvent): void {\n const track = event.currentTarget as HTMLElement;\n track.setPointerCapture(event.pointerId);\n this.hueDragging = true;\n this.updateHue(event, track);\n }\n\n protected onHuePointerMove(event: PointerEvent): void {\n if (this.hueDragging) {\n this.updateHue(event, event.currentTarget as HTMLElement);\n }\n }\n\n protected onHuePointerUp(event: PointerEvent): void {\n if (!this.hueDragging) {\n return;\n }\n const track = event.currentTarget as HTMLElement;\n if (track.hasPointerCapture(event.pointerId)) {\n track.releasePointerCapture(event.pointerId);\n }\n this.hueDragging = false;\n }\n\n protected onHueKeydown(event: KeyboardEvent): void {\n const step = event.shiftKey ? 10 : 1;\n let next = this.hsv().h;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next += step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n next -= step;\n break;\n default:\n return;\n }\n event.preventDefault();\n this.setHsv({ h: (next + 360) % 360 });\n }\n\n private openPanel(): void {\n if (this.overlayRef) {\n return;\n }\n const parsed = hexToHsv(this.value());\n if (parsed) {\n this.hsv.set(parsed);\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.host.nativeElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: ['ds-dropdown-panel', 'ds-overlay-pane'],\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n });\n this.overlayRef.attach(new TemplatePortal(this.panelTpl(), this.vcr));\n this.open.set(true);\n }\n\n close(): void {\n if (!this.overlayRef) {\n return;\n }\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.open.set(false);\n this.markTouched();\n this.trigger().nativeElement.focus();\n }\n\n private setHsv(partial: Partial<Hsv>): void {\n const next = { ...this.hsv(), ...partial };\n this.hsv.set(next);\n this.value.set(hsvToHex(next));\n }\n\n private commitHex(hex: string): void {\n const parsed = hexToHsv(hex);\n if (parsed) {\n this.hsv.set(parsed);\n this.value.set(hsvToHex(parsed));\n }\n }\n\n private updateSv(event: PointerEvent, plane: HTMLElement): void {\n const rect = plane.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n const saturation = this.clampPct(\n ((event.clientX - rect.left) / rect.width) * 100,\n );\n const value = this.clampPct(\n 100 - ((event.clientY - rect.top) / rect.height) * 100,\n );\n this.setHsv({ s: Math.round(saturation), v: Math.round(value) });\n }\n\n private updateHue(event: PointerEvent, track: HTMLElement): void {\n const rect = track.getBoundingClientRect();\n if (rect.width === 0) {\n return;\n }\n const ratio = Math.min(\n 1,\n Math.max(0, (event.clientX - rect.left) / rect.width),\n );\n this.setHsv({ h: Math.round(ratio * 360) });\n }\n\n private clampPct(value: number): number {\n return Math.min(100, Math.max(0, value));\n }\n}\n","<button\n #trigger\n type=\"button\"\n class=\"trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\"\n>\n <span\n class=\"swatch\"\n [style.background-color]=\"displayHex()\"\n >\n </span>\n\n <span class=\"hex\">\n {{ displayHex() }}\n </span>\n\n <ds-icon\n class=\"chevron\"\n name=\"chevronDown\"\n [size]=\"16\"\n />\n</button>\n\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n\n<ng-template #panel>\n <div\n class=\"panel\"\n role=\"dialog\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div\n class=\"sv-plane\"\n tabindex=\"0\"\n aria-label=\"Saturation and brightness — use arrow keys to adjust\"\n [style.background-color]=\"hueColor()\"\n (pointerdown)=\"onSvPointerDown($event)\"\n (pointermove)=\"onSvPointerMove($event)\"\n (pointerup)=\"onSvPointerUp($event)\"\n (pointercancel)=\"onSvPointerUp($event)\"\n (keydown)=\"onSvKeydown($event)\"\n >\n <span\n class=\"sv-thumb\"\n [style.left.%]=\"svThumb().left\"\n [style.top.%]=\"svThumb().top\"\n >\n </span>\n </div>\n\n <div\n class=\"hue-track\"\n role=\"slider\"\n tabindex=\"0\"\n aria-label=\"Hue\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"360\"\n [attr.aria-valuenow]=\"hsv().h\"\n (pointerdown)=\"onHuePointerDown($event)\"\n (pointermove)=\"onHuePointerMove($event)\"\n (pointerup)=\"onHuePointerUp($event)\"\n (pointercancel)=\"onHuePointerUp($event)\"\n (keydown)=\"onHueKeydown($event)\"\n >\n <span\n class=\"hue-thumb\"\n [style.left.%]=\"huePercent()\"\n >\n </span>\n </div>\n\n <div class=\"fields\">\n <span\n class=\"preview\"\n [style.background-color]=\"displayHex()\"\n >\n </span>\n\n <input\n type=\"text\"\n class=\"hex-input\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n aria-label=\"Hex colour value\"\n [value]=\"displayHex()\"\n (input)=\"onHexInput($event)\"\n />\n </div>\n\n <div\n class=\"presets\"\n role=\"group\"\n aria-label=\"Preset colours\"\n >\n @for (preset of presets(); track preset) {\n <button\n type=\"button\"\n class=\"preset\"\n [class.selected]=\"isSelected(preset)\"\n [style.background-color]=\"preset\"\n [attr.aria-label]=\"preset\"\n [attr.aria-pressed]=\"isSelected(preset)\"\n (click)=\"selectPreset(preset)\"\n >\n </button>\n }\n </div>\n </div>\n</ng-template>\n","import {\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { IconComponent } from '../../icons/icon.component';\nimport { TagComponent } from '../tag/tag.component';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { disposeWithLeave } from '../overlay-motion';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\nimport type { MultiSelectOption } from './multi-select.types';\n\n@Component({\n selector: 'ds-multi-select',\n standalone: true,\n imports: [IconComponent, TagComponent, FieldMessageComponent],\n templateUrl: './multi-select.component.html',\n styleUrl: './multi-select.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MultiSelectComponent extends DsControlValueAccessor<string[]> {\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n\n readonly value = model<string[]>([]);\n readonly options = input<readonly MultiSelectOption[]>([]);\n readonly placeholder = input<string>('Select…');\n readonly searchPlaceholder = input<string>('Filter…');\n // 0 / null shows every chip; a positive cap collapses the rest into \"+N more\".\n readonly maxVisibleChips = input<number | null>(null, {\n transform: (raw: unknown) => (raw == null ? null : numberAttribute(raw)),\n });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n readonly ariaLabel = input<string | null>(null);\n // Show a \"Select all\" row that toggles every (filter-matching, enabled) option.\n readonly selectAll = input(false, { transform: booleanAttribute });\n\n protected readonly uid = nextControlId('ds-multi-select');\n protected readonly listboxId = `${this.uid}-listbox`;\n protected optionId(index: number): string {\n return `${this.uid}-opt-${index}`;\n }\n\n protected readonly trigger =\n viewChild.required<ElementRef<HTMLElement>>('trigger');\n protected readonly searchInput =\n viewChild<ElementRef<HTMLInputElement>>('search');\n protected readonly panelTpl =\n viewChild.required<TemplateRef<unknown>>('panel');\n\n protected readonly open = signal(false);\n protected readonly filter = signal('');\n protected readonly activeIndex = signal(-1);\n\n private overlayRef: OverlayRef | null = null;\n private focusTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n super();\n inject(DestroyRef).onDestroy(() => {\n clearTimeout(this.focusTimer ?? undefined);\n this.overlayRef?.dispose();\n this.overlayRef = null;\n });\n }\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.formDisabled(),\n );\n\n // Selected options in the source order, so chip order is stable.\n protected readonly selectedOptions = computed<MultiSelectOption[]>(() => {\n const selected = this.value();\n\n return this.options().filter((option) => selected.includes(option.value));\n });\n\n protected readonly visibleChips = computed<MultiSelectOption[]>(() => {\n const max = this.maxVisibleChips();\n const selected = this.selectedOptions();\n\n return max && max > 0 ? selected.slice(0, max) : selected;\n });\n\n protected readonly overflowCount = computed<number>(() => {\n const max = this.maxVisibleChips();\n\n return max && max > 0\n ? Math.max(0, this.selectedOptions().length - max)\n : 0;\n });\n\n protected readonly filteredOptions = computed<MultiSelectOption[]>(() => {\n const query = this.filter().trim().toLowerCase();\n const options = this.options();\n\n return query\n ? options.filter((option) => option.label.toLowerCase().includes(query))\n : options.slice();\n });\n\n protected readonly activeDescendant = computed(() => {\n const index = this.activeIndex();\n\n return this.open() && index >= 0 ? this.optionId(index) : null;\n });\n\n protected readonly resolvedAriaLabel = computed(\n () => this.ariaLabel() || this.placeholder(),\n );\n\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n // Select-all reflects the currently filter-matching, enabled options.\n private enabledFiltered(): MultiSelectOption[] {\n return this.filteredOptions().filter((option) => !option.disabled);\n }\n\n protected readonly allFilteredSelected = computed<boolean>(() => {\n const enabled = this.enabledFiltered();\n const selected = this.value();\n\n return (\n enabled.length > 0 && enabled.every((o) => selected.includes(o.value))\n );\n });\n\n protected readonly someFilteredSelected = computed<boolean>(() => {\n const selected = this.value();\n\n return (\n this.enabledFiltered().some((o) => selected.includes(o.value)) &&\n !this.allFilteredSelected()\n );\n });\n\n protected toggleSelectAll(): void {\n const enabledValues = this.enabledFiltered().map((o) => o.value);\n if (this.allFilteredSelected()) {\n const remove = new Set(enabledValues);\n\n this.value.set(this.value().filter((value) => !remove.has(value)));\n } else {\n const next = new Set(this.value());\n enabledValues.forEach((value) => next.add(value));\n this.value.set([...next]);\n }\n }\n\n protected isSelected(value: string): boolean {\n return this.value().includes(value);\n }\n\n protected toggleValue(option: MultiSelectOption): void {\n if (option.disabled) {\n return;\n }\n const current = this.value();\n this.value.set(\n current.includes(option.value)\n ? current.filter((value) => value !== option.value)\n : [...current, option.value],\n );\n }\n\n protected removeValue(value: string): void {\n this.value.set(this.value().filter((entry) => entry !== value));\n }\n\n protected onFilter(event: Event): void {\n this.filter.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(this.filteredOptions().length ? 0 : -1);\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n if (\n event.key === 'ArrowDown' ||\n event.key === 'Enter' ||\n event.key === ' '\n ) {\n event.preventDefault();\n this.openPanel();\n }\n }\n\n protected onSearchKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.moveActive(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.moveActive(-1);\n break;\n case 'Enter': {\n event.preventDefault();\n const option = this.filteredOptions()[this.activeIndex()];\n if (option) {\n this.toggleValue(option);\n }\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close();\n break;\n case 'Backspace':\n if (!this.filter()) {\n const selected = this.selectedOptions();\n if (selected.length) {\n this.removeValue(selected[selected.length - 1].value);\n }\n }\n break;\n default:\n break;\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef || this.isDisabled()) {\n return;\n }\n const triggerElement = this.trigger().nativeElement;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n const cfg: OverlayConfig = {\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: ['ds-dropdown-panel', 'ds-overlay-pane'],\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: triggerElement.getBoundingClientRect().width,\n };\n this.overlayRef = this.overlay.create(cfg);\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n });\n this.overlayRef.attach(new TemplatePortal(this.panelTpl(), this.vcr));\n this.open.set(true);\n this.activeIndex.set(this.filteredOptions().length ? 0 : -1);\n this.focusTimer = setTimeout(() => {\n this.focusTimer = null;\n this.searchInput()?.nativeElement.focus();\n });\n }\n\n protected close(): void {\n if (!this.overlayRef) {\n return;\n }\n clearTimeout(this.focusTimer ?? undefined);\n this.focusTimer = null;\n disposeWithLeave(this.overlayRef);\n this.overlayRef = null;\n this.open.set(false);\n this.filter.set('');\n this.activeIndex.set(-1);\n this.markTouched();\n this.trigger().nativeElement.focus();\n }\n\n private moveActive(delta: number): void {\n const options = this.filteredOptions();\n const count = options.length;\n if (!count) {\n return;\n }\n let next = this.activeIndex();\n let remaining = count;\n while (remaining-- > 0) {\n next = (next + delta + count) % count;\n if (!options[next].disabled) {\n this.activeIndex.set(next);\n\n return;\n }\n }\n }\n}\n","<div\n #trigger\n class=\"field-trigger\"\n aria-haspopup=\"listbox\"\n [attr.role]=\"open() ? 'group' : 'combobox'\"\n [class.open]=\"open()\"\n [class.invalid]=\"invalid()\"\n [class.disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n (click)=\"openPanel()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n @if (selectedOptions().length === 0) {\n <span class=\"placeholder\">\n {{ placeholder() }}\n </span>\n } @else {\n @for (option of visibleChips(); track option.value) {\n <ds-tag\n variant=\"neutral\"\n closable\n [closeLabel]=\"'Remove ' + option.label\"\n (closed)=\"removeValue(option.value)\"\n >\n {{ option.label }}\n </ds-tag>\n }\n\n @if (overflowCount() > 0) {\n <span class=\"overflow\">\n +{{ overflowCount() }} more\n </span>\n }\n }\n\n <ds-icon\n class=\"chevron\"\n name=\"chevronDown\"\n [size]=\"18\"\n />\n</div>\n\n<ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n/>\n\n<ng-template #panel>\n <div class=\"panel\">\n <div class=\"search-row\">\n <ds-icon\n class=\"search-icon\"\n name=\"search\"\n [size]=\"16\"\n />\n\n <input\n #search\n type=\"text\"\n class=\"search-input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"filter()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n (input)=\"onFilter($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n </div>\n\n @if (selectAll() && filteredOptions().length) {\n <button\n type=\"button\"\n class=\"select-all\"\n role=\"checkbox\"\n [attr.aria-checked]=\"\n allFilteredSelected()\n ? 'true'\n : someFilteredSelected()\n ? 'mixed'\n : 'false'\n \"\n (click)=\"toggleSelectAll()\"\n >\n <span\n class=\"checkbox\"\n [class.checked]=\"allFilteredSelected()\"\n [class.indeterminate]=\"someFilteredSelected()\"\n >\n @if (allFilteredSelected()) {\n <ds-icon\n name=\"check\"\n [size]=\"13\"\n />\n } @else if (someFilteredSelected()) {\n <span class=\"dash\"></span>\n }\n </span>\n\n <span class=\"select-all-label\">\n Select all\n </span>\n </button>\n }\n\n <ul\n class=\"options\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [id]=\"listboxId\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"option\"\n class=\"option\"\n [id]=\"optionId(i)\"\n [class.is-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled\"\n (click)=\"toggleValue(option)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n <span\n class=\"checkbox\"\n [class.checked]=\"isSelected(option.value)\"\n >\n @if (isSelected(option.value)) {\n <ds-icon\n name=\"check\"\n [size]=\"13\"\n />\n }\n </span>\n\n <span class=\"option-label\">\n {{ option.label }}\n </span>\n </button>\n </li>\n }\n\n @if (filteredOptions().length === 0) {\n <li class=\"empty\">\n No matches\n </li>\n }\n </ul>\n </div>\n</ng-template>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsBooleanControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\n@Component({\n selector: 'ds-checkbox',\n standalone: true,\n imports: [FieldMessageComponent],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true },\n ],\n})\nexport class CheckboxComponent extends DsBooleanControlValueAccessor {\n readonly checked = model<boolean>(false);\n readonly indeterminate = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string | null>(null);\n readonly inputId = input<string | null>(null);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n /** Inline label rendered beside the box and wired via for/id. Omit to\n * bring your own <label>. */\n readonly label = input<string>('');\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly uid = nextControlId('ds-checkbox');\n protected readonly controlId = computed(() => this.inputId() ?? this.uid);\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected onCheckedChange(event: Event): void {\n this.checked.set((event.target as HTMLInputElement).checked);\n }\n}\n","<div class=\"checkbox-field\">\n <span\n class=\"control-line\"\n [class.is-disabled]=\"isDisabled()\"\n >\n <input\n type=\"checkbox\"\n class=\"check\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"isDisabled()\"\n [attr.name]=\"name()\"\n [attr.id]=\"controlId()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n (change)=\"onCheckedChange($event)\"\n (blur)=\"markTouched()\"\n />\n @if (label()) {\n <label\n class=\"control-text\"\n [attr.for]=\"controlId()\"\n >{{ label() }}</label\n >\n }\n </span>\n <ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n />\n</div>\n","import { InjectionToken } from '@angular/core';\n\n/** Contract that ds-radio reads from its parent ds-radio-group, injected via\n * token to avoid a circular import (radio-group → RadioComponent for\n * contentChildren; radio → RadioGroupComponent for group injection). */\nexport interface RadioGroupContract {\n readonly value: () => unknown;\n readonly groupName: () => string;\n readonly isDisabled: () => boolean;\n isTabbable(radio: RadioGroupChild): boolean;\n select(value: unknown): void;\n}\n\n/** Contract the radio-group reads back from each projected radio. */\nexport interface RadioGroupChild {\n readonly value: () => unknown;\n readonly effectiveDisabled: () => boolean;\n focus(): void;\n}\n\nexport const RADIO_GROUP = new InjectionToken<RadioGroupContract>('RADIO_GROUP');\n","import {\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { nextControlId } from '../field-ids';\nimport { RADIO_GROUP } from '../radio-group/radio-group.token';\n\n@Component({\n selector: 'ds-radio',\n standalone: true,\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n})\nexport class RadioComponent {\n /** Standalone two-way binding. When inside ds-radio-group, isChecked() is\n * derived from the group value instead. */\n readonly checked = model<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string>('');\n readonly value = input<unknown>('');\n readonly inputId = input<string | null>(null);\n /** Inline label rendered beside the dot and wired via for/id. Omit to bring\n * your own <label>. */\n readonly label = input<string>('');\n\n protected readonly uid = nextControlId('ds-radio');\n protected readonly controlId = computed(() => this.inputId() ?? this.uid);\n\n /** Injected via token to avoid circular import with RadioGroupComponent. */\n protected readonly group = inject(RADIO_GROUP, { optional: true });\n\n readonly effectiveDisabled = computed(() => this.group?.isDisabled() || this.disabled());\n protected readonly effectiveName = computed(() => this.group?.groupName() ?? this.name());\n protected readonly isChecked = computed(() =>\n this.group ? this.group.value() === this.value() : this.checked(),\n );\n\n /** Exposed so the group can implement roving tabindex. */\n readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n protected get tabIndexAttr(): 0 | -1 {\n if (!this.group) {\n return 0;\n }\n\n return this.group.isTabbable(this) ? 0 : -1;\n }\n\n /** Called by the group's keyboard handler to focus this radio's input. */\n focus(): void {\n this.inputElement()?.nativeElement.focus();\n }\n\n protected onSelect(): void {\n if (this.effectiveDisabled()) {\n return;\n }\n if (this.group) {\n this.group.select(this.value());\n } else {\n this.checked.set(true);\n }\n }\n}\n","<span\n class=\"control-line\"\n [class.is-disabled]=\"effectiveDisabled()\"\n>\n <input\n #inputRef\n type=\"radio\"\n class=\"radio\"\n [checked]=\"isChecked()\"\n [disabled]=\"effectiveDisabled()\"\n [attr.name]=\"effectiveName() || null\"\n [attr.value]=\"value() ?? null\"\n [attr.id]=\"controlId()\"\n [attr.tabindex]=\"tabIndexAttr\"\n (change)=\"onSelect()\"\n />\n @if (label()) {\n <label\n class=\"control-text\"\n [attr.for]=\"controlId()\"\n >{{ label() }}</label\n >\n }\n</span>\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\nimport { RadioComponent } from '../radio/radio.component';\nimport { RADIO_GROUP, type RadioGroupChild, type RadioGroupContract } from './radio-group.token';\n\n@Component({\n selector: 'ds-radio-group',\n standalone: true,\n imports: [FieldMessageComponent],\n templateUrl: './radio-group.component.html',\n styleUrl: './radio-group.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n host: {\n role: 'radiogroup',\n '[attr.aria-label]': 'ariaLabel() || label() || null',\n '[attr.aria-describedby]': 'hintId()',\n '[attr.aria-invalid]': \"invalid() ? 'true' : null\",\n '(keydown)': 'onKeydown($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n {\n provide: RADIO_GROUP,\n useExisting: forwardRef(() => RadioGroupComponent),\n },\n ],\n})\nexport class RadioGroupComponent\n extends DsControlValueAccessor<unknown>\n implements RadioGroupContract\n{\n readonly value = model<unknown>(null);\n readonly name = input<string | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n readonly ariaLabel = input<string | null>(null);\n readonly label = input<string>('');\n\n readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly uid = nextControlId('ds-radio-group');\n readonly groupName = computed(() => this.name() ?? this.uid);\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n // contentChildren gives us references to all projected RadioComponents\n // so the group can drive roving tabindex and forward keyboard events.\n private readonly radios = contentChildren(RadioComponent);\n\n private get enabledRadios(): RadioGroupChild[] {\n return (this.radios() as unknown as RadioGroupChild[]).filter(\n (radio) => !radio.effectiveDisabled(),\n );\n }\n\n isTabbable(radio: RadioGroupChild): boolean {\n const currentValue = this.value();\n const allRadios = this.radios() as unknown as RadioGroupChild[];\n\n // The checked radio is tabbable; if none checked, the first enabled radio.\n if (currentValue !== null && currentValue !== undefined) {\n const matchIndex = allRadios.findIndex((r) => r.value() === currentValue);\n if (matchIndex !== -1) {\n return allRadios[matchIndex] === radio;\n }\n }\n\n const firstEnabled = allRadios.find((r) => !r.effectiveDisabled());\n\n return firstEnabled === radio;\n }\n\n select(value: unknown): void {\n this.value.set(value);\n this.markTouched();\n\n // Focus the newly selected radio so keyboard users stay on track.\n const selected = (this.radios() as unknown as RadioGroupChild[]).find(\n (radio) => radio.value() === value,\n );\n selected?.focus();\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const key = event.key;\n if (!['ArrowDown', 'ArrowRight', 'ArrowUp', 'ArrowLeft', ' ', 'Enter'].includes(key)) {\n return;\n }\n\n const enabled = this.enabledRadios;\n if (!enabled.length) {\n return;\n }\n\n event.preventDefault();\n\n if (key === ' ' || key === 'Enter') {\n // Select whichever radio currently has DOM focus.\n const allRadios = this.radios() as unknown as RadioGroupChild[];\n const focused = allRadios.find((radio) => {\n // We rely on the radio exposing focus() which targets its inner input.\n // To detect which radio's input is focused we cast to the concrete type.\n const component = radio as unknown as RadioComponent;\n\n return component.inputElement()?.nativeElement === document.activeElement;\n });\n if (focused) {\n this.select(focused.value());\n }\n\n return;\n }\n\n const forward = key === 'ArrowDown' || key === 'ArrowRight';\n const currentValue = this.value();\n\n // Find the index of the currently focused/selected radio among enabled ones.\n let currentIndex = enabled.findIndex((radio) => {\n const component = radio as unknown as RadioComponent;\n\n return component.inputElement()?.nativeElement === document.activeElement;\n });\n\n if (currentIndex === -1) {\n // Fall back to the selected radio's index in the enabled list.\n currentIndex = enabled.findIndex((radio) => radio.value() === currentValue);\n }\n\n let nextIndex: number;\n if (currentIndex === -1) {\n // Nothing focused/selected yet: forward → first, backward → last.\n nextIndex = forward ? 0 : enabled.length - 1;\n } else {\n nextIndex = forward\n ? (currentIndex + 1) % enabled.length\n : (currentIndex - 1 + enabled.length) % enabled.length;\n }\n\n const target = enabled[nextIndex];\n this.select(target.value());\n }\n}\n","@if (label()) {\n <span class=\"group-label\">{{ label() }}</span>\n}\n<div class=\"radios\">\n <ng-content />\n</div>\n<ds-field-message [text]=\"hint()\" [state]=\"messageState()\" [messageId]=\"hintId()\" />\n","import {\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DsBooleanControlValueAccessor } from '../control-value-accessor';\nimport { FieldMessageComponent, type FieldMessageState } from '../field-message/field-message.component';\nimport { nextControlId } from '../field-ids';\n\n@Component({\n selector: 'ds-switch',\n standalone: true,\n imports: [FieldMessageComponent],\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss',\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SwitchComponent), multi: true },\n ],\n})\nexport class SwitchComponent extends DsBooleanControlValueAccessor {\n readonly checked = model<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly name = input<string | null>(null);\n readonly variant = input<'default' | 'success' | 'error'>('default');\n readonly inputId = input<string | null>(null);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly hint = input<string>('');\n /** Inline label rendered beside the track and wired via for/id. Omit to\n * bring your own <label>. */\n readonly label = input<string>('');\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly uid = nextControlId('ds-switch');\n protected readonly controlId = computed(() => this.inputId() ?? this.uid);\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly messageState = computed<FieldMessageState>(() =>\n this.invalid() ? 'error' : 'default',\n );\n\n protected readonly classes = computed(() => {\n const variant = this.variant();\n\n return variant === 'default' ? 'switch' : `switch ${variant}`;\n });\n\n protected onCheckedChange(event: Event): void {\n this.checked.set((event.target as HTMLInputElement).checked);\n }\n}\n","<div class=\"switch-field\">\n <span\n class=\"control-line\"\n [class.is-disabled]=\"isDisabled()\"\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n [class]=\"classes()\"\n [checked]=\"checked()\"\n [attr.aria-checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.name]=\"name()\"\n [attr.id]=\"controlId()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-describedby]=\"hintId()\"\n (change)=\"onCheckedChange($event)\"\n (blur)=\"markTouched()\"\n />\n @if (label()) {\n <label\n class=\"control-text\"\n [attr.for]=\"controlId()\"\n >{{ label() }}</label\n >\n }\n </span>\n <ds-field-message\n [text]=\"hint()\"\n [state]=\"messageState()\"\n [messageId]=\"hintId()\"\n />\n</div>\n","/**\n * Public surface of @ids-group-ltd/ids-design-system.\n */\nexport * from './lib/config/ds-config';\nexport * from './lib/theme/provide-ds-theme';\nexport * from './lib/overlay/ds-overlay-close-ref';\nexport * from './lib/icons';\nexport * from './lib/components/button';\nexport * from './lib/components/toggle-button';\nexport * from './lib/components/icon-button';\nexport * from './lib/components/badge';\nexport * from './lib/components/status-dot';\nexport * from './lib/components/avatar';\nexport * from './lib/components/avatar-group';\nexport * from './lib/components/card';\nexport * from './lib/components/stat';\nexport * from './lib/components/tabs';\nexport * from './lib/components/input';\nexport * from './lib/components/number-stepper';\nexport * from './lib/components/textarea';\nexport * from './lib/components/search';\nexport * from './lib/components/select';\nexport * from './lib/components/dropdown';\nexport * from './lib/components/table';\nexport * from './lib/components/pagination';\nexport * from './lib/components/date-picker';\nexport * from './lib/components/breadcrumbs';\nexport * from './lib/components/sidenav';\nexport * from './lib/components/topbar';\nexport * from './lib/components/page-header';\nexport * from './lib/components/modal';\nexport * from './lib/components/banner';\nexport * from './lib/components/alert';\nexport * from './lib/components/dropzone';\nexport * from './lib/components/menu';\nexport * from './lib/components/empty-state';\nexport * from './lib/components/progress';\nexport * from './lib/components/accordion';\nexport * from './lib/components/stepper';\nexport * from './lib/components/tooltip';\nexport * from './lib/components/popover';\nexport * from './lib/components/toast';\nexport * from './lib/components/drawer';\nexport * from './lib/components/bottom-sheet';\nexport * from './lib/components/tag';\nexport * from './lib/components/w3w';\nexport * from './lib/components/page-footer';\nexport * from './lib/components/combobox';\nexport * from './lib/components/divider';\nexport * from './lib/components/description-list';\nexport * from './lib/components/layout';\nexport * from './lib/components/segmented';\nexport * from './lib/components/button-group';\nexport * from './lib/components/list';\nexport * from './lib/components/split-button';\nexport * from './lib/components/timeline';\nexport * from './lib/components/otp-input';\nexport * from './lib/components/slider';\nexport * from './lib/components/loading-overlay';\nexport * from './lib/components/tree';\nexport * from './lib/components/color-picker';\nexport * from './lib/components/multi-select';\nexport * from './lib/components/skeleton';\nexport * from './lib/components/spinner';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/radio';\nexport * from './lib/components/radio-group';\nexport * from './lib/components/switch';\nexport * from './lib/components/static-preview.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","i1.DsStaticPreview","i1","DOCUMENT"],"mappings":"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"}