@ids-group-ltd/ids-design-system 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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/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>('DS_ICON_REGISTRY', {\n factory: () => ({}),\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: '<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: '<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: '<rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" /><path d=\"M3 10h18M8 3v4M16 3v4\" />',\n truck: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<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: '<path d=\"M12 14l4-4\" /><circle cx=\"12\" cy=\"14\" r=\"9\" /><path d=\"M3 14a9 9 0 0 1 18 0\" />',\n package: '<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: '<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: '<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: '<circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M9 9v.01M15 9v.01M8 14a5 5 0 0 0 8 0\" />',\n frown: '<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': '<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': '<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 { Component, ViewEncapsulation, computed, inject, input } 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 ds-icon { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; line-height: 0; }\n ds-icon > svg.icon { display: block; }\n `],\n template: `\n <svg\n class=\"icon\"\n [style.--ds-icon-size]=\"size() + 'px'\"\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n [attr.stroke-width]=\"stroke()\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [attr.role]=\"ariaLabel() ? 'img' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-hidden]=\"ariaLabel() ? null : 'true'\"\n [innerHTML]=\"paths()\"\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 = (ICONS as Record<string, string>)[key] ?? this.registry[key] ?? '';\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 { Component, ViewEncapsulation, booleanAttribute, computed, input, output } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\nimport type { IconName } from '../../icons/icons.data';\nimport type { IconButtonSize, IconButtonType, IconButtonVariant } 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()) parts.push('selected');\n return parts.join(' ');\n });\n\n protected readonly iconSize = computed(() => {\n const size = this.size();\n if (size === 'sm') return 16;\n if (size === 'lg') return 24;\n return 20;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) return;\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 [name]=\"icon()\" [size]=\"iconSize()\" />\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 = [\n 'badge',\n this.variant(),\n 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 <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 [class]=\"classes()\" aria-hidden=\"true\"></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]': 'tintStyle().bg',\n '[style.--ds-avatar-fg]': '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') return { bg: value.bg, fg: value.fg };\n return { bg: null as string | null, fg: null as string | null };\n });\n}\n","@if (imageUrl()) {\n <img [src]=\"imageUrl()\" alt=\"\" />\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) return null;\n return total > max ? total - max : null;\n });\n}\n","<ng-content></ng-content>\n@if (overflow() !== null) {\n <span class=\"avatar-overflow\">+{{ overflow() }}</span>\n}\n","import { Component, ViewEncapsulation, computed, input, output } 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 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 [class]=\"classes()\" (click)=\"onClick($event)\">\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) return '';\n const tone = this.deltaTone();\n if (tone) return `delta ${tone}`;\n if (delta > 0) return 'delta up';\n if (delta < 0) return 'delta down';\n return 'delta';\n });\n\n protected readonly deltaIcon = computed<'arrowUp' | 'arrowDown' | null>(() => {\n const delta = this.delta();\n if (delta === null || delta === 0) return null;\n return delta > 0 ? 'arrowUp' : 'arrowDown';\n });\n\n protected readonly deltaText = computed(() => {\n const delta = this.delta();\n if (delta === null) return '';\n const magnitude = Math.abs(delta);\n const suffix = this.deltaLabel() ? ` ${this.deltaLabel()}` : '';\n return `${magnitude}${suffix}`;\n });\n}\n","<div class=\"stat\">\n <div class=\"label\">{{ label() }}</div>\n <div class=\"value\">{{ value() }}{{ unit() }}</div>\n @if (delta() !== null) {\n <div [class]=\"deltaClasses()\">\n @if (deltaIcon(); as icon) {\n <ds-icon [name]=\"icon\" [size]=\"12\"></ds-icon>\n }\n <ng-content select=\"[delta]\">{{ deltaText() }}</ng-content>\n </div>\n } @else if (caption()) {\n <div class=\"caption\">{{ caption() }}</div>\n }\n</div>\n","import { Component, TemplateRef, ViewEncapsulation, input, viewChild } 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><ng-content></ng-content></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 idx = this.selectedIndex();\n const list = this.tabs();\n return list[idx]?.content() ?? null;\n });\n\n protected tabClasses(index: number, disabled: boolean): string {\n const parts = ['tab'];\n if (index === this.selectedIndex()) parts.push('active');\n if (disabled) parts.push('disabled');\n return parts.join(' ');\n }\n\n protected select(index: number, disabled: boolean): void {\n if (disabled) return;\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) return;\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) next = (index + 1) % count;\n else if (backward) next = (index - 1 + count) % count;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n else return;\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 el = this.host.nativeElement.querySelector(\n `#${this.tabId(next)}`,\n ) as HTMLElement | null;\n el?.focus();\n });\n }\n}\n","<div [class]=\"tabsClasses()\" role=\"tablist\">\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 [name]=\"tab.icon()!\" [size]=\"14\"></ds-icon>\n }\n <span>{{ tab.label() }}</span>\n @if (tab.count() !== null) {\n <span class=\"badge neutral count\">{{ tab.count() }}</span>\n }\n </button>\n }\n</div>\n<div\n class=\"panel\"\n role=\"tabpanel\"\n [id]=\"panelId(selectedIndex())\"\n [attr.aria-labelledby]=\"tabId(selectedIndex())\"\n tabindex=\"0\"\n>\n @if (selectedTemplate(); as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n }\n</div>\n","import { Component, ViewEncapsulation, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../../icons/icon.component';\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})\nexport class InputComponent {\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<'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | null>(null);\n readonly inputMode = input<'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url' | null>(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) return explicit;\n return this.type() === 'search';\n });\n\n protected readonly uid = `ds-input-${++nextId}`;\n protected readonly hintId = computed(() => (this.hint() ? `${this.uid}-hint` : null));\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 protected readonly showPasswordToggle = computed<boolean>(\n () => this.passwordToggle() && this.type() === 'password' && !this.disabled(),\n );\n\n protected readonly effectiveType = computed<InputType>(() =>\n this.passwordToggle() && this.type() === 'password' && 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') parts.push('sm');\n if (this.size() === 'lg') parts.push('lg');\n if (this.invalid()) parts.push('error');\n else if (this.success()) parts.push('success');\n if (this.disabled()) parts.push('disabled');\n if (this.readOnly()) parts.push('read-only');\n if (this.withAddon()) parts.push('with-addon');\n if (this.withAddonRight()) parts.push('with-addon-right');\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 class=\"label\" [attr.for]=\"uid\">\n {{ label() }}\n @if (required()) {\n <span class=\"req\" aria-hidden=\"true\">*</span>\n } @else if (optional()) {\n <span class=\"optional-marker\" aria-hidden=\"true\">(optional)</span>\n }\n </label>\n }\n <div class=\"control\">\n <span class=\"addon-slot prefix\"><ng-content select=\"[dsInputPrefix]\"></ng-content></span>\n <input\n [id]=\"uid\"\n [type]=\"effectiveType()\"\n [(ngModel)]=\"value\"\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]=\"disabled()\"\n [readOnly]=\"readOnly()\"\n [required]=\"required()\"\n (blur)=\"blurred.emit()\"\n />\n @if (canClear() && value() && !disabled()) {\n <button type=\"button\" class=\"clear-btn\" (click)=\"clear()\" aria-label=\"Clear input\"></button>\n }\n @if (showPasswordToggle()) {\n <button\n type=\"button\"\n class=\"password-toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"passwordVisible() ? 'Hide password' : 'Show password'\"\n (click)=\"togglePassword()\"\n >\n <ds-icon [name]=\"passwordVisible() ? 'eye-off' : 'eye'\" [size]=\"16\" />\n </button>\n }\n <span class=\"addon-slot suffix\"><ng-content select=\"[dsInputSuffix]\"></ng-content></span>\n </div>\n @if (hint()) {\n <span class=\"hint\" [id]=\"hintId()\" [attr.role]=\"invalid() ? 'alert' : null\">{{ hint() }}</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 return max != null && this.value() >= max;\n });\n\n protected readonly stepperClass = computed(() => {\n const parts = ['stepper', `size-${this.size()}`];\n if (this.disabled()) parts.push('disabled');\n return parts.join(' ');\n });\n\n inc(): void {\n if (this.atMax() || this.disabled()) return;\n this.value.set(this.value() + this.step());\n }\n\n dec(): void {\n if (this.atMin() || this.disabled()) return;\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) clamped = Math.min(max, clamped);\n this.value.set(clamped);\n }\n}\n","<div [class]=\"stepperClass()\">\n <button\n type=\"button\"\n class=\"step minus\"\n (click)=\"dec()\"\n [disabled]=\"atMin() || disabled()\"\n >−</button>\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 <button\n type=\"button\"\n class=\"step plus\"\n (click)=\"inc()\"\n [disabled]=\"atMax() || disabled()\"\n >+</button>\n</div>\n","import { Component, ViewEncapsulation, booleanAttribute, computed, input, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\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})\nexport class TextareaComponent {\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(() => (this.hint() ? `${this.uid}-hint` : null));\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected readonly wrapperClasses = computed(() => {\n const parts = ['field'];\n if (this.size() === 'sm') parts.push('sm');\n if (this.size() === 'lg') parts.push('lg');\n if (this.invalid()) parts.push('error');\n if (this.disabled()) parts.push('disabled');\n if (this.autosize()) parts.push('autosize');\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 class=\"label\" [attr.for]=\"uid\">\n {{ label() }}\n @if (required()) {\n <span class=\"req\" aria-hidden=\"true\">*</span>\n } @else if (optional()) {\n <span class=\"optional-marker\" aria-hidden=\"true\">(optional)</span>\n }\n </label>\n }\n <div class=\"control\">\n <textarea\n [id]=\"uid\"\n [rows]=\"rows()\"\n [(ngModel)]=\"value\"\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]=\"disabled()\"\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 ></textarea>\n </div>\n @if (hint()) {\n <span class=\"hint\" [id]=\"hintId()\" [attr.role]=\"invalid() ? 'alert' : null\">{{ hint() }}</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 = 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 name=\"search\" [size]=\"16\"></ds-icon>\n }\n <input\n #searchInput\n class=\"input\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder() || null\"\n (keydown.enter)=\"onSubmit()\"\n />\n @if (clearable() && value()) {\n <button type=\"button\" class=\"search-clear\" aria-label=\"Clear search\" (click)=\"clear()\">\n <ds-icon name=\"x\" [size]=\"14\"></ds-icon>\n </button>\n }\n @if (shortcut()) {\n <kbd class=\"kbd\">{{ shortcut() }}</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(item: SelectItem): item is SelectOptionGroup {\n return 'options' in item && Array.isArray((item as SelectOptionGroup).options);\n}\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 {\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})\nexport class SelectComponent {\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(flatIdx: number): string {\n return `${this.uid}-opt-${flatIdx}`;\n }\n /** Active option for `aria-activedescendant` (combobox keeps DOM focus). */\n protected readonly activeDescendant = computed(() => {\n const idx = this.activeIndex();\n return this.open() && idx >= 0 ? this.optionId(idx) : null;\n });\n protected readonly resolvedAriaLabel = computed(() =>\n this.label() ? null : this.ariaLabel() || this.placeholder() || null,\n );\n\n protected readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl = viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl = 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<{ option: SelectOption; groupDisabled: boolean }[]>(() => {\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 return out;\n });\n\n protected readonly selectedOption = computed<SelectOption | null>(() => {\n const current = this.value();\n const found = this.flatOptions().find(({ option }) => option.value === current);\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>(() => !!this.selectedOption());\n\n protected readonly triggerClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') parts.push('sm');\n if (this.size() === 'lg') parts.push('lg');\n if (this.disabled()) parts.push('disabled');\n if (this.invalid()) parts.push('error');\n if (this.open() || this.preview.staticPreview()) parts.push('open');\n return parts.join(' ');\n });\n\n constructor() {\n effect(() => {\n if (!this.open()) return;\n const idx = this.flatOptions().findIndex(({ option }) => option.value === this.value());\n this.activeIndex.set(idx >= 0 ? idx : 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.disabled() || this.preview.staticPreview()) return;\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) return;\n const triggerEl = this.trigger().nativeElement;\n const width = triggerEl.getBoundingClientRect().width;\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(triggerEl)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\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 }\n\n protected pick(option: SelectOption, groupDisabled = false): void {\n if (option.disabled || groupDisabled) return;\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(option: SelectOption, groupDisabled = false): boolean {\n return !!option.disabled || groupDisabled;\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.preview.staticPreview()) return;\n const key = event.key;\n if (!this.open()) {\n if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'Enter' || key === ' ') {\n event.preventDefault();\n this.openPanel();\n }\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const idx = this.activeIndex();\n const entry = this.flatOptions()[idx];\n if (entry) this.pick(entry.option, entry.groupDisabled);\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\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) return;\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 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) return i;\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) return i;\n }\n return -1;\n }\n}\n","@if (label()) {\n <span class=\"select-label\" [id]=\"labelId\">\n {{ label() }}\n @if (required()) {\n <span class=\"req\" aria-hidden=\"true\">*</span>\n } @else if (optional()) {\n <span class=\"optional-marker\" aria-hidden=\"true\">(optional)</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]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span class=\"trigger-text\" [class.is-placeholder]=\"!hasValue()\">{{ displayLabel() }}</span>\n <span class=\"chevron\"><ds-icon name=\"chevronDown\" [size]=\"14\" /></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 class=\"dropdown-list\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-labelledby]=\"label() ? labelId : null\">\n @for (item of options(); track item.label; let groupIdx = $index) {\n @if (isOptionGroup(item)) {\n <li class=\"optgroup\" role=\"group\" [attr.aria-label]=\"item.label\">\n <span class=\"optgroup-label\" [class.is-first]=\"groupIdx === 0\">{{ item.label }}</span>\n <ul class=\"optgroup-list\" role=\"presentation\">\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]=\"isOptionDisabled(opt, item.disabled) ? 'true' : null\"\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\">{{ opt.label }}</span>\n @if (isSelected(opt)) {\n <ds-icon class=\"option-check\" name=\"check\" [size]=\"14\" />\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\">{{ item.label }}</span>\n @if (isSelected(item)) {\n <ds-icon class=\"option-check\" name=\"check\" [size]=\"14\" />\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 = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl = viewChild.required<TemplateRef<unknown>>('panel');\n protected readonly panelContentTpl = 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 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>(() => !!this.selectedOption());\n\n protected readonly activeDescendant = computed(() => {\n const idx = this.activeIndex();\n return this.open() && idx >= 0 ? this.optionId(idx) : null;\n });\n\n protected readonly wrapperClasses = computed<string>(() => {\n const parts = ['dropdown'];\n if (this.size() === 'sm') parts.push('sm');\n if (this.size() === 'lg') parts.push('lg');\n if (this.disabled()) parts.push('disabled');\n if (this.readOnly()) parts.push('readonly');\n if (this.error()) parts.push('error');\n if (this.open() || this.preview.staticPreview()) parts.push('open');\n return parts.join(' ');\n });\n\n constructor() {\n effect(() => {\n if (!this.open()) return;\n const idx = this.options().findIndex((o) => o.value === this.value());\n this.activeIndex.set(idx >= 0 ? idx : this.firstEnabledIndex());\n });\n }\n\n protected toggle(): void {\n if (this.disabled() || this.readOnly() || this.preview.staticPreview()) return;\n if (this.open()) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) return;\n const triggerEl = this.trigger().nativeElement;\n const width = triggerEl.getBoundingClientRect().width;\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(triggerEl)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\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) return;\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()) return;\n const key = event.key;\n if (!this.open()) {\n if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'Enter' || key === ' ') {\n event.preventDefault();\n this.openPanel();\n }\n return;\n }\n if (key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (key === 'ArrowDown') {\n event.preventDefault();\n this.moveActive(1);\n return;\n }\n if (key === 'ArrowUp') {\n event.preventDefault();\n this.moveActive(-1);\n return;\n }\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n const idx = this.activeIndex();\n const opt = this.options()[idx];\n if (opt) this.pick(opt);\n return;\n }\n if (key === 'Home') {\n event.preventDefault();\n this.activeIndex.set(this.firstEnabledIndex());\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) return;\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 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) return i;\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) return i;\n }\n return -1;\n }\n}\n","@if (label()) {\n <span class=\"dropdown-label\" [id]=\"labelId\">{{ label() }}</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 class=\"trigger-text\" [class.is-placeholder]=\"!hasValue()\">{{ displayLabel() }}</span>\n <span class=\"chevron\"><ds-icon name=\"chevronDown\" [size]=\"14\" /></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 class=\"dropdown-list\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-labelledby]=\"label() ? labelId : null\">\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 class=\"option-icon\" [name]=\"opt.icon\" [size]=\"16\" />\n }\n <span class=\"option-label\">{{ opt.label }}</span>\n @if (isSelected(opt)) {\n <ds-icon class=\"option-check\" name=\"check\" [size]=\"14\" />\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(CellTemplateDirective);\n\n protected readonly cellTemplates = computed<\n Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>>\n >(() => {\n const map: Record<string, TemplateRef<{ $implicit: unknown; row: unknown }>> = {};\n for (const dir of this.cellTemplateDirectives()) {\n map[dir.dsCellTemplate()] = dir.template;\n }\n return { ...map, ...this.cellTemplateMap() };\n });\n\n protected cellTemplate(col: TableColumn<T>): 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') parts.push('skeleton-mode');\n return parts.join(' ');\n });\n\n protected readonly isSkeletonLoading = computed(() => this.loading() === 'skeleton');\n protected readonly isOverlayLoading = computed(() => this.loading() === 'overlay');\n\n protected readonly allSelected = computed(() => {\n const data = this.data();\n if (data.length === 0) return false;\n const sel = this.selectedIds();\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 return data.some((row) => sel.has(row.id)) && !this.allSelected();\n });\n\n protected readonly skeletonArray = computed(() => Array(this.skeletonRows()).fill(0));\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')) return;\n this.rowClick.emit(row);\n }\n\n protected onRowKey(row: T, event: Event): void {\n if (!this.rowInteractive()) return;\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 return first ? this.cellValue(row, first) : '';\n }\n\n /** `aria-sort` value for a header: only meaningful on sortable columns. */\n protected ariaSort(col: TableColumn<T>): 'ascending' | 'descending' | 'none' | null {\n if (!col.sortable) return null;\n if (this.sortKey() === col.key && this.sortDir()) {\n return this.sortDir() === 'asc' ? 'ascending' : 'descending';\n }\n return 'none';\n }\n\n protected onSort(col: TableColumn<T>): void {\n if (!col.sortable) return;\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) parts.push('sortable');\n if (this.sortKey() === col.key && this.sortDir()) {\n parts.push(`sorted-${this.sortDir()}`);\n }\n return parts.join(' ');\n }\n\n protected sortIcon(col: TableColumn<T>): 'sortAsc' | 'sortDesc' | 'sort' {\n if (this.sortKey() !== col.key || !this.sortDir()) return 'sort';\n return this.sortDir() === 'asc' ? 'sortAsc' : 'sortDesc';\n }\n\n protected cellValue(row: T, col: TableColumn<T>): string {\n if (col.cell) return col.cell(row);\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 return widths[Math.abs(hash) % widths.length] ?? '70%';\n }\n}\n","<div class=\"scroll-wrap\" [class.loading-overlay]=\"isOverlayLoading()\">\n @if (isOverlayLoading()) {\n <div class=\"overlay\" aria-hidden=\"true\">\n <span class=\"spinner\"></span>\n </div>\n }\n <div class=\"visually-hidden\" role=\"status\" aria-live=\"polite\">\n @if (loading() !== false) { Loading… }\n </div>\n <table [class]=\"tableClasses()\" [attr.role]=\"rowInteractive() ? 'grid' : null\" [attr.aria-busy]=\"loading() !== false ? 'true' : null\">\n @if (caption()) {\n <caption class=\"visually-hidden\">{{ caption() }}</caption>\n }\n <thead>\n <tr>\n @if (selectable()) {\n <th scope=\"col\" class=\"select-col\">\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 @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 type=\"button\" class=\"th-label\" (click)=\"onSort(col)\">\n {{ col.label }}\n <ds-icon class=\"sort-icon\" [name]=\"sortIcon(col)\" [size]=\"12\"></ds-icon>\n </button>\n } @else {\n <span class=\"th-label\">{{ col.label }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (isSkeletonLoading()) {\n @for (_ of skeletonArray(); track $index; let rowIndex = $index) {\n <tr>\n @if (selectable()) {\n <td><ds-skeleton width=\"14px\" height=\"14px\" [inline]=\"true\" /></td>\n }\n @for (col of columns(); track col.key) {\n <td [class.numeric]=\"col.align === 'right'\">\n <ds-skeleton [width]=\"skeletonWidth(col, rowIndex)\" height=\"14px\" [inline]=\"true\" />\n </td>\n }\n </tr>\n }\n } @else if (!data().length) {\n <tr>\n <td\n [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\"\n class=\"empty\"\n >\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()!\"></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 @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 ></ng-container>\n } @else {\n {{ cellValue(row, col) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n@if (selectable() && someSelected()) {\n <div class=\"bulk-bar\">\n <span class=\"count\">{{ selectedIds().size }} selected</span>\n <span class=\"sep\"></span>\n <ng-content select=\"[bulk-actions]\"></ng-content>\n </div>\n}\n","import { Component, ViewEncapsulation, computed, input, model, output } 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(() => Math.max(1, Math.ceil(this.total() / this.pageSize())));\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) items.push('ellipsis');\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++) items.push(i);\n if (current < total - 2) items.push('ellipsis');\n items.push(total);\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 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) ? presets : [current, ...presets].sort((a, b) => a - b);\n return merged.map((n) => ({ label: `${n} per page`, value: String(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()) return;\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 class=\"pagination\" aria-label=\"Pagination\">\n @if (showLabel()) {\n <span class=\"label\">{{ rangeLabel() }}</span>\n }\n <button class=\"pagination-button\" type=\"button\" aria-label=\"Previous page\" [disabled]=\"currentPage() === 1\" (click)=\"goTo(currentPage() - 1)\">\n <ds-icon name=\"chevronLeft\" [size]=\"14\"></ds-icon>\n </button>\n @for (item of pageItems(); track $index) {\n @if (item === 'ellipsis') {\n <span class=\"ellipsis\" aria-hidden=\"true\">…</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 >{{ item }}</button>\n }\n }\n <button class=\"pagination-button\" type=\"button\" aria-label=\"Next page\" [disabled]=\"currentPage() === totalPages()\" (click)=\"goTo(currentPage() + 1)\">\n <ds-icon name=\"chevronRight\" [size]=\"14\"></ds-icon>\n </button>\n <ds-select\n class=\"size\"\n ariaLabel=\"Rows per page\"\n [options]=\"sizeOptions()\"\n [value]=\"pageSizeStr()\"\n (valueChange)=\"onSizeChange($event)\"\n size=\"sm\"\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 { DatePickerMode, DatePickerSize, RangeValue } 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 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': next = this.addDays(f, -1); break;\n case 'ArrowRight': next = this.addDays(f, 1); break;\n case 'ArrowUp': next = this.addDays(f, -7); break;\n case 'ArrowDown': next = this.addDays(f, 7); break;\n case 'Home': next = this.addDays(f, -((f.getDay() + 6) % 7)); break;\n case 'End': next = this.addDays(f, 6 - ((f.getDay() + 6) % 7)); break;\n case 'PageUp': next = this.addMonths(f, -1); break;\n case 'PageDown': next = this.addMonths(f, 1); break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectDay(cell);\n return;\n case 'Escape':\n event.preventDefault();\n this.close();\n this.trigger().nativeElement.focus();\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, n: number): Date {\n const d = new Date(date);\n d.setDate(d.getDate() + n);\n return d;\n }\n\n private addMonths(date: Date, n: number): Date {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n }\n\n private focusGridDay(): void {\n const f = this.gridFocus();\n if (!f || !this.overlayRef) return;\n const el = this.overlayRef.overlayElement.querySelector(\n `[data-day=\"${this.dayKey(f)}\"]`,\n ) as HTMLElement | null;\n el?.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 return size === 'md' ? 'trigger' : `trigger ${size}`;\n });\n\n protected readonly viewMonth = signal<Date>(new Date());\n protected readonly trigger = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly panelTpl = viewChild.required<TemplateRef<unknown>>('panel');\n private overlayRef: OverlayRef | null = null;\n\n protected readonly displayLabel = computed(() => {\n const v = this.value();\n if (this.mode() === 'single') {\n const d = v as Date | null;\n return d ? d.toLocaleDateString() : this.placeholder();\n }\n const r = (v as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (a && b) return `${a.toLocaleDateString()} – ${b.toLocaleDateString()}`;\n if (a) return `${a.toLocaleDateString()} – …`;\n return this.placeholder();\n });\n\n protected readonly monthLabel = computed(() => {\n const m = this.viewMonth();\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 return cells;\n });\n\n private getRangeContext(d: Date): { inRange: boolean; isStart: boolean; isEnd: boolean; isSelected: boolean } {\n const v = this.value();\n if (this.mode() === 'single') {\n const sel = v as Date | null;\n return { inRange: false, isStart: false, isEnd: false, isSelected: !!sel && sel.toDateString() === d.toDateString() };\n }\n const r = (v as RangeValue | null) ?? [null, null];\n const a = r[0];\n const b = r[1];\n if (!a) return { inRange: false, isStart: false, isEnd: false, isSelected: false };\n if (!b) return { inRange: false, isStart: a.toDateString() === d.toDateString(), isEnd: false, isSelected: false };\n const t = d.getTime();\n const aT = a.getTime();\n const bT = b.getTime();\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) return;\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(this.trigger().nativeElement)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\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 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 = 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) parts.push('muted');\n if (cell.isToday) parts.push('today');\n if (cell.inRange) parts.push('in-range');\n if (cell.isRangeStart) parts.push('range-start');\n if (cell.isRangeEnd) parts.push('range-end');\n if (cell.isSelected) parts.push('selected');\n return parts.join(' ');\n }\n}\n","<div class=\"field\">\n @if (label()) {\n <span class=\"label\" [id]=\"labelId\">\n {{ label() }}\n @if (required()) {\n <span class=\"req\" aria-hidden=\"true\">*</span>\n } @else if (optional()) {\n <span class=\"optional-marker\" aria-hidden=\"true\">(optional)</span>\n }\n </span>\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 name=\"calendar\" [size]=\"14\"></ds-icon>\n <span>{{ displayLabel() }}</span>\n </button>\n @if (hint()) {\n <small class=\"hint\">{{ hint() }}</small>\n }\n</div>\n\n<ng-template #panel>\n <div class=\"calendar\">\n <div class=\"head\">\n <span class=\"title\">{{ monthLabel() }}</span>\n <span class=\"nav\">\n <button type=\"button\" (click)=\"prevMonth()\">\n <ds-icon name=\"chevronLeft\" [size]=\"14\"></ds-icon>\n </button>\n <button type=\"button\" (click)=\"nextMonth()\">\n <ds-icon name=\"chevronRight\" [size]=\"14\"></ds-icon>\n </button>\n </span>\n </div>\n <div class=\"grid\">\n <span class=\"dow\">Mo</span>\n <span class=\"dow\">Tu</span>\n <span class=\"dow\">We</span>\n <span class=\"dow\">Th</span>\n <span class=\"dow\">Fr</span>\n <span class=\"dow\">Sa</span>\n <span class=\"dow\">Su</span>\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) => (arr.length ? [...arr.slice(0, -1), item] : [item]));\n }\n\n clear(): void {\n this._items.set([]);\n }\n}\n","import { Component, ViewEncapsulation, computed, inject, input, output } 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 return;\n }\n event.preventDefault();\n this.navigate.emit(item);\n }\n}\n","<nav class=\"breadcrumbs\" aria-label=\"Breadcrumb\" [class.is-static]=\"!effectiveClickable()\">\n @for (item of resolvedItems(); track $index; let last = $last) {\n @if (item.href && !last && effectiveClickable()) {\n <a [href]=\"item.href\" (click)=\"onNav($event, item)\">\n @if (item.icon) { <ds-icon [name]=\"item.icon\" [size]=\"14\" /> }\n @if (item.label) { <span class=\"label\">{{ item.label }}</span> }\n </a>\n } @else {\n <span [class.current]=\"last\" [attr.aria-current]=\"last ? 'page' : null\">\n @if (item.icon) { <ds-icon [name]=\"item.icon\" [size]=\"14\" /> }\n @if (item.label) { <span class=\"label\">{{ item.label }}</span> }\n </span>\n }\n @if (!last) { <span class=\"sep\" aria-hidden=\"true\"><ds-icon [name]=\"effectiveSeparator()\" [size]=\"12\" /></span> }\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\">{{ brand().charAt(0) }}</span>\n <span class=\"brand-name\">{{ brand() }}</span>\n </div>\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()) return;\n this.expanded.update((v) => !v);\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 (click)=\"toggle()\"\n [attr.aria-expanded]=\"expanded()\"\n >\n @if (icon()) {\n <ds-icon class=\"group-icon\" [name]=\"icon()!\" [size]=\"18\"></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\"><ng-content select=\"[ds-group-icon]\"></ng-content></span>\n }\n @if (label()) {\n <span class=\"group-title\">{{ label() }}</span>\n }\n <ds-icon\n class=\"group-caret\"\n [class.open]=\"expanded()\"\n name=\"chevronDown\"\n [size]=\"14\"\n ></ds-icon>\n </button>\n} @else if (label()) {\n <span class=\"group-label\">{{ label() }}</span>\n}\n<div class=\"group-body\" [class.hidden]=\"expandable() && !expanded()\">\n <ng-content></ng-content>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ViewEncapsulation, booleanAttribute, computed, input } 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()) parts.push('active');\n if (this.disabled()) parts.push('disabled');\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 [routerLink]=\"disabled() ? null : routerLink()\"\n routerLinkActive=\"active\"\n #rla=\"routerLinkActive\"\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 class=\"icon\" [name]=\"icon()!\" [size]=\"20\"></ds-icon>\n } @else {\n <span class=\"icon\"><ng-content select=\"[icon]\"></ng-content></span>\n }\n @if (label()) {\n <span class=\"item-label\">{{ label() }}</span>\n }\n <span class=\"trailing\"><ng-content select=\"[trailing]\"></ng-content></span>\n @if (badge() !== null) {\n <span class=\"count\">{{ badge() }}</span>\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\"><ng-content select=\"[title]\"></ng-content></div>\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n <div class=\"spacer\"><ng-content select=\"[search]\"></ng-content></div>\n <div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></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()) parts.push('compact');\n if (this.divider()) parts.push('with-divider');\n if (this.metaDivider()) parts.push('with-meta-divider');\n return parts.join(' ');\n });\n}\n","<header [class]=\"classes()\">\n <ng-content select=\"[breadcrumbs]\"></ng-content>\n <div class=\"row title-row\">\n <div class=\"title-block\">\n @if (eyebrow()) { <div class=\"eyebrow\">{{ eyebrow() }}</div> }\n <div class=\"title-line\">\n <h1 class=\"title\">{{ title() }}</h1>\n <ng-content select=\"[title-badge]\"></ng-content>\n </div>\n @if (subtitle()) { <p class=\"subtitle\">{{ subtitle() }}</p> }\n <div class=\"meta\"><ng-content select=\"[meta]\"></ng-content></div>\n </div>\n <div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></div>\n </div>\n <ng-content select=\"[tabs]\"></ng-content>\n</header>\n","import { Component, ViewEncapsulation, computed, input, output } 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()) parts.push('danger');\n return parts.join(' ');\n });\n\n protected onClose(): void {\n this.closed.emit();\n }\n}\n","<div\n [class]=\"classes()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n>\n <div class=\"header\">\n <h2 class=\"title\" [id]=\"titleId\">{{ title() }}</h2>\n @if (showClose()) {\n <button class=\"close\" type=\"button\" aria-label=\"Close dialog\" (click)=\"onClose()\">\n <ds-icon name=\"x\" [size]=\"16\"></ds-icon>\n </button>\n }\n </div>\n <div class=\"body\">\n <ng-content select=\"[body]\"></ng-content>\n <div class=\"impact\"><ng-content select=\"[impact]\"></ng-content></div>\n </div>\n <div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></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()) return;\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()) return;\n this.open.set(false);\n this.closed.emit();\n }\n\n protected onBackdrop(event: MouseEvent): void {\n if (event.target === event.currentTarget) this.onClose();\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><ng-content select=\"[body]\"></ng-content></ng-container>\n <ng-container impact><ng-content select=\"[impact]\"></ng-content></ng-container>\n <ng-container actions><ng-content select=\"[actions]\"></ng-content></ng-container>\n </ds-modal-card>\n </div>\n}\n","import { Component, HostBinding, ViewEncapsulation, computed, input, output } 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 v = this.variant();\n return v === 'error' || v === 'warning' || v === 'severe' ? '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(() => {\n const parts = ['banner', this.variant(), `layout-${this.layout()}`];\n if (this.compact()) parts.push('compact');\n return parts.join(' ');\n });\n\n protected readonly defaultIcon = computed<IconName>(() => {\n const variant = this.variant();\n if (variant === 'success') return 'success';\n if (variant === 'warning' || variant === 'severe') return 'warn';\n if (variant === 'error') return 'error';\n return 'info';\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div [class]=\"classes()\">\n <ds-icon class=\"icon\" [name]=\"icon() ?? defaultIcon()\" [size]=\"20\"></ds-icon>\n <div class=\"body\">\n @if (title()) { <div class=\"title\">{{ title() }}</div> }\n <ng-content></ng-content>\n </div>\n <div class=\"actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n @if (dismissible()) {\n <button class=\"close\" type=\"button\" (click)=\"onDismiss()\">\n <ds-icon name=\"x\" [size]=\"16\"></ds-icon>\n </button>\n }\n</div>\n","import { Component, ViewEncapsulation, booleanAttribute, computed, input, model, output, signal } 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()) parts.push('active');\n if (this.files().length > 0) parts.push('has-files');\n if (this.disabled()) parts.push('disabled');\n if (this.single()) parts.push('single');\n return parts.join(' ');\n });\n\n protected onDragOver(event: DragEvent): void {\n if (this.disabled()) return;\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()) return;\n const list = event.dataTransfer?.files;\n if (list) this.filesAdded.emit(Array.from(list));\n }\n\n protected onPickerChange(event: Event): void {\n if (this.disabled()) return;\n const list = (event.target as HTMLInputElement).files;\n if (list) this.filesAdded.emit(Array.from(list));\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) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n protected fileIcon(state: DropzoneFile['state']): 'file' | 'check' | 'error' {\n if (state === 'success') return 'check';\n if (state === 'error') return 'error';\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 @if (files().length === 0) {\n <ds-icon name=\"upload\" [size]=\"24\"></ds-icon>\n <div class=\"title\">Drop files here</div>\n <div class=\"hint\">or click to browse</div>\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 class=\"icon\" [name]=\"fileIcon(file.state)\" [size]=\"20\"></ds-icon>\n <div class=\"main\">\n <div class=\"name\">{{ file.name }}</div>\n <div class=\"meta\">{{ formatSize(file.size) }} · {{ file.state }}</div>\n @if (file.state === 'uploading') {\n <div class=\"progress\"><div class=\"progress-fill\" [style.width.%]=\"file.progress\"></div></div>\n }\n </div>\n <button class=\"remove\" type=\"button\" [attr.aria-label]=\"'Remove ' + file.name\" (click)=\"onRemove(file); $event.preventDefault(); $event.stopPropagation()\">\n <ds-icon name=\"x\" [size]=\"14\"></ds-icon>\n </button>\n </div>\n }\n </div>\n }\n</label>\n","import { Component, ElementRef, ViewEncapsulation, inject, input, output, signal, viewChild } 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 = 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()) return;\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 [name]=\"icon()!\" [size]=\"16\"></ds-icon>\n } @else {\n <span class=\"menu-item-icon\"><ng-content select=\"[icon]\"></ng-content></span>\n }\n <span><ng-content></ng-content></span>\n</button>\n","import { Component, ViewEncapsulation, contentChildren, effect, signal } 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) return;\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) return;\n const count = items.length;\n const focused = items.findIndex((item) => item.contains(event.target as Node | null));\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 return;\n }\n\n let next: number;\n switch (event.key) {\n case 'ArrowDown': next = (from + 1) % count; break;\n case 'ArrowUp': next = (from - 1 + count) % count; break;\n case 'Home': next = 0; break;\n case 'End': next = count - 1; break;\n default: 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()) return;\n this.focusItem(next);\n }\n\n private typeAhead(char: string, from: number, items: readonly MenuItemComponent[]): 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 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 class=\"menu\" role=\"menu\">\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 return variant === 'none' ? 'empty-state' : `empty-state ${variant}`;\n });\n\n protected readonly resolvedIcon = computed<IconName>(() => {\n const explicit = this.icon();\n if (explicit) return explicit;\n const variant = this.variant();\n if (variant === 'error') return 'warn';\n if (variant === 'locked') return 'lock';\n if (variant === 'success') return 'success';\n if (variant === 'loading') return 'package';\n return 'package';\n });\n}\n","<span [class]=\"classes()\">\n <span class=\"icon-tile\">\n <ds-icon [name]=\"resolvedIcon()\" [size]=\"28\"></ds-icon>\n </span>\n @if (title()) { <span class=\"title\">{{ title() }}</span> }\n @if (body()) { <span class=\"body\">{{ body() }}</span> }\n <span class=\"cta\"><ng-content select=\"[actions]\"></ng-content></span>\n @if (variant() === 'loading') {\n <span class=\"overlay-spin\"><ds-spinner size=\"lg\" /></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 v = this.value();\n return Math.max(0, Math.min(100, v));\n });\n\n protected readonly isIndet = computed(() => this.variant() === 'indeterminate');\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 :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 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>{{ title() }}</span>\n <ng-content select=\"[badge]\"></ng-content>\n <ds-icon name=\"chevronRight\" class=\"chev\" [size]=\"16\" />\n</button>\n@if (expanded()) {\n <div class=\"body\" role=\"region\" [id]=\"bodyId\" [attr.aria-labelledby]=\"headId\">\n <ng-content></ng-content>\n </div>\n}\n","import { Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '../../icons/icon.component';\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: { role: 'list', 'aria-label': 'Progress' },\n})\nexport class StepperComponent {\n readonly steps = input<readonly string[]>([]);\n readonly current = input<number>(0);\n\n protected stepState(i: number): 'completed' | 'current' | 'upcoming' {\n const c = this.current();\n if (i < c) return 'completed';\n if (i === c) return 'current';\n return 'upcoming';\n }\n\n protected nodeClass(i: number): string {\n const c = this.current();\n if (i < c) return 'node done';\n if (i === c) return 'node active';\n return 'node';\n }\n\n protected barClass(i: number): string {\n return i < this.current() ? 'bar done' : 'bar';\n }\n}\n","@for (label of steps(); track $index; let i = $index, last = $last) {\n <span\n [class]=\"nodeClass(i)\"\n role=\"listitem\"\n [attr.aria-current]=\"i === current() ? 'step' : null\"\n >\n <span aria-hidden=\"true\">\n @if (i < current()) {\n <ds-icon name=\"check\" [size]=\"14\" />\n } @else {\n {{ i + 1 }}\n }\n </span>\n <span class=\"visually-hidden\">Step {{ i + 1 }}: {{ label }} ({{ stepState(i) }})</span>\n </span>\n @if (!last) {\n <span [class]=\"barClass(i)\" aria-hidden=\"true\"></span>\n }\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()) return;\n if (this.timer !== null) clearTimeout(this.timer);\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) host.setAttribute('aria-describedby', remaining);\n else host.removeAttribute('aria-describedby');\n }\n\n @HostListener('keydown.escape')\n protected onEscape(): void {\n if (this.ref) this.onClose();\n }\n\n private show(): void {\n const placement = this.dsTooltipPlacement();\n const positionStrategy = this.overlay.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('aria-describedby', existing ? `${existing} ${this.tipId}` : this.tipId);\n }\n\n private positionFor(p: TooltipPlacement) {\n switch (p) {\n case 'top':\n return { originX: 'center' as const, originY: 'top' as const, overlayX: 'center' as const, overlayY: 'bottom' as const, offsetY: -8 };\n case 'bottom':\n return { originX: 'center' as const, originY: 'bottom' as const, overlayX: 'center' as const, overlayY: 'top' as const, offsetY: 8 };\n case 'left':\n return { originX: 'start' as const, originY: 'center' as const, overlayX: 'end' as const, overlayY: 'center' as const, offsetX: -8 };\n case 'right':\n return { originX: 'end' as const, originY: 'center' as const, overlayX: 'start' as const, overlayY: 'center' as const, offsetX: 8 };\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: [{ provide: DsOverlayCloseRef, useExisting: forwardRef(() => PopoverComponent) }],\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()) return;\n if (this.ref) {\n this.close();\n return;\n }\n const align = this.align();\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(trigger)\n .withPositions([\n { originX: align, originY: 'bottom', overlayX: align, overlayY: 'top', offsetY: 4 },\n { originX: align, originY: 'top', overlayX: align, overlayY: 'bottom', offsetY: -4 },\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><ng-content /></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 { Component, ViewEncapsulation, computed, input, output } 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' ? 'alert' : 'status',\n );\n\n protected readonly defaultIcon = computed<IconName>(() => {\n switch (this.variant()) {\n case 'success': return 'success';\n case 'warning': return 'warn';\n case 'error': return 'error';\n default: return 'info';\n }\n });\n\n protected onDismiss(): void {\n this.dismissed.emit();\n }\n}\n","<div\n [class]=\"classes()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"role() === 'alert' ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n>\n <ds-icon class=\"icon\" [name]=\"icon() ?? defaultIcon()\" [size]=\"16\" />\n <div class=\"body\">\n @if (title()) { <div class=\"title\">{{ title() }}</div> }\n {{ message() }}\n <ng-content></ng-content>\n </div>\n @if (action(); as act) {\n <button type=\"button\" class=\"action\" (click)=\"onAction(act)\">{{ act.label }}</button>\n }\n <span class=\"actions\"><ng-content select=\"[actions]\"></ng-content></span>\n @if (dismissible()) {\n <button type=\"button\" class=\"close\" (click)=\"onDismiss()\" aria-label=\"Dismiss\">\n <ds-icon name=\"x\" [size]=\"14\" />\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)) return;\n this.leaving.update((set) => new Set(set).add(id));\n setTimeout(() => {\n this.entries.update((existing) => existing.filter((entry) => entry.id !== id));\n this.leaving.update((set) => {\n const next = new Set(set);\n next.delete(id);\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>('DS_TOAST_POSITION');\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 { Overlay, OverlayRef, GlobalPositionStrategy } 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 return ref;\n }\n\n dismissAll(): void {\n this.regionRef?.instance.clear();\n }\n\n private ensureRegion(): void {\n if (this.overlayRef) return;\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(new ComponentPortal(ToastRegionComponent));\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') strategy.top(config.offset);\n else strategy.bottom(config.offset);\n if (config.horizontalPosition === 'left') strategy.left(config.offset);\n else if (config.horizontalPosition === 'right') strategy.right(config.offset);\n else strategy.centerHorizontally();\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})\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","@if (open()) {\n <div class=\"drawer-scrim\" (click)=\"onClose()\"></div>\n <div\n [class]=\"classes()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n (keydown.escape)=\"onClose()\"\n >\n <header class=\"header\">\n <h4 class=\"title\" [id]=\"titleId\">{{ title() }}</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"onClose()\">\n <ds-icon name=\"x\" [size]=\"16\" />\n </button>\n </header>\n <div class=\"body\"><ng-content select=\"[drawer-body]\"></ng-content></div>\n <div class=\"footer\"><ng-content select=\"[drawer-footer]\"></ng-content></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()) return;\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()) this.close();\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) return;\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) return;\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 class=\"sheet-overlay\" (click)=\"close()\">\n <div\n #sheet\n class=\"sheet\"\n [class.dragging]=\"dragOffset() !== null\"\n [style.transform]=\"dragOffset() ? 'translateY(' + dragOffset() + 'px)' : null\"\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 @if (title()) {\n <h3 class=\"sheet-title\">{{ title() }}</h3>\n }\n <div class=\"sheet-body\">\n <ng-content />\n </div>\n <div class=\"sheet-actions\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n </div>\n}\n","import { Component, ViewEncapsulation, booleanAttribute, input, output } 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()) this.toggled.emit();\n }\n}\n","<ng-content></ng-content>\n@if (closable()) {\n <button type=\"button\" class=\"close\" [attr.aria-label]=\"closeLabel()\" (click)=\"$event.stopPropagation(); closed.emit()\">\n <ds-icon name=\"x\" [size]=\"12\" />\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]': \"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()) return;\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 name=\"map\" [size]=\"14\" />\n<span><span class=\"mark\">{{ prefix() }}</span>{{ address() }}</span>\n@if (copyable()) { <ds-icon name=\"copy\" [size]=\"12\" /> }\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<ng-content select=\"[nav]\"></ng-content>\n<ng-content select=\"[actions]\"></ng-content>\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 } 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 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 = viewChild.required<ElementRef<HTMLElement>>('trigger');\n protected readonly filterInput = viewChild.required<ElementRef<HTMLInputElement>>('filter');\n protected readonly panelTpl = 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 idx = this.activeIndex();\n return this.isOpen() && idx >= 0 ? this.optionId(idx) : null;\n });\n\n protected readonly filteredOptions = computed(() => {\n const trimmedQuery = this.query().toLowerCase().trim();\n const allOptions = this.options();\n if (!trimmedQuery) return allOptions;\n return allOptions.filter((option) => option.label.toLowerCase().includes(trimmedQuery));\n });\n\n protected readonly selectedTags = computed(() => {\n if (!this.multiple()) return [];\n const selectedValues = (this.value() as readonly T[] | null) ?? [];\n const selectedSet = new Set(selectedValues);\n return this.options().filter((option) => selectedSet.has(option.value));\n });\n\n protected readonly displayLabel = computed(() => {\n if (this.multiple()) return '';\n const currentValue = this.value() as T | null;\n if (currentValue === null) return '';\n return this.options().find((option) => option.value === currentValue)?.label ?? '';\n });\n\n protected readonly placeholderText = computed(() => {\n if (this.multiple()) return '';\n if (this.displayLabel()) return '';\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 return selectedValues.includes(option.value);\n }\n return this.value() === option.value;\n }\n\n protected optionClass(option: ComboboxOption<T>): string {\n const parts = ['option'];\n if (this.multiple()) parts.push('check');\n void option;\n return parts.join(' ');\n }\n\n protected onTriggerClick(): void {\n this.filterInput().nativeElement.focus();\n if (!this.overlayRef) this.openPanel();\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) { this.openPanel(); return; }\n this.activeIndex.set(opts.length ? (this.activeIndex() + 1) % opts.length : -1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.overlayRef) { this.openPanel(); return; }\n this.activeIndex.set(opts.length ? (this.activeIndex() - 1 + opts.length) % opts.length : -1);\n break;\n case 'Enter': {\n const opt = opts[this.activeIndex()];\n if (opt) { event.preventDefault(); this.onPick(opt); }\n break;\n }\n case 'Escape':\n if (this.overlayRef) { event.preventDefault(); this.close(); }\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) this.remove(last.value);\n }\n break;\n }\n }\n\n protected openPanel(): void {\n if (this.overlayRef) return;\n const triggerElement = this.trigger().nativeElement;\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\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()) return;\n const current = (this.value() as readonly T[] | null) ?? [];\n this.value.set(current.filter((existing) => existing !== target));\n }\n}\n","<div #trigger class=\"combo-trigger\" [class.open]=\"isOpen()\" (click)=\"onTriggerClick()\">\n @if (multiple()) {\n @for (selectedOption of selectedTags(); track selectedOption.value) {\n <ds-tag [closable]=\"true\" [closeLabel]=\"'Remove ' + selectedOption.label\" (closed)=\"remove(selectedOption.value)\">{{ selectedOption.label }}</ds-tag>\n }\n } @else if (displayLabel()) {\n <span class=\"combo-value\">{{ displayLabel() }}</span>\n }\n <input #filter type=\"text\" 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()\" (input)=\"onFilter($event)\" (focus)=\"openPanel()\" (keydown)=\"onKeydown($event)\"\n [placeholder]=\"placeholderText()\" />\n <ds-icon name=\"chevronDown\" [size]=\"16\" class=\"combo-chevron\" (click)=\"togglePanel($event)\" />\n</div>\n\n<ng-template #panel>\n <ul class=\"combo-list\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-multiselectable]=\"multiple() ? 'true' : null\">\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li [class]=\"optionClass(option)\" role=\"option\" [id]=\"optionId(i)\"\n [class.is-active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option)\"\n (click)=\"onPick(option)\" (mouseenter)=\"activeIndex.set(i)\">\n @if (multiple()) {\n <input type=\"checkbox\" class=\"check\" tabindex=\"-1\" aria-hidden=\"true\" [checked]=\"isSelected(option)\" />\n }\n <span>{{ option.label }}</span>\n @if (!multiple() && isSelected(option)) {\n <ds-icon name=\"check\" class=\"icon\" [size]=\"14\" />\n }\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li class=\"empty t-s\" role=\"option\" [attr.aria-disabled]=\"true\">No matches</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 { Component, ViewEncapsulation, computed, input, model } 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 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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"}
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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"}