@masmarino/gabarit 1.0.2 → 1.1.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":"masmarino-gabarit.mjs","sources":["../../../projects/gabarit/src/lib/version.ts","../../../projects/gabarit/src/lib/components/atoms/icon/built-in-icons.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon-registry.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.html","../../../projects/gabarit/src/lib/components/atoms/button/button.ts","../../../projects/gabarit/src/lib/components/atoms/button/button.html","../../../projects/gabarit/src/lib/components/atoms/badge/badge.ts","../../../projects/gabarit/src/lib/components/atoms/badge/badge.html","../../../projects/gabarit/src/lib/components/atoms/avatar/avatar.ts","../../../projects/gabarit/src/lib/components/atoms/avatar/avatar.html","../../../projects/gabarit/src/lib/components/atoms/skeleton/skeleton.ts","../../../projects/gabarit/src/lib/components/molecules/avatar-group/avatar-group.ts","../../../projects/gabarit/src/lib/components/molecules/avatar-group/avatar-group.html","../../../projects/gabarit/src/lib/components/molecules/alert/alert.ts","../../../projects/gabarit/src/lib/components/molecules/alert/alert.html","../../../projects/gabarit/src/lib/components/atoms/tag/tag-contrast.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.html","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.ts","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.html","../../../projects/gabarit/src/lib/components/atoms/input/input.ts","../../../projects/gabarit/src/lib/components/atoms/input/input.html","../../../projects/gabarit/src/lib/components/molecules/select/select.ts","../../../projects/gabarit/src/lib/components/molecules/select/select.html","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.ts","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.html","../../../projects/gabarit/src/lib/components/molecules/card/card.ts","../../../projects/gabarit/src/lib/components/molecules/card/card.html","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.ts","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.html","../../../projects/gabarit/src/lib/components/organisms/modal/modal.ts","../../../projects/gabarit/src/lib/components/organisms/modal/modal.html","../../../projects/gabarit/src/lib/components/organisms/drawer/drawer.ts","../../../projects/gabarit/src/lib/components/organisms/drawer/drawer.html","../../../projects/gabarit/src/lib/components/molecules/table/table.ts","../../../projects/gabarit/src/lib/components/molecules/table/table.html","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.ts","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.html","../../../projects/gabarit/src/lib/components/molecules/tab/tab.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.html","../../../projects/gabarit/src/lib/primitives/scales.ts","../../../projects/gabarit/src/lib/primitives/ticks.ts","../../../projects/gabarit/src/lib/primitives/format.ts","../../../projects/gabarit/src/lib/primitives/path.ts","../../../projects/gabarit/src/lib/primitives/nearest.ts","../../../projects/gabarit/src/lib/primitives/label.ts","../../../projects/gabarit/src/lib/components/organisms/chart-context/chart-context.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.html","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.ts","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.html","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.ts","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.html","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.ts","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.html","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.ts","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.html","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.ts","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.html","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.html","../../../projects/gabarit/src/lib/components/organisms/chart-data/chart-data.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.html","../../../projects/gabarit/src/lib/components/organisms/pie-chart/pie-chart.ts","../../../projects/gabarit/src/lib/components/organisms/pie-chart/pie-chart.html","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.ts","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.html","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.ts","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.html","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.ts","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.html","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.ts","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.html","../../../projects/gabarit/src/lib/components/molecules/menu/menu.ts","../../../projects/gabarit/src/lib/components/molecules/menu/menu.html","../../../projects/gabarit/src/lib/components/molecules/popover/popover.ts","../../../projects/gabarit/src/lib/components/molecules/popover/popover.html","../../../projects/gabarit/src/lib/components/molecules/description-list/description-list.ts","../../../projects/gabarit/src/lib/components/molecules/description-list/description-list.html","../../../projects/gabarit/src/lib/components/molecules/segmented-control/segmented-control.ts","../../../projects/gabarit/src/lib/components/molecules/segmented-control/segmented-control.html","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker-calendar.ts","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker.ts","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker.html","../../../projects/gabarit/src/lib/components/molecules/date-range-picker/date-range-picker.ts","../../../projects/gabarit/src/lib/components/molecules/date-range-picker/date-range-picker.html","../../../projects/gabarit/src/lib/components/molecules/accordion-item/accordion-item.ts","../../../projects/gabarit/src/lib/components/molecules/accordion-item/accordion-item.html","../../../projects/gabarit/src/lib/components/molecules/accordion/accordion.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.html","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.ts","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.html","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.ts","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.html","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.ts","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.html","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.ts","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.html","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.ts","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.html","../../../projects/gabarit/src/lib/components/atoms/switch/switch.ts","../../../projects/gabarit/src/lib/components/atoms/switch/switch.html","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.ts","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.html","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.ts","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.html","../../../projects/gabarit/src/lib/components/atoms/divider/divider.ts","../../../projects/gabarit/src/lib/components/atoms/divider/divider.html","../../../projects/gabarit/src/lib/components/atoms/spinner/spinner.ts","../../../projects/gabarit/src/lib/components/atoms/spinner/spinner.html","../../../projects/gabarit/src/lib/components/atoms/slider/slider.ts","../../../projects/gabarit/src/lib/components/atoms/slider/slider.html","../../../projects/gabarit/src/lib/components/molecules/stepper/stepper.ts","../../../projects/gabarit/src/lib/components/molecules/stepper/stepper.html","../../../projects/gabarit/src/lib/components/molecules/file-upload/file-upload.ts","../../../projects/gabarit/src/lib/components/molecules/file-upload/file-upload.html","../../../projects/gabarit/src/lib/components/atoms/notification-dot/notification-dot.ts","../../../projects/gabarit/src/lib/components/atoms/notification-dot/notification-dot.html","../../../projects/gabarit/src/lib/components/molecules/tag-input/tag-input.ts","../../../projects/gabarit/src/lib/components/molecules/tag-input/tag-input.html","../../../projects/gabarit/src/lib/components/molecules/tree/tree-flatten.ts","../../../projects/gabarit/src/lib/components/molecules/tree/tree.ts","../../../projects/gabarit/src/lib/components/molecules/tree/tree.html","../../../projects/gabarit/src/masmarino-gabarit.ts"],"sourcesContent":["export const GABARIT_VERSION = '1.0.2'\n","export const BUILT_IN_ICONS: Record<string, string> = {\n search: `<path d=\"m21 21-4.34-4.34\" />\n<circle cx=\"11\" cy=\"11\" r=\"8\" />`,\n x: `<path d=\"M18 6 6 18\" />\n<path d=\"m6 6 12 12\" />`,\n eye: `<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n<circle cx=\"12\" cy=\"12\" r=\"3\" />`,\n 'eye-off': `<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n<path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n<path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n<path d=\"m2 2 20 20\" />`,\n 'chevron-down': `<path d=\"m6 9 6 6 6-6\" />`,\n 'chevron-left': `<path d=\"m15 18-6-6 6-6\" />`,\n 'chevron-right': `<path d=\"m9 18 6-6-6-6\" />`,\n 'chevrons-left': `<path d=\"m11 17-5-5 5-5\" />\n<path d=\"m18 17-5-5 5-5\" />`,\n 'chevrons-right': `<path d=\"m6 17 5-5-5-5\" />\n<path d=\"m13 17 5-5-5-5\" />`,\n 'ellipsis-vertical': `<circle cx=\"12\" cy=\"12\" r=\"1\" />\n<circle cx=\"12\" cy=\"5\" r=\"1\" />\n<circle cx=\"12\" cy=\"19\" r=\"1\" />`,\n check: `<path d=\"M20 6 9 17l-5-5\" />`,\n 'check-circle': `<path d=\"m5 12 5 5 9-10\" />`,\n 'alert-circle': `<path d=\"M12 7v6\" />\n<path d=\"M12 17h.01\" />`,\n 'alert-triangle': `<path d=\"m21.73 18-8-14a2 2 0 0 0-3.46 0L2.27 18a2 2 0 0 0 1.73 3h16a2 2 0 0 0 1.73-3Z\" />\n<path d=\"M12 9v4\" />\n<path d=\"M12 17h.01\" />`,\n info: `<path d=\"M12 17v-6\" />\n<path d=\"M12 7h.01\" />`,\n 'arrow-up': `<path d=\"m5 12 7-7 7 7\" />\n<path d=\"M12 19V5\" />`,\n 'arrow-down': `<path d=\"M12 5v14\" />\n<path d=\"m19 12-7 7-7-7\" />`,\n calendar: `<path d=\"M8 2v4\" />\n<path d=\"M16 2v4\" />\n<rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n<path d=\"M3 10h18\" />`,\n upload: `<path d=\"M12 3v12\" />\n<path d=\"m17 8-5-5-5 5\" />\n<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />`,\n folder: `<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />`,\n file: `<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />`,\n}\n","import { Injectable } from '@angular/core'\nimport { BUILT_IN_ICONS } from './built-in-icons'\n\n@Injectable({ providedIn: 'root' })\nexport class IconRegistry {\n private readonly icons = new Map<string, string>(Object.entries(BUILT_IN_ICONS))\n\n register(name: string, svgInnerMarkup: string): void {\n this.icons.set(name, svgInnerMarkup)\n }\n\n registerAll(icons: Record<string, string>): void {\n for (const [name, markup] of Object.entries(icons)) {\n this.icons.set(name, markup)\n }\n }\n\n get(name: string): string | null {\n return this.icons.get(name) ?? null\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { IconRegistry } from './icon-registry'\n\n@Component({\n selector: 'gbt-icon',\n standalone: true,\n template: `\n @if (svgContent(); as content) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n [innerHTML]=\"content\"\n ></svg>\n }\n `,\n styles: `\n :host {\n display: inline-flex;\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n }\n svg {\n width: 100%;\n height: 100%;\n }\n `,\n host: {\n '[attr.aria-hidden]': '\"true\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Icon {\n private readonly sanitizer = inject(DomSanitizer)\n private readonly registry = inject(IconRegistry)\n\n name = input.required<string>()\n\n protected readonly svgContent = computed(() => {\n const markup = this.registry.get(this.name())\n return markup ? this.sanitizer.bypassSecurityTrustHtml(markup) : null\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-app-shell',\n standalone: true,\n imports: [Icon],\n templateUrl: './app-shell.html',\n styleUrl: './app-shell.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppShell {\n navLabel = input.required<string>()\n skipLabel = input.required<string>()\n openMenuLabel = input.required<string>()\n closeMenuLabel = input.required<string>()\n collapseLabel = input<string>('')\n expandLabel = input<string>('')\n versionLabel = input<string | null>(null)\n collapsed = input<boolean>(false)\n collapsible = input<boolean>(true)\n collapsedChange = output<boolean>()\n\n private readonly id = ++nextId\n protected readonly mainId = `gbt-app-shell-main-${this.id}`\n protected readonly navId = `gbt-app-shell-nav-${this.id}`\n\n protected readonly menuOpen = signal(false)\n\n protected readonly menuLabel = computed(() =>\n this.menuOpen() ? this.closeMenuLabel() : this.openMenuLabel(),\n )\n\n private readonly toggleButton = viewChild<ElementRef<HTMLButtonElement>>('toggle')\n private readonly nav = viewChild<ElementRef<HTMLElement>>('nav')\n\n protected toggleMenu(): void {\n if (this.menuOpen()) {\n this.close()\n return\n }\n this.menuOpen.set(true)\n queueMicrotask(() => this.nav()?.nativeElement.focus())\n }\n\n protected close(): void {\n if (!this.menuOpen()) return\n this.menuOpen.set(false)\n this.toggleButton()?.nativeElement.focus()\n }\n\n protected toggleCollapsed(): void {\n this.collapsedChange.emit(!this.collapsed())\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n this.close()\n }\n\n protected onNavKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.menuOpen()) return\n const nav = this.nav()?.nativeElement\n if (!nav) return\n\n const focusableElements = nav.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusableElements.length === 0) return\n\n const first = focusableElements[0]\n const last = focusableElements[focusableElements.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","<div class=\"gbt-app-shell\">\n <a class=\"gbt-app-shell__skip\" [href]=\"'#' + mainId\">{{ skipLabel() }}</a>\n\n <nav\n #nav\n [id]=\"navId\"\n class=\"gbt-app-shell__nav\"\n [class.gbt-app-shell__nav--open]=\"menuOpen()\"\n [class.gbt-app-shell__nav--collapsed]=\"collapsed()\"\n [attr.aria-label]=\"navLabel()\"\n tabindex=\"-1\"\n (keydown)=\"onNavKeydown($event)\"\n >\n <div class=\"gbt-app-shell__brand\">\n <ng-content select=\"[shell-brand]\" />\n </div>\n <ng-content select=\"[shell-nav]\" />\n <div class=\"gbt-app-shell__bottom\">\n @if (versionLabel()) {\n @if (!collapsed()) {\n <div class=\"gbt-app-shell__version\">v{{ versionLabel() }}</div>\n }\n }\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"gbt-app-shell__collapse-toggle\"\n [class.gbt-app-shell__collapse-toggle--collapsed]=\"collapsed()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\"\n (click)=\"toggleCollapsed()\"\n >\n <gbt-icon name=\"chevrons-left\" />\n </button>\n }\n </div>\n </nav>\n\n @if (menuOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-app-shell__scrim\" (click)=\"close()\"></div>\n }\n\n <div class=\"gbt-app-shell__body\">\n <header class=\"gbt-app-shell__header\">\n <button\n #toggle\n type=\"button\"\n class=\"gbt-app-shell__toggle\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"navId\"\n [attr.aria-label]=\"menuLabel()\"\n (click)=\"toggleMenu()\"\n >\n <span class=\"gbt-app-shell__burger\" aria-hidden=\"true\"></span>\n </button>\n <ng-content select=\"[shell-header]\" />\n </header>\n\n <main [id]=\"mainId\" class=\"gbt-app-shell__content\" tabindex=\"-1\">\n <ng-content />\n </main>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\n@Component({\n selector: 'gbt-button',\n standalone: true,\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n variant = input<'primary' | 'secondary' | 'danger'>('primary')\n size = input<'small' | 'medium' | 'large'>('medium')\n type = input<'button' | 'submit'>('button')\n text = input<string>('')\n iconName = input<string | null>(null)\n ariaLabel = input<string | null>(null)\n loading = input(false, { transform: booleanAttribute })\n loadingLabel = input<string>('Loading')\n disabled = input(false, { transform: booleanAttribute })\n\n clicked = output<void>()\n\n protected handleClick(): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit()\n }\n }\n}\n","<button\n [type]=\"type()\"\n class=\"gbt-button gbt-button--{{ variant() }} gbt-button--{{ size() }}\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (click)=\"handleClick()\"\n>\n @if (iconName()) {\n <gbt-icon [name]=\"iconName()!\" aria-hidden=\"true\" />\n }\n @if (loading()) {\n <span class=\"gbt-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">{{ loadingLabel() }}</span>\n }\n <span>{{ text() }}</span>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\nexport type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info'\n\n@Component({\n selector: 'gbt-badge',\n standalone: true,\n imports: [Icon],\n templateUrl: './badge.html',\n styleUrl: './badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n variant = input<BadgeVariant>('neutral')\n icon = input<string>()\n}\n","<span class=\"gbt-badge\" [attr.data-variant]=\"variant()\">\n @if (icon(); as name) {\n <gbt-icon [name]=\"name\" class=\"gbt-badge__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-badge__label\"><ng-content /></span>\n</span>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\n\nexport function computeInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean)\n if (words.length === 0) return ''\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase()\n return (words[0][0] + words[words.length - 1][0]).toUpperCase()\n}\n\n@Component({\n selector: 'gbt-avatar',\n standalone: true,\n templateUrl: './avatar.html',\n styleUrl: './avatar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class Avatar {\n name = input.required<string>()\n src = input<string | null>(null)\n size = input<AvatarSize>('md')\n\n protected readonly imageFailed = signal(false)\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed())\n protected readonly initials = computed(() => computeInitials(this.name()))\n\n protected onImageError(): void {\n this.imageFailed.set(true)\n }\n}\n","@if (showImage()) {\n <img class=\"gbt-avatar__image\" [src]=\"src()\" [alt]=\"name()\" (error)=\"onImageError()\" />\n} @else {\n <span class=\"gbt-avatar__initials\" [attr.aria-label]=\"name()\">{{ initials() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type SkeletonVariant = 'text' | 'circle' | 'rect'\n\n@Component({\n selector: 'gbt-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-variant]': 'variant()',\n '[style.width]': 'width()',\n '[style.height]': 'height()',\n 'aria-hidden': 'true',\n },\n})\nexport class Skeleton {\n variant = input<SkeletonVariant>('text')\n width = input<string>('100%')\n height = input<string | null>(null)\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output, signal } from '@angular/core'\nimport { Avatar } from '../../atoms/avatar/avatar'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface AvatarGroupItem {\n name: string\n src?: string\n}\n\n@Component({\n selector: 'gbt-avatar-group',\n standalone: true,\n imports: [Avatar, Icon],\n templateUrl: './avatar-group.html',\n styleUrl: './avatar-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n})\nexport class AvatarGroup<T extends AvatarGroupItem = AvatarGroupItem> {\n private readonly elementRef = inject(ElementRef)\n\n items = input.required<T[]>()\n max = input<number>(5)\n ariaLabel = input<string>('Users')\n moreLabel = input<(count: number) => string>((count) => `${count} more`)\n activeItem = input<T | null>(null)\n\n itemClick = output<T>()\n\n protected readonly panelOpen = signal(false)\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n protected readonly visibleItems = computed(() => this.items().slice(0, this.max()))\n protected readonly overflowItems = computed(() => this.items().slice(this.max()))\n protected readonly overflowCount = computed(() => this.overflowItems().length)\n\n protected isActive(item: T): boolean {\n return this.activeItem() === item\n }\n\n protected selectItem(item: T): void {\n this.itemClick.emit(item)\n this.panelOpen.set(false)\n }\n\n protected toggleOverflowPanel(): void {\n this.panelOpen.update((value) => !value)\n if (this.panelOpen()) {\n this.updatePanelPosition()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.panelOpen()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-avatar-group__more',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n })\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.panelOpen() && !this.elementRef.nativeElement.contains(event.target)) {\n this.panelOpen.set(false)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.panelOpen()) {\n event.preventDefault()\n event.stopPropagation()\n this.panelOpen.set(false)\n }\n }\n}\n","<ul class=\"gbt-avatar-group__list\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of visibleItems(); track $index) {\n <li class=\"gbt-avatar-group__item\">\n <button\n type=\"button\"\n class=\"gbt-avatar-group__button\"\n [class.gbt-avatar-group__button--active]=\"isActive(item)\"\n [attr.aria-label]=\"item.name\"\n [attr.aria-current]=\"isActive(item) ? 'true' : null\"\n (click)=\"selectItem(item)\"\n >\n <gbt-avatar [name]=\"item.name\" [src]=\"item.src ?? null\" size=\"md\" />\n </button>\n </li>\n }\n @if (overflowCount() > 0) {\n <li class=\"gbt-avatar-group__item\">\n <button\n type=\"button\"\n class=\"gbt-avatar-group__more\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-label]=\"moreLabel()(overflowCount())\"\n (click)=\"toggleOverflowPanel()\"\n >\n +{{ overflowCount() }}\n </button>\n </li>\n }\n</ul>\n\n@if (panelOpen() && panelStyle(); as style) {\n <ul\n class=\"gbt-avatar-group__panel\"\n role=\"menu\"\n [attr.aria-label]=\"moreLabel()(overflowCount())\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n >\n @for (item of overflowItems(); track $index) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"gbt-avatar-group__panel-item\"\n [attr.aria-current]=\"isActive(item) ? 'true' : null\"\n (click)=\"selectItem(item)\"\n >\n <gbt-avatar [name]=\"item.name\" [src]=\"item.src ?? null\" size=\"sm\" />\n <span class=\"gbt-avatar-group__panel-item-name\">{{ item.name }}</span>\n @if (isActive(item)) {\n <gbt-icon name=\"check\" class=\"gbt-avatar-group__panel-item-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<AlertVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<AlertVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-alert',\n standalone: true,\n imports: [Icon],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Alert {\n variant = input<AlertVariant>('info')\n dismissible = input(false, { transform: booleanAttribute })\n closeLabel = input<string>('Dismiss')\n\n dismissed = output<void>()\n\n protected readonly role = computed(() => (ASSERTIVE_VARIANTS.has(this.variant()) ? 'alert' : 'status'))\n\n protected readonly icon = computed(() => VARIANT_ICONS[this.variant()])\n}\n","<div class=\"gbt-alert\" [attr.data-variant]=\"variant()\" [attr.role]=\"role()\" aria-atomic=\"true\">\n <span class=\"gbt-alert__icon\">\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n </span>\n <div class=\"gbt-alert__content\"><ng-content /></div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"gbt-alert__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n","/** A 6-digit hex color, with or without its leading `#`. */\nconst HEX_6 = /^#?[0-9a-fA-F]{6}$/\n\nfunction normalizeHex(hex: string): string {\n if (!HEX_6.test(hex)) {\n throw new Error(\n `getReadableTextColor: expected a 6-digit hex color such as \"#dc2626\" or \"dc2626\", got ${JSON.stringify(hex)}. ` +\n 'Shorthand hex (#abc), CSS named colors, rgb()/hsl() and custom properties are not supported.',\n )\n }\n return hex.replace('#', '')\n}\n\nfunction linearizeChannel(value: number): number {\n const c = value / 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nfunction relativeLuminance(normalizedHex: string): number {\n const r = parseInt(normalizedHex.substring(0, 2), 16)\n const g = parseInt(normalizedHex.substring(2, 4), 16)\n const b = parseInt(normalizedHex.substring(4, 6), 16)\n return 0.2126 * linearizeChannel(r) + 0.7152 * linearizeChannel(g) + 0.0722 * linearizeChannel(b)\n}\n\nfunction contrastRatio(normalizedA: string, normalizedB: string): number {\n const lA = relativeLuminance(normalizedA)\n const lB = relativeLuminance(normalizedB)\n const lighter = Math.max(lA, lB)\n const darker = Math.min(lA, lB)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/**\n * Returns `'#ffffff'` or `'#000000'`, whichever reaches a higher WCAG contrast\n * ratio against `backgroundHex`. Used by `Tag` to keep its text readable on\n * an arbitrary caller-supplied background color that isn't one of the\n * design system's own semantic tokens.\n *\n * These two endpoints are not interchangeable with a \"softer\" dark such as\n * `#1a1a1a`: sweeping all 16 777 216 sRGB backgrounds, the worst achievable\n * ratio is **4.58:1** with `#000000` (at `#cf0dcc`) but only **4.17:1** with\n * `#1a1a1a` (at `#da25c3`) — below the 4.5:1 AA threshold that `Tag`'s\n * 12px bold text must meet, since it is not \"large text\".\n *\n * @param backgroundHex a 6-digit hex color, with or without its leading `#`.\n * @throws if `backgroundHex` is not a well-formed 6-digit hex color. Silently\n * guessing would be worse: a malformed value used to produce `NaN` ratios,\n * and `NaN >= NaN` being `false` returned dark text for *any* unparseable\n * input — so `'#000'` got dark text on a black background.\n */\nexport function getReadableTextColor(backgroundHex: string): string {\n const background = normalizeHex(backgroundHex)\n const white = 'ffffff'\n const dark = '000000'\n return contrastRatio(background, white) >= contrastRatio(background, dark) ? '#ffffff' : '#000000'\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\nimport { getReadableTextColor } from './tag-contrast'\n\n@Component({\n selector: 'gbt-tag',\n standalone: true,\n imports: [Icon],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tag {\n color = input.required<string>()\n removable = input<boolean>(false)\n removeLabel = input<string>('Remove')\n disabled = input<boolean>(false)\n\n removed = output<void>()\n\n protected readonly textColor = computed(() => getReadableTextColor(this.color()))\n\n protected onRemoveClick(event: MouseEvent): void {\n event.stopPropagation()\n this.removed.emit()\n }\n}\n","<span\n class=\"gbt-tag\"\n [style.background]=\"color()\"\n [style.color]=\"textColor()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n>\n <span class=\"gbt-tag__label\"><ng-content /></span>\n @if (removable()) {\n <button type=\"button\" class=\"gbt-tag__remove\" [attr.aria-label]=\"removeLabel()\" (click)=\"onRemoveClick($event)\">\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book'\n\n@Component({\n selector: 'gbt-empty-state',\n standalone: true,\n imports: [],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n illustration = input.required<EmptyStateIllustration>()\n heading = input.required<string>()\n message = input<string>('')\n}\n","<div class=\"gbt-empty-state\">\n <div class=\"gbt-empty-state__illustration\" aria-hidden=\"true\">\n @switch (illustration()) {\n @case ('folder') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"16\" y=\"38\" width=\"64\" height=\"40\" rx=\"4\" />\n <path d=\"M16 38 v-8a4 4 0 0 1 4-4h16l8 8h28a4 4 0 0 1 4 4\" />\n <rect x=\"34\" y=\"14\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(-8 42 24)\" opacity=\"0.55\" />\n <rect x=\"50\" y=\"16\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(6 58 26)\" opacity=\"0.55\" />\n </svg>\n }\n @case ('star') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48,18 L55.6,37.5 L76.5,38.7 L60.4,52 L65.6,72.3 L48,61 L30.4,72.3 L35.6,52 L19.5,38.7 L40.4,37.5 Z\" />\n <path d=\"M78,14 L81,20 L78,26 L75,20 Z\" opacity=\"0.55\" />\n <path d=\"M16,64 L19,70 L16,76 L13,70 Z\" opacity=\"0.55\" />\n </svg>\n }\n @case ('checklist') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"24\" y=\"18\" width=\"48\" height=\"64\" rx=\"6\" />\n <rect x=\"38\" y=\"12\" width=\"20\" height=\"10\" rx=\"3\" />\n <line x1=\"34\" y1=\"38\" x2=\"62\" y2=\"38\" />\n <path d=\"M32 50 l4 4 l8-8\" />\n <line x1=\"46\" y1=\"52\" x2=\"62\" y2=\"52\" />\n <line x1=\"34\" y1=\"66\" x2=\"62\" y2=\"66\" opacity=\"0.55\" />\n </svg>\n }\n @case ('merge') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"24\" cy=\"22\" r=\"7\" />\n <circle cx=\"72\" cy=\"22\" r=\"7\" />\n <circle cx=\"48\" cy=\"76\" r=\"8\" />\n <path d=\"M24 29 V50 Q24 69 39 72\" />\n <path d=\"M72 29 V50 Q72 69 57 72\" />\n </svg>\n }\n @case ('pipeline') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"22\" cy=\"68\" r=\"12\" />\n <path d=\"M17 60 L29 68 L17 76 Z\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M29 58 L44 38\" />\n <circle cx=\"50\" cy=\"30\" r=\"10\" />\n <path d=\"M56 38 L70 54\" />\n <circle cx=\"76\" cy=\"62\" r=\"10\" />\n </svg>\n }\n @case ('tag') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M18 20 H54 L82 48 L54 76 H18 Q14 76 14 72 V24 Q14 20 18 20 Z\" />\n <circle cx=\"34\" cy=\"36\" r=\"5\" />\n </svg>\n }\n @case ('book') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48 26 Q34 16 16 20 V72 Q34 68 48 78 Q62 68 80 72 V20 Q62 16 48 26 Z\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"30\" />\n <line x1=\"24\" y1=\"42\" x2=\"40\" y2=\"40\" />\n <line x1=\"56\" y1=\"30\" x2=\"72\" y2=\"32\" />\n <line x1=\"56\" y1=\"40\" x2=\"72\" y2=\"42\" />\n </svg>\n }\n }\n </div>\n <p class=\"gbt-empty-state__heading\">{{ heading() }}</p>\n @if (message()) {\n <p class=\"gbt-empty-state__message\">{{ message() }}</p>\n }\n <div class=\"gbt-empty-state__action\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../icon/icon'\n\nlet nextInputId = 0\n\n@Component({\n selector: 'gbt-input',\n standalone: true,\n imports: [Icon],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GbtInput),\n multi: true,\n },\n ],\n})\nexport class GbtInput implements ControlValueAccessor {\n id = input<string>(`gbt-input-${++nextInputId}`)\n label = input<string>('')\n type = input<'text' | 'password' | 'email'>('text')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n autocomplete = input<string>('off')\n\n showPasswordLabel = input<string>('Show password')\n\n hidePasswordLabel = input<string>('Hide password')\n\n committed = output<string>()\n\n protected readonly value = signal('')\n protected readonly passwordVisible = signal(false)\n protected readonly effectiveType = computed(() => {\n if (this.type() !== 'password') {\n return this.type()\n }\n return this.passwordVisible() ? 'text' : 'password'\n })\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((visible) => !visible)\n }\n}\n","<div class=\"gbt-input\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-input__wrapper\">\n <input\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [attr.autocomplete]=\"autocomplete()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"gbt-input__toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? hidePasswordLabel() : showPasswordLabel()\"\n >\n <gbt-icon [name]=\"passwordVisible() ? 'eye-off' : 'eye'\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Tag } from '../../atoms/tag/tag'\n\nexport interface SelectOption<T = string> {\n value: T\n label: string\n icon?: string\n color?: string\n}\n\nlet nextSelectId = 0\n\n@Component({\n selector: 'gbt-select',\n standalone: true,\n imports: [Icon, Tag],\n templateUrl: './select.html',\n styleUrl: './select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n '[class.gbt-select--sm]': \"size() === 'sm'\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Select),\n multi: true,\n },\n ],\n})\nexport class Select<T = string> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-select-${++nextSelectId}`)\n label = input<string>('')\n size = input<'md' | 'sm'>('md')\n options = input.required<SelectOption<T>[]>()\n multiple = input(false, { transform: booleanAttribute })\n chips = input(false, { transform: booleanAttribute })\n placeholder = input<string>('Select…')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n selectedCountLabel = input<(count: number) => string>((count) => `${count} selected`)\n chipRemoveLabel = input<(label: string) => string>((label) => `Remove ${label}`)\n\n protected readonly open = signal(false)\n protected readonly activeIndex = signal(-1)\n protected readonly selected = signal<T[]>([])\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n private readonly formDisabled = signal(false)\n\n protected readonly labelId = computed(() => `${this.id()}-label`)\n protected readonly chipsId = computed(() => `${this.id()}-chips`)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T | T[] | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | T[] | null): void {\n if (this.multiple()) {\n this.selected.set(Array.isArray(value) ? (value as T[]) : [])\n } else {\n this.selected.set(value === null || value === undefined ? [] : [value as T])\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected readonly selectedOptions = computed(() => {\n const selected = this.selected()\n return this.options().filter((option) => selected.includes(option.value))\n })\n\n protected readonly triggerLabel = computed(() => {\n const opts = this.selectedOptions()\n if (opts.length === 0) {\n return this.placeholder()\n }\n if (this.chips() && this.multiple()) {\n return this.placeholder()\n }\n if (this.multiple() && opts.length > 1) {\n return this.selectedCountLabel()(opts.length)\n }\n return opts[0].label\n })\n\n protected readonly chipsVisible = computed(\n () => this.chips() && this.multiple() && this.selectedOptions().length > 0,\n )\n\n /**\n * In chips mode the trigger keeps showing the placeholder, so the selection\n * is conveyed to assistive technology by describing the trigger with the\n * chip row itself. The error message keeps its own id in the list.\n */\n protected readonly describedBy = computed(() => {\n const ids: string[] = []\n if (this.chipsVisible()) {\n ids.push(this.chipsId())\n }\n if (this.errorMessage()) {\n ids.push(`${this.id()}-error`)\n }\n return ids.length > 0 ? ids.join(' ') : null\n })\n\n protected readonly triggerIcon = computed(() => {\n const opts = this.selectedOptions()\n return opts.length === 1 ? opts[0].icon : undefined\n })\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.activeIndex() >= 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n protected isSelected(value: T): boolean {\n return this.selected().includes(value)\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n this.activeIndex.set(\n Math.max(\n 0,\n this.options().findIndex((o) => this.isSelected(o.value)),\n ),\n )\n this.updatePanelPosition()\n } else {\n this.onTouched()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-select__trigger',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n // In chips mode the chip row sits between the trigger and the panel.\n // Anchoring the panel to the trigger alone would lay it over the chips,\n // whose remove buttons are focusable — WCAG 2.4.11 \"focus not obscured\".\n const chipRow = this.elementRef.nativeElement.querySelector(\n '.gbt-select__chips',\n ) as HTMLElement | null\n const anchorBottom = chipRow\n ? Math.max(rect.bottom, chipRow.getBoundingClientRect().bottom)\n : rect.bottom\n this.panelStyle.set({\n top: `${anchorBottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n /**\n * Removes the chip at `index`. Refuses to mutate anything while the control\n * is disabled (the remove buttons are not rendered then, but a programmatic\n * caller must not be able to bypass the disabled state either), and moves\n * focus off the button it is about to destroy — otherwise focus falls back\n * to `<body>`.\n */\n protected removeChip(value: T, index: number): void {\n if (this.isDisabled()) {\n return\n }\n const host = this.elementRef.nativeElement as HTMLElement\n const removeButtons = Array.from(\n host.querySelectorAll<HTMLElement>('.gbt-select__chips .gbt-tag__remove'),\n )\n // `@for` tracks options by value, so the surviving chips keep their DOM\n // nodes across this removal — the element resolved here is still the right\n // one once the view updates.\n const nextFocus =\n removeButtons[index + 1] ??\n removeButtons[index - 1] ??\n host.querySelector<HTMLElement>('.gbt-select__trigger')\n this.selectOption(value)\n nextFocus?.focus()\n }\n\n protected selectOption(value: T): void {\n if (this.multiple()) {\n const current = this.selected()\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n this.selected.set(next)\n this.onChange(next)\n // A chip can be removed without ever opening the panel, so this is the\n // only place that marks the control as touched in that flow.\n this.onTouched()\n } else {\n this.selected.set([value])\n this.onChange(value)\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target)) {\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleOpen()\n }\n return\n }\n const options = this.options()\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n this.onTouched()\n break\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, options.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter':\n case ' ': {\n event.preventDefault()\n const active = options[this.activeIndex()]\n if (active) {\n this.selectOption(active.value)\n }\n break\n }\n }\n }\n}\n","<div class=\"gbt-select\" [class.gbt-select--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [id]=\"labelId()\" [for]=\"id()\" class=\"gbt-select__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-select__trigger\"\n [class.gbt-select__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-labelledby]=\"label() ? labelId() + ' ' + id() : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"describedBy()\"\n (click)=\"toggleOpen()\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" class=\"gbt-select__trigger-icon\" aria-hidden=\"true\" />\n }\n <span\n class=\"gbt-select__trigger-label\"\n [class.gbt-select__trigger-label--placeholder]=\"selectedOptions().length === 0\"\n >\n {{ triggerLabel() }}\n </span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-select__chevron\" aria-hidden=\"true\" />\n </button>\n @if (chipsVisible()) {\n <div class=\"gbt-select__chips\" [id]=\"chipsId()\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <gbt-tag\n [color]=\"option.color ?? '#6b7280'\"\n [removable]=\"!isDisabled()\"\n [disabled]=\"isDisabled()\"\n [removeLabel]=\"chipRemoveLabel()(option.label)\"\n (removed)=\"removeChip(option.value, i)\"\n >\n {{ option.label }}\n </gbt-tag>\n }\n </div>\n }\n @if (chips() && multiple()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ selectedCountLabel()(selectedOptions().length) }}\n </div>\n }\n @if (open() && panelStyle(); as style) {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-select__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n >\n @for (option of options(); track option.value; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-select__option\"\n [class.gbt-select__option--selected]=\"isSelected(option.value)\"\n [class.gbt-select__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n (click)=\"selectOption(option.value)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (option.icon) {\n <gbt-icon [name]=\"option.icon\" class=\"gbt-select__option-icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-select__option-label\">{{ option.label }}</span>\n @if (isSelected(option.value)) {\n <gbt-icon name=\"check\" class=\"gbt-select__option-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-select__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, output } from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Select, SelectOption } from '../select/select'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface ListToolbarSortOption<T extends string = string> {\n value: T\n label: string\n}\n\n@Component({\n selector: 'gbt-list-toolbar',\n standalone: true,\n imports: [ReactiveFormsModule, GbtInput, Select, Icon],\n templateUrl: './list-toolbar.html',\n styleUrl: './list-toolbar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListToolbar<T extends string = string> {\n searchValue = input<string>('')\n searchLabel = input.required<string>()\n searchPlaceholder = input<string>('')\n sortOptions = input.required<ListToolbarSortOption<T>[]>()\n sortValue = input.required<T>()\n sortDirection = input<'asc' | 'desc'>('asc')\n sortLabel = input<string>('Sort by')\n directionLabel = input<string>('Reverse sort direction')\n\n searchValueChange = output<string>()\n sortValueChange = output<T>()\n sortDirectionChange = output<'asc' | 'desc'>()\n\n // Plain `[ngModel]` bindings on the child `gbt-input`/`gbt-select` defer their\n // initial value to a control-value-accessor writeValue() call scheduled on a\n // microtask (an Angular Forms `NgModel` implementation detail), so the very\n // first render would briefly show the empty/placeholder state. Reactive\n // FormControls propagate `setValue()` to the CVA synchronously, so we mirror\n // the inputs onto internal controls instead and forward user edits back out.\n protected readonly searchControl = new FormControl<string>('', { nonNullable: true })\n protected readonly sortControl = new FormControl<T | null>(null)\n\n constructor() {\n effect(() => this.searchControl.setValue(this.searchValue(), { emitEvent: false }))\n effect(() => this.sortControl.setValue(this.sortValue(), { emitEvent: false }))\n\n this.searchControl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.searchValueChange.emit(value))\n\n this.sortControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== null && value !== this.sortValue()) {\n this.sortValueChange.emit(value)\n }\n })\n }\n\n protected asSelectOptions(options: ListToolbarSortOption<T>[]): SelectOption<T>[] {\n return options\n }\n\n protected toggleDirection(): void {\n this.sortDirectionChange.emit(this.sortDirection() === 'asc' ? 'desc' : 'asc')\n }\n}\n","<div class=\"gbt-list-toolbar\">\n <gbt-input\n class=\"gbt-list-toolbar__search\"\n [label]=\"searchLabel()\"\n [placeholder]=\"searchPlaceholder()\"\n [formControl]=\"searchControl\"\n />\n <gbt-select\n class=\"gbt-list-toolbar__sort\"\n [label]=\"sortLabel()\"\n [options]=\"asSelectOptions(sortOptions())\"\n [formControl]=\"sortControl\"\n />\n <button\n type=\"button\"\n class=\"gbt-list-toolbar__direction\"\n (click)=\"toggleDirection()\"\n [attr.aria-label]=\"directionLabel()\"\n [attr.aria-pressed]=\"sortDirection() === 'desc'\"\n >\n <gbt-icon [name]=\"sortDirection() === 'asc' ? 'arrow-up' : 'arrow-down'\" />\n </button>\n</div>\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-card',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {\n hoverable = input(false, { transform: booleanAttribute })\n heading = input<string>('')\n icon = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n\n protected readonly cardClass = computed(\n () => 'gbt-card' + (this.hoverable() ? ' gbt-card--hoverable' : ''),\n )\n}\n","<div [class]=\"cardClass()\">\n @if (heading()) {\n <div class=\"gbt-card__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h1>\n }\n @case (3) {\n <h3 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h3>\n }\n @case (4) {\n <h4 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h4>\n }\n @case (5) {\n <h5 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h5>\n }\n @case (6) {\n <h6 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h6>\n }\n @default {\n <h2 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h2>\n }\n }\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n</div>\n<ng-template #headingContent>\n @if (icon()) {\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n }\n {{ heading() }}\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextCheckboxId = 0\n\n@Component({\n selector: 'gbt-checkbox',\n standalone: true,\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Checkbox),\n multi: true,\n },\n ],\n})\nexport class Checkbox implements ControlValueAccessor {\n id = input<string>(`gbt-checkbox-${++nextCheckboxId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-checkbox\" [class.gbt-checkbox--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-modal',\n standalone: true,\n imports: [Icon],\n templateUrl: './modal.html',\n styleUrl: './modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal implements OnDestroy {\n isOpen = input.required<boolean>()\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n private readonly dialog = viewChild<ElementRef<HTMLElement>>('dialog')\n\n private previouslyFocused: HTMLElement | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.dialog()?.nativeElement.focus())\n } else if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n })\n }\n\n ngOnDestroy(): void {\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onDialogKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const dialog = this.dialog()?.nativeElement\n if (!dialog) {\n return\n }\n const focusable = dialog.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (isOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-modal__backdrop\" (click)=\"onBackdropClick($event)\">\n <div\n class=\"gbt-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n #dialog\n (keydown)=\"onDialogKeydown($event)\"\n >\n <header class=\"gbt-modal__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-modal__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-modal__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-modal__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-modal__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-modal__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-modal__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-modal__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-modal__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type DrawerEdge = 'right' | 'left' | 'top' | 'bottom'\n\nconst CLOSE_ANIMATION_MS = 200\n\n@Component({\n selector: 'gbt-drawer',\n standalone: true,\n imports: [Icon],\n templateUrl: './drawer.html',\n styleUrl: './drawer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Drawer implements OnDestroy {\n isOpen = input.required<boolean>()\n edge = input<DrawerEdge>('right')\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n protected readonly rendered = signal(false)\n\n private readonly panel = viewChild<ElementRef<HTMLElement>>('panel')\n\n private previouslyFocused: HTMLElement | null = null\n private closeTimer: ReturnType<typeof setTimeout> | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer)\n this.closeTimer = null\n }\n this.rendered.set(true)\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.panel()?.nativeElement.focus())\n } else if (this.rendered()) {\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null\n this.rendered.set(false)\n if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n }, CLOSE_ANIMATION_MS)\n }\n })\n }\n\n ngOnDestroy(): void {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer)\n }\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const panel = this.panel()?.nativeElement\n if (!panel) {\n return\n }\n const focusable = panel.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (rendered()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"gbt-drawer__backdrop\"\n [class.gbt-drawer__backdrop--closing]=\"!isOpen()\"\n (click)=\"onBackdropClick($event)\"\n >\n <div\n #panel\n class=\"gbt-drawer__panel\"\n [class.gbt-drawer__panel--closing]=\"!isOpen()\"\n [attr.data-edge]=\"edge()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <header class=\"gbt-drawer__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-drawer__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-drawer__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-drawer__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-drawer__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-drawer__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-drawer__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-drawer__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-drawer__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\n\nexport interface TableColumn<T> {\n key: Extract<keyof T, string>\n label: string\n\n format?: (row: T) => string\n}\n\n@Component({\n selector: 'gbt-table',\n standalone: true,\n templateUrl: './table.html',\n styleUrl: './table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table<T extends object> {\n data = input.required<T[]>()\n columns = input.required<TableColumn<T>[]>()\n trackBy = input<((row: T) => unknown) | null>(null)\n emptyMessage = input<string>('No data')\n caption = input.required<string>()\n clickableRows = input(false, { transform: booleanAttribute })\n\n rowClick = output<T>()\n\n protected trackRow = (index: number, row: T): unknown => {\n const identify = this.trackBy()\n return identify ? identify(row) : index\n }\n\n protected onRowKeydown(event: KeyboardEvent, row: T): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.rowClick.emit(row)\n }\n }\n\n protected cellValue(row: T, column: TableColumn<T>): unknown {\n return column.format ? column.format(row) : row[column.key]\n }\n}\n","<table class=\"gbt-table\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th scope=\"col\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackRow($index, row)) {\n <tr\n [class.gbt-table__row--clickable]=\"clickableRows()\"\n [attr.tabindex]=\"clickableRows() ? 0 : null\"\n (click)=\"clickableRows() && rowClick.emit(row)\"\n (keydown)=\"clickableRows() && onRowKeydown($event, row)\"\n >\n @for (column of columns(); track column.key) {\n <td>{{ cellValue(row, column) }}</td>\n }\n </tr>\n } @empty {\n <tr class=\"gbt-table__empty\">\n <td [attr.colspan]=\"columns().length\">{{ emptyMessage() }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface SearchResultCategory<T = unknown> {\n label: string\n icon?: string\n items: T[]\n}\n\nlet nextSearchBarId = 0\n\n@Component({\n selector: 'gbt-search-bar',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './search-bar.html',\n styleUrl: './search-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'onNavigationKeydown($event)',\n '(document:click)': 'handleClickOutside($event)',\n },\n})\nexport class SearchBar<T = unknown> {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-search-bar-${++nextSearchBarId}`)\n results = input<T[] | null>(null)\n groupedResults = input<SearchResultCategory<T>[] | null>(null)\n placeholder = input<string>('Search…')\n ariaLabel = input<string>('')\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n keepQueryOnSelect = input(false)\n noResultsMessage = input<string>('No results')\n noResultsHint = input<string>('Try a different search.')\n clearLabel = input<string>('Clear search')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n navigateHint = input<string>('Navigate')\n selectHint = input<string>('Select')\n closeHint = input<string>('Close')\n\n queryChange = output<string>()\n itemSelected = output<T>()\n clear = output<void>()\n\n protected readonly isFocused = signal(false)\n protected readonly showResults = signal(false)\n protected readonly searchQuery = signal('')\n protected readonly activeIndex = signal(0)\n\n protected readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput')\n\n private readonly hasGroupedResultsInput = computed(() => !!this.groupedResults())\n\n protected readonly allVisibleItems = computed<T[]>(() => {\n if (this.groupedResults()) {\n return this.groupedResults()!.flatMap((category) => category.items)\n }\n return this.results() ?? []\n })\n\n protected readonly showOverlay = computed(() => this.showResults())\n\n protected readonly panelId = computed(() => `${this.id()}-panel`)\n\n protected itemDomId(index: number): string {\n return `${this.id()}-item-${index}`\n }\n\n protected readonly indexedGroupedResults = computed(() => {\n const grouped = this.groupedResults()\n if (!grouped) return null\n const format = this.displayFn()\n let index = 0\n return grouped.map((category) => ({\n ...category,\n indexedItems: category.items.map((item) => ({\n item,\n index: index++,\n formatted: format(item),\n })),\n }))\n })\n\n protected readonly indexedResults = computed(() => {\n const format = this.displayFn()\n return (this.results() ?? []).map((item, index) => ({ item, index, formatted: format(item) }))\n })\n\n protected readonly activeItemDomId = computed(() => {\n if (!this.showOverlay()) return null\n const idx = this.activeIndex()\n\n return idx >= 0 && idx < this.allVisibleItems().length ? this.itemDomId(idx) : null\n })\n\n protected readonly resultCount = computed(() =>\n this.showOverlay() ? this.allVisibleItems().length : 0,\n )\n\n protected readonly hasGroupedResults = computed(\n () => this.hasGroupedResultsInput() && !!this.groupedResults()?.some((c) => c.items.length > 0),\n )\n\n protected readonly hasNoResults = computed(() => this.allVisibleItems().length === 0)\n\n protected onNavigationKeydown(event: KeyboardEvent): void {\n if (!this.isFocused() || !this.showOverlay()) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n this.blurSearch()\n return\n }\n\n const items = this.allVisibleItems()\n if (items.length === 0) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, items.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n const active = items[this.activeIndex()]\n if (!active) break\n event.preventDefault()\n this.onSelect(active)\n break\n }\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.showResults.set(false)\n }\n }\n\n focusSearch(): void {\n this.searchInput()?.nativeElement.focus()\n }\n\n protected blurSearch(): void {\n this.searchInput()?.nativeElement.blur()\n this.showResults.set(false)\n }\n\n protected onFocus(): void {\n this.isFocused.set(true)\n if (this.searchQuery().length > 0) this.showResults.set(true)\n }\n\n protected onBlur(): void {\n this.isFocused.set(false)\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.showResults.set(false)\n }\n }, 200)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.searchQuery.set(value)\n this.activeIndex.set(0)\n this.showResults.set(value.length > 0)\n\n this.queryChange.emit(value)\n }\n\n protected onClear(): void {\n this.searchQuery.set('')\n this.activeIndex.set(0)\n this.showResults.set(false)\n this.clear.emit()\n this.focusSearch()\n }\n\n protected onSelect(item: T): void {\n this.itemSelected.emit(item)\n this.showResults.set(false)\n this.searchQuery.set(this.keepQueryOnSelect() ? this.displayFn()(item) : '')\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<div class=\"gbt-sb-trigger\" [class.gbt-sb-trigger--open]=\"isFocused()\" (click)=\"focusSearch()\">\n <gbt-icon name=\"search\" class=\"gbt-sb-trigger__icon\" aria-hidden=\"true\" />\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n class=\"gbt-sb-trigger__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [value]=\"searchQuery()\"\n [attr.aria-expanded]=\"showOverlay()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"showOverlay() ? panelId() : null\"\n [attr.aria-activedescendant]=\"activeItemDomId()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (searchQuery().length > 0) {\n <button\n type=\"button\"\n class=\"gbt-sb-trigger__clear\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"clearLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n@if (showOverlay()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ resultsAnnouncement()(resultCount()) }}\n </div>\n}\n@if (showOverlay()) {\n <div class=\"gbt-sb-backdrop\" (click)=\"blurSearch()\" aria-hidden=\"true\"></div>\n <ng-template #footer>\n <div class=\"gbt-sb-footer\" aria-hidden=\"true\">\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↑</kbd>\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↓</kbd>\n {{ navigateHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↵</kbd>\n {{ selectHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">Esc</kbd>\n {{ closeHint() }}\n </span>\n </div>\n </ng-template>\n @if (hasNoResults()) {\n <div [id]=\"panelId()\" class=\"gbt-sb-panel\">\n <div class=\"gbt-sb-state\" role=\"status\">\n <gbt-icon name=\"search\" class=\"gbt-sb-state__icon\" aria-hidden=\"true\" />\n <span>{{ noResultsMessage() }}</span>\n <p class=\"gbt-sb-state__hint\">{{ noResultsHint() }}</p>\n </div>\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"panelId()\"\n class=\"gbt-sb-panel\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (hasGroupedResults()) {\n <div class=\"gbt-sb-list\">\n @for (category of indexedGroupedResults(); track category.label) {\n @if (category.items.length > 0) {\n <div class=\"gbt-sb-group-label\">\n @if (category.icon) {\n <gbt-icon [name]=\"category.icon\" aria-hidden=\"true\" />\n }\n {{ category.label }}\n <span class=\"gbt-sb-group-count\" aria-hidden=\"true\">{{\n category.items.length\n }}</span>\n </div>\n @for (entry of category.indexedItems; track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n @if (category.icon) {\n <gbt-icon\n [name]=\"category.icon\"\n class=\"gbt-sb-item__icon\"\n aria-hidden=\"true\"\n />\n }\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n }\n }\n </div>\n } @else if (results() && results()!.length > 0) {\n <div class=\"gbt-sb-list\">\n @for (entry of indexedResults(); track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n </div>\n }\n\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core'\n\n@Component({\n selector: 'gbt-tab',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n host: {\n role: 'tabpanel',\n '[style.display]': \"active() ? null : 'none'\",\n '[id]': \"groupId() + '-panel-' + index()\",\n '[attr.aria-labelledby]': \"groupId() + '-trigger-' + index()\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tab {\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n input,\n model,\n viewChildren,\n} from '@angular/core'\nimport { Tab } from '../tab/tab'\n\nlet nextTabsId = 0\n\n@Component({\n selector: 'gbt-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs {\n id = input<string>(`gbt-tabs-${++nextTabsId}`)\n\n protected readonly tabs = contentChildren(Tab)\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger')\n\n activeIndex = model(0)\n\n constructor() {\n effect(() => {\n const tabs = this.tabs()\n const active = this.activeIndex()\n const groupId = this.id()\n tabs.forEach((tab, i) => tab.setState(i, i === active, groupId))\n })\n\n // Self-heals an out-of-range `activeIndex` — e.g. a consumer binds it to\n // a URL query parameter and the stored value no longer matches any tab —\n // instead of leaving every panel hidden and every trigger out of the\n // keyboard tab order with no way to reach the component at all.\n effect(() => {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n const current = this.activeIndex()\n const clamped = Math.min(Math.max(current, 0), count - 1)\n if (clamped !== current) {\n this.activeIndex.set(clamped)\n }\n })\n }\n\n protected select(index: number): void {\n this.activeIndex.set(index)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n let next: number | null = null\n if (event.key === 'ArrowRight') {\n next = (index + 1) % count\n } else if (event.key === 'ArrowLeft') {\n next = (index - 1 + count) % count\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(next)\n this.triggers()[next]?.nativeElement.focus()\n }\n}\n","<div class=\"gbt-tabs\">\n <div class=\"gbt-tabs__list\" role=\"tablist\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n #trigger\n type=\"button\"\n class=\"gbt-tabs__trigger\"\n [class.gbt-tabs__trigger--active]=\"activeIndex() === i\"\n role=\"tab\"\n [id]=\"id() + '-trigger-' + i\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"id() + '-panel-' + i\"\n [tabIndex]=\"activeIndex() === i ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <div class=\"gbt-tabs__panels\">\n <ng-content></ng-content>\n </div>\n</div>\n","export interface Scale<T> {\n map(value: T): number\n invert(pixel: number): T\n readonly domain: [T, T]\n readonly range: [number, number]\n}\n\nexport function linearScale(domain: [number, number], range: [number, number]): Scale<number> {\n const [d0, d1] = domain\n const [r0, r1] = range\n const span = d1 - d0\n\n const ratio = span === 0 ? 0 : (r1 - r0) / span\n return {\n domain,\n range,\n map: (value) => r0 + (value - d0) * ratio,\n invert: (pixel) => (ratio === 0 ? d0 : d0 + (pixel - r0) / ratio),\n }\n}\n\nexport function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date> {\n const numeric = linearScale([domain[0].getTime(), domain[1].getTime()], range)\n return {\n domain,\n range,\n map: (value) => numeric.map(value.getTime()),\n invert: (pixel) => new Date(numeric.invert(pixel)),\n }\n}\n\nexport interface BandScale {\n map(value: string): number\n invert(pixel: number): string | null\n readonly bandwidth: number\n readonly domain: string[]\n readonly range: [number, number]\n}\n\nexport function bandScale(domain: string[], range: [number, number], padding = 0): BandScale {\n const [r0, r1] = range\n const step = domain.length === 0 ? 0 : (r1 - r0) / domain.length\n\n const gutter = Math.min(Math.max(padding, 0), 1)\n const bandwidth = step * (1 - gutter)\n return {\n domain,\n range,\n bandwidth,\n map: (value) => {\n const index = domain.indexOf(value)\n\n return index === -1 ? Number.NaN : r0 + index * step\n },\n invert: (pixel) => {\n if (step === 0) return null\n const index = Math.floor((pixel - r0) / step)\n return index >= 0 && index < domain.length ? domain[index] : null\n },\n }\n}\n","export function niceTicks(min: number, max: number, count: number): number[] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return []\n\n if (min === max) return [min]\n\n if (max < min) return niceTicks(max, min, count)\n\n const rawStep = (max - min) / Math.max(1, count)\n const magnitude = 10 ** Math.floor(Math.log10(rawStep))\n const normalized = rawStep / magnitude\n const step = magnitude * (normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10)\n\n const first = Math.floor(min / step) * step\n const last = Math.ceil(max / step) * step\n\n const decimals = Math.max(0, -Math.floor(Math.log10(step)))\n\n const ticks: number[] = []\n\n for (let value = first; value <= last + step / 1e9; value += step) {\n ticks.push(Number(value.toFixed(decimals)))\n }\n return ticks\n}\n\nexport type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'\n\nexport interface TimeTicks {\n readonly values: Date[]\n readonly unit: TimeUnit\n format(date: Date, locale: string): string\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\n\nconst STEPS: { ms: number; unit: TimeUnit; months?: number }[] = [\n { ms: SECOND, unit: 'second' },\n { ms: 5 * SECOND, unit: 'second' },\n { ms: 15 * SECOND, unit: 'second' },\n { ms: 30 * SECOND, unit: 'second' },\n { ms: MINUTE, unit: 'minute' },\n { ms: 5 * MINUTE, unit: 'minute' },\n { ms: 15 * MINUTE, unit: 'minute' },\n { ms: 30 * MINUTE, unit: 'minute' },\n { ms: HOUR, unit: 'hour' },\n { ms: 3 * HOUR, unit: 'hour' },\n { ms: 6 * HOUR, unit: 'hour' },\n { ms: 12 * HOUR, unit: 'hour' },\n { ms: DAY, unit: 'day' },\n { ms: 2 * DAY, unit: 'day' },\n { ms: 7 * DAY, unit: 'day' },\n { ms: 30 * DAY, unit: 'month', months: 1 },\n { ms: 90 * DAY, unit: 'month', months: 3 },\n { ms: 365 * DAY, unit: 'year', months: 12 },\n]\n\nconst FORMATS: Record<TimeUnit, Intl.DateTimeFormatOptions> = {\n second: { hour: '2-digit', minute: '2-digit', second: '2-digit' },\n minute: { hour: '2-digit', minute: '2-digit' },\n hour: { hour: '2-digit', minute: '2-digit' },\n day: { day: '2-digit', month: '2-digit' },\n month: { month: 'short', year: 'numeric' },\n year: { year: 'numeric' },\n}\n\nconst MIN_PIXELS_PER_TICK = 60\n\nexport function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks {\n const span = end.getTime() - start.getTime()\n const makeFormatter = (unit: TimeUnit) => (date: Date, locale: string) =>\n new Intl.DateTimeFormat(locale, { ...FORMATS[unit], timeZone: 'UTC' }).format(date)\n\n if (span <= 0) {\n return { values: [start], unit: 'day', format: makeFormatter('day') }\n }\n\n const maxTicks = Math.max(2, Math.floor(pixelWidth / MIN_PIXELS_PER_TICK))\n\n const coarsest = STEPS[STEPS.length - 1]\n const chosen = STEPS.find((step) => span / step.ms + 1 <= maxTicks) ?? {\n ...coarsest,\n months: coarsest.months! * Math.max(1, Math.ceil((span / coarsest.ms + 1) / maxTicks)),\n }\n\n const values: Date[] = []\n if (chosen.months) {\n const step = chosen.months\n const cursor =\n step >= 12\n ? new Date(Date.UTC(Math.floor(start.getUTCFullYear() / (step / 12)) * (step / 12), 0, 1))\n : new Date(\n Date.UTC(start.getUTCFullYear(), Math.floor(start.getUTCMonth() / step) * step, 1),\n )\n while (cursor.getTime() < start.getTime()) cursor.setUTCMonth(cursor.getUTCMonth() + step)\n while (cursor.getTime() <= end.getTime()) {\n values.push(new Date(cursor))\n cursor.setUTCMonth(cursor.getUTCMonth() + step)\n }\n } else {\n const first = Math.ceil(start.getTime() / chosen.ms) * chosen.ms\n for (let t = first; t <= end.getTime(); t += chosen.ms) {\n values.push(new Date(t))\n }\n }\n\n if (values.length === 0) values.push(start)\n\n return { values, unit: chosen.unit, format: makeFormatter(chosen.unit) }\n}\n","export function formatNumber(value: number, locale: string, decimals?: number): string {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value)\n}\n\nexport function formatCompact(value: number, locale: string): string {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value)\n}\n\nexport function formatDuration(ms: number, locale: string): string {\n if (ms < 1000) return `${formatNumber(Math.round(ms), locale)} ms`\n\n const totalSeconds = Math.round(ms / 1000)\n const hours = Math.floor(totalSeconds / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n const num = (value: number) => formatNumber(value, locale)\n\n if (hours > 0) return minutes > 0 ? `${num(hours)} h ${num(minutes)} min` : `${num(hours)} h`\n if (minutes > 0)\n return seconds > 0 ? `${num(minutes)} min ${num(seconds)} s` : `${num(minutes)} min`\n return `${num(seconds)} s`\n}\n\nexport function formatPercent(ratio: number, locale: string, decimals = 0): string {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(ratio)\n}\n","export interface Point {\n x: number\n y: number\n}\n\nconst round = (n: number): number => Number(n.toFixed(2))\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return ''\n return points\n .map((point, index) => `${index === 0 ? 'M' : 'L'}${round(point.x)},${round(point.y)}`)\n .join('')\n}\n\nexport function areaPath(points: Point[], baseline: number): string {\n if (points.length === 0) return ''\n const last = points[points.length - 1]\n const first = points[0]\n return `${linePath(points)}L${round(last.x)},${round(baseline)}L${round(first.x)},${round(baseline)}Z`\n}\n\nexport interface Arc {\n startAngle: number\n endAngle: number\n innerRadius: number\n outerRadius: number\n}\n\nfunction arcPoint(radius: number, angle: number): Point {\n return { x: radius * Math.sin(angle), y: -radius * Math.cos(angle) }\n}\n\nfunction point(p: Point): string {\n return `${round(p.x)},${round(p.y)}`\n}\n\nconst FULL_CIRCLE = Math.PI * 2\n\nexport function arcPath(arc: Arc): string {\n const { startAngle, endAngle, innerRadius, outerRadius } = arc\n const span = endAngle - startAngle\n if (span <= 0) return ''\n if (span >= FULL_CIRCLE - 1e-9) {\n const mid = startAngle + Math.PI\n return (\n arcPath({ startAngle, endAngle: mid, innerRadius, outerRadius }) +\n arcPath({ startAngle: mid, endAngle: startAngle + FULL_CIRCLE, innerRadius, outerRadius })\n )\n }\n\n const largeArc = span > Math.PI ? 1 : 0\n const outerStart = arcPoint(outerRadius, startAngle)\n const outerEnd = arcPoint(outerRadius, endAngle)\n const outerArc = `A${round(outerRadius)},${round(outerRadius)} 0 ${largeArc},1 ${point(outerEnd)}`\n\n if (innerRadius <= 0) {\n return `M0,0L${point(outerStart)}${outerArc}Z`\n }\n\n const innerStart = arcPoint(innerRadius, startAngle)\n const innerEnd = arcPoint(innerRadius, endAngle)\n const innerArc = `A${round(innerRadius)},${round(innerRadius)} 0 ${largeArc},0 ${point(innerStart)}`\n return `M${point(outerStart)}${outerArc}L${point(innerEnd)}${innerArc}Z`\n}\n","export function nearestIndex(sorted: number[], target: number): number {\n if (sorted.length === 0) return -1\n\n let low = 0\n let high = sorted.length - 1\n while (low < high) {\n const mid = (low + high) >> 1\n if (sorted[mid] < target) low = mid + 1\n else high = mid\n }\n\n const previous = low - 1\n if (previous < 0) return low\n return target - sorted[previous] <= sorted[low] - target ? previous : low\n}\n","export const ESTIMATED_CHAR_WIDTH = 6.5\n\nexport const LABEL_GAP = 8\n\nexport function estimateLabelWidth(label: string): number {\n return label.length * ESTIMATED_CHAR_WIDTH\n}\n","import { Injectable, InjectionToken, computed, signal, type Signal } from '@angular/core'\nimport { bandScale, linearScale, timeScale, type BandScale, type Scale } from '../../../primitives'\n\nexport interface ChartMargin {\n top: number\n right: number\n bottom: number\n left: number\n}\n\nexport interface ChartBox {\n readonly width: number\n readonly height: number\n readonly margin: ChartMargin\n readonly innerWidth: number\n readonly innerHeight: number\n}\n\nexport type LinearAxisSpec = { kind: 'linear'; domain: [number, number] }\n\nexport type PointValue = number | Date | string\n\nexport type AxisSpec =\n | LinearAxisSpec\n | { kind: 'time'; domain: [Date, Date] }\n | { kind: 'band'; domain: string[]; padding?: number }\n\nconst EMPTY_BOX: ChartBox = {\n width: 0,\n height: 0,\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\n innerWidth: 0,\n innerHeight: 0,\n}\n\nexport interface ChartReader {\n readonly box: Signal<ChartBox>\n readonly xSpec: Signal<AxisSpec>\n readonly ySpec: Signal<LinearAxisSpec>\n readonly xScale: Signal<Scale<number> | Scale<Date> | BandScale>\n readonly yScale: Signal<Scale<number>>\n readonly activeIndex: Signal<number | null>\n readonly pointValues: Signal<PointValue[]>\n readonly activePosition: Signal<number | null>\n}\n\nexport const CHART_CONTEXT = new InjectionToken<ChartReader>('gbt-chart-context')\n\n@Injectable()\nexport class ChartContext implements ChartReader {\n private readonly _box = signal<ChartBox>(EMPTY_BOX)\n private readonly _xSpec = signal<AxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _ySpec = signal<LinearAxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _activeIndex = signal<number | null>(null)\n private readonly _pointValues = signal<PointValue[]>([])\n\n readonly box = this._box.asReadonly()\n readonly xSpec = this._xSpec.asReadonly()\n readonly ySpec = this._ySpec.asReadonly()\n readonly activeIndex = this._activeIndex.asReadonly()\n readonly pointValues = this._pointValues.asReadonly()\n\n readonly xScale = computed<Scale<number> | Scale<Date> | BandScale>(() => {\n const spec = this._xSpec()\n const range: [number, number] = [0, this._box().innerWidth]\n if (spec.kind === 'time') return timeScale(spec.domain, range)\n if (spec.kind === 'band') return bandScale(spec.domain, range, spec.padding ?? 0)\n return linearScale(spec.domain, range)\n })\n\n readonly yScale = computed<Scale<number>>(() =>\n linearScale(this._ySpec().domain, [this._box().innerHeight, 0]),\n )\n\n readonly pointPositions = computed<number[]>(() => {\n const kind = this._xSpec().kind\n const scale = this.xScale()\n return this._pointValues().map((value) =>\n kind === 'band'\n ? (scale as BandScale).map(value as string) + (scale as BandScale).bandwidth / 2\n : (scale as Scale<number> | Scale<Date>).map(value as never),\n )\n })\n\n readonly activePosition = computed<number | null>(() => {\n const index = this._activeIndex()\n if (index === null) return null\n return this.pointPositions()[index] ?? null\n })\n\n setPointValues(values: PointValue[]): void {\n this._pointValues.set(values)\n }\n\n setGeometry(box: ChartBox): void {\n this._box.set(box)\n }\n\n setSpecs(x: AxisSpec, y: LinearAxisSpec): void {\n this._xSpec.set(x)\n this._ySpec.set(y)\n }\n\n setActiveIndex(index: number | null): void {\n this._activeIndex.set(index)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport {\n CHART_CONTEXT,\n ChartContext,\n type AxisSpec,\n type ChartMargin,\n type LinearAxisSpec,\n type PointValue,\n} from '../chart-context/chart-context'\nimport { nearestIndex } from '../../../primitives'\n\nconst DEFAULT_MARGIN: ChartMargin = { top: 16, right: 8, bottom: 32, left: 48 }\n\n@Component({\n selector: 'gbt-chart-frame',\n standalone: true,\n imports: [],\n templateUrl: './chart-frame.html',\n styleUrl: './chart-frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ChartContext, { provide: CHART_CONTEXT, useExisting: ChartContext }],\n})\nexport class ChartFrame {\n private readonly context = inject(ChartContext)\n\n label = input.required<string>()\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n x = input.required<AxisSpec>()\n y = input.required<LinearAxisSpec>()\n margin = input<Partial<ChartMargin>>({})\n size = input<{ width: number; height: number } | null>(null)\n pointValues = input<PointValue[]>([])\n\n readonly activeIndexChange = output<number | null>()\n\n private readonly surface = viewChild.required<ElementRef<HTMLElement>>('surface')\n private readonly measured = signal<{ width: number; height: number } | null>(null)\n\n protected readonly ready = computed(() => this.context.box().innerWidth > 0)\n\n protected readonly viewBox = computed(() => {\n const b = this.context.box()\n return `0 0 ${b.width} ${b.height}`\n })\n\n protected readonly innerTransform = computed(() => {\n const m = this.context.box().margin\n return `translate(${m.left},${m.top})`\n })\n\n protected readonly activePosition = computed(() => this.context.activePosition())\n protected readonly innerHeight = computed(() => this.context.box().innerHeight)\n\n constructor() {\n effect(() => this.activeIndexChange.emit(this.context.activeIndex()))\n\n effect(() => {\n const margin = { ...DEFAULT_MARGIN, ...this.margin() }\n const size = this.size() ?? this.measured()\n const width = size?.width ?? 0\n const height = size?.height ?? 0\n this.context.setSpecs(this.x(), this.y())\n this.context.setPointValues(this.pointValues())\n this.context.setGeometry({\n width,\n height,\n margin,\n innerWidth: Math.max(0, width - margin.left - margin.right),\n innerHeight: Math.max(0, height - margin.top - margin.bottom),\n })\n })\n\n effect((onCleanup) => {\n if (this.size() || typeof ResizeObserver === 'undefined') return\n\n const element = this.surface().nativeElement\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0]?.contentRect\n if (rect) this.measured.set({ width: rect.width, height: rect.height })\n })\n observer.observe(element)\n onCleanup(() => observer.disconnect())\n })\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const count = this.pointValues().length\n if (count === 0) return\n\n const current = this.context.activeIndex()\n const last = count - 1\n\n switch (event.key) {\n case 'ArrowRight':\n this.context.setActiveIndex(current === null ? 0 : Math.min(last, current + 1))\n break\n case 'ArrowLeft':\n this.context.setActiveIndex(current === null ? last : Math.max(0, current - 1))\n break\n case 'Home':\n this.context.setActiveIndex(0)\n break\n case 'End':\n this.context.setActiveIndex(last)\n break\n case 'Escape':\n this.context.setActiveIndex(null)\n break\n default:\n return\n }\n\n event.preventDefault()\n }\n\n protected onBlur(): void {\n this.context.setActiveIndex(null)\n }\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.context.pointPositions()\n if (positions.length === 0) return\n\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n const local = event.clientX - rect.left - this.context.box().margin.left\n\n this.context.setActiveIndex(nearestIndex(positions, local))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const surface = event.currentTarget as HTMLElement\n if (surface.ownerDocument.activeElement === surface) return\n this.context.setActiveIndex(null)\n }\n}\n","<div class=\"gbt-chart-frame\">\n @if (heading()) {\n <div class=\"gbt-chart-frame__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-chart-frame__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-chart-frame__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-chart-frame__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-chart-frame__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-chart-frame__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-chart-frame__title\">{{ heading() }}</h2>\n }\n }\n @if (headline()) {\n <p class=\"gbt-chart-frame__headline\">{{ headline() }}</p>\n }\n @if (trend()) {\n <p class=\"gbt-chart-frame__trend\">{{ trend() }}</p>\n }\n </div>\n }\n\n <div\n #surface\n class=\"gbt-chart-frame__surface\"\n [attr.tabindex]=\"ready() && pointValues().length > 0 ? 0 : null\"\n [attr.role]=\"ready() ? 'group' : null\"\n [attr.aria-label]=\"ready() ? label() : null\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n >\n @if (ready()) {\n <svg\n class=\"gbt-chart-frame__svg\"\n [attr.viewBox]=\"viewBox()\"\n role=\"presentation\"\n focusable=\"false\"\n >\n <g [attr.transform]=\"innerTransform()\">\n <ng-content select=\"[gbtChartLayer]\" />\n @if (activePosition() !== null) {\n <line\n class=\"gbt-chart-frame__guide\"\n [attr.x1]=\"activePosition()\"\n [attr.x2]=\"activePosition()\"\n y1=\"0\"\n [attr.y2]=\"innerHeight()\"\n aria-hidden=\"true\"\n />\n }\n </g>\n </svg>\n <ng-content select=\"gbt-chart-tooltip\" />\n }\n </div>\n <ng-content select=\"gbt-chart-empty\" />\n <ng-content select=\"gbt-chart-table\" />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n} from '@angular/core'\nimport { CHART_CONTEXT, type ChartReader } from '../chart-context/chart-context'\nimport {\n LABEL_GAP,\n estimateLabelWidth,\n formatCompact,\n niceTicks,\n timeTicks,\n type BandScale,\n type Scale,\n} from '../../../primitives'\n\ninterface Tick {\n key: string\n x: number\n y: number\n label: string\n\n date: string | null\n anchor: 'start' | 'middle' | 'end'\n}\n\n@Component({\n selector: 'g[gbtChartAxis]',\n standalone: true,\n imports: [],\n templateUrl: './chart-axis.html',\n styleUrl: './chart-axis.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.transform]': 'groupTransform()',\n '[attr.axis]': 'axis()',\n 'aria-hidden': 'true',\n },\n})\nexport class ChartAxis {\n private readonly context: ChartReader = inject(CHART_CONTEXT)\n\n axis = input.required<'x' | 'y'>()\n locale = input.required<string>()\n tickCount = input(5)\n format = input<((value: never) => string) | null>(null)\n grid = input(false, { transform: booleanAttribute })\n\n protected readonly groupTransform = computed(() => {\n const box = this.context.box()\n\n return this.axis() === 'x' ? `translate(0,${box.innerHeight})` : 'translate(0,0)'\n })\n\n protected readonly ticks = computed<Tick[]>(() => {\n if (this.axis() === 'y') return this.yTicks()\n const ticks = this.xTicks()\n\n if (this.context.xSpec().kind === 'band') return ticks\n\n const last = ticks.length - 1\n return ticks.map((tick, index) => ({\n ...tick,\n anchor: index === 0 ? 'start' : index === last ? 'end' : 'middle',\n }))\n })\n\n protected readonly gridLines = computed<number[]>(() => {\n if (!this.grid() || this.axis() !== 'y') return []\n return this.yTicks().map((tick) => tick.y - 4)\n })\n\n protected readonly innerWidth = computed(() => this.context.box().innerWidth)\n\n private yTicks(): Tick[] {\n const spec = this.context.ySpec()\n const scale = this.context.yScale()\n const custom = this.format()\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `y-${value}`,\n x: -8,\n y: scale.map(value) + 4,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'end',\n }))\n }\n\n private xTicks(): Tick[] {\n const spec = this.context.xSpec()\n const box = this.context.box()\n const custom = this.format()\n\n if (spec.kind === 'band') {\n const scale = this.context.xScale() as BandScale\n\n const labels = spec.domain.map((category) => (custom ? custom(category as never) : category))\n const step = spec.domain.length === 0 ? 0 : box.innerWidth / spec.domain.length\n const widest = labels.reduce((large, label) => Math.max(large, estimateLabelWidth(label)), 0)\n const keepEvery = Math.max(1, Math.ceil((widest + LABEL_GAP) / Math.max(step, 1)))\n\n return spec.domain\n .map((category, index) => ({\n key: `x-${category}`,\n x: scale.map(category) + scale.bandwidth / 2,\n y: 20,\n label: labels[index],\n date: null,\n anchor: 'middle' as const,\n }))\n .filter((_, index) => index % keepEvery === 0)\n }\n\n if (spec.kind === 'time') {\n const scale = this.context.xScale() as Scale<Date>\n const result = timeTicks(spec.domain[0], spec.domain[1], box.innerWidth)\n\n const fine = result.unit === 'hour' || result.unit === 'minute' || result.unit === 'second'\n const days = new Set(result.values.map((v) => v.toISOString().slice(0, 10)))\n const multiDay = days.size > 1\n const seen = new Set<string>()\n\n return result.values.map((value) => {\n const day = value.toISOString().slice(0, 10)\n\n const first = fine && multiDay && !seen.has(day)\n seen.add(day)\n\n return {\n key: `x-${value.getTime()}`,\n x: scale.map(value),\n y: first ? 14 : 20,\n label: custom ? custom(value as never) : result.format(value, this.locale()),\n date: first\n ? new Intl.DateTimeFormat(this.locale(), {\n day: '2-digit',\n month: '2-digit',\n timeZone: 'UTC',\n }).format(value)\n : null,\n anchor: 'middle',\n }\n })\n }\n\n const scale = this.context.xScale() as Scale<number>\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `x-${value}`,\n x: scale.map(value),\n y: 20,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'middle',\n }))\n }\n}\n","@for (y of gridLines(); track $index) {\n <svg:line\n class=\"gbt-chart-axis__grid\"\n x1=\"0\"\n [attr.x2]=\"innerWidth()\"\n [attr.y1]=\"y\"\n [attr.y2]=\"y\"\n />\n}\n@for (tick of ticks(); track tick.key) {\n <svg:text\n class=\"gbt-chart-axis__label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"tick.y\"\n [attr.text-anchor]=\"tick.anchor\"\n >\n @if (tick.date) {\n <svg:tspan [attr.x]=\"tick.x\" dy=\"0\">{{ tick.label }}</svg:tspan>\n <svg:tspan [attr.x]=\"tick.x\" dy=\"1.1em\">{{ tick.date }}</svg:tspan>\n } @else {\n {{ tick.label }}\n }\n </svg:text>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\n\nexport interface TooltipRow {\n label: string\n value: string\n\n series?: 1 | 2 | 3\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface TooltipPoint<X> {\n x: X\n\n header: string\n rows: TooltipRow[]\n}\n\n@Component({\n selector: 'gbt-chart-tooltip',\n standalone: true,\n imports: [],\n templateUrl: './chart-tooltip.html',\n styleUrl: './chart-tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTooltip<X> {\n private readonly context = inject(CHART_CONTEXT)\n\n points = input.required<TooltipPoint<X>[]>()\n\n protected readonly active = computed<TooltipPoint<X> | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n return this.points()[index] ?? null\n })\n\n protected readonly left = computed(() => {\n const position = this.context.activePosition()\n if (position === null) return 0\n return position + this.context.box().margin.left\n })\n\n protected readonly anchor = computed<'start' | 'middle' | 'end'>(() => {\n const index = this.context.activeIndex()\n if (index === null) return 'middle'\n const last = this.context.pointValues().length - 1\n return index === 0 ? 'start' : index === last ? 'end' : 'middle'\n })\n}\n","<div class=\"gbt-chart-tooltip\" role=\"status\" aria-live=\"polite\">\n @if (active(); as point) {\n <div class=\"gbt-chart-tooltip__panel\" [style.left.px]=\"left()\" [attr.data-anchor]=\"anchor()\">\n <p class=\"gbt-chart-tooltip__header\">{{ point.header }}</p>\n <ul class=\"gbt-chart-tooltip__rows\">\n @for (row of point.rows; track $index) {\n <li>\n <span\n class=\"gbt-chart-tooltip__swatch\"\n [attr.data-series]=\"row.series ?? null\"\n [attr.data-pattern]=\"row.pattern ?? 'solid'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-chart-tooltip__label\">{{ row.label }}</span>\n <span class=\"gbt-chart-tooltip__value\">{{ row.value }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\n\nexport interface LegendEntry {\n label: string\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n\n color?: string\n\n value?: string\n}\n\nconst DASH_ARRAYS: Record<NonNullable<LegendEntry['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\n@Component({\n selector: 'gbt-chart-legend',\n standalone: true,\n imports: [],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n entries = input.required<LegendEntry[]>()\n\n interactive = input(false, { transform: booleanAttribute })\n activeIndex = input<number | null>(null)\n activeIndexChange = output<number | null>()\n\n protected dashArray(pattern: LegendEntry['pattern']): string {\n return DASH_ARRAYS[pattern ?? 'solid']\n }\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndexChange.emit(null)\n }\n}\n","<ul class=\"gbt-chart-legend\">\n @for (entry of entries(); track $index) {\n <li\n class=\"gbt-chart-legend__item\"\n [class.gbt-chart-legend__item--active]=\"interactive() && activeIndex() === $index\"\n [attr.data-pattern]=\"entry.pattern ?? 'solid'\"\n [attr.tabindex]=\"interactive() ? 0 : null\"\n (mouseenter)=\"interactive() && activeIndexChange.emit($index)\"\n (mouseleave)=\"interactive() && onMouseLeave($event)\"\n (focus)=\"interactive() && activeIndexChange.emit($index)\"\n (blur)=\"interactive() && activeIndexChange.emit(null)\"\n >\n <svg class=\"gbt-chart-legend__swatch\" viewBox=\"0 0 24 8\" aria-hidden=\"true\" focusable=\"false\">\n @if (entry.color; as color) {\n <rect class=\"gbt-chart-legend__fill\" x=\"4\" y=\"0\" width=\"8\" height=\"8\" rx=\"2\" [attr.fill]=\"color\" />\n } @else {\n <line\n class=\"gbt-chart-legend__line\"\n x1=\"0\"\n y1=\"4\"\n x2=\"24\"\n y2=\"4\"\n [attr.stroke-dasharray]=\"dashArray(entry.pattern)\"\n stroke-width=\"2\"\n />\n }\n </svg>\n {{ entry.label }}\n @if (entry.value; as value) {\n <span class=\"gbt-chart-legend__value\">{{ value }}</span>\n }\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-empty',\n standalone: true,\n imports: [],\n templateUrl: './chart-empty.html',\n styleUrl: './chart-empty.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartEmpty {\n message = input.required<string>()\n actionLabel = input<string>('')\n\n action = output<void>()\n}\n","<div class=\"gbt-chart-empty\" role=\"status\">\n <div class=\"gbt-chart-empty__icon\" aria-hidden=\"true\">\n <ng-content select=\"[gbtChartEmptyIcon]\" />\n </div>\n <p class=\"gbt-chart-empty__message\">{{ message() }}</p>\n @if (actionLabel()) {\n <button type=\"button\" class=\"gbt-chart-empty__action\" (click)=\"action.emit()\">\n {{ actionLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-table',\n standalone: true,\n imports: [],\n templateUrl: './chart-table.html',\n styleUrl: './chart-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTable {\n caption = input.required<string>()\n columns = input.required<string[]>()\n rows = input.required<(string | number)[][]>()\n}\n","<div class=\"gbt-sr-only\">\n <table>\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th scope=\"col\">{{ column }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { areaPath, linePath, type Scale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedSeries {\n label: string\n strokePath: string\n fillPath: string\n\n colorIndex: number\n dashArray: string\n}\n\ninterface ActiveDot {\n x: number\n y: number\n colorIndex: number\n}\n\nconst DASH_ARRAYS: Record<NonNullable<ChartSeries<unknown>['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\nexport const DEFAULT_PATTERNS: NonNullable<ChartSeries<unknown>['pattern']>[] = [\n 'solid',\n 'dashed',\n 'dotted',\n]\n\n@Component({\n selector: 'g[gbtLineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './line-series.html',\n styleUrl: './line-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class LineSeries<X> {\n series = input.required<ChartSeries<X>[]>()\n area = input(false)\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly renderedLines = computed<RenderedSeries[]>(() => {\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight)\n\n return this.series().map((oneSeries, index) => {\n const points = oneSeries.points.map((p) => ({\n x: x.map(p.x as never),\n y: y.map(p.y),\n }))\n return {\n label: oneSeries.label,\n strokePath: linePath(points),\n fillPath: areaPath(points, base),\n colorIndex: (index % 3) + 1,\n dashArray:\n DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]],\n }\n })\n })\n\n protected readonly activeDots = computed<ActiveDot[]>(() => {\n const activeIndex = this.context.activeIndex()\n if (activeIndex === null) return []\n const activeXValue = this.context.pointValues()[activeIndex]\n if (activeXValue === undefined) return []\n\n const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const dots: ActiveDot[] = []\n this.series().forEach((oneSeries, seriesIndex) => {\n const point = oneSeries.points.find(\n (p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key,\n )\n if (point === undefined) return\n dots.push({\n x: x.map(point.x as never),\n y: y.map(point.y),\n colorIndex: (seriesIndex % 3) + 1,\n })\n })\n return dots\n })\n}\n","@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n","import { niceTicks } from '../../../primitives'\n\nexport interface ChartPoint<X> {\n x: X\n y: number\n\n display?: string\n}\n\nexport interface ChartSeries<X> {\n label: string\n points: ChartPoint<X>[]\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface ChartInterval {\n start: Date\n end: Date\n label: string\n}\n\nconst DAY = 86400000\n\nexport function yDomain<X>(series: ChartSeries<X>[], includeZero: boolean): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.y))\n\n if (values.length === 0) return [0, 1]\n\n let min = Math.min(...values)\n let max = Math.max(...values)\n if (includeZero) {\n min = Math.min(min, 0)\n max = Math.max(max, 0)\n }\n\n if (min === max) return [min, min + 1]\n return [min, max]\n}\n\nexport function numericXDomain(series: ChartSeries<number>[]): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.x))\n if (values.length === 0) return [0, 1]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [min, min + 1] : [min, max]\n}\n\nexport function timeXDomain(series: ChartSeries<Date>[]): [Date, Date] {\n const values = series.flatMap((s) => s.points.map((p) => p.x.getTime()))\n\n if (values.length === 0) return [new Date(-DAY), new Date(0)]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [new Date(min), new Date(min + DAY)] : [new Date(min), new Date(max)]\n}\n\nexport function longestSeriesLength<X>(series: ChartSeries<X>[]): number {\n return series.reduce((longest, s) => Math.max(longest, s.points.length), 0)\n}\n\nexport function niceYDomain<X>(\n series: ChartSeries<X>[],\n includeZero: boolean,\n tickCount: number,\n): [number, number] {\n const [min, max] = yDomain(series, includeZero)\n const ticks = niceTicks(min, max, tickCount)\n\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n\nexport function niceXDomain(series: ChartSeries<number>[], tickCount: number): [number, number] {\n const [min, max] = numericXDomain(series)\n const ticks = niceTicks(min, max, tickCount)\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isDevMode,\n signal,\n} from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { DEFAULT_PATTERNS, LineSeries } from './line-series'\nimport { formatCompact, formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceXDomain,\n niceYDomain,\n timeXDomain,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\nconst MAX_SERIES = 3\n\nconst ABSENT = '—'\n\n@Component({\n selector: 'gbt-line-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartLegend, ChartEmpty, ChartTable, LineSeries],\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChart<X extends number | Date> {\n series = input.required<ChartSeries<X>[]>()\n xKind = input.required<'linear' | 'time'>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n area = input(false)\n yZero = input(true)\n yTickCount = input(5)\n xTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly hasData = computed(() => this.series().some((s) => s.points.length > 0))\n\n protected readonly xSpec = computed<AxisSpec>(() =>\n this.xKind() === 'time'\n ? { kind: 'time', domain: timeXDomain(this.series() as ChartSeries<Date>[]) }\n : {\n kind: 'linear',\n domain: niceXDomain(this.series() as ChartSeries<number>[], this.xTickCount()),\n },\n )\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain(this.series(), this.yZero(), this.yTickCount()),\n }))\n\n protected readonly legendEntries = computed<LegendEntry[]>(() => {\n const index = this.activeIndex()\n const xValues = this.xValues()\n\n const x = index === null ? xValues[xValues.length - 1] : xValues[index]\n return this.series().map((s, seriesIndex) => ({\n label: s.label,\n\n pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],\n value: x === undefined ? ABSENT : this.displayValue(s, x),\n }))\n })\n\n protected readonly publicXValues = computed<PointValue[]>(() => this.xValues())\n\n protected readonly tooltipPoints = computed<TooltipPoint<X>[]>(() =>\n this.xValues().map((x) => ({\n x,\n header: this.formatX(x),\n rows: this.series().map((s, index) => ({\n label: s.label,\n value: this.displayValue(s, x),\n series: ((index % 3) + 1) as 1 | 2 | 3,\n pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length],\n })),\n })),\n )\n\n protected readonly tableColumns = computed(() => [\n this.xColumn(),\n ...this.series().map((s) => s.label),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.xValues().map((x) => [\n this.formatX(x),\n ...this.series().map((s) => this.displayValue(s, x)),\n ]),\n )\n\n private readonly formatX = (x: X): string =>\n x instanceof Date\n ? new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(x)\n : formatCompact(x as number, this.locale())\n\n private readonly xValues = computed<X[]>(() => {\n const seen = new Map<number | string, X>()\n for (const oneSeries of this.series()) {\n for (const point of oneSeries.points) {\n seen.set(point.x instanceof Date ? point.x.getTime() : (point.x as number), point.x)\n }\n }\n return [...seen.entries()]\n .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n .map(([, x]) => x)\n })\n\n private findPoint(oneSeries: ChartSeries<X>, x: X): ChartPoint<X> | null {\n const key = x instanceof Date ? x.getTime() : x\n return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null\n }\n\n private displayValue(oneSeries: ChartSeries<X>, x: X): string {\n const point = this.findPoint(oneSeries, x)\n if (point === null) return ABSENT\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.series().length\n if (count > MAX_SERIES) {\n console.warn(\n `gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport type { BandScale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedBar {\n category: string\n x: number\n y: number\n width: number\n height: number\n}\n\n@Component({\n selector: 'g[gbtBarSeries]',\n standalone: true,\n imports: [],\n templateUrl: './bar-series.html',\n styleUrl: './bar-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class BarSeries {\n private readonly context = inject(CHART_CONTEXT)\n\n series = input.required<ChartSeries<string>>()\n\n protected readonly activeIndex = computed(() => this.context.activeIndex())\n\n protected readonly bars = computed<RenderedBar[]>(() => {\n const x = this.context.xScale() as BandScale\n const y = this.context.yScale()\n const base = y.map(0)\n\n return this.series().points.map((point) => {\n const top = y.map(point.y)\n return {\n category: point.x,\n x: x.map(point.x),\n\n y: Math.min(top, base),\n width: x.bandwidth,\n height: Math.abs(base - top),\n }\n })\n })\n}\n","@for (bar of bars(); track bar.category) {\n <svg:rect\n class=\"gbt-bar-series__bar\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { BarSeries } from './bar-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport { niceYDomain, type ChartPoint, type ChartSeries } from '../chart-data/chart-data'\n\nconst BAND_PADDING = 0.2\n\n@Component({\n selector: 'gbt-bar-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, BarSeries],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n series = input.required<ChartSeries<string>>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'band',\n domain: this.series().points.map((p) => p.x),\n padding: BAND_PADDING,\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n\n domain: niceYDomain([this.series()], true, this.yTickCount()),\n }))\n\n private displayValue(point: ChartPoint<string>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n protected readonly tooltipPoints = computed<TooltipPoint<string>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: point.x,\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [point.x, this.displayValue(point)]),\n )\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtBarSeries [series]=\"series()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { estimateLabelWidth, linePath, type Scale } from '../../../primitives'\nimport type { ChartInterval, ChartSeries } from '../chart-data/chart-data'\n\nconst LABEL_INSET = 4\n\nconst STROKE_WIDTH = 3\nconst STROKE_WIDTH_ACTIVE = 6\n\ninterface RenderedBand {\n label: string\n x: number\n width: number\n\n labeled: boolean\n\n active: boolean\n strokeWidth: number\n}\n\n@Component({\n selector: 'g[gbtTimelineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './timeline-series.html',\n styleUrl: './timeline-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class TimelineSeries {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly height = computed(() => this.context.box().innerHeight)\n\n protected readonly strokePath = computed(() => {\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return linePath(this.series().points.map((p) => ({ x: x.map(p.x), y: y.map(p.y) })))\n })\n\n private readonly activeInstant = computed<number | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n const value = this.context.pointValues()[index]\n return value instanceof Date ? value.getTime() : null\n })\n\n protected readonly activePoint = computed<{ x: number; y: number } | null>(() => {\n const time = this.activeInstant()\n if (time === null) return null\n const point = this.series().points.find((p) => p.x.getTime() === time)\n if (point === undefined) return null\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return { x: x.map(point.x), y: y.map(point.y) }\n })\n\n protected readonly bands = computed<RenderedBand[]>(() => {\n const x = this.context.xScale() as Scale<Date>\n const activeTime = this.activeInstant()\n return this.intervals().map((interval) => {\n const start = x.map(interval.start)\n const end = x.map(interval.end)\n const width = Math.max(1, end - start)\n\n const active =\n activeTime !== null &&\n activeTime >= interval.start.getTime() &&\n activeTime <= interval.end.getTime()\n return {\n label: interval.label,\n x: start,\n width,\n\n labeled: LABEL_INSET + estimateLabelWidth(interval.label) <= width,\n active,\n strokeWidth: active ? STROKE_WIDTH_ACTIVE : STROKE_WIDTH,\n }\n })\n })\n}\n","@for (band of bands(); track $index) {\n <svg:rect\n class=\"gbt-timeline-series__band\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"height()\"\n />\n <svg:rect\n class=\"gbt-timeline-series__band-edge\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.strokeWidth\"\n [attr.data-active]=\"band.active ? '' : null\"\n />\n @if (band.labeled) {\n <svg:text class=\"gbt-timeline-series__band-label\" [attr.x]=\"band.x + 4\" y=\"14\">\n {{ band.label }}\n </svg:text>\n }\n}\n@if (strokePath(); as d) {\n <svg:path class=\"gbt-timeline-series__line\" [attr.d]=\"d\" />\n}\n@if (activePoint(); as p) {\n <svg:circle class=\"gbt-timeline-series__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"4\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { TimelineSeries } from './timeline-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceYDomain,\n timeXDomain,\n type ChartInterval,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\n@Component({\n selector: 'gbt-timeline-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, TimelineSeries],\n templateUrl: './timeline-chart.html',\n styleUrl: './timeline-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineChart {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n intervalsCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yZero = input(true)\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'time',\n domain: timeXDomain([this.series()]),\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain([this.series()], this.yZero(), this.yTickCount()),\n }))\n\n protected readonly tooltipPoints = computed<TooltipPoint<Date>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: this.formatInstant(point.x),\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [this.formatInstant(point.x), this.displayValue(point)]),\n )\n\n protected readonly intervalColumns = computed(() => [\n this.intervalsCaption(),\n `${this.xColumn()} — start`,\n `${this.xColumn()} — end`,\n ])\n\n protected readonly intervalRows = computed<(string | number)[][]>(() =>\n this.intervals().map((interval) => [\n interval.label,\n this.formatInstant(interval.start),\n this.formatInstant(interval.end),\n ]),\n )\n\n private readonly formatInstant = (d: Date): string =>\n new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(d)\n\n private displayValue(point: ChartPoint<Date>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtTimelineSeries [series]=\"series()\" [intervals]=\"intervals()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n }\n @if (hasData() && intervals().length > 0) {\n <gbt-chart-table\n [caption]=\"intervalsCaption()\"\n [columns]=\"intervalColumns()\"\n [rows]=\"intervalRows()\"\n />\n }\n @if (!hasData()) {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n isDevMode,\n input,\n signal,\n} from '@angular/core'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { arcPath, formatNumber, formatPercent } from '../../../primitives'\n\nexport interface PieSlice {\n label: string\n value: number\n}\n\ninterface RenderedSlice {\n label: string\n formattedValue: string\n formattedShare: string\n path: string\n color: string\n showLabel: boolean\n labelX: number\n labelY: number\n labelAnchor: 'start' | 'middle' | 'end'\n accessibleLabel: string\n}\n\nconst OUTER_RADIUS = 90\nconst LABEL_RADIUS = OUTER_RADIUS + 14\nconst LABEL_SHARE_THRESHOLD = 0.15\nconst PALETTE_SIZE = 6\n\n@Component({\n selector: 'gbt-pie-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty, ChartLegend],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n slices = input.required<PieSlice[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n categoryColumn = input.required<string>()\n valueColumn = input.required<string>()\n shareColumn = input.required<string>()\n sliceAnnouncement = input.required<(label: string, value: string, share: string) => string>()\n\n innerRadiusRatio = input<number>(0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n private readonly total = computed(() =>\n this.slices().reduce((sum, slice) => sum + slice.value, 0),\n )\n\n protected readonly renderedSlices = computed<RenderedSlice[]>(() => {\n const total = this.total()\n const innerRadius = OUTER_RADIUS * this.innerRadiusRatio()\n let angle = 0\n return this.slices().map((slice, index) => {\n const share = total <= 0 ? 0 : slice.value / total\n const startAngle = angle\n const endAngle = angle + share * Math.PI * 2\n angle = endAngle\n\n const midAngle = (startAngle + endAngle) / 2\n const labelX = Math.round(LABEL_RADIUS * Math.sin(midAngle) * 100) / 100\n const labelY = Math.round(-LABEL_RADIUS * Math.cos(midAngle) * 100) / 100\n\n const formattedValue = formatNumber(slice.value, this.locale())\n const formattedShare = formatPercent(share, this.locale())\n\n return {\n label: slice.label,\n formattedValue,\n formattedShare,\n path: arcPath({ startAngle, endAngle, innerRadius, outerRadius: OUTER_RADIUS }),\n color: this.colorFor(index),\n showLabel: share >= LABEL_SHARE_THRESHOLD,\n labelX,\n labelY,\n labelAnchor: labelX > 5 ? 'start' : labelX < -5 ? 'end' : 'middle',\n accessibleLabel: `${slice.label} — ${formattedValue}`,\n }\n })\n })\n\n protected readonly legendEntries = computed<LegendEntry[]>(() =>\n this.renderedSlices().map((slice) => ({\n label: slice.label,\n value: slice.formattedValue,\n color: slice.color,\n })),\n )\n\n protected readonly activeSlice = computed<RenderedSlice | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSlices()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.categoryColumn(),\n this.valueColumn(),\n this.shareColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.renderedSlices().map((slice) => [slice.label, slice.formattedValue, slice.formattedShare]),\n )\n\n private colorFor(index: number): string {\n return `var(--chart-series-${(index % PALETTE_SIZE) + 1}-base)`\n }\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.slices().length\n if (count > PALETTE_SIZE) {\n console.warn(\n `gbt-pie-chart: ${count} slices received for ${PALETTE_SIZE} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","@if (renderedSlices().length > 0) {\n <div class=\"gbt-pie-chart\">\n <svg class=\"gbt-pie-chart__svg\" viewBox=\"-100 -100 200 200\" role=\"group\" [attr.aria-label]=\"label()\">\n @for (slice of renderedSlices(); track $index) {\n <path\n class=\"gbt-pie-chart__slice\"\n role=\"img\"\n tabindex=\"0\"\n [attr.aria-label]=\"slice.accessibleLabel\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n [attr.d]=\"slice.path\"\n [attr.fill]=\"slice.color\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n />\n }\n @for (slice of renderedSlices(); track $index) {\n @if (slice.showLabel) {\n <text\n class=\"gbt-pie-chart__label\"\n aria-hidden=\"true\"\n [attr.x]=\"slice.labelX\"\n [attr.y]=\"slice.labelY\"\n [attr.text-anchor]=\"slice.labelAnchor\"\n >{{ slice.formattedShare }}</text\n >\n }\n }\n </svg>\n <gbt-chart-legend\n [entries]=\"legendEntries()\"\n interactive\n [activeIndex]=\"activeIndex()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n />\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeSlice(); as slice) {\n {{ sliceAnnouncement()(slice.label, slice.formattedValue, slice.formattedShare) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n </div>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\">\n <svg\n gbtChartEmptyIcon\n viewBox=\"0 0 96 96\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"48\" cy=\"48\" r=\"30\" />\n <path d=\"M48 48 L48 18 A30 30 0 0 1 74 63 Z\" fill=\"currentColor\" stroke=\"none\" opacity=\"0.85\" />\n </svg>\n </gbt-chart-empty>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, linePath, linearScale, nearestIndex } from '../../../primitives'\n\nconst MARGIN = 4\n\n@Component({\n selector: 'gbt-sparkline',\n standalone: true,\n imports: [ChartEmpty, ChartTable],\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sparkline {\n values = input.required<number[]>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n yColumn = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n width = input(80)\n height = input(24)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`)\n\n protected readonly columns = computed(() => [this.xColumn(), this.yColumn()])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.values().map((value, index) => [\n formatNumber(index + 1, this.locale()),\n formatNumber(value, this.locale()),\n ]),\n )\n\n private readonly scales = computed(() => {\n const values = this.values()\n const min = Math.min(...values)\n const max = Math.max(...values)\n return {\n x: linearScale([0, Math.max(values.length - 1, 0)], [MARGIN, this.width() - MARGIN]),\n y: linearScale([min, max], [this.height() - MARGIN, MARGIN]),\n }\n })\n\n protected readonly path = computed(() => {\n const values = this.values()\n if (values.length === 0) return null\n const { x, y } = this.scales()\n return linePath(values.map((value, index) => ({ x: x.map(index), y: y.map(value) })))\n })\n\n protected readonly positions = computed<number[]>(() => {\n const { x } = this.scales()\n return this.values().map((_, index) => x.map(index))\n })\n\n protected readonly dot = computed<{ x: number; y: number } | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n const { x, y } = this.scales()\n return { x: x.map(index), y: y.map(value) }\n })\n\n protected readonly tooltip = computed<string | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n return `${this.xColumn()} ${formatNumber(index + 1, this.locale())} — ${this.yColumn()} ${formatNumber(value, this.locale())}`\n })\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.positions()\n if (positions.length === 0) return\n const rect = (event.currentTarget as Element).getBoundingClientRect()\n this.activeIndex.set(nearestIndex(positions, event.clientX - rect.left))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const target = event.currentTarget as Element\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected onBlur(): void {\n this.activeIndex.set(null)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const lastIndex = this.values().length - 1\n if (lastIndex < 0) return\n const current = this.activeIndex()\n switch (event.key) {\n case 'ArrowRight':\n this.activeIndex.set(current === null ? 0 : Math.min(lastIndex, current + 1))\n break\n case 'ArrowLeft':\n this.activeIndex.set(current === null ? lastIndex : Math.max(0, current - 1))\n break\n case 'Home':\n this.activeIndex.set(0)\n break\n case 'End':\n this.activeIndex.set(lastIndex)\n break\n case 'Escape':\n this.activeIndex.set(null)\n break\n default:\n return\n }\n event.preventDefault()\n }\n}\n","@if (path(); as d) {\n <div class=\"gbt-sparkline\" role=\"status\" aria-live=\"polite\">\n <svg\n class=\"gbt-sparkline__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n tabindex=\"0\"\n role=\"group\"\n [attr.aria-label]=\"tableCaption()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <path class=\"gbt-sparkline__line\" [attr.d]=\"d\" />\n @if (dot(); as p) {\n <circle class=\"gbt-sparkline__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"3\" />\n }\n </svg>\n @if (tooltip(); as text) {\n <span class=\"gbt-sparkline__tooltip\">{{ text }}</span>\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-gauge-bar',\n standalone: true,\n imports: [],\n templateUrl: './gauge-bar.html',\n styleUrl: './gauge-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeBar {\n value = input.required<number>()\n max = input.required<number>()\n label = input.required<string>()\n formattedValue = input.required<string>()\n warningLabel = input.required<string>()\n criticalLabel = input.required<string>()\n thresholds = input<{ warning: number; critical: number }>({ warning: 70, critical: 90 })\n\n protected readonly percentage = computed(() => {\n const max = this.max()\n\n if (max <= 0) return 0\n return Math.max(0, Math.min(100, (this.value() / max) * 100))\n })\n\n protected readonly severity = computed<'warning' | 'critical' | null>(() => {\n const percentage = this.percentage()\n const { warning, critical } = this.thresholds()\n if (percentage >= critical) return 'critical'\n if (percentage >= warning) return 'warning'\n return null\n })\n\n protected readonly severityLabel = computed(() => {\n const severity = this.severity()\n if (severity === 'critical') return this.criticalLabel()\n if (severity === 'warning') return this.warningLabel()\n return null\n })\n}\n","<div class=\"gbt-gauge-bar\">\n <div class=\"gbt-gauge-bar__header\">\n <span class=\"gbt-gauge-bar__label\">{{ label() }}</span>\n <span class=\"gbt-gauge-bar__value\">\n {{ formattedValue() }}\n @if (severityLabel(); as tierLabel) {\n <span class=\"gbt-gauge-bar__tier\" [attr.data-tier]=\"severity()\">{{ tierLabel }}</span>\n }\n </span>\n </div>\n <div\n class=\"gbt-gauge-bar__track\"\n role=\"progressbar\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"formattedValue()\"\n >\n <div\n class=\"gbt-gauge-bar__fill\"\n [attr.data-tier]=\"severity()\"\n [style.width.%]=\"percentage()\"\n ></div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { formatNumber } from '../../../primitives'\n\nexport interface DimensionRow {\n label: string\n value: number\n\n display?: string\n}\n\ninterface RenderedRow {\n label: string\n formattedValue: string\n\n part: number\n}\n\n@Component({\n selector: 'gbt-dimension-card',\n standalone: true,\n imports: [ChartEmpty],\n templateUrl: './dimension-card.html',\n styleUrl: './dimension-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DimensionCard {\n rows = input.required<DimensionRow[]>()\n caption = input.required<string>()\n labelColumn = input.required<string>()\n valueColumn = input.required<string>()\n emptyMessage = input.required<string>()\n locale = input.required<string>()\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly renderedRows = computed<RenderedRow[]>(() => {\n const rows = this.rows()\n const maxValue = rows.reduce((max, row) => Math.max(max, row.value), 0)\n return rows.map((row) => ({\n label: row.label,\n formattedValue: row.display ?? formatNumber(row.value, this.locale()),\n\n part: maxValue <= 0 ? 0 : (row.value / maxValue) * 100,\n }))\n })\n}\n","@if (rows().length > 0) {\n <table class=\"gbt-dimension-card\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ labelColumn() }}</th>\n <th scope=\"col\">{{ valueColumn() }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of renderedRows(); track $index) {\n <tr\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"activeIndex.set(null)\"\n >\n <th scope=\"row\" class=\"gbt-dimension-card__cell\">\n <span\n class=\"gbt-dimension-card__bar\"\n [style.width.%]=\"row.part\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-dimension-card__label\">{{ row.label }}</span>\n </th>\n <td class=\"gbt-dimension-card__value\">{{ row.formattedValue }}</td>\n </tr>\n }\n </tbody>\n </table>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, formatPercent } from '../../../primitives'\n\nexport interface FunnelStep {\n label: string\n value: number\n}\n\ninterface RenderedStep {\n label: string\n formattedValue: string\n\n part: number\n\n conversionFromPrevious: string\n}\n\n@Component({\n selector: 'gbt-funnel-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty],\n templateUrl: './funnel-chart.html',\n styleUrl: './funnel-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChart {\n steps = input.required<FunnelStep[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n stepColumn = input.required<string>()\n valueColumn = input.required<string>()\n conversionColumn = input.required<string>()\n stepAnnouncement = input.required<(label: string, conversion: string) => string>()\n\n private readonly reference = computed(() => this.steps()[0]?.value ?? 0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected readonly renderedSteps = computed<RenderedStep[]>(() => {\n const reference = this.reference()\n const steps = this.steps()\n return steps.map((step, index) => {\n const previousValue = index === 0 ? step.value : steps[index - 1].value\n return {\n label: step.label,\n formattedValue: formatNumber(step.value, this.locale()),\n\n part: reference <= 0 ? 0 : (step.value / reference) * 100,\n conversionFromPrevious: formatPercent(\n previousValue <= 0 ? 0 : step.value / previousValue,\n this.locale(),\n ),\n }\n })\n })\n\n protected readonly activeStep = computed<RenderedStep | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSteps()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.stepColumn(),\n this.valueColumn(),\n this.conversionColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() => {\n const reference = this.reference()\n return this.steps().map((step) => [\n step.label,\n formatNumber(step.value, this.locale()),\n formatPercent(reference <= 0 ? 0 : step.value / reference, this.locale()),\n ])\n })\n}\n","@if (renderedSteps().length > 0) {\n <ol class=\"gbt-funnel-chart\" [attr.aria-label]=\"label()\">\n @for (step of renderedSteps(); track $index) {\n <li\n class=\"gbt-funnel-chart__step\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n tabindex=\"0\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n >\n <div class=\"gbt-funnel-chart__bar\" [style.width.%]=\"step.part\" aria-hidden=\"true\"></div>\n <span class=\"gbt-funnel-chart__label\">{{ step.label }}</span>\n <span class=\"gbt-funnel-chart__value\">{{ step.formattedValue }}</span>\n @if ($index === activeIndex()) {\n <span class=\"gbt-funnel-chart__tip\" aria-hidden=\"true\">{{\n step.conversionFromPrevious\n }}</span>\n }\n </li>\n }\n </ol>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeStep(); as step) {\n {{ stepAnnouncement()(step.label, step.conversionFromPrevious) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\ninterface PopupPosition {\n top: string\n left: string | null\n right: string | null\n}\n\n@Component({\n selector: 'gbt-menu',\n standalone: true,\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(focusout)': 'onFocusOut($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Menu {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly injector = inject(Injector)\n\n label = input.required<string>()\n align = input<'start' | 'end'>('start')\n triggerIcon = input<string | null>(null)\n opened = output<void>()\n\n protected readonly open = signal(false)\n protected readonly position = signal<PopupPosition | null>(null)\n\n private readonly trigger = viewChild<ElementRef<HTMLButtonElement>>('trigger')\n private readonly list = viewChild<ElementRef<HTMLElement>>('list')\n\n protected toggle(): void {\n this.open.update((value) => !value)\n if (this.open()) {\n this.updatePosition()\n this.focusAfterRender('first')\n this.opened.emit()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) return\n this.open.set(false)\n if (returnFocus) {\n this.trigger()?.nativeElement.focus()\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return\n event.preventDefault()\n const target = event.key === 'ArrowUp' ? 'last' : 'first'\n if (!this.open()) {\n this.open.set(true)\n this.updatePosition()\n this.opened.emit()\n }\n this.focusAfterRender(target)\n }\n\n protected onListKeydown(event: KeyboardEvent): void {\n const items = this.items()\n if (items.length === 0) return\n const index = items.indexOf(document.activeElement as HTMLElement)\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this.close(true)\n break\n case 'ArrowDown':\n event.preventDefault()\n this.focus((index + 1) % items.length)\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focus((index - 1 + items.length) % items.length)\n break\n case 'Home':\n event.preventDefault()\n this.focus(0)\n break\n case 'End':\n event.preventDefault()\n this.focus(items.length - 1)\n break\n }\n }\n\n protected onListClick(): void {\n this.close(false)\n }\n\n protected onDocumentClick(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as Node | null\n if (this.open() && !this.elementRef.nativeElement.contains(target)) {\n this.open.set(false)\n }\n }\n\n protected updatePosition(): void {\n if (!this.open()) return\n const trigger = this.trigger()?.nativeElement\n if (!trigger) return\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n private items(): HTMLElement[] {\n const list = this.list()?.nativeElement\n if (!list) return []\n return [...list.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')]\n }\n\n private focus(index: number): void {\n this.items()[index]?.focus()\n }\n\n private focusAfterRender(target: 'first' | 'last'): void {\n afterNextRender(\n () => {\n const items = this.items()\n this.focus(target === 'last' ? items.length - 1 : 0)\n },\n { injector: this.injector },\n )\n }\n}\n","<div class=\"gbt-menu\">\n <button\n #trigger\n type=\"button\"\n class=\"gbt-menu__trigger\"\n [class.gbt-menu__trigger--open]=\"open()\"\n [class.gbt-menu__trigger--icon-only]=\"triggerIcon()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"triggerIcon() ? label() : null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" aria-hidden=\"true\" />\n } @else {\n <span class=\"gbt-menu__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-menu__chevron\" aria-hidden=\"true\" />\n }\n </button>\n\n @if (open() && position(); as pos) {\n <div\n #list\n class=\"gbt-menu__list\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"label()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n [style.right]=\"pos.right\"\n (keydown)=\"onListKeydown($event)\"\n (click)=\"onListClick()\"\n >\n <ng-content />\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core'\n\nexport type PopoverAlign = 'start' | 'end'\n\ninterface PopoverPosition {\n top: string\n left: string | null\n right: string | null\n}\n\nlet nextPopoverId = 0\n\n@Component({\n selector: 'gbt-popover',\n standalone: true,\n exportAs: 'gbtPopover',\n imports: [],\n templateUrl: './popover.html',\n styleUrl: './popover.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-popover-host',\n '(click)': 'onTriggerClick($event)',\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Popover {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly triggerSlot = viewChild<ElementRef<HTMLElement>>('triggerSlot')\n\n align = input<PopoverAlign>('start')\n\n readonly panelId = `gbt-popover-${++nextPopoverId}`\n\n private readonly isOpen = signal(false)\n readonly open = this.isOpen.asReadonly()\n\n protected readonly position = signal<PopoverPosition | null>(null)\n\n toggle(): void {\n this.isOpen.update((value) => !value)\n if (this.isOpen()) {\n this.updatePosition()\n }\n }\n\n close(returnFocus = false): void {\n if (!this.isOpen()) {\n return\n }\n this.isOpen.set(false)\n if (returnFocus) {\n this.focusTrigger()\n }\n }\n\n protected onTriggerClick(event: MouseEvent): void {\n const trigger = this.triggerSlot()?.nativeElement\n if (trigger?.contains(event.target as Node)) {\n this.toggle()\n }\n }\n\n protected updatePosition(): void {\n if (!this.isOpen()) {\n return\n }\n const trigger = this.triggerSlot()?.nativeElement\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.isOpen() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n private focusTrigger(): void {\n const trigger = this.triggerSlot()?.nativeElement\n trigger?.querySelector<HTMLElement>('button, a[href], input, select, textarea, [tabindex]')?.focus()\n }\n}\n","<span #triggerSlot class=\"gbt-popover__trigger\">\n <ng-content></ng-content>\n</span>\n@if (open() && position(); as pos) {\n <div class=\"gbt-popover__panel\" [id]=\"panelId\" [style.top]=\"pos.top\" [style.left]=\"pos.left\" [style.right]=\"pos.right\">\n <ng-content select=\"[popover-content]\"></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, input } from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\n\nexport type DescriptionListLayout = 'stacked' | 'inline'\n\nexport interface DescriptionListEntry {\n term: string\n value: string | TemplateRef<unknown>\n}\n\n@Component({\n selector: 'gbt-description-list',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './description-list.html',\n styleUrl: './description-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DescriptionList {\n items = input.required<DescriptionListEntry[]>()\n layout = input<DescriptionListLayout>('stacked')\n\n protected isTemplate(value: DescriptionListEntry['value']): value is TemplateRef<unknown> {\n return value instanceof TemplateRef\n }\n}\n","<dl class=\"gbt-description-list\" [attr.data-layout]=\"layout()\">\n @for (item of items(); track $index) {\n <dt class=\"gbt-description-list__term\">{{ item.term }}</dt>\n <dd class=\"gbt-description-list__value\">\n @if (isTemplate(item.value)) {\n <ng-container [ngTemplateOutlet]=\"item.value\"></ng-container>\n } @else {\n {{ item.value }}\n }\n </dd>\n }\n</dl>\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, model, viewChild } from '@angular/core'\n\nexport interface SegmentedControlOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\n@Component({\n selector: 'gbt-segmented-control',\n standalone: true,\n imports: [],\n templateUrl: './segmented-control.html',\n styleUrl: './segmented-control.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedControl<T = string> {\n private readonly group = viewChild<ElementRef<HTMLElement>>('group')\n\n options = input.required<SegmentedControlOption<T>[]>()\n value = model.required<T>()\n ariaLabel = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected isSelected(value: T): boolean {\n return this.value() === value\n }\n\n protected select(option: SegmentedControlOption<T>): void {\n if (this.disabled() || option.disabled) {\n return\n }\n this.value.set(option.value)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const options = this.options()\n const count = options.length\n if (count === 0) {\n return\n }\n let next: number | null = null\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n next = this.nextEnabledIndex(index, 1)\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n next = this.nextEnabledIndex(index, -1)\n break\n case 'Home':\n next = this.nextEnabledIndex(-1, 1)\n break\n case 'End':\n next = this.nextEnabledIndex(count, -1)\n break\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(options[next])\n this.focusButton(next)\n }\n\n private nextEnabledIndex(from: number, direction: 1 | -1): number | null {\n const options = this.options()\n const count = options.length\n for (let step = 1; step <= count; step++) {\n const candidate = (from + direction * step + count) % count\n if (!options[candidate].disabled) {\n return candidate\n }\n }\n return null\n }\n\n private focusButton(index: number): void {\n this.group()?.nativeElement.querySelectorAll<HTMLElement>('[role=\"radio\"]')[index]?.focus()\n }\n}\n","<div #group class=\"gbt-segmented-control\" role=\"radiogroup\" [attr.aria-label]=\"ariaLabel() || null\">\n @for (option of options(); track option.value; let i = $index) {\n <button\n type=\"button\"\n role=\"radio\"\n class=\"gbt-segmented-control__option\"\n [class.gbt-segmented-control__option--selected]=\"isSelected(option.value)\"\n [attr.aria-checked]=\"isSelected(option.value)\"\n [tabIndex]=\"isSelected(option.value) ? 0 : -1\"\n [disabled]=\"disabled() || !!option.disabled\"\n (click)=\"select(option)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ option.label }}\n </button>\n }\n</div>\n","export type WeekStartsOn = 0 | 1\n\nexport interface CalendarDay {\n date: Date\n inCurrentMonth: boolean\n isToday: boolean\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n )\n}\n\n/** Adds `delta` whole months, clamping an overflowing day to the target month's last day. */\nexport function addMonths(date: Date, delta: number): Date {\n const day = date.getDate()\n const firstOfTarget = new Date(date.getFullYear(), date.getMonth() + delta, 1)\n const daysInTarget = new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth() + 1, 0).getDate()\n return new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth(), Math.min(day, daysInTarget))\n}\n\n/** Adds `delta` whole years, clamping Feb 29 to Feb 28 on a non-leap target year. */\nexport function addYears(date: Date, delta: number): Date {\n return addMonths(date, delta * 12)\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: WeekStartsOn): Date {\n const weekday = date.getDay()\n const diff = (weekday - weekStartsOn + 7) % 7\n const result = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n result.setDate(result.getDate() - diff)\n return result\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: WeekStartsOn): Date {\n const start = startOfWeek(date, weekStartsOn)\n start.setDate(start.getDate() + 6)\n return start\n}\n\n/** Always 42 days (6 full weeks), starting on the week containing the 1st of `month`. */\nexport function buildCalendarGrid(year: number, month: number, weekStartsOn: WeekStartsOn): CalendarDay[] {\n const firstOfMonth = new Date(year, month, 1)\n const gridStart = startOfWeek(firstOfMonth, weekStartsOn)\n const today = new Date()\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i)\n days.push({\n date,\n inCurrentMonth: date.getMonth() === month,\n isToday: isSameDay(date, today),\n })\n }\n return days\n}\n\nexport function weekdayLabels(locale: string, weekStartsOn: WeekStartsOn): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: 'short' })\n // Any Sunday-anchored reference week: Jan 7 2024 is a Sunday.\n const reference = new Date(2024, 0, 7 + weekStartsOn)\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(reference.getFullYear(), reference.getMonth(), reference.getDate() + i)\n return formatter.format(date)\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport {\n CalendarDay,\n WeekStartsOn,\n addMonths,\n addYears,\n buildCalendarGrid,\n endOfWeek,\n isSameDay,\n startOfWeek,\n weekdayLabels,\n} from './date-picker-calendar'\n\nexport type DatePickerVisibleMonths = 1 | 2\n\nexport interface DatePickerMonthView {\n year: number\n month: number\n label: string\n weeks: CalendarDay[][]\n}\n\nlet nextDatePickerId = 0\n\nconst CURRENT_YEAR = new Date().getFullYear()\n\n@Component({\n selector: 'gbt-date-picker',\n standalone: true,\n imports: [Icon],\n templateUrl: './date-picker.html',\n styleUrl: './date-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onEscape($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePicker),\n multi: true,\n },\n ],\n})\nexport class DatePicker implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n id = input<string>(`gbt-date-picker-${++nextDatePickerId}`)\n label = input<string>('')\n placeholder = input<string>('Select a date…')\n locale = input<string>('en-US')\n weekStartsOn = input<WeekStartsOn>(1)\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n previousMonthLabel = input<string>('Previous month')\n nextMonthLabel = input<string>('Next month')\n clearable = input(false, { transform: booleanAttribute })\n clearLabel = input<string>('Clear date')\n visibleMonths = input<DatePickerVisibleMonths>(1)\n monthSelectLabel = input<string>('Month')\n yearSelectLabel = input<string>('Year')\n minYear = input<number>(CURRENT_YEAR - 100)\n maxYear = input<number>(CURRENT_YEAR + 10)\n\n protected readonly open = signal(false)\n protected readonly selected = signal<Date | null>(null)\n protected readonly focusedDate = signal<Date>(new Date())\n protected readonly anchorDate = signal<Date>(new Date())\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n private onChange: (value: Date | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n protected readonly showClear = computed(\n () => this.clearable() && this.selected() !== null && !this.isDisabled(),\n )\n\n protected readonly monthViews = computed<DatePickerMonthView[]>(() => {\n const anchor = this.anchorDate()\n const count = this.visibleMonths()\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' })\n const views = Array.from({ length: count }, (_, i) => {\n const monthDate = new Date(anchor.getFullYear(), anchor.getMonth() + i, 1)\n const year = monthDate.getFullYear()\n const month = monthDate.getMonth()\n const days = buildCalendarGrid(year, month, this.weekStartsOn())\n const weeks: CalendarDay[][] = []\n for (let d = 0; d < days.length; d += 7) {\n weeks.push(days.slice(d, d + 7))\n }\n return { year, month, label: formatter.format(monthDate), weeks }\n })\n // Trim wholly-blank trailing weeks (pure next-month filler) — but by the\n // same amount across every visible month, so side-by-side calendars\n // (`visibleMonths=\"2\"`) stay the same height even when only one of them\n // actually needs the extra week.\n const neededWeeks = views.map((view) => {\n let last = view.weeks.length\n while (last > 1 && view.weeks[last - 1].every((day) => !day.inCurrentMonth)) {\n last--\n }\n return last\n })\n const sharedWeeks = Math.max(...neededWeeks)\n return views.map((view) => ({ ...view, weeks: view.weeks.slice(0, sharedWeeks) }))\n })\n\n protected readonly panelLabel = computed(() => {\n const views = this.monthViews()\n return views.length === 1 ? views[0].label : `${views[0].label} – ${views[views.length - 1].label}`\n })\n\n protected readonly weekdayLabels = computed(() => weekdayLabels(this.locale(), this.weekStartsOn()))\n\n protected readonly monthOptions = computed(() => {\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long' })\n return Array.from({ length: 12 }, (_, i) => ({ value: i, label: formatter.format(new Date(2024, i, 1)) }))\n })\n\n protected readonly yearOptions = computed(() => {\n const min = this.minYear()\n const max = this.maxYear()\n return Array.from({ length: max - min + 1 }, (_, i) => min + i)\n })\n\n protected readonly triggerLabel = computed(() => {\n const value = this.selected()\n return value ? new Intl.DateTimeFormat(this.locale(), { dateStyle: 'medium' }).format(value) : ''\n })\n\n writeValue(value: Date | null): void {\n this.selected.set(value)\n if (value) {\n this.focusedDate.set(value)\n this.anchorDate.set(new Date(value.getFullYear(), value.getMonth(), 1))\n }\n }\n\n registerOnChange(fn: (value: Date | null) => 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 protected isSelected(date: Date): boolean {\n const value = this.selected()\n return value !== null && isSameDay(value, date)\n }\n\n protected isFocused(date: Date): boolean {\n return isSameDay(this.focusedDate(), date)\n }\n\n protected cellId(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(\n date.getDate(),\n ).padStart(2, '0')}`\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n const target = this.selected() ?? new Date()\n this.focusedDate.set(target)\n this.anchorDate.set(new Date(target.getFullYear(), target.getMonth(), 1))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n } else {\n this.onTouched()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) {\n return\n }\n this.open.set(false)\n this.onTouched()\n if (returnFocus) {\n this.trigger()?.focus()\n }\n }\n\n protected clear(event: Event): void {\n event.stopPropagation()\n if (this.isDisabled()) {\n return\n }\n this.selected.set(null)\n this.onChange(null)\n this.onTouched()\n this.close(false)\n }\n\n protected selectDay(day: CalendarDay): void {\n if (this.isDisabled()) {\n return\n }\n this.selected.set(day.date)\n this.focusedDate.set(day.date)\n this.ensureVisible(day.date)\n this.onChange(day.date)\n this.close(true)\n }\n\n protected shiftMonth(delta: number): void {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(this.focusedDate(), delta))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onMonthSelect(value: string): void {\n this.setAnchorMonth(this.anchorDate().getFullYear(), Number(value))\n }\n\n protected onYearSelect(value: string): void {\n this.setAnchorMonth(Number(value), this.anchorDate().getMonth())\n }\n\n private setAnchorMonth(year: number, month: number): void {\n const dayOfMonth = this.focusedDate().getDate()\n const daysInTarget = new Date(year, month + 1, 0).getDate()\n this.anchorDate.set(new Date(year, month, 1))\n this.focusedDate.set(new Date(year, month, Math.min(dayOfMonth, daysInTarget)))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const current = this.focusedDate()\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.selectDay({ date: current, inCurrentMonth: true, isToday: isSameDay(current, new Date()) })\n return\n }\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n event.preventDefault()\n const delta = event.key === 'PageDown' ? 1 : -1\n if (event.shiftKey) {\n this.anchorDate.set(addYears(this.anchorDate(), delta))\n this.focusedDate.set(addYears(current, delta))\n } else {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(current, delta))\n }\n this.updatePanelPosition()\n this.focusCellAfterRender()\n return\n }\n const next = this.nextFocusedDate(current, event)\n if (next === null) {\n return\n }\n event.preventDefault()\n this.ensureVisible(next)\n this.focusedDate.set(next)\n this.focusCellAfterRender()\n }\n\n private nextFocusedDate(current: Date, event: KeyboardEvent): Date | null {\n switch (event.key) {\n case 'ArrowRight':\n return shiftDays(current, 1)\n case 'ArrowLeft':\n return shiftDays(current, -1)\n case 'ArrowDown':\n return shiftDays(current, 7)\n case 'ArrowUp':\n return shiftDays(current, -7)\n case 'Home':\n return startOfWeek(current, this.weekStartsOn())\n case 'End':\n return endOfWeek(current, this.weekStartsOn())\n default:\n return null\n }\n }\n\n /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */\n private ensureVisible(date: Date): void {\n const anchor = this.anchorDate()\n const visibleMonths = this.visibleMonths()\n const monthsDiff =\n (date.getFullYear() - anchor.getFullYear()) * 12 + (date.getMonth() - anchor.getMonth())\n if (monthsDiff < 0) {\n this.anchorDate.set(new Date(date.getFullYear(), date.getMonth(), 1))\n } else if (monthsDiff >= visibleMonths) {\n this.anchorDate.set(addMonths(anchor, monthsDiff - visibleMonths + 1))\n }\n }\n\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.trigger()\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({ top: `${rect.bottom + 6}px`, left: `${rect.left}px` })\n }\n\n private trigger(): HTMLButtonElement | null {\n return this.elementRef.nativeElement.querySelector('.gbt-date-picker__trigger')\n }\n\n private focusCellAfterRender(): void {\n afterNextRender(\n () => {\n const id = this.cellId(this.focusedDate())\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-date=\"${id}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction shiftDays(date: Date, delta: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + delta)\n}\n","<div class=\"gbt-date-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-picker__label\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-date-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-picker__trigger\"\n [class.gbt-date-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-picker__trigger-label\"\n [class.gbt-date-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">{{ year }}</option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-picker__month\">\n <div\n class=\"gbt-date-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-picker__row gbt-date-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-picker__day\"\n [class.gbt-date-picker__day--today]=\"day.isToday\"\n [class.gbt-date-picker__day--selected]=\"isSelected(day.date)\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-selected]=\"isSelected(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span role=\"gridcell\" class=\"gbt-date-picker__day gbt-date-picker__day--empty\"></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport {\n CalendarDay,\n WeekStartsOn,\n addMonths,\n addYears,\n buildCalendarGrid,\n endOfWeek,\n isSameDay,\n startOfWeek,\n weekdayLabels,\n} from '../date-picker/date-picker-calendar'\n\nexport type DateRangeVisibleMonths = 1 | 2\n\nexport interface DateRangeValue {\n start: Date\n end: Date | null\n}\n\nexport interface DateRangePickerMonthView {\n year: number\n month: number\n label: string\n weeks: CalendarDay[][]\n}\n\nlet nextId = 0\n\nconst CURRENT_YEAR = new Date().getFullYear()\n\n@Component({\n selector: 'gbt-date-range-picker',\n standalone: true,\n imports: [Icon],\n templateUrl: './date-range-picker.html',\n styleUrl: './date-range-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onEscape($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePicker),\n multi: true,\n },\n ],\n})\nexport class DateRangePicker implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n id = input<string>(`gbt-date-range-picker-${++nextId}`)\n label = input<string>('')\n placeholder = input<string>('Select a date range…')\n locale = input<string>('en-US')\n weekStartsOn = input<WeekStartsOn>(1)\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n previousMonthLabel = input<string>('Previous month')\n nextMonthLabel = input<string>('Next month')\n clearable = input(false, { transform: booleanAttribute })\n clearLabel = input<string>('Clear date range')\n visibleMonths = input<DateRangeVisibleMonths>(2)\n monthSelectLabel = input<string>('Month')\n yearSelectLabel = input<string>('Year')\n minYear = input<number>(CURRENT_YEAR - 100)\n maxYear = input<number>(CURRENT_YEAR + 10)\n rangeStatus = input<(start: string | null, end: string | null) => string>((start, end) => {\n if (!start) return ''\n if (!end) return `${start} selected as the start date. Choose an end date.`\n return `Date range: ${start} to ${end}.`\n })\n\n protected readonly open = signal(false)\n protected readonly value = signal<DateRangeValue | null>(null)\n protected readonly draftStart = signal<Date | null>(null)\n protected readonly draftEnd = signal<Date | null>(null)\n protected readonly hoveredDate = signal<Date | null>(null)\n protected readonly focusedDate = signal<Date>(new Date())\n protected readonly anchorDate = signal<Date>(new Date())\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n private onChange: (value: DateRangeValue | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n protected readonly showClear = computed(\n () => this.clearable() && this.value() !== null && !this.isDisabled(),\n )\n\n protected readonly monthViews = computed<DateRangePickerMonthView[]>(() => {\n const anchor = this.anchorDate()\n const count = this.visibleMonths()\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' })\n const views = Array.from({ length: count }, (_, i) => {\n const monthDate = new Date(anchor.getFullYear(), anchor.getMonth() + i, 1)\n const year = monthDate.getFullYear()\n const month = monthDate.getMonth()\n const days = buildCalendarGrid(year, month, this.weekStartsOn())\n const weeks: CalendarDay[][] = []\n for (let d = 0; d < days.length; d += 7) {\n weeks.push(days.slice(d, d + 7))\n }\n return { year, month, label: formatter.format(monthDate), weeks }\n })\n const neededWeeks = views.map((view) => {\n let last = view.weeks.length\n while (last > 1 && view.weeks[last - 1].every((day) => !day.inCurrentMonth)) {\n last--\n }\n return last\n })\n const sharedWeeks = Math.max(...neededWeeks)\n return views.map((view) => ({ ...view, weeks: view.weeks.slice(0, sharedWeeks) }))\n })\n\n protected readonly panelLabel = computed(() => {\n const views = this.monthViews()\n return views.length === 1 ? views[0].label : `${views[0].label} – ${views[views.length - 1].label}`\n })\n\n protected readonly weekdayLabels = computed(() => weekdayLabels(this.locale(), this.weekStartsOn()))\n\n protected readonly monthOptions = computed(() => {\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long' })\n return Array.from({ length: 12 }, (_, i) => ({ value: i, label: formatter.format(new Date(2024, i, 1)) }))\n })\n\n protected readonly yearOptions = computed(() => {\n const min = this.minYear()\n const max = this.maxYear()\n return Array.from({ length: max - min + 1 }, (_, i) => min + i)\n })\n\n private readonly dateFormatter = computed(\n () => new Intl.DateTimeFormat(this.locale(), { dateStyle: 'medium' }),\n )\n\n protected readonly triggerLabel = computed(() => {\n const v = this.value()\n if (!v) return ''\n const formatter = this.dateFormatter()\n if (!v.end) return formatter.format(v.start)\n return `${formatter.format(v.start)} – ${formatter.format(v.end)}`\n })\n\n /** The visual [lower, upper] bounds to paint — the confirmed range once `draftEnd` is set, else a live preview against `hoveredDate`. */\n private readonly previewBounds = computed<{ lower: Date; upper: Date } | null>(() => {\n const start = this.draftStart()\n if (!start) return null\n const other = this.draftEnd() ?? this.hoveredDate()\n if (!other) return null\n return start.getTime() <= other.getTime() ? { lower: start, upper: other } : { lower: other, upper: start }\n })\n\n protected readonly isPreviewing = computed(() => this.draftStart() !== null && this.draftEnd() === null)\n\n protected readonly statusMessage = computed(() => {\n const start = this.draftStart()\n if (!start) return ''\n const formatter = this.dateFormatter()\n const end = this.draftEnd()\n return this.rangeStatus()(formatter.format(start), end ? formatter.format(end) : null)\n })\n\n writeValue(value: DateRangeValue | null): void {\n this.value.set(value)\n if (value) {\n this.focusedDate.set(value.start)\n this.anchorDate.set(new Date(value.start.getFullYear(), value.start.getMonth(), 1))\n }\n }\n\n registerOnChange(fn: (value: DateRangeValue | null) => 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 protected isRangeStartCap(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && isSameDay(date, bounds.lower)\n }\n\n protected isRangeEndCap(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && isSameDay(date, bounds.upper)\n }\n\n protected isInRange(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && date.getTime() > bounds.lower.getTime() && date.getTime() < bounds.upper.getTime()\n }\n\n protected isFocused(date: Date): boolean {\n return isSameDay(this.focusedDate(), date)\n }\n\n protected cellId(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(\n date.getDate(),\n ).padStart(2, '0')}`\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((v) => !v)\n if (this.open()) {\n const value = this.value()\n const target = value?.start ?? new Date()\n this.draftStart.set(value?.start ?? null)\n this.draftEnd.set(value?.end ?? null)\n this.hoveredDate.set(null)\n this.focusedDate.set(target)\n this.anchorDate.set(new Date(target.getFullYear(), target.getMonth(), 1))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n } else {\n this.onTouched()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) {\n return\n }\n this.open.set(false)\n this.onTouched()\n if (returnFocus) {\n this.trigger()?.focus()\n }\n }\n\n protected clear(event: Event): void {\n event.stopPropagation()\n if (this.isDisabled()) {\n return\n }\n this.value.set(null)\n this.draftStart.set(null)\n this.draftEnd.set(null)\n this.onChange(null)\n this.onTouched()\n this.close(false)\n }\n\n protected selectDay(date: Date): void {\n if (this.isDisabled()) {\n return\n }\n const start = this.draftStart()\n const complete = start !== null && this.draftEnd() !== null\n if (!start || complete) {\n this.draftStart.set(date)\n this.draftEnd.set(null)\n this.focusedDate.set(date)\n this.ensureVisible(date)\n this.focusCellAfterRender()\n return\n }\n const [rangeStart, rangeEnd] = start.getTime() <= date.getTime() ? [start, date] : [date, start]\n this.draftStart.set(rangeStart)\n this.draftEnd.set(rangeEnd)\n this.focusedDate.set(date)\n this.ensureVisible(date)\n const next: DateRangeValue = { start: rangeStart, end: rangeEnd }\n this.value.set(next)\n this.onChange(next)\n this.onTouched()\n this.close(true)\n }\n\n protected onDayMouseEnter(date: Date): void {\n this.hoveredDate.set(date)\n }\n\n protected onDayMouseLeave(): void {\n this.hoveredDate.set(null)\n }\n\n protected shiftMonth(delta: number): void {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(this.focusedDate(), delta))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onMonthSelect(value: string): void {\n this.setAnchorMonth(this.anchorDate().getFullYear(), Number(value))\n }\n\n protected onYearSelect(value: string): void {\n this.setAnchorMonth(Number(value), this.anchorDate().getMonth())\n }\n\n private setAnchorMonth(year: number, month: number): void {\n const dayOfMonth = this.focusedDate().getDate()\n const daysInTarget = new Date(year, month + 1, 0).getDate()\n this.anchorDate.set(new Date(year, month, 1))\n this.focusedDate.set(new Date(year, month, Math.min(dayOfMonth, daysInTarget)))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const current = this.focusedDate()\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.selectDay(current)\n return\n }\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n event.preventDefault()\n const delta = event.key === 'PageDown' ? 1 : -1\n if (event.shiftKey) {\n this.anchorDate.set(addYears(this.anchorDate(), delta))\n this.focusedDate.set(addYears(current, delta))\n } else {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(current, delta))\n }\n this.updatePanelPosition()\n this.focusCellAfterRender()\n return\n }\n const next = this.nextFocusedDate(current, event)\n if (next === null) {\n return\n }\n event.preventDefault()\n this.ensureVisible(next)\n this.focusedDate.set(next)\n this.focusCellAfterRender()\n }\n\n private nextFocusedDate(current: Date, event: KeyboardEvent): Date | null {\n switch (event.key) {\n case 'ArrowRight':\n return shiftDays(current, 1)\n case 'ArrowLeft':\n return shiftDays(current, -1)\n case 'ArrowDown':\n return shiftDays(current, 7)\n case 'ArrowUp':\n return shiftDays(current, -7)\n case 'Home':\n return startOfWeek(current, this.weekStartsOn())\n case 'End':\n return endOfWeek(current, this.weekStartsOn())\n default:\n return null\n }\n }\n\n /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */\n private ensureVisible(date: Date): void {\n const anchor = this.anchorDate()\n const visibleMonths = this.visibleMonths()\n const monthsDiff =\n (date.getFullYear() - anchor.getFullYear()) * 12 + (date.getMonth() - anchor.getMonth())\n if (monthsDiff < 0) {\n this.anchorDate.set(new Date(date.getFullYear(), date.getMonth(), 1))\n } else if (monthsDiff >= visibleMonths) {\n this.anchorDate.set(addMonths(anchor, monthsDiff - visibleMonths + 1))\n }\n }\n\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.trigger()\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({ top: `${rect.bottom + 6}px`, left: `${rect.left}px` })\n }\n\n private trigger(): HTMLButtonElement | null {\n return this.elementRef.nativeElement.querySelector('.gbt-date-range-picker__trigger')\n }\n\n private focusCellAfterRender(): void {\n afterNextRender(\n () => {\n const id = this.cellId(this.focusedDate())\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-date=\"${id}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction shiftDays(date: Date, delta: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + delta)\n}\n","<div class=\"gbt-date-range-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-range-picker__label\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-date-range-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-range-picker__trigger\"\n [class.gbt-date-range-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-range-picker__trigger-label\"\n [class.gbt-date-range-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-range-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-range-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-range-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-range-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-range-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">{{ year }}</option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-range-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-range-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-range-picker__month\">\n <div\n class=\"gbt-date-range-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-range-picker__row gbt-date-range-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-range-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-range-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day\"\n [class.gbt-date-range-picker__day--today]=\"day.isToday\"\n [class.gbt-date-range-picker__day--start-cap]=\"isRangeStartCap(day.date)\"\n [class.gbt-date-range-picker__day--end-cap]=\"isRangeEndCap(day.date)\"\n [class.gbt-date-range-picker__day--in-range]=\"isInRange(day.date)\"\n [class.gbt-date-range-picker__day--preview]=\"isPreviewing()\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\"\n (mouseleave)=\"onDayMouseLeave()\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span role=\"gridcell\" class=\"gbt-date-range-picker__day gbt-date-range-picker__day--empty\"></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{ statusMessage() }}</div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-range-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Accordion } from '../accordion/accordion'\n\n@Component({\n selector: 'gbt-accordion-item',\n standalone: true,\n imports: [Icon],\n templateUrl: './accordion-item.html',\n styleUrl: './accordion-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItem {\n private readonly parent = inject(Accordion)\n private readonly header = viewChild<ElementRef<HTMLButtonElement>>('header')\n\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n protected readonly headerId = computed(() => `${this.groupId()}-header-${this.index()}`)\n protected readonly panelId = computed(() => `${this.groupId()}-panel-${this.index()}`)\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n\n focusHeader(): void {\n this.header()?.nativeElement.focus()\n }\n\n protected toggle(): void {\n this.parent.toggle(this.index())\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n this.parent.focusHeader(this.index() + 1)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n this.parent.focusHeader(this.index() - 1)\n }\n }\n}\n","<button\n #header\n type=\"button\"\n class=\"gbt-accordion-item__header\"\n [class.gbt-accordion-item__header--open]=\"active()\"\n [id]=\"headerId()\"\n [attr.aria-expanded]=\"active()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"gbt-accordion-item__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-accordion-item__chevron\" aria-hidden=\"true\" />\n</button>\n<div\n class=\"gbt-accordion-item__panel\"\n [class.gbt-accordion-item__panel--open]=\"active()\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.inert]=\"active() ? null : ''\"\n>\n <div class=\"gbt-accordion-item__panel-inner\">\n <div class=\"gbt-accordion-item__panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren, effect, input, model } from '@angular/core'\nimport { AccordionItem } from '../accordion-item/accordion-item'\n\nexport type AccordionMode = 'single' | 'multiple'\n\nlet nextAccordionId = 0\n\n@Component({\n selector: 'gbt-accordion',\n standalone: true,\n imports: [],\n template: `\n <div class=\"gbt-accordion\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './accordion.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n id = input<string>(`gbt-accordion-${++nextAccordionId}`)\n mode = input<AccordionMode>('single')\n expanded = model<number[]>([])\n\n protected readonly items = contentChildren(AccordionItem)\n\n constructor() {\n effect(() => {\n const items = this.items()\n const expanded = this.expanded()\n const groupId = this.id()\n items.forEach((item, i) => item.setState(i, expanded.includes(i), groupId))\n })\n }\n\n toggle(index: number): void {\n const current = this.expanded()\n if (this.mode() === 'single') {\n this.expanded.set(current.includes(index) ? [] : [index])\n return\n }\n this.expanded.set(\n current.includes(index) ? current.filter((i) => i !== index) : [...current, index],\n )\n }\n\n focusHeader(index: number): void {\n const items = this.items()\n const count = items.length\n if (count === 0) {\n return\n }\n const wrapped = ((index % count) + count) % count\n items[wrapped]?.focusHeader()\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n effect,\n input,\n output,\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Select, SelectOption } from '../select/select'\n\nexport const ELLIPSIS = '…' as const\nexport type PaginationItem = number | typeof ELLIPSIS\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n\nexport function paginationRange(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalPageNumbers = siblingCount + 5\n\n if (totalPageNumbers >= pageCount) {\n return range(1, pageCount)\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1)\n const rightSiblingIndex = Math.min(page + siblingCount, pageCount)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n // -2, not -1: a lone skipped page right before the last one isn't worth an\n // ellipsis — showing that page costs no more room than the \"…\" would.\n const shouldShowRightDots = rightSiblingIndex < pageCount - 2\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + siblingCount * 2\n return [...range(1, leftItemCount), ELLIPSIS, pageCount]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + siblingCount * 2\n return [1, ELLIPSIS, ...range(pageCount - rightItemCount + 1, pageCount)]\n }\n\n return [1, ELLIPSIS, ...range(leftSiblingIndex, rightSiblingIndex), ELLIPSIS, pageCount]\n}\n\n@Component({\n selector: 'gbt-pagination',\n standalone: true,\n imports: [Icon, Select, ReactiveFormsModule],\n templateUrl: './pagination.html',\n styleUrl: './pagination.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Pagination {\n page = input<number>(1)\n pageSize = input<number>(10)\n totalItems = input.required<number>()\n siblingCount = input<number>(1)\n disabled = input(false, { transform: booleanAttribute })\n ariaLabel = input<string>('Pagination')\n previousLabel = input<string>('Previous page')\n nextLabel = input<string>('Next page')\n pageLabel = input<(page: number) => string>((page) => `Page ${page}`)\n\n pageSizeOptions = input<number[]>([])\n pageSizeLabel = input<(size: number) => string>((size) => `${size} / page`)\n pageSizeSelectLabel = input<string>('Rows per page')\n showItemsSummary = input(false, { transform: booleanAttribute })\n itemsSummaryLabel = input<(shown: number, total: number) => string>(\n (shown, total) => `${shown} of ${total} items`,\n )\n\n pageChange = output<number>()\n pageSizeChange = output<number>()\n\n protected readonly ELLIPSIS = ELLIPSIS\n\n protected readonly pageCount = computed(() =>\n Math.max(1, Math.ceil(this.totalItems() / this.pageSize())),\n )\n\n protected readonly items = computed(() =>\n paginationRange(this.page(), this.pageCount(), this.siblingCount()),\n )\n\n protected readonly itemsShown = computed(() => {\n const start = (this.page() - 1) * this.pageSize()\n return Math.max(0, Math.min(this.pageSize(), this.totalItems() - start))\n })\n\n protected readonly itemsSummary = computed(() =>\n this.itemsSummaryLabel()(this.itemsShown(), this.totalItems()),\n )\n\n protected readonly pageSizeSelectOptions = computed<SelectOption<number>[]>(() =>\n this.pageSizeOptions().map((size) => ({ value: size, label: this.pageSizeLabel()(size) })),\n )\n\n protected readonly pageSizeControl = new FormControl<number>(this.pageSize(), {\n nonNullable: true,\n })\n\n constructor() {\n effect(() => {\n const size = this.pageSize()\n if (this.pageSizeControl.value !== size) {\n this.pageSizeControl.setValue(size, { emitEvent: false })\n }\n })\n\n this.pageSizeControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((size) => {\n this.pageSizeChange.emit(size)\n this.pageChange.emit(1)\n })\n\n // Self-heals a stale `page` — e.g. a filter shrinks `totalItems` while\n // the app was sitting on a now out-of-range page — instead of leaving\n // the pager stuck with no page marked current and a live \"previous\"\n // button pointing at a page that no longer exists.\n effect(() => {\n const count = this.pageCount()\n const current = this.page()\n const clamped = Math.min(Math.max(current, 1), count)\n if (clamped !== current) {\n this.pageChange.emit(clamped)\n }\n })\n }\n\n protected goTo(page: number): void {\n if (this.disabled()) return\n const clamped = Math.min(Math.max(page, 1), this.pageCount())\n if (clamped === this.page()) return\n this.pageChange.emit(clamped)\n }\n}\n","<div class=\"gbt-pagination\">\n <div class=\"gbt-pagination__side gbt-pagination__side--start\">\n @if (showItemsSummary()) {\n <span class=\"gbt-pagination__summary\">{{ itemsSummary() }}</span>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"gbt-pagination__list\">\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n </li>\n @for (item of items(); track $index) {\n @if (item === ELLIPSIS) {\n <li class=\"gbt-pagination__ellipsis\" aria-hidden=\"true\">{{ ELLIPSIS }}</li>\n } @else {\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__page\"\n [class.gbt-pagination__page--current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel()(item)\"\n [disabled]=\"disabled()\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n }\n }\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() >= pageCount()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </li>\n </ul>\n </nav>\n\n <div class=\"gbt-pagination__side gbt-pagination__side--end\">\n @if (pageSizeOptions().length > 0) {\n <gbt-select\n class=\"gbt-pagination__page-size\"\n size=\"sm\"\n [label]=\"pageSizeSelectLabel()\"\n [options]=\"pageSizeSelectOptions()\"\n [disabled]=\"disabled()\"\n [formControl]=\"pageSizeControl\"\n />\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Breadcrumb {\n ariaLabel = input.required<string>()\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"gbt-breadcrumb\">\n <ol class=\"gbt-breadcrumb__list\">\n <ng-content select=\"[breadcrumb-ancestor]\" />\n <li class=\"gbt-breadcrumb__current\" aria-current=\"page\"><ng-content /></li>\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { FormsModule } from '@angular/forms'\nimport { Button } from '../../atoms/button/button'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Modal } from '../modal/modal'\n\n@Component({\n selector: 'gbt-confirm-danger-modal',\n standalone: true,\n imports: [FormsModule, Modal, GbtInput, Button],\n templateUrl: './confirm-danger-modal.html',\n styleUrl: './confirm-danger-modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmDangerModal {\n isOpen = input.required<boolean>()\n heading = input.required<string>()\n message = input.required<string>()\n confirmText = input.required<string>()\n confirmInputLabel = input<string>('Type to confirm')\n confirmLabel = input<string>('Confirm')\n cancelLabel = input<string>('Cancel')\n closeLabel = input<string>('Close')\n\n confirmed = output<void>()\n closed = output<void>()\n\n protected readonly typed = signal('')\n protected readonly canConfirm = computed(\n () => this.typed().length > 0 && this.typed() === this.confirmText(),\n )\n\n constructor() {\n // Cleared whenever the modal transitions to closed (Cancel, Escape,\n // backdrop, or the consumer setting isOpen false after a successful\n // confirm) — a later reopen must never show the previous attempt's text.\n effect(() => {\n if (!this.isOpen()) {\n this.typed.set('')\n }\n })\n }\n\n protected confirm(): void {\n if (this.canConfirm()) {\n this.confirmed.emit()\n }\n }\n\n protected cancel(): void {\n this.closed.emit()\n }\n}\n","<gbt-modal\n [isOpen]=\"isOpen()\"\n [heading]=\"heading()\"\n [closeLabel]=\"closeLabel()\"\n (closed)=\"cancel()\"\n>\n <p class=\"gbt-confirm-danger-modal__message\">{{ message() }}</p>\n <gbt-input\n [label]=\"confirmInputLabel()\"\n [ngModel]=\"typed()\"\n (ngModelChange)=\"typed.set($event)\"\n />\n <div class=\"gbt-confirm-danger-modal__actions\">\n <gbt-button variant=\"secondary\" [text]=\"cancelLabel()\" (clicked)=\"cancel()\" />\n <gbt-button\n variant=\"danger\"\n [text]=\"confirmLabel()\"\n [disabled]=\"!canConfirm()\"\n (clicked)=\"confirm()\"\n />\n </div>\n</gbt-modal>\n","import { ChangeDetectionStrategy, Component, OnDestroy, effect, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nconst DEFAULT_DURATION_MS = 5000\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info'\n\nexport type ToasterPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n\nexport interface ToastItem {\n id: string\n variant: ToastVariant\n message: string\n duration?: number\n}\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<ToastVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<ToastVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-toaster',\n standalone: true,\n imports: [Icon],\n templateUrl: './toaster.html',\n styleUrl: './toaster.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toaster implements OnDestroy {\n toasts = input.required<ToastItem[]>()\n position = input<ToasterPosition>('bottom-right')\n closeLabel = input<string>('Close')\n\n dismissed = output<string>()\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n constructor() {\n effect(() => {\n const currentIds = new Set(this.toasts().map((toast) => toast.id))\n\n for (const [id, timer] of this.timers) {\n if (!currentIds.has(id)) {\n clearTimeout(timer)\n this.timers.delete(id)\n }\n }\n\n for (const toast of this.toasts()) {\n if (this.timers.has(toast.id)) {\n continue\n }\n const duration = toast.duration ?? DEFAULT_DURATION_MS\n if (!Number.isFinite(duration) || duration <= 0) {\n continue\n }\n this.timers.set(\n toast.id,\n setTimeout(() => {\n this.timers.delete(toast.id)\n this.dismissed.emit(toast.id)\n }, duration),\n )\n }\n })\n }\n\n ngOnDestroy(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer)\n }\n this.timers.clear()\n }\n\n protected roleFor(variant: ToastVariant): 'alert' | 'status' {\n return ASSERTIVE_VARIANTS.has(variant) ? 'alert' : 'status'\n }\n\n protected iconFor(variant: ToastVariant): string {\n return VARIANT_ICONS[variant]\n }\n}\n","<div class=\"gbt-toaster\" [attr.data-position]=\"position()\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"gbt-toaster__item\"\n [attr.data-variant]=\"toast.variant\"\n [attr.role]=\"roleFor(toast.variant)\"\n aria-atomic=\"true\"\n >\n <span class=\"gbt-toaster__icon\">\n <gbt-icon [name]=\"iconFor(toast.variant)\" aria-hidden=\"true\" />\n </span>\n <p class=\"gbt-toaster__message\">{{ toast.message }}</p>\n <button\n type=\"button\"\n class=\"gbt-toaster__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit(toast.id)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n inject,\n input,\n signal,\n} from '@angular/core'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipCoords {\n top: number\n left: number\n}\n\nconst SHOW_DELAY_MS = 400\nconst FADE_MS = 120\nconst GAP_PX = 8\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tooltip',\n standalone: true,\n exportAs: 'gbtTooltip',\n imports: [],\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-tooltip-host',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Tooltip implements OnDestroy {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n\n text = input.required<string>()\n position = input<TooltipPosition>('top')\n\n readonly tooltipId = `gbt-tooltip-${++nextId}`\n\n protected readonly visible = signal(false)\n protected readonly closing = signal(false)\n protected readonly coords = signal<TooltipCoords | null>(null)\n\n private showTimer: ReturnType<typeof setTimeout> | null = null\n private hideTimer: ReturnType<typeof setTimeout> | null = null\n\n protected onMouseEnter(): void {\n this.showTimer = setTimeout(() => {\n this.showTimer = null\n this.show()\n }, SHOW_DELAY_MS)\n }\n\n protected onFocusIn(): void {\n this.show()\n }\n\n private show(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n this.closing.set(false)\n this.updatePosition()\n this.visible.set(true)\n }\n\n protected updatePosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect()\n switch (this.position()) {\n case 'top':\n this.coords.set({ top: rect.top - GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'bottom':\n this.coords.set({ top: rect.bottom + GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'left':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.left - GAP_PX })\n break\n case 'right':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.right + GAP_PX })\n break\n }\n }\n\n protected hide(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (!this.visible() || this.closing()) return\n this.closing.set(true)\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n this.closing.set(false)\n this.visible.set(false)\n }, FADE_MS)\n }\n\n ngOnDestroy(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n }\n}\n","<ng-content />\n@if (visible() && coords(); as pos) {\n <span\n class=\"gbt-tooltip__bubble\"\n [class.gbt-tooltip__bubble--leaving]=\"closing()\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [attr.data-position]=\"position()\"\n [style.top.px]=\"pos.top\"\n [style.left.px]=\"pos.left\"\n >\n {{ text() }}\n </span>\n}","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nexport interface RadioOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-radio-group',\n standalone: true,\n imports: [],\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup<T = string> implements ControlValueAccessor {\n id = input<string>(`gbt-radio-group-${++nextId}`)\n label = input.required<string>()\n options = input.required<RadioOption<T>[]>()\n orientation = input<'vertical' | 'horizontal'>('vertical')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n\n protected readonly selected = signal<T | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: T | null): void {\n this.selected.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 protected isSelected(value: T): boolean {\n return this.selected() === value\n }\n\n protected selectOption(value: T): void {\n this.selected.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<fieldset\n class=\"gbt-radio-group\"\n [attr.data-orientation]=\"orientation()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n>\n <legend class=\"gbt-radio-group__legend\">{{ label() }}{{ required() ? ' *' : '' }}</legend>\n <div class=\"gbt-radio-group__options\">\n @for (option of options(); track option.value; let i = $index) {\n <label class=\"gbt-radio-group__option\">\n <input\n type=\"radio\"\n [id]=\"id() + '-' + i\"\n [name]=\"id()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"selectOption(option.value)\"\n />\n <span>{{ option.label }}</span>\n </label>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-radio-group__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextSwitchId = 0\n\n@Component({\n selector: 'gbt-switch',\n standalone: true,\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Switch),\n multi: true,\n },\n ],\n})\nexport class Switch implements ControlValueAccessor {\n id = input<string>(`gbt-switch-${++nextSwitchId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-switch\" [class.gbt-switch--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"gbt-switch__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span class=\"gbt-switch__track\">\n <span class=\"gbt-switch__thumb\"></span>\n </span>\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-textarea',\n standalone: true,\n imports: [],\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Textarea),\n multi: true,\n },\n ],\n})\nexport class Textarea implements ControlValueAccessor {\n id = input<string>(`gbt-textarea-${++nextId}`)\n label = input<string>('')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n rows = input(3)\n\n committed = output<string>()\n\n protected readonly value = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n}\n","<div class=\"gbt-textarea\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <textarea\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value() }}</textarea\n >\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-textarea__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Subscription, isObservable, type Observable } from 'rxjs'\n\nexport type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>\n\nlet nextAutocompleteId = 0\n\n@Component({\n selector: 'gbt-autocomplete',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Autocomplete),\n multi: true,\n },\n ],\n})\nexport class Autocomplete<T = unknown> implements ControlValueAccessor, OnDestroy {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-autocomplete-${++nextAutocompleteId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n search = input.required<AutocompleteSearchFn<T>>()\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n debounceMs = input<number>(300)\n minLength = input<number>(1)\n loadingMessage = input<string>('Searching…')\n noResultsMessage = input<string>('No results')\n searchErrorMessage = input<string>('Search failed')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n\n itemSelected = output<T>()\n\n protected readonly query = signal('')\n protected readonly open = signal(false)\n protected readonly results = signal<T[]>([])\n protected readonly loading = signal(false)\n protected readonly searchFailed = signal(false)\n protected readonly activeIndex = signal(0)\n protected readonly selectedItem = signal<T | null>(null)\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly hasNoResults = computed(\n () => this.open() && !this.loading() && !this.searchFailed() && this.results().length === 0,\n )\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.results().length > 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n private onChange: (value: T | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n private requestSeq = 0\n private debounceHandle?: ReturnType<typeof setTimeout>\n private subscription?: Subscription\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | null): void {\n this.selectedItem.set(value)\n this.query.set(value === null || value === undefined ? '' : this.displayFn()(value))\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.query.set(value)\n this.activeIndex.set(0)\n if (this.selectedItem() !== null) {\n this.selectedItem.set(null)\n this.onChange(null)\n }\n this.scheduleSearch(value)\n }\n\n protected onFocus(): void {\n if (\n this.query().trim().length >= this.minLength() &&\n (this.results().length > 0 || this.searchFailed())\n ) {\n this.open.set(true)\n this.updatePanelPosition()\n }\n }\n\n protected onBlur(): void {\n this.onTouched()\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.open.set(false)\n }\n }, 200)\n }\n\n private scheduleSearch(value: string): void {\n clearTimeout(this.debounceHandle)\n if (value.trim().length < this.minLength()) {\n this.requestSeq++\n this.subscription?.unsubscribe()\n this.open.set(false)\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(false)\n return\n }\n this.debounceHandle = setTimeout(() => this.runSearch(value), this.debounceMs())\n }\n\n private runSearch(query: string): void {\n const seq = ++this.requestSeq\n this.subscription?.unsubscribe()\n this.loading.set(true)\n this.searchFailed.set(false)\n this.open.set(true)\n this.updatePanelPosition()\n\n const applyResults = (items: T[]): void => {\n if (seq !== this.requestSeq) return\n this.results.set(items)\n this.loading.set(false)\n this.activeIndex.set(0)\n this.updatePanelPosition()\n }\n const applyError = (): void => {\n if (seq !== this.requestSeq) return\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(true)\n this.updatePanelPosition()\n }\n\n const result = this.search()(query)\n if (isObservable(result)) {\n this.subscription = result.subscribe({ next: applyResults, error: applyError })\n } else {\n result.then(applyResults, applyError)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-autocomplete__input',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n protected selectOption(item: T): void {\n this.selectedItem.set(item)\n this.query.set(this.displayFn()(item))\n this.results.set([])\n this.open.set(false)\n this.onChange(item)\n this.onTouched()\n this.itemSelected.emit(item)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (event.key === 'Escape') {\n if (this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n }\n return\n }\n if (!this.open() || this.results().length === 0) {\n return\n }\n const results = this.results()\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, results.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n event.preventDefault()\n const active = results[this.activeIndex()]\n if (active) {\n this.selectOption(active)\n }\n break\n }\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.debounceHandle)\n this.subscription?.unsubscribe()\n }\n}\n","<div class=\"gbt-autocomplete\" [class.gbt-autocomplete--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-autocomplete__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <input\n [id]=\"id()\"\n type=\"text\"\n class=\"gbt-autocomplete__input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n @if (open()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n @if (loading()) {\n {{ loadingMessage() }}\n } @else if (searchFailed()) {\n {{ searchErrorMessage() }}\n } @else {\n {{ resultsAnnouncement()(results().length) }}\n }\n </div>\n }\n\n @if (open() && panelStyle(); as style) {\n <div\n class=\"gbt-autocomplete__panel\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n (mousedown)=\"$event.preventDefault()\"\n >\n @if (loading()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ loadingMessage() }}</span>\n </div>\n } @else if (searchFailed()) {\n <div class=\"gbt-autocomplete__state gbt-autocomplete__state--error\" role=\"alert\">\n <span>{{ searchErrorMessage() }}</span>\n </div>\n } @else if (hasNoResults()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ noResultsMessage() }}</span>\n </div>\n } @else {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-autocomplete__list\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n >\n @for (item of results(); track $index; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-autocomplete__option\"\n [class.gbt-autocomplete__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (click)=\"selectOption(item)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (itemTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"gbt-autocomplete__option-label\">{{ displayFn()(item) }}</span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-autocomplete__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\n\n@Component({\n selector: 'gbt-divider',\n standalone: true,\n templateUrl: './divider.html',\n styleUrl: './divider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'separator',\n '[attr.data-orientation]': 'orientation()',\n '[attr.aria-orientation]': \"orientation() === 'vertical' ? 'vertical' : null\",\n },\n})\nexport class Divider {\n orientation = input<DividerOrientation>('horizontal')\n label = input<string>('')\n}\n","@if (label()) {\n <span class=\"gbt-divider__line\"></span>\n <span class=\"gbt-divider__label\">{{ label() }}</span>\n <span class=\"gbt-divider__line\"></span>\n} @else {\n <span class=\"gbt-divider__line\"></span>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\n@Component({\n selector: 'gbt-spinner',\n standalone: true,\n templateUrl: './spinner.html',\n styleUrl: './spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'status',\n '[attr.data-size]': 'size()',\n },\n})\nexport class Spinner {\n size = input<SpinnerSize>('md')\n label = input<string>('Loading…')\n}\n","<span class=\"gbt-spinner__ring\" aria-hidden=\"true\"></span>\n<span class=\"sr-only\">{{ label() }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-slider',\n standalone: true,\n imports: [],\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true,\n },\n ],\n})\nexport class Slider implements ControlValueAccessor {\n id = input<string>(`gbt-slider-${++nextId}`)\n label = input.required<string>()\n min = input(0)\n max = input(100)\n step = input(1)\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n showValue = input(true, { transform: booleanAttribute })\n formatValue = input<(value: number) => string>((value) => `${value}`)\n\n protected readonly value = signal(0)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly fillPercent = computed(() => {\n const range = this.max() - this.min()\n if (range <= 0) {\n return 0\n }\n return ((this.value() - this.min()) / range) * 100\n })\n\n private onChange: (value: number) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: number): void {\n this.value.set(value ?? 0)\n }\n\n registerOnChange(fn: (value: number) => 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 protected onInput(event: Event): void {\n const value = Number((event.target as HTMLInputElement).value)\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n }\n}\n","<div class=\"gbt-slider\">\n <div class=\"gbt-slider__header\">\n <label [for]=\"id()\">{{ label() }}</label>\n @if (showValue()) {\n <span class=\"gbt-slider__value\">{{ formatValue()(value()) }}</span>\n }\n </div>\n <input\n type=\"range\"\n [id]=\"id()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"isDisabled()\"\n [style.--gbt-slider-fill.%]=\"fillPercent()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-slider__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input, model } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type StepperStatus = 'upcoming' | 'current' | 'completed' | 'error'\nexport type StepperOrientation = 'horizontal' | 'vertical'\n\nexport interface StepperStep {\n label: string\n hasError?: boolean\n}\n\n@Component({\n selector: 'gbt-stepper',\n standalone: true,\n imports: [Icon],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stepper {\n steps = input.required<StepperStep[]>()\n activeIndex = model(0)\n orientation = input<StepperOrientation>('horizontal')\n completedLabel = input<string>('Completed')\n errorLabel = input<string>('Error')\n\n protected statusOf(index: number): StepperStatus {\n const step = this.steps()[index]\n const active = this.activeIndex()\n if (step.hasError && index <= active) {\n return 'error'\n }\n if (index < active) {\n return 'completed'\n }\n if (index === active) {\n return 'current'\n }\n return 'upcoming'\n }\n}\n","<ol class=\"gbt-stepper\" [attr.data-orientation]=\"orientation()\">\n @for (step of steps(); track $index) {\n <li\n class=\"gbt-stepper__step\"\n [attr.data-status]=\"statusOf($index)\"\n [attr.aria-current]=\"statusOf($index) === 'current' ? 'step' : null\"\n >\n <span class=\"gbt-stepper__indicator\">\n @switch (statusOf($index)) {\n @case ('completed') {\n <gbt-icon name=\"check\" aria-hidden=\"true\" />\n }\n @case ('error') {\n <gbt-icon name=\"alert-triangle\" aria-hidden=\"true\" />\n }\n @default {\n {{ $index + 1 }}\n }\n }\n </span>\n <span class=\"gbt-stepper__label\">\n {{ step.label }}\n @if (statusOf($index) === 'completed') {\n <span class=\"sr-only\"> — {{ completedLabel() }}</span>\n } @else if (statusOf($index) === 'error') {\n <span class=\"sr-only\"> — {{ errorLabel() }}</span>\n }\n </span>\n </li>\n }\n</ol>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\nfunction formatFileSize(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 return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\n@Component({\n selector: 'gbt-file-upload',\n standalone: true,\n imports: [Icon],\n templateUrl: './file-upload.html',\n styleUrl: './file-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n ],\n})\nexport class FileUpload implements ControlValueAccessor {\n private readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput')\n\n id = input<string>(`gbt-file-upload-${++nextId}`)\n label = input<string>('')\n multiple = input(false, { transform: booleanAttribute })\n accept = input<string>('')\n maxSizeMb = input<number | null>(null)\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n dropLabel = input<string>('Drag and drop a file here, or click to browse')\n removeLabel = input<(name: string) => string>((name) => `Remove ${name}`)\n oversizeMessage = input<(name: string, maxSizeMb: number) => string>(\n (name, maxSizeMb) => `${name} exceeds ${maxSizeMb} MB and was not added.`,\n )\n\n protected readonly files = signal<File[]>([])\n protected readonly rejections = signal<string[]>([])\n protected readonly dragOver = signal(false)\n\n protected readonly formatFileSize = formatFileSize\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: File[]) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: File[] | null): void {\n this.files.set(value ?? [])\n }\n\n registerOnChange(fn: (value: File[]) => 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 protected openPicker(): void {\n if (this.isDisabled()) {\n return\n }\n this.fileInput()?.nativeElement.click()\n }\n\n protected onFilesSelected(event: Event): void {\n const input = event.target as HTMLInputElement\n this.addFiles(input.files)\n input.value = ''\n }\n\n protected onDragEnter(event: DragEvent): void {\n event.preventDefault()\n if (!this.isDisabled()) {\n this.dragOver.set(true)\n }\n }\n\n protected onDragOver(event: DragEvent): void {\n event.preventDefault()\n }\n\n protected onDragLeave(event: DragEvent): void {\n event.preventDefault()\n this.dragOver.set(false)\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault()\n this.dragOver.set(false)\n if (this.isDisabled()) {\n return\n }\n this.addFiles(event.dataTransfer?.files ?? null)\n }\n\n protected removeFile(file: File): void {\n if (this.isDisabled()) {\n return\n }\n const next = this.files().filter((f) => f !== file)\n this.files.set(next)\n this.onChange(next)\n this.onTouched()\n }\n\n private addFiles(fileList: FileList | null): void {\n if (!fileList || fileList.length === 0) {\n return\n }\n const incoming = Array.from(fileList)\n const maxSizeMb = this.maxSizeMb()\n const accepted: File[] = []\n const rejected: string[] = []\n for (const file of incoming) {\n if (maxSizeMb !== null && file.size > maxSizeMb * 1024 * 1024) {\n rejected.push(this.oversizeMessage()(file.name, maxSizeMb))\n } else {\n accepted.push(file)\n }\n }\n this.rejections.set(rejected)\n if (accepted.length === 0) {\n return\n }\n const next = this.multiple() ? [...this.files(), ...accepted] : accepted.slice(0, 1)\n this.files.set(next)\n this.onChange(next)\n this.onTouched()\n }\n}\n","<div class=\"gbt-file-upload\">\n @if (label()) {\n <span class=\"gbt-file-upload__label\" [id]=\"id() + '-label'\">{{ label() }}</span>\n }\n <button\n type=\"button\"\n class=\"gbt-file-upload__dropzone\"\n [class.gbt-file-upload__dropzone--drag-over]=\"dragOver()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"openPicker()\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event)\"\n >\n <gbt-icon name=\"upload\" class=\"gbt-file-upload__icon\" aria-hidden=\"true\" />\n <span class=\"gbt-file-upload__hint\">{{ dropLabel() }}</span>\n </button>\n <input\n #fileInput\n type=\"file\"\n class=\"gbt-file-upload__input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [multiple]=\"multiple()\"\n [attr.accept]=\"accept() || null\"\n [disabled]=\"isDisabled()\"\n (change)=\"onFilesSelected($event)\"\n />\n @if (rejections().length > 0) {\n <div class=\"gbt-file-upload__rejections\" role=\"alert\">\n <ul>\n @for (message of rejections(); track message) {\n <li>{{ message }}</li>\n }\n </ul>\n </div>\n }\n @if (files().length > 0) {\n <ul class=\"gbt-file-upload__files\">\n @for (file of files(); track file) {\n <li class=\"gbt-file-upload__file\">\n <span class=\"gbt-file-upload__file-name\">{{ file.name }}</span>\n <span class=\"gbt-file-upload__file-size\">{{ formatFileSize(file.size) }}</span>\n <button\n type=\"button\"\n class=\"gbt-file-upload__file-remove\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"removeLabel()(file.name)\"\n (click)=\"removeFile(file)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-file-upload__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\nexport type NotificationDotVariant = 'error' | 'warning' | 'success' | 'info'\n\n@Component({\n selector: 'gbt-notification-dot',\n standalone: true,\n exportAs: 'gbtNotificationDot',\n templateUrl: './notification-dot.html',\n styleUrl: './notification-dot.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationDot {\n count = input<number | null>(null)\n max = input<number>(99)\n variant = input<NotificationDotVariant>('error')\n hidden = input(false)\n\n protected readonly showDot = computed(() => !this.hidden() && this.count() !== 0)\n\n protected readonly displayValue = computed(() => {\n const count = this.count()\n if (count === null) {\n return ''\n }\n const max = this.max()\n return count > max ? `${max}+` : `${count}`\n })\n}\n","<span class=\"gbt-notification-dot__anchor\">\n <ng-content></ng-content>\n</span>\n@if (showDot()) {\n <span\n class=\"gbt-notification-dot__badge\"\n [class.gbt-notification-dot__badge--count]=\"count() !== null\"\n [attr.data-variant]=\"variant()\"\n aria-hidden=\"true\"\n >{{ displayValue() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Tag } from '../../atoms/tag/tag'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tag-input',\n standalone: true,\n imports: [Tag],\n templateUrl: './tag-input.html',\n styleUrl: './tag-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInput),\n multi: true,\n },\n ],\n})\nexport class TagInput implements ControlValueAccessor {\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('input')\n\n id = input<string>(`gbt-tag-input-${++nextId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n separatorKeys = input<string[]>(['Enter', ','])\n allowDuplicates = input(false, { transform: booleanAttribute })\n color = input<string>('#6b7280')\n removeLabel = input<(value: string) => string>((value) => `Remove ${value}`)\n\n protected readonly tags = signal<string[]>([])\n protected readonly draft = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string[]) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string[] | null): void {\n this.tags.set(value ?? [])\n }\n\n registerOnChange(fn: (value: string[]) => 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 protected focusInput(): void {\n if (!this.isDisabled()) {\n this.inputRef()?.nativeElement.focus()\n }\n }\n\n protected onInputChange(event: Event): void {\n this.draft.set((event.target as HTMLInputElement).value)\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.separatorKeys().includes(event.key)) {\n event.preventDefault()\n this.commitDraft()\n return\n }\n if (event.key === 'Backspace' && this.draft() === '' && this.tags().length > 0) {\n event.preventDefault()\n this.removeTagAt(this.tags().length - 1)\n }\n }\n\n protected onBlur(): void {\n this.commitDraft()\n this.onTouched()\n }\n\n protected removeTagAt(index: number): void {\n if (this.isDisabled()) {\n return\n }\n const next = this.tags().filter((_, i) => i !== index)\n this.tags.set(next)\n this.onChange(next)\n }\n\n private commitDraft(): void {\n const value = this.draft().trim()\n this.draft.set('')\n if (!value || this.isDisabled()) {\n return\n }\n if (!this.allowDuplicates() && this.tags().includes(value)) {\n return\n }\n const next = [...this.tags(), value]\n this.tags.set(next)\n this.onChange(next)\n }\n}\n","<div class=\"gbt-tag-input\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-tag-input__label\">{{ label() }}</label>\n }\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"gbt-tag-input__field\"\n [class.gbt-tag-input__field--disabled]=\"isDisabled()\"\n (click)=\"focusInput()\"\n >\n @for (tag of tags(); track tag; let i = $index) {\n <gbt-tag\n [color]=\"color()\"\n [removable]=\"!isDisabled()\"\n [disabled]=\"isDisabled()\"\n [removeLabel]=\"removeLabel()(tag)\"\n (removed)=\"removeTagAt(i)\"\n >\n {{ tag }}\n </gbt-tag>\n }\n <input\n #input\n type=\"text\"\n [id]=\"id()\"\n class=\"gbt-tag-input__input\"\n [placeholder]=\"tags().length === 0 ? placeholder() : ''\"\n [disabled]=\"isDisabled()\"\n [value]=\"draft()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"onInputKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-tag-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","export interface TreeNode {\n id: string\n label: string\n icon?: string\n children?: TreeNode[]\n}\n\nexport interface FlatTreeNode {\n node: TreeNode\n depth: number\n hasChildren: boolean\n parentId: string | null\n}\n\nexport function flattenTree(\n nodes: TreeNode[],\n expandedIds: ReadonlySet<string>,\n depth = 0,\n parentId: string | null = null,\n): FlatTreeNode[] {\n const result: FlatTreeNode[] = []\n for (const node of nodes) {\n const hasChildren = !!node.children && node.children.length > 0\n result.push({ node, depth, hasChildren, parentId })\n if (hasChildren && expandedIds.has(node.id)) {\n result.push(...flattenTree(node.children!, expandedIds, depth + 1, node.id))\n }\n }\n return result\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\nimport { FlatTreeNode, TreeNode, flattenTree } from './tree-flatten'\n\n@Component({\n selector: 'gbt-tree',\n standalone: true,\n imports: [Icon],\n templateUrl: './tree.html',\n styleUrl: './tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tree {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n items = input.required<TreeNode[]>()\n ariaLabel = input<string>('')\n selectedId = model<string | null>(null)\n expandedIds = model<string[]>([])\n expandLabel = input<string>('Expand')\n collapseLabel = input<string>('Collapse')\n\n protected readonly focusedId = signal<string | null>(null)\n\n private readonly expandedSet = computed(() => new Set(this.expandedIds()))\n protected readonly flatNodes = computed(() => flattenTree(this.items(), this.expandedSet()))\n\n protected readonly activeId = computed(() => {\n const focused = this.focusedId()\n const flat = this.flatNodes()\n if (focused && flat.some((f) => f.node.id === focused)) {\n return focused\n }\n const selected = this.selectedId()\n if (selected && flat.some((f) => f.node.id === selected)) {\n return selected\n }\n return flat[0]?.node.id ?? null\n })\n\n protected isExpanded(id: string): boolean {\n return this.expandedSet().has(id)\n }\n\n protected toggle(id: string): void {\n const set = new Set(this.expandedIds())\n if (set.has(id)) {\n set.delete(id)\n } else {\n set.add(id)\n }\n this.expandedIds.set([...set])\n }\n\n protected select(node: TreeNode): void {\n this.selectedId.set(node.id)\n this.focusedId.set(node.id)\n }\n\n protected onItemClick(flat: FlatTreeNode): void {\n this.select(flat.node)\n if (flat.hasChildren) {\n this.toggle(flat.node.id)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const flat = this.flatNodes()\n const index = flat.findIndex((f) => f.node.id === this.activeId())\n if (index === -1) {\n return\n }\n const current = flat[index]\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.focusIndex(Math.min(index + 1, flat.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focusIndex(Math.max(index - 1, 0))\n break\n case 'ArrowRight':\n event.preventDefault()\n if (current.hasChildren && !this.isExpanded(current.node.id)) {\n this.toggle(current.node.id)\n } else if (current.hasChildren) {\n this.focusIndex(index + 1)\n }\n break\n case 'ArrowLeft':\n event.preventDefault()\n if (current.hasChildren && this.isExpanded(current.node.id)) {\n this.toggle(current.node.id)\n } else if (current.parentId) {\n const parentIndex = flat.findIndex((f) => f.node.id === current.parentId)\n if (parentIndex !== -1) {\n this.focusIndex(parentIndex)\n }\n }\n break\n case 'Home':\n event.preventDefault()\n this.focusIndex(0)\n break\n case 'End':\n event.preventDefault()\n this.focusIndex(flat.length - 1)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n this.select(current.node)\n break\n default:\n return\n }\n }\n\n private focusIndex(index: number): void {\n const target = this.flatNodes()[index]\n if (!target) {\n return\n }\n this.focusedId.set(target.node.id)\n afterNextRender(\n () => {\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-node-id=\"${cssEscape(target.node.id)}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(value) : value.replace(/\"/g, '\\\\\"')\n}\n","<ul\n class=\"gbt-tree\"\n role=\"tree\"\n tabindex=\"-1\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (keydown)=\"onKeydown($event)\"\n>\n @for (flat of flatNodes(); track flat.node.id) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <li\n class=\"gbt-tree__item\"\n role=\"treeitem\"\n [attr.data-node-id]=\"flat.node.id\"\n [attr.aria-level]=\"flat.depth + 1\"\n [attr.aria-expanded]=\"flat.hasChildren ? isExpanded(flat.node.id) : null\"\n [attr.aria-selected]=\"selectedId() === flat.node.id\"\n [style.paddingLeft.px]=\"flat.depth * 20\"\n [attr.tabindex]=\"activeId() === flat.node.id ? 0 : -1\"\n (click)=\"onItemClick(flat)\"\n >\n @if (flat.hasChildren) {\n <button\n type=\"button\"\n class=\"gbt-tree__toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"isExpanded(flat.node.id) ? collapseLabel() : expandLabel()\"\n (click)=\"toggle(flat.node.id); $event.stopPropagation()\"\n >\n <gbt-icon\n name=\"chevron-right\"\n class=\"gbt-tree__chevron\"\n [class.gbt-tree__chevron--expanded]=\"isExpanded(flat.node.id)\"\n aria-hidden=\"true\"\n />\n </button>\n } @else {\n <span class=\"gbt-tree__spacer\"></span>\n }\n @if (flat.node.icon) {\n <gbt-icon [name]=\"flat.node.icon\" class=\"gbt-tree__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-tree__label\">{{ flat.node.label }}</span>\n </li>\n }\n</ul>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","ASSERTIVE_VARIANTS","VARIANT_ICONS","DAY","DASH_ARRAYS","CURRENT_YEAR","shiftDays"],"mappings":"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"}
1
+ {"version":3,"file":"masmarino-gabarit.mjs","sources":["../../../projects/gabarit/src/lib/version.ts","../../../projects/gabarit/src/lib/components/atoms/icon/built-in-icons.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon-registry.ts","../../../projects/gabarit/src/lib/components/atoms/icon/icon.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.ts","../../../projects/gabarit/src/lib/components/templates/app-shell/app-shell.html","../../../projects/gabarit/src/lib/components/atoms/button/button.ts","../../../projects/gabarit/src/lib/components/atoms/button/button.html","../../../projects/gabarit/src/lib/components/atoms/badge/badge.ts","../../../projects/gabarit/src/lib/components/atoms/badge/badge.html","../../../projects/gabarit/src/lib/components/atoms/avatar/avatar.ts","../../../projects/gabarit/src/lib/components/atoms/avatar/avatar.html","../../../projects/gabarit/src/lib/components/atoms/skeleton/skeleton.ts","../../../projects/gabarit/src/lib/components/molecules/avatar-group/avatar-group.ts","../../../projects/gabarit/src/lib/components/molecules/avatar-group/avatar-group.html","../../../projects/gabarit/src/lib/components/molecules/alert/alert.ts","../../../projects/gabarit/src/lib/components/molecules/alert/alert.html","../../../projects/gabarit/src/lib/components/atoms/tag/tag-contrast.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.ts","../../../projects/gabarit/src/lib/components/atoms/tag/tag.html","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.ts","../../../projects/gabarit/src/lib/components/molecules/empty-state/empty-state.html","../../../projects/gabarit/src/lib/components/atoms/input/input.ts","../../../projects/gabarit/src/lib/components/atoms/input/input.html","../../../projects/gabarit/src/lib/components/molecules/select/select.ts","../../../projects/gabarit/src/lib/components/molecules/select/select.html","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.ts","../../../projects/gabarit/src/lib/components/molecules/list-toolbar/list-toolbar.html","../../../projects/gabarit/src/lib/components/molecules/card/card.ts","../../../projects/gabarit/src/lib/components/molecules/card/card.html","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.ts","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.html","../../../projects/gabarit/src/lib/components/organisms/modal/modal.ts","../../../projects/gabarit/src/lib/components/organisms/modal/modal.html","../../../projects/gabarit/src/lib/components/organisms/drawer/drawer.ts","../../../projects/gabarit/src/lib/components/organisms/drawer/drawer.html","../../../projects/gabarit/src/lib/components/molecules/table/table.ts","../../../projects/gabarit/src/lib/components/molecules/table/table.html","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.ts","../../../projects/gabarit/src/lib/components/organisms/search-bar/search-bar.html","../../../projects/gabarit/src/lib/components/molecules/tab/tab.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.ts","../../../projects/gabarit/src/lib/components/molecules/tabs/tabs.html","../../../projects/gabarit/src/lib/primitives/scales.ts","../../../projects/gabarit/src/lib/primitives/ticks.ts","../../../projects/gabarit/src/lib/primitives/format.ts","../../../projects/gabarit/src/lib/primitives/path.ts","../../../projects/gabarit/src/lib/primitives/nearest.ts","../../../projects/gabarit/src/lib/primitives/label.ts","../../../projects/gabarit/src/lib/components/organisms/chart-context/chart-context.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.ts","../../../projects/gabarit/src/lib/components/organisms/chart-frame/chart-frame.html","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.ts","../../../projects/gabarit/src/lib/components/organisms/chart-axis/chart-axis.html","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.ts","../../../projects/gabarit/src/lib/components/organisms/chart-tooltip/chart-tooltip.html","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.ts","../../../projects/gabarit/src/lib/components/organisms/chart-legend/chart-legend.html","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.ts","../../../projects/gabarit/src/lib/components/organisms/chart-empty/chart-empty.html","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.ts","../../../projects/gabarit/src/lib/components/organisms/chart-table/chart-table.html","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-series.html","../../../projects/gabarit/src/lib/components/organisms/chart-data/chart-data.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.ts","../../../projects/gabarit/src/lib/components/organisms/line-chart/line-chart.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-series.html","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.ts","../../../projects/gabarit/src/lib/components/organisms/bar-chart/bar-chart.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-series.html","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.ts","../../../projects/gabarit/src/lib/components/organisms/timeline-chart/timeline-chart.html","../../../projects/gabarit/src/lib/components/organisms/pie-chart/pie-chart.ts","../../../projects/gabarit/src/lib/components/organisms/pie-chart/pie-chart.html","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.ts","../../../projects/gabarit/src/lib/components/atoms/sparkline/sparkline.html","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.ts","../../../projects/gabarit/src/lib/components/atoms/gauge-bar/gauge-bar.html","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.ts","../../../projects/gabarit/src/lib/components/molecules/dimension-card/dimension-card.html","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.ts","../../../projects/gabarit/src/lib/components/molecules/funnel-chart/funnel-chart.html","../../../projects/gabarit/src/lib/components/molecules/menu/menu.ts","../../../projects/gabarit/src/lib/components/molecules/menu/menu.html","../../../projects/gabarit/src/lib/components/molecules/popover/popover.ts","../../../projects/gabarit/src/lib/components/molecules/popover/popover.html","../../../projects/gabarit/src/lib/components/molecules/description-list/description-list.ts","../../../projects/gabarit/src/lib/components/molecules/description-list/description-list.html","../../../projects/gabarit/src/lib/components/molecules/segmented-control/segmented-control.ts","../../../projects/gabarit/src/lib/components/molecules/segmented-control/segmented-control.html","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker-calendar.ts","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker.ts","../../../projects/gabarit/src/lib/components/molecules/date-picker/date-picker.html","../../../projects/gabarit/src/lib/components/molecules/date-range-picker/date-range-picker.ts","../../../projects/gabarit/src/lib/components/molecules/date-range-picker/date-range-picker.html","../../../projects/gabarit/src/lib/components/molecules/accordion-item/accordion-item.ts","../../../projects/gabarit/src/lib/components/molecules/accordion-item/accordion-item.html","../../../projects/gabarit/src/lib/components/molecules/accordion/accordion.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.ts","../../../projects/gabarit/src/lib/components/molecules/pagination/pagination.html","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.ts","../../../projects/gabarit/src/lib/components/molecules/breadcrumb/breadcrumb.html","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.ts","../../../projects/gabarit/src/lib/components/organisms/confirm-danger-modal/confirm-danger-modal.html","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.ts","../../../projects/gabarit/src/lib/components/organisms/toaster/toaster.html","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.ts","../../../projects/gabarit/src/lib/components/molecules/tooltip/tooltip.html","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.ts","../../../projects/gabarit/src/lib/components/molecules/radio-group/radio-group.html","../../../projects/gabarit/src/lib/components/atoms/switch/switch.ts","../../../projects/gabarit/src/lib/components/atoms/switch/switch.html","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.ts","../../../projects/gabarit/src/lib/components/atoms/textarea/textarea.html","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.ts","../../../projects/gabarit/src/lib/components/molecules/autocomplete/autocomplete.html","../../../projects/gabarit/src/lib/components/atoms/divider/divider.ts","../../../projects/gabarit/src/lib/components/atoms/divider/divider.html","../../../projects/gabarit/src/lib/components/atoms/spinner/spinner.ts","../../../projects/gabarit/src/lib/components/atoms/spinner/spinner.html","../../../projects/gabarit/src/lib/components/atoms/slider/slider.ts","../../../projects/gabarit/src/lib/components/atoms/slider/slider.html","../../../projects/gabarit/src/lib/components/molecules/stepper/stepper.ts","../../../projects/gabarit/src/lib/components/molecules/stepper/stepper.html","../../../projects/gabarit/src/lib/components/molecules/job-graph/job-graph-layout.ts","../../../projects/gabarit/src/lib/components/molecules/job-graph/job-graph.ts","../../../projects/gabarit/src/lib/components/molecules/job-graph/job-graph.html","../../../projects/gabarit/src/lib/components/molecules/file-upload/file-upload.ts","../../../projects/gabarit/src/lib/components/molecules/file-upload/file-upload.html","../../../projects/gabarit/src/lib/components/atoms/notification-dot/notification-dot.ts","../../../projects/gabarit/src/lib/components/atoms/notification-dot/notification-dot.html","../../../projects/gabarit/src/lib/components/molecules/tag-input/tag-input.ts","../../../projects/gabarit/src/lib/components/molecules/tag-input/tag-input.html","../../../projects/gabarit/src/lib/components/molecules/tree/tree-flatten.ts","../../../projects/gabarit/src/lib/components/molecules/tree/tree.ts","../../../projects/gabarit/src/lib/components/molecules/tree/tree.html","../../../projects/gabarit/src/masmarino-gabarit.ts"],"sourcesContent":["export const GABARIT_VERSION = '1.1.0'\n","export const BUILT_IN_ICONS: Record<string, string> = {\n search: `<path d=\"m21 21-4.34-4.34\" />\n<circle cx=\"11\" cy=\"11\" r=\"8\" />`,\n x: `<path d=\"M18 6 6 18\" />\n<path d=\"m6 6 12 12\" />`,\n eye: `<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n<circle cx=\"12\" cy=\"12\" r=\"3\" />`,\n 'eye-off': `<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n<path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n<path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n<path d=\"m2 2 20 20\" />`,\n 'chevron-down': `<path d=\"m6 9 6 6 6-6\" />`,\n 'chevron-left': `<path d=\"m15 18-6-6 6-6\" />`,\n 'chevron-right': `<path d=\"m9 18 6-6-6-6\" />`,\n 'chevrons-left': `<path d=\"m11 17-5-5 5-5\" />\n<path d=\"m18 17-5-5 5-5\" />`,\n 'chevrons-right': `<path d=\"m6 17 5-5-5-5\" />\n<path d=\"m13 17 5-5-5-5\" />`,\n 'ellipsis-vertical': `<circle cx=\"12\" cy=\"12\" r=\"1\" />\n<circle cx=\"12\" cy=\"5\" r=\"1\" />\n<circle cx=\"12\" cy=\"19\" r=\"1\" />`,\n check: `<path d=\"M20 6 9 17l-5-5\" />`,\n 'check-circle': `<path d=\"m5 12 5 5 9-10\" />`,\n 'alert-circle': `<path d=\"M12 7v6\" />\n<path d=\"M12 17h.01\" />`,\n 'alert-triangle': `<path d=\"m21.73 18-8-14a2 2 0 0 0-3.46 0L2.27 18a2 2 0 0 0 1.73 3h16a2 2 0 0 0 1.73-3Z\" />\n<path d=\"M12 9v4\" />\n<path d=\"M12 17h.01\" />`,\n info: `<path d=\"M12 17v-6\" />\n<path d=\"M12 7h.01\" />`,\n 'arrow-up': `<path d=\"m5 12 7-7 7 7\" />\n<path d=\"M12 19V5\" />`,\n 'arrow-down': `<path d=\"M12 5v14\" />\n<path d=\"m19 12-7 7-7-7\" />`,\n calendar: `<path d=\"M8 2v4\" />\n<path d=\"M16 2v4\" />\n<rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n<path d=\"M3 10h18\" />`,\n upload: `<path d=\"M12 3v12\" />\n<path d=\"m17 8-5-5-5 5\" />\n<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />`,\n folder: `<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />`,\n file: `<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />`,\n}\n","import { Injectable } from '@angular/core'\nimport { BUILT_IN_ICONS } from './built-in-icons'\n\n@Injectable({ providedIn: 'root' })\nexport class IconRegistry {\n private readonly icons = new Map<string, string>(Object.entries(BUILT_IN_ICONS))\n\n register(name: string, svgInnerMarkup: string): void {\n this.icons.set(name, svgInnerMarkup)\n }\n\n registerAll(icons: Record<string, string>): void {\n for (const [name, markup] of Object.entries(icons)) {\n this.icons.set(name, markup)\n }\n }\n\n get(name: string): string | null {\n return this.icons.get(name) ?? null\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { IconRegistry } from './icon-registry'\n\n@Component({\n selector: 'gbt-icon',\n standalone: true,\n template: `\n @if (svgContent(); as content) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n [innerHTML]=\"content\"\n ></svg>\n }\n `,\n styles: `\n :host {\n display: inline-flex;\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n }\n svg {\n width: 100%;\n height: 100%;\n }\n `,\n host: {\n '[attr.aria-hidden]': '\"true\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Icon {\n private readonly sanitizer = inject(DomSanitizer)\n private readonly registry = inject(IconRegistry)\n\n name = input.required<string>()\n\n protected readonly svgContent = computed(() => {\n const markup = this.registry.get(this.name())\n return markup ? this.sanitizer.bypassSecurityTrustHtml(markup) : null\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-app-shell',\n standalone: true,\n imports: [Icon],\n templateUrl: './app-shell.html',\n styleUrl: './app-shell.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppShell {\n navLabel = input.required<string>()\n skipLabel = input.required<string>()\n openMenuLabel = input.required<string>()\n closeMenuLabel = input.required<string>()\n collapseLabel = input<string>('')\n expandLabel = input<string>('')\n versionLabel = input<string | null>(null)\n collapsed = input<boolean>(false)\n collapsible = input<boolean>(true)\n collapsedChange = output<boolean>()\n\n private readonly id = ++nextId\n protected readonly mainId = `gbt-app-shell-main-${this.id}`\n protected readonly navId = `gbt-app-shell-nav-${this.id}`\n\n protected readonly menuOpen = signal(false)\n\n protected readonly menuLabel = computed(() =>\n this.menuOpen() ? this.closeMenuLabel() : this.openMenuLabel(),\n )\n\n private readonly toggleButton = viewChild<ElementRef<HTMLButtonElement>>('toggle')\n private readonly nav = viewChild<ElementRef<HTMLElement>>('nav')\n\n protected toggleMenu(): void {\n if (this.menuOpen()) {\n this.close()\n return\n }\n this.menuOpen.set(true)\n queueMicrotask(() => this.nav()?.nativeElement.focus())\n }\n\n protected close(): void {\n if (!this.menuOpen()) return\n this.menuOpen.set(false)\n this.toggleButton()?.nativeElement.focus()\n }\n\n protected toggleCollapsed(): void {\n this.collapsedChange.emit(!this.collapsed())\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n this.close()\n }\n\n protected onNavKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.menuOpen()) return\n const nav = this.nav()?.nativeElement\n if (!nav) return\n\n const focusableElements = nav.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusableElements.length === 0) return\n\n const first = focusableElements[0]\n const last = focusableElements[focusableElements.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","<div class=\"gbt-app-shell\">\n <a class=\"gbt-app-shell__skip\" [href]=\"'#' + mainId\">{{ skipLabel() }}</a>\n\n <nav\n #nav\n [id]=\"navId\"\n class=\"gbt-app-shell__nav\"\n [class.gbt-app-shell__nav--open]=\"menuOpen()\"\n [class.gbt-app-shell__nav--collapsed]=\"collapsed()\"\n [attr.aria-label]=\"navLabel()\"\n tabindex=\"-1\"\n (keydown)=\"onNavKeydown($event)\"\n >\n <div class=\"gbt-app-shell__brand\">\n <ng-content select=\"[shell-brand]\" />\n </div>\n <ng-content select=\"[shell-nav]\" />\n <div class=\"gbt-app-shell__bottom\">\n @if (versionLabel()) {\n @if (!collapsed()) {\n <div class=\"gbt-app-shell__version\">v{{ versionLabel() }}</div>\n }\n }\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"gbt-app-shell__collapse-toggle\"\n [class.gbt-app-shell__collapse-toggle--collapsed]=\"collapsed()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\"\n (click)=\"toggleCollapsed()\"\n >\n <gbt-icon name=\"chevrons-left\" />\n </button>\n }\n </div>\n </nav>\n\n @if (menuOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-app-shell__scrim\" (click)=\"close()\"></div>\n }\n\n <div class=\"gbt-app-shell__body\">\n <header class=\"gbt-app-shell__header\">\n <button\n #toggle\n type=\"button\"\n class=\"gbt-app-shell__toggle\"\n [attr.aria-expanded]=\"menuOpen()\"\n [attr.aria-controls]=\"navId\"\n [attr.aria-label]=\"menuLabel()\"\n (click)=\"toggleMenu()\"\n >\n <span class=\"gbt-app-shell__burger\" aria-hidden=\"true\"></span>\n </button>\n <ng-content select=\"[shell-header]\" />\n </header>\n\n <main [id]=\"mainId\" class=\"gbt-app-shell__content\" tabindex=\"-1\">\n <ng-content />\n </main>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\n@Component({\n selector: 'gbt-button',\n standalone: true,\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n variant = input<'primary' | 'secondary' | 'danger'>('primary')\n size = input<'small' | 'medium' | 'large'>('medium')\n type = input<'button' | 'submit'>('button')\n text = input<string>('')\n iconName = input<string | null>(null)\n ariaLabel = input<string | null>(null)\n loading = input(false, { transform: booleanAttribute })\n loadingLabel = input<string>('Loading')\n disabled = input(false, { transform: booleanAttribute })\n\n clicked = output<void>()\n\n protected handleClick(): void {\n if (!this.disabled() && !this.loading()) {\n this.clicked.emit()\n }\n }\n}\n","<button\n [type]=\"type()\"\n class=\"gbt-button gbt-button--{{ variant() }} gbt-button--{{ size() }}\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n (click)=\"handleClick()\"\n>\n @if (iconName()) {\n <gbt-icon [name]=\"iconName()!\" aria-hidden=\"true\" />\n }\n @if (loading()) {\n <span class=\"gbt-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">{{ loadingLabel() }}</span>\n }\n <span>{{ text() }}</span>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\nimport { Icon } from '../icon/icon'\n\nexport type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info'\n\n@Component({\n selector: 'gbt-badge',\n standalone: true,\n imports: [Icon],\n templateUrl: './badge.html',\n styleUrl: './badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n variant = input<BadgeVariant>('neutral')\n icon = input<string>()\n}\n","<span class=\"gbt-badge\" [attr.data-variant]=\"variant()\">\n @if (icon(); as name) {\n <gbt-icon [name]=\"name\" class=\"gbt-badge__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-badge__label\"><ng-content /></span>\n</span>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\n\nexport function computeInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean)\n if (words.length === 0) return ''\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase()\n return (words[0][0] + words[words.length - 1][0]).toUpperCase()\n}\n\n@Component({\n selector: 'gbt-avatar',\n standalone: true,\n templateUrl: './avatar.html',\n styleUrl: './avatar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class Avatar {\n name = input.required<string>()\n src = input<string | null>(null)\n size = input<AvatarSize>('md')\n\n protected readonly imageFailed = signal(false)\n\n protected readonly showImage = computed(() => !!this.src() && !this.imageFailed())\n protected readonly initials = computed(() => computeInitials(this.name()))\n\n protected onImageError(): void {\n this.imageFailed.set(true)\n }\n}\n","@if (showImage()) {\n <img class=\"gbt-avatar__image\" [src]=\"src()\" [alt]=\"name()\" (error)=\"onImageError()\" />\n} @else {\n <span class=\"gbt-avatar__initials\" [attr.aria-label]=\"name()\">{{ initials() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type SkeletonVariant = 'text' | 'circle' | 'rect'\n\n@Component({\n selector: 'gbt-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-variant]': 'variant()',\n '[style.width]': 'width()',\n '[style.height]': 'height()',\n 'aria-hidden': 'true',\n },\n})\nexport class Skeleton {\n variant = input<SkeletonVariant>('text')\n width = input<string>('100%')\n height = input<string | null>(null)\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output, signal } from '@angular/core'\nimport { Avatar } from '../../atoms/avatar/avatar'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface AvatarGroupItem {\n name: string\n src?: string\n}\n\n@Component({\n selector: 'gbt-avatar-group',\n standalone: true,\n imports: [Avatar, Icon],\n templateUrl: './avatar-group.html',\n styleUrl: './avatar-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n})\nexport class AvatarGroup<T extends AvatarGroupItem = AvatarGroupItem> {\n private readonly elementRef = inject(ElementRef)\n\n items = input.required<T[]>()\n max = input<number>(5)\n ariaLabel = input<string>('Users')\n moreLabel = input<(count: number) => string>((count) => `${count} more`)\n activeItem = input<T | null>(null)\n\n itemClick = output<T>()\n\n protected readonly panelOpen = signal(false)\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n protected readonly visibleItems = computed(() => this.items().slice(0, this.max()))\n protected readonly overflowItems = computed(() => this.items().slice(this.max()))\n protected readonly overflowCount = computed(() => this.overflowItems().length)\n\n protected isActive(item: T): boolean {\n return this.activeItem() === item\n }\n\n protected selectItem(item: T): void {\n this.itemClick.emit(item)\n this.panelOpen.set(false)\n }\n\n protected toggleOverflowPanel(): void {\n this.panelOpen.update((value) => !value)\n if (this.panelOpen()) {\n this.updatePanelPosition()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.panelOpen()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-avatar-group__more',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n })\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.panelOpen() && !this.elementRef.nativeElement.contains(event.target)) {\n this.panelOpen.set(false)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.panelOpen()) {\n event.preventDefault()\n event.stopPropagation()\n this.panelOpen.set(false)\n }\n }\n}\n","<ul class=\"gbt-avatar-group__list\" [attr.aria-label]=\"ariaLabel()\">\n @for (item of visibleItems(); track $index) {\n <li class=\"gbt-avatar-group__item\">\n <button\n type=\"button\"\n class=\"gbt-avatar-group__button\"\n [class.gbt-avatar-group__button--active]=\"isActive(item)\"\n [attr.aria-label]=\"item.name\"\n [attr.aria-current]=\"isActive(item) ? 'true' : null\"\n (click)=\"selectItem(item)\"\n >\n <gbt-avatar [name]=\"item.name\" [src]=\"item.src ?? null\" size=\"md\" />\n </button>\n </li>\n }\n @if (overflowCount() > 0) {\n <li class=\"gbt-avatar-group__item\">\n <button\n type=\"button\"\n class=\"gbt-avatar-group__more\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"panelOpen()\"\n [attr.aria-label]=\"moreLabel()(overflowCount())\"\n (click)=\"toggleOverflowPanel()\"\n >\n +{{ overflowCount() }}\n </button>\n </li>\n }\n</ul>\n\n@if (panelOpen() && panelStyle(); as style) {\n <ul\n class=\"gbt-avatar-group__panel\"\n role=\"menu\"\n [attr.aria-label]=\"moreLabel()(overflowCount())\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n >\n @for (item of overflowItems(); track $index) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"gbt-avatar-group__panel-item\"\n [attr.aria-current]=\"isActive(item) ? 'true' : null\"\n (click)=\"selectItem(item)\"\n >\n <gbt-avatar [name]=\"item.name\" [src]=\"item.src ?? null\" size=\"sm\" />\n <span class=\"gbt-avatar-group__panel-item-name\">{{ item.name }}</span>\n @if (isActive(item)) {\n <gbt-icon name=\"check\" class=\"gbt-avatar-group__panel-item-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<AlertVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<AlertVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-alert',\n standalone: true,\n imports: [Icon],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Alert {\n variant = input<AlertVariant>('info')\n dismissible = input(false, { transform: booleanAttribute })\n closeLabel = input<string>('Dismiss')\n\n dismissed = output<void>()\n\n protected readonly role = computed(() => (ASSERTIVE_VARIANTS.has(this.variant()) ? 'alert' : 'status'))\n\n protected readonly icon = computed(() => VARIANT_ICONS[this.variant()])\n}\n","<div class=\"gbt-alert\" [attr.data-variant]=\"variant()\" [attr.role]=\"role()\" aria-atomic=\"true\">\n <span class=\"gbt-alert__icon\">\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n </span>\n <div class=\"gbt-alert__content\"><ng-content /></div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"gbt-alert__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n","/** A 6-digit hex color, with or without its leading `#`. */\nconst HEX_6 = /^#?[0-9a-fA-F]{6}$/\n\nfunction normalizeHex(hex: string): string {\n if (!HEX_6.test(hex)) {\n throw new Error(\n `getReadableTextColor: expected a 6-digit hex color such as \"#dc2626\" or \"dc2626\", got ${JSON.stringify(hex)}. ` +\n 'Shorthand hex (#abc), CSS named colors, rgb()/hsl() and custom properties are not supported.',\n )\n }\n return hex.replace('#', '')\n}\n\nfunction linearizeChannel(value: number): number {\n const c = value / 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nfunction relativeLuminance(normalizedHex: string): number {\n const r = parseInt(normalizedHex.substring(0, 2), 16)\n const g = parseInt(normalizedHex.substring(2, 4), 16)\n const b = parseInt(normalizedHex.substring(4, 6), 16)\n return 0.2126 * linearizeChannel(r) + 0.7152 * linearizeChannel(g) + 0.0722 * linearizeChannel(b)\n}\n\nfunction contrastRatio(normalizedA: string, normalizedB: string): number {\n const lA = relativeLuminance(normalizedA)\n const lB = relativeLuminance(normalizedB)\n const lighter = Math.max(lA, lB)\n const darker = Math.min(lA, lB)\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n/**\n * Returns `'#ffffff'` or `'#000000'`, whichever reaches a higher WCAG contrast\n * ratio against `backgroundHex`. Used by `Tag` to keep its text readable on\n * an arbitrary caller-supplied background color that isn't one of the\n * design system's own semantic tokens.\n *\n * These two endpoints are not interchangeable with a \"softer\" dark such as\n * `#1a1a1a`: sweeping all 16 777 216 sRGB backgrounds, the worst achievable\n * ratio is **4.58:1** with `#000000` (at `#cf0dcc`) but only **4.17:1** with\n * `#1a1a1a` (at `#da25c3`) — below the 4.5:1 AA threshold that `Tag`'s\n * 12px bold text must meet, since it is not \"large text\".\n *\n * @param backgroundHex a 6-digit hex color, with or without its leading `#`.\n * @throws if `backgroundHex` is not a well-formed 6-digit hex color. Silently\n * guessing would be worse: a malformed value used to produce `NaN` ratios,\n * and `NaN >= NaN` being `false` returned dark text for *any* unparseable\n * input — so `'#000'` got dark text on a black background.\n */\nexport function getReadableTextColor(backgroundHex: string): string {\n const background = normalizeHex(backgroundHex)\n const white = 'ffffff'\n const dark = '000000'\n return contrastRatio(background, white) >= contrastRatio(background, dark) ? '#ffffff' : '#000000'\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'\nimport { Icon } from '../icon/icon'\nimport { getReadableTextColor } from './tag-contrast'\n\n@Component({\n selector: 'gbt-tag',\n standalone: true,\n imports: [Icon],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tag {\n color = input.required<string>()\n removable = input<boolean>(false)\n removeLabel = input<string>('Remove')\n disabled = input<boolean>(false)\n\n removed = output<void>()\n\n protected readonly textColor = computed(() => getReadableTextColor(this.color()))\n\n protected onRemoveClick(event: MouseEvent): void {\n event.stopPropagation()\n this.removed.emit()\n }\n}\n","<span\n class=\"gbt-tag\"\n [style.background]=\"color()\"\n [style.color]=\"textColor()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n>\n <span class=\"gbt-tag__label\"><ng-content /></span>\n @if (removable()) {\n <button type=\"button\" class=\"gbt-tag__remove\" [attr.aria-label]=\"removeLabel()\" (click)=\"onRemoveClick($event)\">\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book' | 'server'\n\n@Component({\n selector: 'gbt-empty-state',\n standalone: true,\n imports: [],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n illustration = input.required<EmptyStateIllustration>()\n heading = input.required<string>()\n message = input<string>('')\n}\n","<div class=\"gbt-empty-state\">\n <div class=\"gbt-empty-state__illustration\" aria-hidden=\"true\">\n @switch (illustration()) {\n @case ('folder') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"16\" y=\"38\" width=\"64\" height=\"40\" rx=\"4\" />\n <path d=\"M16 38 v-8a4 4 0 0 1 4-4h16l8 8h28a4 4 0 0 1 4 4\" />\n <rect x=\"34\" y=\"14\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(-8 42 24)\" opacity=\"0.55\" />\n <rect x=\"50\" y=\"16\" width=\"16\" height=\"20\" rx=\"2\" transform=\"rotate(6 58 26)\" opacity=\"0.55\" />\n </svg>\n }\n @case ('star') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48,18 L55.6,37.5 L76.5,38.7 L60.4,52 L65.6,72.3 L48,61 L30.4,72.3 L35.6,52 L19.5,38.7 L40.4,37.5 Z\" />\n <path d=\"M78,14 L81,20 L78,26 L75,20 Z\" opacity=\"0.55\" />\n <path d=\"M16,64 L19,70 L16,76 L13,70 Z\" opacity=\"0.55\" />\n </svg>\n }\n @case ('checklist') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"24\" y=\"18\" width=\"48\" height=\"64\" rx=\"6\" />\n <rect x=\"38\" y=\"12\" width=\"20\" height=\"10\" rx=\"3\" />\n <line x1=\"34\" y1=\"38\" x2=\"62\" y2=\"38\" />\n <path d=\"M32 50 l4 4 l8-8\" />\n <line x1=\"46\" y1=\"52\" x2=\"62\" y2=\"52\" />\n <line x1=\"34\" y1=\"66\" x2=\"62\" y2=\"66\" opacity=\"0.55\" />\n </svg>\n }\n @case ('merge') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"24\" cy=\"22\" r=\"7\" />\n <circle cx=\"72\" cy=\"22\" r=\"7\" />\n <circle cx=\"48\" cy=\"76\" r=\"8\" />\n <path d=\"M24 29 V50 Q24 69 39 72\" />\n <path d=\"M72 29 V50 Q72 69 57 72\" />\n </svg>\n }\n @case ('pipeline') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"22\" cy=\"68\" r=\"12\" />\n <path d=\"M17 60 L29 68 L17 76 Z\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M29 58 L44 38\" />\n <circle cx=\"50\" cy=\"30\" r=\"10\" />\n <path d=\"M56 38 L70 54\" />\n <circle cx=\"76\" cy=\"62\" r=\"10\" />\n </svg>\n }\n @case ('tag') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M18 20 H54 L82 48 L54 76 H18 Q14 76 14 72 V24 Q14 20 18 20 Z\" />\n <circle cx=\"34\" cy=\"36\" r=\"5\" />\n </svg>\n }\n @case ('book') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M48 26 Q34 16 16 20 V72 Q34 68 48 78 Q62 68 80 72 V20 Q62 16 48 26 Z\" />\n <line x1=\"24\" y1=\"32\" x2=\"40\" y2=\"30\" />\n <line x1=\"24\" y1=\"42\" x2=\"40\" y2=\"40\" />\n <line x1=\"56\" y1=\"30\" x2=\"72\" y2=\"32\" />\n <line x1=\"56\" y1=\"40\" x2=\"72\" y2=\"42\" />\n </svg>\n }\n @case ('server') {\n <svg viewBox=\"0 0 96 96\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"14\" y=\"16\" width=\"68\" height=\"26\" rx=\"5\" />\n <rect x=\"14\" y=\"54\" width=\"68\" height=\"26\" rx=\"5\" />\n <circle cx=\"26\" cy=\"29\" r=\"3\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"26\" cy=\"67\" r=\"3\" fill=\"currentColor\" stroke=\"none\" />\n <line x1=\"38\" y1=\"29\" x2=\"70\" y2=\"29\" opacity=\"0.55\" />\n <line x1=\"38\" y1=\"67\" x2=\"70\" y2=\"67\" opacity=\"0.55\" />\n </svg>\n }\n }\n </div>\n <p class=\"gbt-empty-state__heading\">{{ heading() }}</p>\n @if (message()) {\n <p class=\"gbt-empty-state__message\">{{ message() }}</p>\n }\n <div class=\"gbt-empty-state__action\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../icon/icon'\n\nlet nextInputId = 0\n\n@Component({\n selector: 'gbt-input',\n standalone: true,\n imports: [Icon],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GbtInput),\n multi: true,\n },\n ],\n})\nexport class GbtInput implements ControlValueAccessor {\n id = input<string>(`gbt-input-${++nextInputId}`)\n label = input<string>('')\n type = input<'text' | 'password' | 'email'>('text')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n autocomplete = input<string>('off')\n\n showPasswordLabel = input<string>('Show password')\n\n hidePasswordLabel = input<string>('Hide password')\n\n committed = output<string>()\n\n protected readonly value = signal('')\n protected readonly passwordVisible = signal(false)\n protected readonly effectiveType = computed(() => {\n if (this.type() !== 'password') {\n return this.type()\n }\n return this.passwordVisible() ? 'text' : 'password'\n })\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n\n protected togglePasswordVisibility(): void {\n this.passwordVisible.update((visible) => !visible)\n }\n}\n","<div class=\"gbt-input\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-input__wrapper\">\n <input\n [id]=\"id()\"\n [type]=\"effectiveType()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [attr.autocomplete]=\"autocomplete()\"\n [value]=\"value()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (type() === 'password') {\n <button\n type=\"button\"\n class=\"gbt-input__toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"passwordVisible() ? hidePasswordLabel() : showPasswordLabel()\"\n >\n <gbt-icon [name]=\"passwordVisible() ? 'eye-off' : 'eye'\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Tag } from '../../atoms/tag/tag'\n\nexport interface SelectOption<T = string> {\n value: T\n label: string\n icon?: string\n color?: string\n}\n\nlet nextSelectId = 0\n\n@Component({\n selector: 'gbt-select',\n standalone: true,\n imports: [Icon, Tag],\n templateUrl: './select.html',\n styleUrl: './select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n '[class.gbt-select--sm]': \"size() === 'sm'\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Select),\n multi: true,\n },\n ],\n})\nexport class Select<T = string> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-select-${++nextSelectId}`)\n label = input<string>('')\n size = input<'md' | 'sm'>('md')\n options = input.required<SelectOption<T>[]>()\n multiple = input(false, { transform: booleanAttribute })\n chips = input(false, { transform: booleanAttribute })\n placeholder = input<string>('Select…')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n selectedCountLabel = input<(count: number) => string>((count) => `${count} selected`)\n chipRemoveLabel = input<(label: string) => string>((label) => `Remove ${label}`)\n\n protected readonly open = signal(false)\n protected readonly activeIndex = signal(-1)\n protected readonly selected = signal<T[]>([])\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n private readonly formDisabled = signal(false)\n\n protected readonly labelId = computed(() => `${this.id()}-label`)\n protected readonly chipsId = computed(() => `${this.id()}-chips`)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T | T[] | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | T[] | null): void {\n if (this.multiple()) {\n this.selected.set(Array.isArray(value) ? (value as T[]) : [])\n } else {\n this.selected.set(value === null || value === undefined ? [] : [value as T])\n }\n }\n\n registerOnChange(fn: (value: T | T[] | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected readonly selectedOptions = computed(() => {\n const selected = this.selected()\n return this.options().filter((option) => selected.includes(option.value))\n })\n\n protected readonly triggerLabel = computed(() => {\n const opts = this.selectedOptions()\n if (opts.length === 0) {\n return this.placeholder()\n }\n if (this.chips() && this.multiple()) {\n return this.placeholder()\n }\n if (this.multiple() && opts.length > 1) {\n return this.selectedCountLabel()(opts.length)\n }\n return opts[0].label\n })\n\n protected readonly chipsVisible = computed(\n () => this.chips() && this.multiple() && this.selectedOptions().length > 0,\n )\n\n /**\n * In chips mode the trigger keeps showing the placeholder, so the selection\n * is conveyed to assistive technology by describing the trigger with the\n * chip row itself. The error message keeps its own id in the list.\n */\n protected readonly describedBy = computed(() => {\n const ids: string[] = []\n if (this.chipsVisible()) {\n ids.push(this.chipsId())\n }\n if (this.errorMessage()) {\n ids.push(`${this.id()}-error`)\n }\n return ids.length > 0 ? ids.join(' ') : null\n })\n\n protected readonly triggerIcon = computed(() => {\n const opts = this.selectedOptions()\n return opts.length === 1 ? opts[0].icon : undefined\n })\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.activeIndex() >= 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n protected isSelected(value: T): boolean {\n return this.selected().includes(value)\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n this.activeIndex.set(\n Math.max(\n 0,\n this.options().findIndex((o) => this.isSelected(o.value)),\n ),\n )\n this.updatePanelPosition()\n } else {\n this.onTouched()\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-select__trigger',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n // In chips mode the chip row sits between the trigger and the panel.\n // Anchoring the panel to the trigger alone would lay it over the chips,\n // whose remove buttons are focusable — WCAG 2.4.11 \"focus not obscured\".\n const chipRow = this.elementRef.nativeElement.querySelector(\n '.gbt-select__chips',\n ) as HTMLElement | null\n const anchorBottom = chipRow\n ? Math.max(rect.bottom, chipRow.getBoundingClientRect().bottom)\n : rect.bottom\n this.panelStyle.set({\n top: `${anchorBottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n /**\n * Removes the chip at `index`. Refuses to mutate anything while the control\n * is disabled (the remove buttons are not rendered then, but a programmatic\n * caller must not be able to bypass the disabled state either), and moves\n * focus off the button it is about to destroy — otherwise focus falls back\n * to `<body>`.\n */\n protected removeChip(value: T, index: number): void {\n if (this.isDisabled()) {\n return\n }\n const host = this.elementRef.nativeElement as HTMLElement\n const removeButtons = Array.from(\n host.querySelectorAll<HTMLElement>('.gbt-select__chips .gbt-tag__remove'),\n )\n // `@for` tracks options by value, so the surviving chips keep their DOM\n // nodes across this removal — the element resolved here is still the right\n // one once the view updates.\n const nextFocus =\n removeButtons[index + 1] ??\n removeButtons[index - 1] ??\n host.querySelector<HTMLElement>('.gbt-select__trigger')\n this.selectOption(value)\n nextFocus?.focus()\n }\n\n protected selectOption(value: T): void {\n if (this.multiple()) {\n const current = this.selected()\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n this.selected.set(next)\n this.onChange(next)\n // A chip can be removed without ever opening the panel, so this is the\n // only place that marks the control as touched in that flow.\n this.onTouched()\n } else {\n this.selected.set([value])\n this.onChange(value)\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target)) {\n this.open.set(false)\n this.onTouched()\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleOpen()\n }\n return\n }\n const options = this.options()\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n this.onTouched()\n break\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, options.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter':\n case ' ': {\n event.preventDefault()\n const active = options[this.activeIndex()]\n if (active) {\n this.selectOption(active.value)\n }\n break\n }\n }\n }\n}\n","<div class=\"gbt-select\" [class.gbt-select--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [id]=\"labelId()\" [for]=\"id()\" class=\"gbt-select__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-select__trigger\"\n [class.gbt-select__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-labelledby]=\"label() ? labelId() + ' ' + id() : null\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"describedBy()\"\n (click)=\"toggleOpen()\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" class=\"gbt-select__trigger-icon\" aria-hidden=\"true\" />\n }\n <span\n class=\"gbt-select__trigger-label\"\n [class.gbt-select__trigger-label--placeholder]=\"selectedOptions().length === 0\"\n >\n {{ triggerLabel() }}\n </span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-select__chevron\" aria-hidden=\"true\" />\n </button>\n @if (chipsVisible()) {\n <div class=\"gbt-select__chips\" [id]=\"chipsId()\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <gbt-tag\n [color]=\"option.color ?? '#6b7280'\"\n [removable]=\"!isDisabled()\"\n [disabled]=\"isDisabled()\"\n [removeLabel]=\"chipRemoveLabel()(option.label)\"\n (removed)=\"removeChip(option.value, i)\"\n >\n {{ option.label }}\n </gbt-tag>\n }\n </div>\n }\n @if (chips() && multiple()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ selectedCountLabel()(selectedOptions().length) }}\n </div>\n }\n @if (open() && panelStyle(); as style) {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-select__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n >\n @for (option of options(); track option.value; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-select__option\"\n [class.gbt-select__option--selected]=\"isSelected(option.value)\"\n [class.gbt-select__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n (click)=\"selectOption(option.value)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (option.icon) {\n <gbt-icon [name]=\"option.icon\" class=\"gbt-select__option-icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-select__option-label\">{{ option.label }}</span>\n @if (isSelected(option.value)) {\n <gbt-icon name=\"check\" class=\"gbt-select__option-check\" aria-hidden=\"true\" />\n }\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-select__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, output } from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Select, SelectOption } from '../select/select'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface ListToolbarSortOption<T extends string = string> {\n value: T\n label: string\n}\n\n@Component({\n selector: 'gbt-list-toolbar',\n standalone: true,\n imports: [ReactiveFormsModule, GbtInput, Select, Icon],\n templateUrl: './list-toolbar.html',\n styleUrl: './list-toolbar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListToolbar<T extends string = string> {\n searchValue = input<string>('')\n searchLabel = input.required<string>()\n searchPlaceholder = input<string>('')\n sortOptions = input.required<ListToolbarSortOption<T>[]>()\n sortValue = input.required<T>()\n sortDirection = input<'asc' | 'desc'>('asc')\n sortLabel = input<string>('Sort by')\n directionLabel = input<string>('Reverse sort direction')\n\n searchValueChange = output<string>()\n sortValueChange = output<T>()\n sortDirectionChange = output<'asc' | 'desc'>()\n\n // Plain `[ngModel]` bindings on the child `gbt-input`/`gbt-select` defer their\n // initial value to a control-value-accessor writeValue() call scheduled on a\n // microtask (an Angular Forms `NgModel` implementation detail), so the very\n // first render would briefly show the empty/placeholder state. Reactive\n // FormControls propagate `setValue()` to the CVA synchronously, so we mirror\n // the inputs onto internal controls instead and forward user edits back out.\n protected readonly searchControl = new FormControl<string>('', { nonNullable: true })\n protected readonly sortControl = new FormControl<T | null>(null)\n\n constructor() {\n effect(() => this.searchControl.setValue(this.searchValue(), { emitEvent: false }))\n effect(() => this.sortControl.setValue(this.sortValue(), { emitEvent: false }))\n\n this.searchControl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((value) => this.searchValueChange.emit(value))\n\n this.sortControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== null && value !== this.sortValue()) {\n this.sortValueChange.emit(value)\n }\n })\n }\n\n protected asSelectOptions(options: ListToolbarSortOption<T>[]): SelectOption<T>[] {\n return options\n }\n\n protected toggleDirection(): void {\n this.sortDirectionChange.emit(this.sortDirection() === 'asc' ? 'desc' : 'asc')\n }\n}\n","<div class=\"gbt-list-toolbar\">\n <gbt-input\n class=\"gbt-list-toolbar__search\"\n [label]=\"searchLabel()\"\n [placeholder]=\"searchPlaceholder()\"\n [formControl]=\"searchControl\"\n />\n <gbt-select\n class=\"gbt-list-toolbar__sort\"\n [label]=\"sortLabel()\"\n [options]=\"asSelectOptions(sortOptions())\"\n [formControl]=\"sortControl\"\n />\n <button\n type=\"button\"\n class=\"gbt-list-toolbar__direction\"\n (click)=\"toggleDirection()\"\n [attr.aria-label]=\"directionLabel()\"\n [attr.aria-pressed]=\"sortDirection() === 'desc'\"\n >\n <gbt-icon [name]=\"sortDirection() === 'asc' ? 'arrow-up' : 'arrow-down'\" />\n </button>\n</div>\n","import { NgTemplateOutlet } from '@angular/common'\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-card',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {\n hoverable = input(false, { transform: booleanAttribute })\n heading = input<string>('')\n icon = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n\n protected readonly cardClass = computed(\n () => 'gbt-card' + (this.hoverable() ? ' gbt-card--hoverable' : ''),\n )\n}\n","<div [class]=\"cardClass()\">\n @if (heading()) {\n <div class=\"gbt-card__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h1>\n }\n @case (3) {\n <h3 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h3>\n }\n @case (4) {\n <h4 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h4>\n }\n @case (5) {\n <h5 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h5>\n }\n @case (6) {\n <h6 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h6>\n }\n @default {\n <h2 class=\"gbt-card__title\"><ng-container *ngTemplateOutlet=\"headingContent\" /></h2>\n }\n }\n <ng-content select=\"[card-header-actions]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n</div>\n<ng-template #headingContent>\n @if (icon()) {\n <gbt-icon [name]=\"icon()\" aria-hidden=\"true\" />\n }\n {{ heading() }}\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextCheckboxId = 0\n\n@Component({\n selector: 'gbt-checkbox',\n standalone: true,\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Checkbox),\n multi: true,\n },\n ],\n})\nexport class Checkbox implements ControlValueAccessor {\n id = input<string>(`gbt-checkbox-${++nextCheckboxId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-checkbox\" [class.gbt-checkbox--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\n@Component({\n selector: 'gbt-modal',\n standalone: true,\n imports: [Icon],\n templateUrl: './modal.html',\n styleUrl: './modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal implements OnDestroy {\n isOpen = input.required<boolean>()\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n private readonly dialog = viewChild<ElementRef<HTMLElement>>('dialog')\n\n private previouslyFocused: HTMLElement | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.dialog()?.nativeElement.focus())\n } else if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n })\n }\n\n ngOnDestroy(): void {\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onDialogKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const dialog = this.dialog()?.nativeElement\n if (!dialog) {\n return\n }\n const focusable = dialog.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (isOpen()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div class=\"gbt-modal__backdrop\" (click)=\"onBackdropClick($event)\">\n <div\n class=\"gbt-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n #dialog\n (keydown)=\"onDialogKeydown($event)\"\n >\n <header class=\"gbt-modal__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-modal__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-modal__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-modal__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-modal__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-modal__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-modal__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-modal__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-modal__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n effect,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type DrawerEdge = 'right' | 'left' | 'top' | 'bottom'\n\nconst CLOSE_ANIMATION_MS = 200\n\n@Component({\n selector: 'gbt-drawer',\n standalone: true,\n imports: [Icon],\n templateUrl: './drawer.html',\n styleUrl: './drawer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Drawer implements OnDestroy {\n isOpen = input.required<boolean>()\n edge = input<DrawerEdge>('right')\n heading = input<string>('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n closeLabel = input<string>('Close')\n\n closed = output<void>()\n\n protected readonly rendered = signal(false)\n\n private readonly panel = viewChild<ElementRef<HTMLElement>>('panel')\n\n private previouslyFocused: HTMLElement | null = null\n private closeTimer: ReturnType<typeof setTimeout> | null = null\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer)\n this.closeTimer = null\n }\n this.rendered.set(true)\n this.previouslyFocused = document.activeElement as HTMLElement | null\n queueMicrotask(() => this.panel()?.nativeElement.focus())\n } else if (this.rendered()) {\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null\n this.rendered.set(false)\n if (this.previouslyFocused) {\n const target = this.previouslyFocused\n this.previouslyFocused = null\n target.focus()\n }\n }, CLOSE_ANIMATION_MS)\n }\n })\n }\n\n ngOnDestroy(): void {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer)\n }\n this.previouslyFocused?.focus()\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape(): void {\n if (this.isOpen()) {\n this.closed.emit()\n }\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit()\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return\n }\n const panel = this.panel()?.nativeElement\n if (!panel) {\n return\n }\n const focusable = panel.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) {\n return\n }\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n","@if (rendered()) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"gbt-drawer__backdrop\"\n [class.gbt-drawer__backdrop--closing]=\"!isOpen()\"\n (click)=\"onBackdropClick($event)\"\n >\n <div\n #panel\n class=\"gbt-drawer__panel\"\n [class.gbt-drawer__panel--closing]=\"!isOpen()\"\n [attr.data-edge]=\"edge()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"heading() || null\"\n tabindex=\"-1\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n <header class=\"gbt-drawer__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-drawer__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-drawer__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-drawer__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-drawer__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-drawer__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-drawer__title\">{{ heading() }}</h2>\n }\n }\n <button\n type=\"button\"\n class=\"gbt-drawer__close\"\n (click)=\"closed.emit()\"\n [attr.aria-label]=\"closeLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"gbt-drawer__body\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, booleanAttribute, input, output } from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\n\nexport interface TableColumn<T> {\n key: string\n label: string\n format?: (row: T) => string\n cellTemplate?: TemplateRef<{ $implicit: T }>\n}\n\n@Component({\n selector: 'gbt-table',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './table.html',\n styleUrl: './table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table<T extends object> {\n data = input.required<T[]>()\n columns = input.required<TableColumn<T>[]>()\n trackBy = input<((row: T) => unknown) | null>(null)\n emptyMessage = input<string>('No data')\n caption = input.required<string>()\n clickableRows = input(false, { transform: booleanAttribute })\n\n rowClick = output<T>()\n\n protected trackRow = (index: number, row: T): unknown => {\n const identify = this.trackBy()\n return identify ? identify(row) : index\n }\n\n protected onRowKeydown(event: KeyboardEvent, row: T): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.rowClick.emit(row)\n }\n }\n\n protected cellValue(row: T, column: TableColumn<T>): unknown {\n return column.format ? column.format(row) : (row as Record<string, unknown>)[column.key]\n }\n}\n","<table class=\"gbt-table\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th scope=\"col\">{{ column.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track trackRow($index, row)) {\n <tr\n [class.gbt-table__row--clickable]=\"clickableRows()\"\n [attr.tabindex]=\"clickableRows() ? 0 : null\"\n (click)=\"clickableRows() && rowClick.emit(row)\"\n (keydown)=\"clickableRows() && onRowKeydown($event, row)\"\n >\n @for (column of columns(); track column.key) {\n <td>\n @if (column.cellTemplate) {\n <ng-container [ngTemplateOutlet]=\"column.cellTemplate\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n } @else {\n {{ cellValue(row, column) }}\n }\n </td>\n }\n </tr>\n } @empty {\n <tr class=\"gbt-table__empty\">\n <td [attr.colspan]=\"columns().length\">{{ emptyMessage() }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport interface SearchResultCategory<T = unknown> {\n label: string\n icon?: string\n items: T[]\n}\n\nlet nextSearchBarId = 0\n\n@Component({\n selector: 'gbt-search-bar',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './search-bar.html',\n styleUrl: './search-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown)': 'onNavigationKeydown($event)',\n '(document:click)': 'handleClickOutside($event)',\n },\n})\nexport class SearchBar<T = unknown> {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-search-bar-${++nextSearchBarId}`)\n results = input<T[] | null>(null)\n groupedResults = input<SearchResultCategory<T>[] | null>(null)\n placeholder = input<string>('Search…')\n ariaLabel = input<string>('')\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n keepQueryOnSelect = input(false)\n noResultsMessage = input<string>('No results')\n noResultsHint = input<string>('Try a different search.')\n clearLabel = input<string>('Clear search')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n navigateHint = input<string>('Navigate')\n selectHint = input<string>('Select')\n closeHint = input<string>('Close')\n\n queryChange = output<string>()\n itemSelected = output<T>()\n clear = output<void>()\n\n protected readonly isFocused = signal(false)\n protected readonly showResults = signal(false)\n protected readonly searchQuery = signal('')\n protected readonly activeIndex = signal(0)\n\n protected readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput')\n\n private readonly hasGroupedResultsInput = computed(() => !!this.groupedResults())\n\n protected readonly allVisibleItems = computed<T[]>(() => {\n if (this.groupedResults()) {\n return this.groupedResults()!.flatMap((category) => category.items)\n }\n return this.results() ?? []\n })\n\n protected readonly showOverlay = computed(() => this.showResults())\n\n protected readonly panelId = computed(() => `${this.id()}-panel`)\n\n protected itemDomId(index: number): string {\n return `${this.id()}-item-${index}`\n }\n\n protected readonly indexedGroupedResults = computed(() => {\n const grouped = this.groupedResults()\n if (!grouped) return null\n const format = this.displayFn()\n let index = 0\n return grouped.map((category) => ({\n ...category,\n indexedItems: category.items.map((item) => ({\n item,\n index: index++,\n formatted: format(item),\n })),\n }))\n })\n\n protected readonly indexedResults = computed(() => {\n const format = this.displayFn()\n return (this.results() ?? []).map((item, index) => ({ item, index, formatted: format(item) }))\n })\n\n protected readonly activeItemDomId = computed(() => {\n if (!this.showOverlay()) return null\n const idx = this.activeIndex()\n\n return idx >= 0 && idx < this.allVisibleItems().length ? this.itemDomId(idx) : null\n })\n\n protected readonly resultCount = computed(() =>\n this.showOverlay() ? this.allVisibleItems().length : 0,\n )\n\n protected readonly hasGroupedResults = computed(\n () => this.hasGroupedResultsInput() && !!this.groupedResults()?.some((c) => c.items.length > 0),\n )\n\n protected readonly hasNoResults = computed(() => this.allVisibleItems().length === 0)\n\n protected onNavigationKeydown(event: KeyboardEvent): void {\n if (!this.isFocused() || !this.showOverlay()) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n this.blurSearch()\n return\n }\n\n const items = this.allVisibleItems()\n if (items.length === 0) return\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, items.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n const active = items[this.activeIndex()]\n if (!active) break\n event.preventDefault()\n this.onSelect(active)\n break\n }\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.showResults.set(false)\n }\n }\n\n focusSearch(): void {\n this.searchInput()?.nativeElement.focus()\n }\n\n protected blurSearch(): void {\n this.searchInput()?.nativeElement.blur()\n this.showResults.set(false)\n }\n\n protected onFocus(): void {\n this.isFocused.set(true)\n if (this.searchQuery().length > 0) this.showResults.set(true)\n }\n\n protected onBlur(): void {\n this.isFocused.set(false)\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.showResults.set(false)\n }\n }, 200)\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.searchQuery.set(value)\n this.activeIndex.set(0)\n this.showResults.set(value.length > 0)\n\n this.queryChange.emit(value)\n }\n\n protected onClear(): void {\n this.searchQuery.set('')\n this.activeIndex.set(0)\n this.showResults.set(false)\n this.clear.emit()\n this.focusSearch()\n }\n\n protected onSelect(item: T): void {\n this.itemSelected.emit(item)\n this.showResults.set(false)\n this.searchQuery.set(this.keepQueryOnSelect() ? this.displayFn()(item) : '')\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n<div class=\"gbt-sb-trigger\" [class.gbt-sb-trigger--open]=\"isFocused()\" (click)=\"focusSearch()\">\n <gbt-icon name=\"search\" class=\"gbt-sb-trigger__icon\" aria-hidden=\"true\" />\n <input\n #searchInput\n type=\"text\"\n role=\"combobox\"\n class=\"gbt-sb-trigger__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel() || placeholder()\"\n [value]=\"searchQuery()\"\n [attr.aria-expanded]=\"showOverlay()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"showOverlay() ? panelId() : null\"\n [attr.aria-activedescendant]=\"activeItemDomId()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (input)=\"onInput($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (searchQuery().length > 0) {\n <button\n type=\"button\"\n class=\"gbt-sb-trigger__clear\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"clearLabel()\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n }\n</div>\n@if (showOverlay()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n {{ resultsAnnouncement()(resultCount()) }}\n </div>\n}\n@if (showOverlay()) {\n <div class=\"gbt-sb-backdrop\" (click)=\"blurSearch()\" aria-hidden=\"true\"></div>\n <ng-template #footer>\n <div class=\"gbt-sb-footer\" aria-hidden=\"true\">\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↑</kbd>\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↓</kbd>\n {{ navigateHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">↵</kbd>\n {{ selectHint() }}\n </span>\n <span class=\"gbt-sb-footer__hint\">\n <kbd class=\"gbt-sb-kbd gbt-sb-kbd--sm\">Esc</kbd>\n {{ closeHint() }}\n </span>\n </div>\n </ng-template>\n @if (hasNoResults()) {\n <div [id]=\"panelId()\" class=\"gbt-sb-panel\">\n <div class=\"gbt-sb-state\" role=\"status\">\n <gbt-icon name=\"search\" class=\"gbt-sb-state__icon\" aria-hidden=\"true\" />\n <span>{{ noResultsMessage() }}</span>\n <p class=\"gbt-sb-state__hint\">{{ noResultsHint() }}</p>\n </div>\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n } @else {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n [id]=\"panelId()\"\n class=\"gbt-sb-panel\"\n role=\"listbox\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (hasGroupedResults()) {\n <div class=\"gbt-sb-list\">\n @for (category of indexedGroupedResults(); track category.label) {\n @if (category.items.length > 0) {\n <div class=\"gbt-sb-group-label\">\n @if (category.icon) {\n <gbt-icon [name]=\"category.icon\" aria-hidden=\"true\" />\n }\n {{ category.label }}\n <span class=\"gbt-sb-group-count\" aria-hidden=\"true\">{{\n category.items.length\n }}</span>\n </div>\n @for (entry of category.indexedItems; track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n @if (category.icon) {\n <gbt-icon\n [name]=\"category.icon\"\n class=\"gbt-sb-item__icon\"\n aria-hidden=\"true\"\n />\n }\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n }\n }\n </div>\n } @else if (results() && results()!.length > 0) {\n <div class=\"gbt-sb-list\">\n @for (entry of indexedResults(); track entry.index) {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"itemDomId(entry.index)\"\n class=\"gbt-sb-item\"\n [attr.aria-selected]=\"entry.index === activeIndex()\"\n [class.gbt-sb-item--active]=\"entry.index === activeIndex()\"\n (click)=\"onSelect(entry.item)\"\n (mouseenter)=\"activeIndex.set(entry.index)\"\n >\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: entry.item }\"\n ></ng-container>\n } @else {\n <span class=\"gbt-sb-item__label\">{{ entry.formatted }}</span>\n }\n </button>\n }\n </div>\n }\n\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core'\n\n@Component({\n selector: 'gbt-tab',\n standalone: true,\n imports: [],\n template: `<ng-content></ng-content>`,\n host: {\n role: 'tabpanel',\n '[style.display]': \"active() ? null : 'none'\",\n '[id]': \"groupId() + '-panel-' + index()\",\n '[attr.aria-labelledby]': \"groupId() + '-trigger-' + index()\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tab {\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n input,\n model,\n viewChildren,\n} from '@angular/core'\nimport { Tab } from '../tab/tab'\n\nlet nextTabsId = 0\n\n@Component({\n selector: 'gbt-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs {\n id = input<string>(`gbt-tabs-${++nextTabsId}`)\n\n protected readonly tabs = contentChildren(Tab)\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger')\n\n activeIndex = model(0)\n\n constructor() {\n effect(() => {\n const tabs = this.tabs()\n const active = this.activeIndex()\n const groupId = this.id()\n tabs.forEach((tab, i) => tab.setState(i, i === active, groupId))\n })\n\n // Self-heals an out-of-range `activeIndex` — e.g. a consumer binds it to\n // a URL query parameter and the stored value no longer matches any tab —\n // instead of leaving every panel hidden and every trigger out of the\n // keyboard tab order with no way to reach the component at all.\n effect(() => {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n const current = this.activeIndex()\n const clamped = Math.min(Math.max(current, 0), count - 1)\n if (clamped !== current) {\n this.activeIndex.set(clamped)\n }\n })\n }\n\n protected select(index: number): void {\n this.activeIndex.set(index)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const count = this.tabs().length\n if (count === 0) {\n return\n }\n let next: number | null = null\n if (event.key === 'ArrowRight') {\n next = (index + 1) % count\n } else if (event.key === 'ArrowLeft') {\n next = (index - 1 + count) % count\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(next)\n this.triggers()[next]?.nativeElement.focus()\n }\n}\n","<div class=\"gbt-tabs\">\n <div class=\"gbt-tabs__list\" role=\"tablist\">\n @for (tab of tabs(); track tab; let i = $index) {\n <button\n #trigger\n type=\"button\"\n class=\"gbt-tabs__trigger\"\n [class.gbt-tabs__trigger--active]=\"activeIndex() === i\"\n role=\"tab\"\n [id]=\"id() + '-trigger-' + i\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"id() + '-panel-' + i\"\n [tabIndex]=\"activeIndex() === i ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <div class=\"gbt-tabs__panels\">\n <ng-content></ng-content>\n </div>\n</div>\n","export interface Scale<T> {\n map(value: T): number\n invert(pixel: number): T\n readonly domain: [T, T]\n readonly range: [number, number]\n}\n\nexport function linearScale(domain: [number, number], range: [number, number]): Scale<number> {\n const [d0, d1] = domain\n const [r0, r1] = range\n const span = d1 - d0\n\n const ratio = span === 0 ? 0 : (r1 - r0) / span\n return {\n domain,\n range,\n map: (value) => r0 + (value - d0) * ratio,\n invert: (pixel) => (ratio === 0 ? d0 : d0 + (pixel - r0) / ratio),\n }\n}\n\nexport function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date> {\n const numeric = linearScale([domain[0].getTime(), domain[1].getTime()], range)\n return {\n domain,\n range,\n map: (value) => numeric.map(value.getTime()),\n invert: (pixel) => new Date(numeric.invert(pixel)),\n }\n}\n\nexport interface BandScale {\n map(value: string): number\n invert(pixel: number): string | null\n readonly bandwidth: number\n readonly domain: string[]\n readonly range: [number, number]\n}\n\nexport function bandScale(domain: string[], range: [number, number], padding = 0): BandScale {\n const [r0, r1] = range\n const step = domain.length === 0 ? 0 : (r1 - r0) / domain.length\n\n const gutter = Math.min(Math.max(padding, 0), 1)\n const bandwidth = step * (1 - gutter)\n return {\n domain,\n range,\n bandwidth,\n map: (value) => {\n const index = domain.indexOf(value)\n\n return index === -1 ? Number.NaN : r0 + index * step\n },\n invert: (pixel) => {\n if (step === 0) return null\n const index = Math.floor((pixel - r0) / step)\n return index >= 0 && index < domain.length ? domain[index] : null\n },\n }\n}\n","export function niceTicks(min: number, max: number, count: number): number[] {\n if (!Number.isFinite(min) || !Number.isFinite(max)) return []\n\n if (min === max) return [min]\n\n if (max < min) return niceTicks(max, min, count)\n\n const rawStep = (max - min) / Math.max(1, count)\n const magnitude = 10 ** Math.floor(Math.log10(rawStep))\n const normalized = rawStep / magnitude\n const step = magnitude * (normalized <= 1 ? 1 : normalized <= 2 ? 2 : normalized <= 5 ? 5 : 10)\n\n const first = Math.floor(min / step) * step\n const last = Math.ceil(max / step) * step\n\n const decimals = Math.max(0, -Math.floor(Math.log10(step)))\n\n const ticks: number[] = []\n\n for (let value = first; value <= last + step / 1e9; value += step) {\n ticks.push(Number(value.toFixed(decimals)))\n }\n return ticks\n}\n\nexport type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'\n\nexport interface TimeTicks {\n readonly values: Date[]\n readonly unit: TimeUnit\n format(date: Date, locale: string): string\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\n\nconst STEPS: { ms: number; unit: TimeUnit; months?: number }[] = [\n { ms: SECOND, unit: 'second' },\n { ms: 5 * SECOND, unit: 'second' },\n { ms: 15 * SECOND, unit: 'second' },\n { ms: 30 * SECOND, unit: 'second' },\n { ms: MINUTE, unit: 'minute' },\n { ms: 5 * MINUTE, unit: 'minute' },\n { ms: 15 * MINUTE, unit: 'minute' },\n { ms: 30 * MINUTE, unit: 'minute' },\n { ms: HOUR, unit: 'hour' },\n { ms: 3 * HOUR, unit: 'hour' },\n { ms: 6 * HOUR, unit: 'hour' },\n { ms: 12 * HOUR, unit: 'hour' },\n { ms: DAY, unit: 'day' },\n { ms: 2 * DAY, unit: 'day' },\n { ms: 7 * DAY, unit: 'day' },\n { ms: 30 * DAY, unit: 'month', months: 1 },\n { ms: 90 * DAY, unit: 'month', months: 3 },\n { ms: 365 * DAY, unit: 'year', months: 12 },\n]\n\nconst FORMATS: Record<TimeUnit, Intl.DateTimeFormatOptions> = {\n second: { hour: '2-digit', minute: '2-digit', second: '2-digit' },\n minute: { hour: '2-digit', minute: '2-digit' },\n hour: { hour: '2-digit', minute: '2-digit' },\n day: { day: '2-digit', month: '2-digit' },\n month: { month: 'short', year: 'numeric' },\n year: { year: 'numeric' },\n}\n\nconst MIN_PIXELS_PER_TICK = 60\n\nexport function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks {\n const span = end.getTime() - start.getTime()\n const makeFormatter = (unit: TimeUnit) => (date: Date, locale: string) =>\n new Intl.DateTimeFormat(locale, { ...FORMATS[unit], timeZone: 'UTC' }).format(date)\n\n if (span <= 0) {\n return { values: [start], unit: 'day', format: makeFormatter('day') }\n }\n\n const maxTicks = Math.max(2, Math.floor(pixelWidth / MIN_PIXELS_PER_TICK))\n\n const coarsest = STEPS[STEPS.length - 1]\n const chosen = STEPS.find((step) => span / step.ms + 1 <= maxTicks) ?? {\n ...coarsest,\n months: coarsest.months! * Math.max(1, Math.ceil((span / coarsest.ms + 1) / maxTicks)),\n }\n\n const values: Date[] = []\n if (chosen.months) {\n const step = chosen.months\n const cursor =\n step >= 12\n ? new Date(Date.UTC(Math.floor(start.getUTCFullYear() / (step / 12)) * (step / 12), 0, 1))\n : new Date(\n Date.UTC(start.getUTCFullYear(), Math.floor(start.getUTCMonth() / step) * step, 1),\n )\n while (cursor.getTime() < start.getTime()) cursor.setUTCMonth(cursor.getUTCMonth() + step)\n while (cursor.getTime() <= end.getTime()) {\n values.push(new Date(cursor))\n cursor.setUTCMonth(cursor.getUTCMonth() + step)\n }\n } else {\n const first = Math.ceil(start.getTime() / chosen.ms) * chosen.ms\n for (let t = first; t <= end.getTime(); t += chosen.ms) {\n values.push(new Date(t))\n }\n }\n\n if (values.length === 0) values.push(start)\n\n return { values, unit: chosen.unit, format: makeFormatter(chosen.unit) }\n}\n","export function formatNumber(value: number, locale: string, decimals?: number): string {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(value)\n}\n\nexport function formatCompact(value: number, locale: string): string {\n return new Intl.NumberFormat(locale, {\n notation: 'compact',\n maximumFractionDigits: 1,\n }).format(value)\n}\n\nexport function formatDuration(ms: number, locale: string): string {\n if (ms < 1000) return `${formatNumber(Math.round(ms), locale)} ms`\n\n const totalSeconds = Math.round(ms / 1000)\n const hours = Math.floor(totalSeconds / 3600)\n const minutes = Math.floor((totalSeconds % 3600) / 60)\n const seconds = totalSeconds % 60\n const num = (value: number) => formatNumber(value, locale)\n\n if (hours > 0) return minutes > 0 ? `${num(hours)} h ${num(minutes)} min` : `${num(hours)} h`\n if (minutes > 0)\n return seconds > 0 ? `${num(minutes)} min ${num(seconds)} s` : `${num(minutes)} min`\n return `${num(seconds)} s`\n}\n\nexport function formatPercent(ratio: number, locale: string, decimals = 0): string {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(ratio)\n}\n","export interface Point {\n x: number\n y: number\n}\n\nconst round = (n: number): number => Number(n.toFixed(2))\n\nexport function linePath(points: Point[]): string {\n if (points.length === 0) return ''\n return points\n .map((point, index) => `${index === 0 ? 'M' : 'L'}${round(point.x)},${round(point.y)}`)\n .join('')\n}\n\nexport function areaPath(points: Point[], baseline: number): string {\n if (points.length === 0) return ''\n const last = points[points.length - 1]\n const first = points[0]\n return `${linePath(points)}L${round(last.x)},${round(baseline)}L${round(first.x)},${round(baseline)}Z`\n}\n\nexport interface Arc {\n startAngle: number\n endAngle: number\n innerRadius: number\n outerRadius: number\n}\n\nfunction arcPoint(radius: number, angle: number): Point {\n return { x: radius * Math.sin(angle), y: -radius * Math.cos(angle) }\n}\n\nfunction point(p: Point): string {\n return `${round(p.x)},${round(p.y)}`\n}\n\nconst FULL_CIRCLE = Math.PI * 2\n\nexport function arcPath(arc: Arc): string {\n const { startAngle, endAngle, innerRadius, outerRadius } = arc\n const span = endAngle - startAngle\n if (span <= 0) return ''\n if (span >= FULL_CIRCLE - 1e-9) {\n const mid = startAngle + Math.PI\n return (\n arcPath({ startAngle, endAngle: mid, innerRadius, outerRadius }) +\n arcPath({ startAngle: mid, endAngle: startAngle + FULL_CIRCLE, innerRadius, outerRadius })\n )\n }\n\n const largeArc = span > Math.PI ? 1 : 0\n const outerStart = arcPoint(outerRadius, startAngle)\n const outerEnd = arcPoint(outerRadius, endAngle)\n const outerArc = `A${round(outerRadius)},${round(outerRadius)} 0 ${largeArc},1 ${point(outerEnd)}`\n\n if (innerRadius <= 0) {\n return `M0,0L${point(outerStart)}${outerArc}Z`\n }\n\n const innerStart = arcPoint(innerRadius, startAngle)\n const innerEnd = arcPoint(innerRadius, endAngle)\n const innerArc = `A${round(innerRadius)},${round(innerRadius)} 0 ${largeArc},0 ${point(innerStart)}`\n return `M${point(outerStart)}${outerArc}L${point(innerEnd)}${innerArc}Z`\n}\n","export function nearestIndex(sorted: number[], target: number): number {\n if (sorted.length === 0) return -1\n\n let low = 0\n let high = sorted.length - 1\n while (low < high) {\n const mid = (low + high) >> 1\n if (sorted[mid] < target) low = mid + 1\n else high = mid\n }\n\n const previous = low - 1\n if (previous < 0) return low\n return target - sorted[previous] <= sorted[low] - target ? previous : low\n}\n","export const ESTIMATED_CHAR_WIDTH = 6.5\n\nexport const LABEL_GAP = 8\n\nexport function estimateLabelWidth(label: string): number {\n return label.length * ESTIMATED_CHAR_WIDTH\n}\n","import { Injectable, InjectionToken, computed, signal, type Signal } from '@angular/core'\nimport { bandScale, linearScale, timeScale, type BandScale, type Scale } from '../../../primitives'\n\nexport interface ChartMargin {\n top: number\n right: number\n bottom: number\n left: number\n}\n\nexport interface ChartBox {\n readonly width: number\n readonly height: number\n readonly margin: ChartMargin\n readonly innerWidth: number\n readonly innerHeight: number\n}\n\nexport type LinearAxisSpec = { kind: 'linear'; domain: [number, number] }\n\nexport type PointValue = number | Date | string\n\nexport type AxisSpec =\n | LinearAxisSpec\n | { kind: 'time'; domain: [Date, Date] }\n | { kind: 'band'; domain: string[]; padding?: number }\n\nconst EMPTY_BOX: ChartBox = {\n width: 0,\n height: 0,\n margin: { top: 0, right: 0, bottom: 0, left: 0 },\n innerWidth: 0,\n innerHeight: 0,\n}\n\nexport interface ChartReader {\n readonly box: Signal<ChartBox>\n readonly xSpec: Signal<AxisSpec>\n readonly ySpec: Signal<LinearAxisSpec>\n readonly xScale: Signal<Scale<number> | Scale<Date> | BandScale>\n readonly yScale: Signal<Scale<number>>\n readonly activeIndex: Signal<number | null>\n readonly pointValues: Signal<PointValue[]>\n readonly activePosition: Signal<number | null>\n}\n\nexport const CHART_CONTEXT = new InjectionToken<ChartReader>('gbt-chart-context')\n\n@Injectable()\nexport class ChartContext implements ChartReader {\n private readonly _box = signal<ChartBox>(EMPTY_BOX)\n private readonly _xSpec = signal<AxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _ySpec = signal<LinearAxisSpec>({ kind: 'linear', domain: [0, 1] })\n private readonly _activeIndex = signal<number | null>(null)\n private readonly _pointValues = signal<PointValue[]>([])\n\n readonly box = this._box.asReadonly()\n readonly xSpec = this._xSpec.asReadonly()\n readonly ySpec = this._ySpec.asReadonly()\n readonly activeIndex = this._activeIndex.asReadonly()\n readonly pointValues = this._pointValues.asReadonly()\n\n readonly xScale = computed<Scale<number> | Scale<Date> | BandScale>(() => {\n const spec = this._xSpec()\n const range: [number, number] = [0, this._box().innerWidth]\n if (spec.kind === 'time') return timeScale(spec.domain, range)\n if (spec.kind === 'band') return bandScale(spec.domain, range, spec.padding ?? 0)\n return linearScale(spec.domain, range)\n })\n\n readonly yScale = computed<Scale<number>>(() =>\n linearScale(this._ySpec().domain, [this._box().innerHeight, 0]),\n )\n\n readonly pointPositions = computed<number[]>(() => {\n const kind = this._xSpec().kind\n const scale = this.xScale()\n return this._pointValues().map((value) =>\n kind === 'band'\n ? (scale as BandScale).map(value as string) + (scale as BandScale).bandwidth / 2\n : (scale as Scale<number> | Scale<Date>).map(value as never),\n )\n })\n\n readonly activePosition = computed<number | null>(() => {\n const index = this._activeIndex()\n if (index === null) return null\n return this.pointPositions()[index] ?? null\n })\n\n setPointValues(values: PointValue[]): void {\n this._pointValues.set(values)\n }\n\n setGeometry(box: ChartBox): void {\n this._box.set(box)\n }\n\n setSpecs(x: AxisSpec, y: LinearAxisSpec): void {\n this._xSpec.set(x)\n this._ySpec.set(y)\n }\n\n setActiveIndex(index: number | null): void {\n this._activeIndex.set(index)\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport {\n CHART_CONTEXT,\n ChartContext,\n type AxisSpec,\n type ChartMargin,\n type LinearAxisSpec,\n type PointValue,\n} from '../chart-context/chart-context'\nimport { nearestIndex } from '../../../primitives'\n\nconst DEFAULT_MARGIN: ChartMargin = { top: 16, right: 8, bottom: 32, left: 48 }\n\n@Component({\n selector: 'gbt-chart-frame',\n standalone: true,\n imports: [],\n templateUrl: './chart-frame.html',\n styleUrl: './chart-frame.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ChartContext, { provide: CHART_CONTEXT, useExisting: ChartContext }],\n})\nexport class ChartFrame {\n private readonly context = inject(ChartContext)\n\n label = input.required<string>()\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n x = input.required<AxisSpec>()\n y = input.required<LinearAxisSpec>()\n margin = input<Partial<ChartMargin>>({})\n size = input<{ width: number; height: number } | null>(null)\n pointValues = input<PointValue[]>([])\n\n readonly activeIndexChange = output<number | null>()\n\n private readonly surface = viewChild.required<ElementRef<HTMLElement>>('surface')\n private readonly measured = signal<{ width: number; height: number } | null>(null)\n\n protected readonly ready = computed(() => this.context.box().innerWidth > 0)\n\n protected readonly viewBox = computed(() => {\n const b = this.context.box()\n return `0 0 ${b.width} ${b.height}`\n })\n\n protected readonly innerTransform = computed(() => {\n const m = this.context.box().margin\n return `translate(${m.left},${m.top})`\n })\n\n protected readonly activePosition = computed(() => this.context.activePosition())\n protected readonly innerHeight = computed(() => this.context.box().innerHeight)\n\n constructor() {\n effect(() => this.activeIndexChange.emit(this.context.activeIndex()))\n\n effect(() => {\n const margin = { ...DEFAULT_MARGIN, ...this.margin() }\n const size = this.size() ?? this.measured()\n const width = size?.width ?? 0\n const height = size?.height ?? 0\n this.context.setSpecs(this.x(), this.y())\n this.context.setPointValues(this.pointValues())\n this.context.setGeometry({\n width,\n height,\n margin,\n innerWidth: Math.max(0, width - margin.left - margin.right),\n innerHeight: Math.max(0, height - margin.top - margin.bottom),\n })\n })\n\n effect((onCleanup) => {\n if (this.size() || typeof ResizeObserver === 'undefined') return\n\n const element = this.surface().nativeElement\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0]?.contentRect\n if (rect) this.measured.set({ width: rect.width, height: rect.height })\n })\n observer.observe(element)\n onCleanup(() => observer.disconnect())\n })\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const count = this.pointValues().length\n if (count === 0) return\n\n const current = this.context.activeIndex()\n const last = count - 1\n\n switch (event.key) {\n case 'ArrowRight':\n this.context.setActiveIndex(current === null ? 0 : Math.min(last, current + 1))\n break\n case 'ArrowLeft':\n this.context.setActiveIndex(current === null ? last : Math.max(0, current - 1))\n break\n case 'Home':\n this.context.setActiveIndex(0)\n break\n case 'End':\n this.context.setActiveIndex(last)\n break\n case 'Escape':\n this.context.setActiveIndex(null)\n break\n default:\n return\n }\n\n event.preventDefault()\n }\n\n protected onBlur(): void {\n this.context.setActiveIndex(null)\n }\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.context.pointPositions()\n if (positions.length === 0) return\n\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect()\n const local = event.clientX - rect.left - this.context.box().margin.left\n\n this.context.setActiveIndex(nearestIndex(positions, local))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const surface = event.currentTarget as HTMLElement\n if (surface.ownerDocument.activeElement === surface) return\n this.context.setActiveIndex(null)\n }\n}\n","<div class=\"gbt-chart-frame\">\n @if (heading()) {\n <div class=\"gbt-chart-frame__header\">\n @switch (headingLevel()) {\n @case (1) {\n <h1 class=\"gbt-chart-frame__title\">{{ heading() }}</h1>\n }\n @case (3) {\n <h3 class=\"gbt-chart-frame__title\">{{ heading() }}</h3>\n }\n @case (4) {\n <h4 class=\"gbt-chart-frame__title\">{{ heading() }}</h4>\n }\n @case (5) {\n <h5 class=\"gbt-chart-frame__title\">{{ heading() }}</h5>\n }\n @case (6) {\n <h6 class=\"gbt-chart-frame__title\">{{ heading() }}</h6>\n }\n @default {\n <h2 class=\"gbt-chart-frame__title\">{{ heading() }}</h2>\n }\n }\n @if (headline()) {\n <p class=\"gbt-chart-frame__headline\">{{ headline() }}</p>\n }\n @if (trend()) {\n <p class=\"gbt-chart-frame__trend\">{{ trend() }}</p>\n }\n </div>\n }\n\n <div\n #surface\n class=\"gbt-chart-frame__surface\"\n [attr.tabindex]=\"ready() && pointValues().length > 0 ? 0 : null\"\n [attr.role]=\"ready() ? 'group' : null\"\n [attr.aria-label]=\"ready() ? label() : null\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n >\n @if (ready()) {\n <svg\n class=\"gbt-chart-frame__svg\"\n [attr.viewBox]=\"viewBox()\"\n role=\"presentation\"\n focusable=\"false\"\n >\n <g [attr.transform]=\"innerTransform()\">\n <ng-content select=\"[gbtChartLayer]\" />\n @if (activePosition() !== null) {\n <line\n class=\"gbt-chart-frame__guide\"\n [attr.x1]=\"activePosition()\"\n [attr.x2]=\"activePosition()\"\n y1=\"0\"\n [attr.y2]=\"innerHeight()\"\n aria-hidden=\"true\"\n />\n }\n </g>\n </svg>\n <ng-content select=\"gbt-chart-tooltip\" />\n }\n </div>\n <ng-content select=\"gbt-chart-empty\" />\n <ng-content select=\"gbt-chart-table\" />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n} from '@angular/core'\nimport { CHART_CONTEXT, type ChartReader } from '../chart-context/chart-context'\nimport {\n LABEL_GAP,\n estimateLabelWidth,\n formatCompact,\n niceTicks,\n timeTicks,\n type BandScale,\n type Scale,\n} from '../../../primitives'\n\ninterface Tick {\n key: string\n x: number\n y: number\n label: string\n\n date: string | null\n anchor: 'start' | 'middle' | 'end'\n}\n\n@Component({\n selector: 'g[gbtChartAxis]',\n standalone: true,\n imports: [],\n templateUrl: './chart-axis.html',\n styleUrl: './chart-axis.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.transform]': 'groupTransform()',\n '[attr.axis]': 'axis()',\n 'aria-hidden': 'true',\n },\n})\nexport class ChartAxis {\n private readonly context: ChartReader = inject(CHART_CONTEXT)\n\n axis = input.required<'x' | 'y'>()\n locale = input.required<string>()\n tickCount = input(5)\n format = input<((value: never) => string) | null>(null)\n grid = input(false, { transform: booleanAttribute })\n\n protected readonly groupTransform = computed(() => {\n const box = this.context.box()\n\n return this.axis() === 'x' ? `translate(0,${box.innerHeight})` : 'translate(0,0)'\n })\n\n protected readonly ticks = computed<Tick[]>(() => {\n if (this.axis() === 'y') return this.yTicks()\n const ticks = this.xTicks()\n\n if (this.context.xSpec().kind === 'band') return ticks\n\n const last = ticks.length - 1\n return ticks.map((tick, index) => ({\n ...tick,\n anchor: index === 0 ? 'start' : index === last ? 'end' : 'middle',\n }))\n })\n\n protected readonly gridLines = computed<number[]>(() => {\n if (!this.grid() || this.axis() !== 'y') return []\n return this.yTicks().map((tick) => tick.y - 4)\n })\n\n protected readonly innerWidth = computed(() => this.context.box().innerWidth)\n\n private yTicks(): Tick[] {\n const spec = this.context.ySpec()\n const scale = this.context.yScale()\n const custom = this.format()\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `y-${value}`,\n x: -8,\n y: scale.map(value) + 4,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'end',\n }))\n }\n\n private xTicks(): Tick[] {\n const spec = this.context.xSpec()\n const box = this.context.box()\n const custom = this.format()\n\n if (spec.kind === 'band') {\n const scale = this.context.xScale() as BandScale\n\n const labels = spec.domain.map((category) => (custom ? custom(category as never) : category))\n const step = spec.domain.length === 0 ? 0 : box.innerWidth / spec.domain.length\n const widest = labels.reduce((large, label) => Math.max(large, estimateLabelWidth(label)), 0)\n const keepEvery = Math.max(1, Math.ceil((widest + LABEL_GAP) / Math.max(step, 1)))\n\n return spec.domain\n .map((category, index) => ({\n key: `x-${category}`,\n x: scale.map(category) + scale.bandwidth / 2,\n y: 20,\n label: labels[index],\n date: null,\n anchor: 'middle' as const,\n }))\n .filter((_, index) => index % keepEvery === 0)\n }\n\n if (spec.kind === 'time') {\n const scale = this.context.xScale() as Scale<Date>\n const result = timeTicks(spec.domain[0], spec.domain[1], box.innerWidth)\n\n const fine = result.unit === 'hour' || result.unit === 'minute' || result.unit === 'second'\n const days = new Set(result.values.map((v) => v.toISOString().slice(0, 10)))\n const multiDay = days.size > 1\n const seen = new Set<string>()\n\n return result.values.map((value) => {\n const day = value.toISOString().slice(0, 10)\n\n const first = fine && multiDay && !seen.has(day)\n seen.add(day)\n\n return {\n key: `x-${value.getTime()}`,\n x: scale.map(value),\n y: first ? 14 : 20,\n label: custom ? custom(value as never) : result.format(value, this.locale()),\n date: first\n ? new Intl.DateTimeFormat(this.locale(), {\n day: '2-digit',\n month: '2-digit',\n timeZone: 'UTC',\n }).format(value)\n : null,\n anchor: 'middle',\n }\n })\n }\n\n const scale = this.context.xScale() as Scale<number>\n return niceTicks(spec.domain[0], spec.domain[1], this.tickCount()).map((value) => ({\n key: `x-${value}`,\n x: scale.map(value),\n y: 20,\n label: custom ? custom(value as never) : formatCompact(value, this.locale()),\n date: null,\n anchor: 'middle',\n }))\n }\n}\n","@for (y of gridLines(); track $index) {\n <svg:line\n class=\"gbt-chart-axis__grid\"\n x1=\"0\"\n [attr.x2]=\"innerWidth()\"\n [attr.y1]=\"y\"\n [attr.y2]=\"y\"\n />\n}\n@for (tick of ticks(); track tick.key) {\n <svg:text\n class=\"gbt-chart-axis__label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"tick.y\"\n [attr.text-anchor]=\"tick.anchor\"\n >\n @if (tick.date) {\n <svg:tspan [attr.x]=\"tick.x\" dy=\"0\">{{ tick.label }}</svg:tspan>\n <svg:tspan [attr.x]=\"tick.x\" dy=\"1.1em\">{{ tick.date }}</svg:tspan>\n } @else {\n {{ tick.label }}\n }\n </svg:text>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\n\nexport interface TooltipRow {\n label: string\n value: string\n\n series?: 1 | 2 | 3\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface TooltipPoint<X> {\n x: X\n\n header: string\n rows: TooltipRow[]\n}\n\n@Component({\n selector: 'gbt-chart-tooltip',\n standalone: true,\n imports: [],\n templateUrl: './chart-tooltip.html',\n styleUrl: './chart-tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTooltip<X> {\n private readonly context = inject(CHART_CONTEXT)\n\n points = input.required<TooltipPoint<X>[]>()\n\n protected readonly active = computed<TooltipPoint<X> | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n return this.points()[index] ?? null\n })\n\n protected readonly left = computed(() => {\n const position = this.context.activePosition()\n if (position === null) return 0\n return position + this.context.box().margin.left\n })\n\n protected readonly anchor = computed<'start' | 'middle' | 'end'>(() => {\n const index = this.context.activeIndex()\n if (index === null) return 'middle'\n const last = this.context.pointValues().length - 1\n return index === 0 ? 'start' : index === last ? 'end' : 'middle'\n })\n}\n","<div class=\"gbt-chart-tooltip\" role=\"status\" aria-live=\"polite\">\n @if (active(); as point) {\n <div class=\"gbt-chart-tooltip__panel\" [style.left.px]=\"left()\" [attr.data-anchor]=\"anchor()\">\n <p class=\"gbt-chart-tooltip__header\">{{ point.header }}</p>\n <ul class=\"gbt-chart-tooltip__rows\">\n @for (row of point.rows; track $index) {\n <li>\n <span\n class=\"gbt-chart-tooltip__swatch\"\n [attr.data-series]=\"row.series ?? null\"\n [attr.data-pattern]=\"row.pattern ?? 'solid'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-chart-tooltip__label\">{{ row.label }}</span>\n <span class=\"gbt-chart-tooltip__value\">{{ row.value }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core'\n\nexport interface LegendEntry {\n label: string\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n\n color?: string\n\n value?: string\n}\n\nconst DASH_ARRAYS: Record<NonNullable<LegendEntry['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\n@Component({\n selector: 'gbt-chart-legend',\n standalone: true,\n imports: [],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n entries = input.required<LegendEntry[]>()\n\n interactive = input(false, { transform: booleanAttribute })\n activeIndex = input<number | null>(null)\n activeIndexChange = output<number | null>()\n\n protected dashArray(pattern: LegendEntry['pattern']): string {\n return DASH_ARRAYS[pattern ?? 'solid']\n }\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndexChange.emit(null)\n }\n}\n","<ul class=\"gbt-chart-legend\">\n @for (entry of entries(); track $index) {\n <li\n class=\"gbt-chart-legend__item\"\n [class.gbt-chart-legend__item--active]=\"interactive() && activeIndex() === $index\"\n [attr.data-pattern]=\"entry.pattern ?? 'solid'\"\n [attr.tabindex]=\"interactive() ? 0 : null\"\n (mouseenter)=\"interactive() && activeIndexChange.emit($index)\"\n (mouseleave)=\"interactive() && onMouseLeave($event)\"\n (focus)=\"interactive() && activeIndexChange.emit($index)\"\n (blur)=\"interactive() && activeIndexChange.emit(null)\"\n >\n <svg class=\"gbt-chart-legend__swatch\" viewBox=\"0 0 24 8\" aria-hidden=\"true\" focusable=\"false\">\n @if (entry.color; as color) {\n <rect class=\"gbt-chart-legend__fill\" x=\"4\" y=\"0\" width=\"8\" height=\"8\" rx=\"2\" [attr.fill]=\"color\" />\n } @else {\n <line\n class=\"gbt-chart-legend__line\"\n x1=\"0\"\n y1=\"4\"\n x2=\"24\"\n y2=\"4\"\n [attr.stroke-dasharray]=\"dashArray(entry.pattern)\"\n stroke-width=\"2\"\n />\n }\n </svg>\n {{ entry.label }}\n @if (entry.value; as value) {\n <span class=\"gbt-chart-legend__value\">{{ value }}</span>\n }\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-empty',\n standalone: true,\n imports: [],\n templateUrl: './chart-empty.html',\n styleUrl: './chart-empty.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartEmpty {\n message = input.required<string>()\n actionLabel = input<string>('')\n\n action = output<void>()\n}\n","<div class=\"gbt-chart-empty\" role=\"status\">\n <div class=\"gbt-chart-empty__icon\" aria-hidden=\"true\">\n <ng-content select=\"[gbtChartEmptyIcon]\" />\n </div>\n <p class=\"gbt-chart-empty__message\">{{ message() }}</p>\n @if (actionLabel()) {\n <button type=\"button\" class=\"gbt-chart-empty__action\" (click)=\"action.emit()\">\n {{ actionLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-chart-table',\n standalone: true,\n imports: [],\n templateUrl: './chart-table.html',\n styleUrl: './chart-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartTable {\n caption = input.required<string>()\n columns = input.required<string[]>()\n rows = input.required<(string | number)[][]>()\n}\n","<div class=\"gbt-sr-only\">\n <table>\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n @for (column of columns(); track column) {\n <th scope=\"col\">{{ column }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track $index) {\n <tr>\n @for (cell of row; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { areaPath, linePath, type Scale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedSeries {\n label: string\n strokePath: string\n fillPath: string\n\n colorIndex: number\n dashArray: string\n}\n\ninterface ActiveDot {\n x: number\n y: number\n colorIndex: number\n}\n\nconst DASH_ARRAYS: Record<NonNullable<ChartSeries<unknown>['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\nexport const DEFAULT_PATTERNS: NonNullable<ChartSeries<unknown>['pattern']>[] = [\n 'solid',\n 'dashed',\n 'dotted',\n]\n\n@Component({\n selector: 'g[gbtLineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './line-series.html',\n styleUrl: './line-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class LineSeries<X> {\n series = input.required<ChartSeries<X>[]>()\n area = input(false)\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly renderedLines = computed<RenderedSeries[]>(() => {\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight)\n\n return this.series().map((oneSeries, index) => {\n const points = oneSeries.points.map((p) => ({\n x: x.map(p.x as never),\n y: y.map(p.y),\n }))\n return {\n label: oneSeries.label,\n strokePath: linePath(points),\n fillPath: areaPath(points, base),\n colorIndex: (index % 3) + 1,\n dashArray:\n DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]],\n }\n })\n })\n\n protected readonly activeDots = computed<ActiveDot[]>(() => {\n const activeIndex = this.context.activeIndex()\n if (activeIndex === null) return []\n const activeXValue = this.context.pointValues()[activeIndex]\n if (activeXValue === undefined) return []\n\n const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const dots: ActiveDot[] = []\n this.series().forEach((oneSeries, seriesIndex) => {\n const point = oneSeries.points.find(\n (p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key,\n )\n if (point === undefined) return\n dots.push({\n x: x.map(point.x as never),\n y: y.map(point.y),\n colorIndex: (seriesIndex % 3) + 1,\n })\n })\n return dots\n })\n}\n","@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n","import { niceTicks } from '../../../primitives'\n\nexport interface ChartPoint<X> {\n x: X\n y: number\n\n display?: string\n}\n\nexport interface ChartSeries<X> {\n label: string\n points: ChartPoint<X>[]\n\n pattern?: 'solid' | 'dashed' | 'dotted'\n}\n\nexport interface ChartInterval {\n start: Date\n end: Date\n label: string\n}\n\nconst DAY = 86400000\n\nexport function yDomain<X>(series: ChartSeries<X>[], includeZero: boolean): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.y))\n\n if (values.length === 0) return [0, 1]\n\n let min = Math.min(...values)\n let max = Math.max(...values)\n if (includeZero) {\n min = Math.min(min, 0)\n max = Math.max(max, 0)\n }\n\n if (min === max) return [min, min + 1]\n return [min, max]\n}\n\nexport function numericXDomain(series: ChartSeries<number>[]): [number, number] {\n const values = series.flatMap((s) => s.points.map((p) => p.x))\n if (values.length === 0) return [0, 1]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [min, min + 1] : [min, max]\n}\n\nexport function timeXDomain(series: ChartSeries<Date>[]): [Date, Date] {\n const values = series.flatMap((s) => s.points.map((p) => p.x.getTime()))\n\n if (values.length === 0) return [new Date(-DAY), new Date(0)]\n const min = Math.min(...values)\n const max = Math.max(...values)\n return min === max ? [new Date(min), new Date(min + DAY)] : [new Date(min), new Date(max)]\n}\n\nexport function longestSeriesLength<X>(series: ChartSeries<X>[]): number {\n return series.reduce((longest, s) => Math.max(longest, s.points.length), 0)\n}\n\nexport function niceYDomain<X>(\n series: ChartSeries<X>[],\n includeZero: boolean,\n tickCount: number,\n): [number, number] {\n const [min, max] = yDomain(series, includeZero)\n const ticks = niceTicks(min, max, tickCount)\n\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n\nexport function niceXDomain(series: ChartSeries<number>[], tickCount: number): [number, number] {\n const [min, max] = numericXDomain(series)\n const ticks = niceTicks(min, max, tickCount)\n if (ticks.length === 0) return [min, max]\n return [ticks[0], ticks[ticks.length - 1]]\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isDevMode,\n signal,\n} from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { DEFAULT_PATTERNS, LineSeries } from './line-series'\nimport { formatCompact, formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceXDomain,\n niceYDomain,\n timeXDomain,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\nconst MAX_SERIES = 3\n\nconst ABSENT = '—'\n\n@Component({\n selector: 'gbt-line-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartLegend, ChartEmpty, ChartTable, LineSeries],\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChart<X extends number | Date> {\n series = input.required<ChartSeries<X>[]>()\n xKind = input.required<'linear' | 'time'>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n area = input(false)\n yZero = input(true)\n yTickCount = input(5)\n xTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly hasData = computed(() => this.series().some((s) => s.points.length > 0))\n\n protected readonly xSpec = computed<AxisSpec>(() =>\n this.xKind() === 'time'\n ? { kind: 'time', domain: timeXDomain(this.series() as ChartSeries<Date>[]) }\n : {\n kind: 'linear',\n domain: niceXDomain(this.series() as ChartSeries<number>[], this.xTickCount()),\n },\n )\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain(this.series(), this.yZero(), this.yTickCount()),\n }))\n\n protected readonly legendEntries = computed<LegendEntry[]>(() => {\n const index = this.activeIndex()\n const xValues = this.xValues()\n\n const x = index === null ? xValues[xValues.length - 1] : xValues[index]\n return this.series().map((s, seriesIndex) => ({\n label: s.label,\n\n pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],\n value: x === undefined ? ABSENT : this.displayValue(s, x),\n }))\n })\n\n protected readonly publicXValues = computed<PointValue[]>(() => this.xValues())\n\n protected readonly tooltipPoints = computed<TooltipPoint<X>[]>(() =>\n this.xValues().map((x) => ({\n x,\n header: this.formatX(x),\n rows: this.series().map((s, index) => ({\n label: s.label,\n value: this.displayValue(s, x),\n series: ((index % 3) + 1) as 1 | 2 | 3,\n pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length],\n })),\n })),\n )\n\n protected readonly tableColumns = computed(() => [\n this.xColumn(),\n ...this.series().map((s) => s.label),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.xValues().map((x) => [\n this.formatX(x),\n ...this.series().map((s) => this.displayValue(s, x)),\n ]),\n )\n\n private readonly formatX = (x: X): string =>\n x instanceof Date\n ? new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(x)\n : formatCompact(x as number, this.locale())\n\n private readonly xValues = computed<X[]>(() => {\n const seen = new Map<number | string, X>()\n for (const oneSeries of this.series()) {\n for (const point of oneSeries.points) {\n seen.set(point.x instanceof Date ? point.x.getTime() : (point.x as number), point.x)\n }\n }\n return [...seen.entries()]\n .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n .map(([, x]) => x)\n })\n\n private findPoint(oneSeries: ChartSeries<X>, x: X): ChartPoint<X> | null {\n const key = x instanceof Date ? x.getTime() : x\n return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null\n }\n\n private displayValue(oneSeries: ChartSeries<X>, x: X): string {\n const point = this.findPoint(oneSeries, x)\n if (point === null) return ABSENT\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.series().length\n if (count > MAX_SERIES) {\n console.warn(\n `gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport type { BandScale } from '../../../primitives'\nimport type { ChartSeries } from '../chart-data/chart-data'\n\ninterface RenderedBar {\n category: string\n x: number\n y: number\n width: number\n height: number\n}\n\n@Component({\n selector: 'g[gbtBarSeries]',\n standalone: true,\n imports: [],\n templateUrl: './bar-series.html',\n styleUrl: './bar-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class BarSeries {\n private readonly context = inject(CHART_CONTEXT)\n\n series = input.required<ChartSeries<string>>()\n\n protected readonly activeIndex = computed(() => this.context.activeIndex())\n\n protected readonly bars = computed<RenderedBar[]>(() => {\n const x = this.context.xScale() as BandScale\n const y = this.context.yScale()\n const base = y.map(0)\n\n return this.series().points.map((point) => {\n const top = y.map(point.y)\n return {\n category: point.x,\n x: x.map(point.x),\n\n y: Math.min(top, base),\n width: x.bandwidth,\n height: Math.abs(base - top),\n }\n })\n })\n}\n","@for (bar of bars(); track bar.category) {\n <svg:rect\n class=\"gbt-bar-series__bar\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { BarSeries } from './bar-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport { niceYDomain, type ChartPoint, type ChartSeries } from '../chart-data/chart-data'\n\nconst BAND_PADDING = 0.2\n\n@Component({\n selector: 'gbt-bar-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, BarSeries],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n series = input.required<ChartSeries<string>>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'band',\n domain: this.series().points.map((p) => p.x),\n padding: BAND_PADDING,\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n\n domain: niceYDomain([this.series()], true, this.yTickCount()),\n }))\n\n private displayValue(point: ChartPoint<string>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n protected readonly tooltipPoints = computed<TooltipPoint<string>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: point.x,\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [point.x, this.displayValue(point)]),\n )\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtBarSeries [series]=\"series()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '../chart-context/chart-context'\nimport { estimateLabelWidth, linePath, type Scale } from '../../../primitives'\nimport type { ChartInterval, ChartSeries } from '../chart-data/chart-data'\n\nconst LABEL_INSET = 4\n\nconst STROKE_WIDTH = 3\nconst STROKE_WIDTH_ACTIVE = 6\n\ninterface RenderedBand {\n label: string\n x: number\n width: number\n\n labeled: boolean\n\n active: boolean\n strokeWidth: number\n}\n\n@Component({\n selector: 'g[gbtTimelineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './timeline-series.html',\n styleUrl: './timeline-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class TimelineSeries {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly height = computed(() => this.context.box().innerHeight)\n\n protected readonly strokePath = computed(() => {\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return linePath(this.series().points.map((p) => ({ x: x.map(p.x), y: y.map(p.y) })))\n })\n\n private readonly activeInstant = computed<number | null>(() => {\n const index = this.context.activeIndex()\n if (index === null) return null\n const value = this.context.pointValues()[index]\n return value instanceof Date ? value.getTime() : null\n })\n\n protected readonly activePoint = computed<{ x: number; y: number } | null>(() => {\n const time = this.activeInstant()\n if (time === null) return null\n const point = this.series().points.find((p) => p.x.getTime() === time)\n if (point === undefined) return null\n const x = this.context.xScale() as Scale<Date>\n const y = this.context.yScale()\n return { x: x.map(point.x), y: y.map(point.y) }\n })\n\n protected readonly bands = computed<RenderedBand[]>(() => {\n const x = this.context.xScale() as Scale<Date>\n const activeTime = this.activeInstant()\n return this.intervals().map((interval) => {\n const start = x.map(interval.start)\n const end = x.map(interval.end)\n const width = Math.max(1, end - start)\n\n const active =\n activeTime !== null &&\n activeTime >= interval.start.getTime() &&\n activeTime <= interval.end.getTime()\n return {\n label: interval.label,\n x: start,\n width,\n\n labeled: LABEL_INSET + estimateLabelWidth(interval.label) <= width,\n active,\n strokeWidth: active ? STROKE_WIDTH_ACTIVE : STROKE_WIDTH,\n }\n })\n })\n}\n","@for (band of bands(); track $index) {\n <svg:rect\n class=\"gbt-timeline-series__band\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"height()\"\n />\n <svg:rect\n class=\"gbt-timeline-series__band-edge\"\n [attr.x]=\"band.x\"\n y=\"0\"\n [attr.width]=\"band.width\"\n [attr.height]=\"band.strokeWidth\"\n [attr.data-active]=\"band.active ? '' : null\"\n />\n @if (band.labeled) {\n <svg:text class=\"gbt-timeline-series__band-label\" [attr.x]=\"band.x + 4\" y=\"14\">\n {{ band.label }}\n </svg:text>\n }\n}\n@if (strokePath(); as d) {\n <svg:path class=\"gbt-timeline-series__line\" [attr.d]=\"d\" />\n}\n@if (activePoint(); as p) {\n <svg:circle class=\"gbt-timeline-series__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"4\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { ChartFrame } from '../chart-frame/chart-frame'\nimport { ChartAxis } from '../chart-axis/chart-axis'\nimport { ChartTooltip, type TooltipPoint } from '../chart-tooltip/chart-tooltip'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { TimelineSeries } from './timeline-series'\nimport { formatNumber } from '../../../primitives'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '../chart-context/chart-context'\nimport {\n niceYDomain,\n timeXDomain,\n type ChartInterval,\n type ChartPoint,\n type ChartSeries,\n} from '../chart-data/chart-data'\n\n@Component({\n selector: 'gbt-timeline-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartEmpty, ChartTable, TimelineSeries],\n templateUrl: './timeline-chart.html',\n styleUrl: './timeline-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineChart {\n series = input.required<ChartSeries<Date>>()\n intervals = input.required<ChartInterval[]>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n intervalsCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n yZero = input(true)\n yTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly hasData = computed(() => this.series().points.length > 0)\n\n protected readonly publicXValues = computed<PointValue[]>(() =>\n this.series().points.map((p) => p.x),\n )\n\n protected readonly xSpec = computed<AxisSpec>(() => ({\n kind: 'time',\n domain: timeXDomain([this.series()]),\n }))\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain([this.series()], this.yZero(), this.yTickCount()),\n }))\n\n protected readonly tooltipPoints = computed<TooltipPoint<Date>[]>(() =>\n this.series().points.map((point) => ({\n x: point.x,\n header: this.formatInstant(point.x),\n rows: [{ label: this.series().label, value: this.displayValue(point), series: 1 }],\n })),\n )\n\n protected readonly tableColumns = computed(() => [this.xColumn(), this.series().label])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.series().points.map((point) => [this.formatInstant(point.x), this.displayValue(point)]),\n )\n\n protected readonly intervalColumns = computed(() => [\n this.intervalsCaption(),\n `${this.xColumn()} — start`,\n `${this.xColumn()} — end`,\n ])\n\n protected readonly intervalRows = computed<(string | number)[][]>(() =>\n this.intervals().map((interval) => [\n interval.label,\n this.formatInstant(interval.start),\n this.formatInstant(interval.end),\n ]),\n )\n\n private readonly formatInstant = (d: Date): string =>\n new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(d)\n\n private displayValue(point: ChartPoint<Date>): string {\n return point.display ?? formatNumber(point.y, this.locale())\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\"></svg:g>\n <svg:g gbtTimelineSeries [series]=\"series()\" [intervals]=\"intervals()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n }\n @if (hasData() && intervals().length > 0) {\n <gbt-chart-table\n [caption]=\"intervalsCaption()\"\n [columns]=\"intervalColumns()\"\n [rows]=\"intervalRows()\"\n />\n }\n @if (!hasData()) {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n isDevMode,\n input,\n signal,\n} from '@angular/core'\nimport { ChartEmpty } from '../chart-empty/chart-empty'\nimport { ChartLegend, type LegendEntry } from '../chart-legend/chart-legend'\nimport { ChartTable } from '../chart-table/chart-table'\nimport { arcPath, formatNumber, formatPercent } from '../../../primitives'\n\nexport interface PieSlice {\n label: string\n value: number\n}\n\ninterface RenderedSlice {\n label: string\n formattedValue: string\n formattedShare: string\n path: string\n color: string\n showLabel: boolean\n labelX: number\n labelY: number\n labelAnchor: 'start' | 'middle' | 'end'\n accessibleLabel: string\n}\n\nconst OUTER_RADIUS = 90\nconst LABEL_RADIUS = OUTER_RADIUS + 14\nconst LABEL_SHARE_THRESHOLD = 0.15\nconst PALETTE_SIZE = 6\n\n@Component({\n selector: 'gbt-pie-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty, ChartLegend],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n slices = input.required<PieSlice[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n categoryColumn = input.required<string>()\n valueColumn = input.required<string>()\n shareColumn = input.required<string>()\n sliceAnnouncement = input.required<(label: string, value: string, share: string) => string>()\n\n innerRadiusRatio = input<number>(0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n private readonly total = computed(() =>\n this.slices().reduce((sum, slice) => sum + slice.value, 0),\n )\n\n protected readonly renderedSlices = computed<RenderedSlice[]>(() => {\n const total = this.total()\n const innerRadius = OUTER_RADIUS * this.innerRadiusRatio()\n let angle = 0\n return this.slices().map((slice, index) => {\n const share = total <= 0 ? 0 : slice.value / total\n const startAngle = angle\n const endAngle = angle + share * Math.PI * 2\n angle = endAngle\n\n const midAngle = (startAngle + endAngle) / 2\n const labelX = Math.round(LABEL_RADIUS * Math.sin(midAngle) * 100) / 100\n const labelY = Math.round(-LABEL_RADIUS * Math.cos(midAngle) * 100) / 100\n\n const formattedValue = formatNumber(slice.value, this.locale())\n const formattedShare = formatPercent(share, this.locale())\n\n return {\n label: slice.label,\n formattedValue,\n formattedShare,\n path: arcPath({ startAngle, endAngle, innerRadius, outerRadius: OUTER_RADIUS }),\n color: this.colorFor(index),\n showLabel: share >= LABEL_SHARE_THRESHOLD,\n labelX,\n labelY,\n labelAnchor: labelX > 5 ? 'start' : labelX < -5 ? 'end' : 'middle',\n accessibleLabel: `${slice.label} — ${formattedValue}`,\n }\n })\n })\n\n protected readonly legendEntries = computed<LegendEntry[]>(() =>\n this.renderedSlices().map((slice) => ({\n label: slice.label,\n value: slice.formattedValue,\n color: slice.color,\n })),\n )\n\n protected readonly activeSlice = computed<RenderedSlice | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSlices()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.categoryColumn(),\n this.valueColumn(),\n this.shareColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.renderedSlices().map((slice) => [slice.label, slice.formattedValue, slice.formattedShare]),\n )\n\n private colorFor(index: number): string {\n return `var(--chart-series-${(index % PALETTE_SIZE) + 1}-base)`\n }\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.slices().length\n if (count > PALETTE_SIZE) {\n console.warn(\n `gbt-pie-chart: ${count} slices received for ${PALETTE_SIZE} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","@if (renderedSlices().length > 0) {\n <div class=\"gbt-pie-chart\">\n <svg class=\"gbt-pie-chart__svg\" viewBox=\"-100 -100 200 200\" role=\"group\" [attr.aria-label]=\"label()\">\n @for (slice of renderedSlices(); track $index) {\n <path\n class=\"gbt-pie-chart__slice\"\n role=\"img\"\n tabindex=\"0\"\n [attr.aria-label]=\"slice.accessibleLabel\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n [attr.d]=\"slice.path\"\n [attr.fill]=\"slice.color\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n />\n }\n @for (slice of renderedSlices(); track $index) {\n @if (slice.showLabel) {\n <text\n class=\"gbt-pie-chart__label\"\n aria-hidden=\"true\"\n [attr.x]=\"slice.labelX\"\n [attr.y]=\"slice.labelY\"\n [attr.text-anchor]=\"slice.labelAnchor\"\n >{{ slice.formattedShare }}</text\n >\n }\n }\n </svg>\n <gbt-chart-legend\n [entries]=\"legendEntries()\"\n interactive\n [activeIndex]=\"activeIndex()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n />\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeSlice(); as slice) {\n {{ sliceAnnouncement()(slice.label, slice.formattedValue, slice.formattedShare) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n </div>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\">\n <svg\n gbtChartEmptyIcon\n viewBox=\"0 0 96 96\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"48\" cy=\"48\" r=\"30\" />\n <path d=\"M48 48 L48 18 A30 30 0 0 1 74 63 Z\" fill=\"currentColor\" stroke=\"none\" opacity=\"0.85\" />\n </svg>\n </gbt-chart-empty>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, linePath, linearScale, nearestIndex } from '../../../primitives'\n\nconst MARGIN = 4\n\n@Component({\n selector: 'gbt-sparkline',\n standalone: true,\n imports: [ChartEmpty, ChartTable],\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sparkline {\n values = input.required<number[]>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n yColumn = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n width = input(80)\n height = input(24)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`)\n\n protected readonly columns = computed(() => [this.xColumn(), this.yColumn()])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.values().map((value, index) => [\n formatNumber(index + 1, this.locale()),\n formatNumber(value, this.locale()),\n ]),\n )\n\n private readonly scales = computed(() => {\n const values = this.values()\n const min = Math.min(...values)\n const max = Math.max(...values)\n return {\n x: linearScale([0, Math.max(values.length - 1, 0)], [MARGIN, this.width() - MARGIN]),\n y: linearScale([min, max], [this.height() - MARGIN, MARGIN]),\n }\n })\n\n protected readonly path = computed(() => {\n const values = this.values()\n if (values.length === 0) return null\n const { x, y } = this.scales()\n return linePath(values.map((value, index) => ({ x: x.map(index), y: y.map(value) })))\n })\n\n protected readonly positions = computed<number[]>(() => {\n const { x } = this.scales()\n return this.values().map((_, index) => x.map(index))\n })\n\n protected readonly dot = computed<{ x: number; y: number } | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n const { x, y } = this.scales()\n return { x: x.map(index), y: y.map(value) }\n })\n\n protected readonly tooltip = computed<string | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n const value = this.values()[index]\n if (value === undefined) return null\n return `${this.xColumn()} ${formatNumber(index + 1, this.locale())} — ${this.yColumn()} ${formatNumber(value, this.locale())}`\n })\n\n protected onPointerMove(event: PointerEvent | MouseEvent): void {\n const positions = this.positions()\n if (positions.length === 0) return\n const rect = (event.currentTarget as Element).getBoundingClientRect()\n this.activeIndex.set(nearestIndex(positions, event.clientX - rect.left))\n }\n\n protected onPointerLeave(event: PointerEvent | MouseEvent): void {\n const target = event.currentTarget as Element\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected onBlur(): void {\n this.activeIndex.set(null)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const lastIndex = this.values().length - 1\n if (lastIndex < 0) return\n const current = this.activeIndex()\n switch (event.key) {\n case 'ArrowRight':\n this.activeIndex.set(current === null ? 0 : Math.min(lastIndex, current + 1))\n break\n case 'ArrowLeft':\n this.activeIndex.set(current === null ? lastIndex : Math.max(0, current - 1))\n break\n case 'Home':\n this.activeIndex.set(0)\n break\n case 'End':\n this.activeIndex.set(lastIndex)\n break\n case 'Escape':\n this.activeIndex.set(null)\n break\n default:\n return\n }\n event.preventDefault()\n }\n}\n","@if (path(); as d) {\n <div class=\"gbt-sparkline\" role=\"status\" aria-live=\"polite\">\n <svg\n class=\"gbt-sparkline__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n tabindex=\"0\"\n role=\"group\"\n [attr.aria-label]=\"tableCaption()\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n >\n <path class=\"gbt-sparkline__line\" [attr.d]=\"d\" />\n @if (dot(); as p) {\n <circle class=\"gbt-sparkline__dot\" [attr.cx]=\"p.x\" [attr.cy]=\"p.y\" r=\"3\" />\n }\n </svg>\n @if (tooltip(); as text) {\n <span class=\"gbt-sparkline__tooltip\">{{ text }}</span>\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-gauge-bar',\n standalone: true,\n imports: [],\n templateUrl: './gauge-bar.html',\n styleUrl: './gauge-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeBar {\n value = input.required<number>()\n max = input.required<number>()\n label = input.required<string>()\n formattedValue = input.required<string>()\n warningLabel = input.required<string>()\n criticalLabel = input.required<string>()\n thresholds = input<{ warning: number; critical: number }>({ warning: 70, critical: 90 })\n\n protected readonly percentage = computed(() => {\n const max = this.max()\n\n if (max <= 0) return 0\n return Math.max(0, Math.min(100, (this.value() / max) * 100))\n })\n\n protected readonly severity = computed<'warning' | 'critical' | null>(() => {\n const percentage = this.percentage()\n const { warning, critical } = this.thresholds()\n if (percentage >= critical) return 'critical'\n if (percentage >= warning) return 'warning'\n return null\n })\n\n protected readonly severityLabel = computed(() => {\n const severity = this.severity()\n if (severity === 'critical') return this.criticalLabel()\n if (severity === 'warning') return this.warningLabel()\n return null\n })\n}\n","<div class=\"gbt-gauge-bar\">\n <div class=\"gbt-gauge-bar__header\">\n <span class=\"gbt-gauge-bar__label\">{{ label() }}</span>\n <span class=\"gbt-gauge-bar__value\">\n {{ formattedValue() }}\n @if (severityLabel(); as tierLabel) {\n <span class=\"gbt-gauge-bar__tier\" [attr.data-tier]=\"severity()\">{{ tierLabel }}</span>\n }\n </span>\n </div>\n <div\n class=\"gbt-gauge-bar__track\"\n role=\"progressbar\"\n [attr.aria-label]=\"label()\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"formattedValue()\"\n >\n <div\n class=\"gbt-gauge-bar__fill\"\n [attr.data-tier]=\"severity()\"\n [style.width.%]=\"percentage()\"\n ></div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { formatNumber } from '../../../primitives'\n\nexport interface DimensionRow {\n label: string\n value: number\n\n display?: string\n}\n\ninterface RenderedRow {\n label: string\n formattedValue: string\n\n part: number\n}\n\n@Component({\n selector: 'gbt-dimension-card',\n standalone: true,\n imports: [ChartEmpty],\n templateUrl: './dimension-card.html',\n styleUrl: './dimension-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DimensionCard {\n rows = input.required<DimensionRow[]>()\n caption = input.required<string>()\n labelColumn = input.required<string>()\n valueColumn = input.required<string>()\n emptyMessage = input.required<string>()\n locale = input.required<string>()\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly renderedRows = computed<RenderedRow[]>(() => {\n const rows = this.rows()\n const maxValue = rows.reduce((max, row) => Math.max(max, row.value), 0)\n return rows.map((row) => ({\n label: row.label,\n formattedValue: row.display ?? formatNumber(row.value, this.locale()),\n\n part: maxValue <= 0 ? 0 : (row.value / maxValue) * 100,\n }))\n })\n}\n","@if (rows().length > 0) {\n <table class=\"gbt-dimension-card\">\n <caption>\n {{\n caption()\n }}\n </caption>\n <thead>\n <tr>\n <th scope=\"col\">{{ labelColumn() }}</th>\n <th scope=\"col\">{{ valueColumn() }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of renderedRows(); track $index) {\n <tr\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"activeIndex.set(null)\"\n >\n <th scope=\"row\" class=\"gbt-dimension-card__cell\">\n <span\n class=\"gbt-dimension-card__bar\"\n [style.width.%]=\"row.part\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"gbt-dimension-card__label\">{{ row.label }}</span>\n </th>\n <td class=\"gbt-dimension-card__value\">{{ row.formattedValue }}</td>\n </tr>\n }\n </tbody>\n </table>\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core'\nimport { ChartEmpty } from '../../organisms/chart-empty/chart-empty'\nimport { ChartTable } from '../../organisms/chart-table/chart-table'\nimport { formatNumber, formatPercent } from '../../../primitives'\n\nexport interface FunnelStep {\n label: string\n value: number\n}\n\ninterface RenderedStep {\n label: string\n formattedValue: string\n\n part: number\n\n conversionFromPrevious: string\n}\n\n@Component({\n selector: 'gbt-funnel-chart',\n standalone: true,\n imports: [ChartTable, ChartEmpty],\n templateUrl: './funnel-chart.html',\n styleUrl: './funnel-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChart {\n steps = input.required<FunnelStep[]>()\n label = input.required<string>()\n locale = input.required<string>()\n emptyMessage = input.required<string>()\n tableCaption = input.required<string>()\n stepColumn = input.required<string>()\n valueColumn = input.required<string>()\n conversionColumn = input.required<string>()\n stepAnnouncement = input.required<(label: string, conversion: string) => string>()\n\n private readonly reference = computed(() => this.steps()[0]?.value ?? 0)\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected onMouseLeave(event: MouseEvent): void {\n const target = event.currentTarget as HTMLElement\n if (target.ownerDocument.activeElement === target) return\n this.activeIndex.set(null)\n }\n\n protected readonly renderedSteps = computed<RenderedStep[]>(() => {\n const reference = this.reference()\n const steps = this.steps()\n return steps.map((step, index) => {\n const previousValue = index === 0 ? step.value : steps[index - 1].value\n return {\n label: step.label,\n formattedValue: formatNumber(step.value, this.locale()),\n\n part: reference <= 0 ? 0 : (step.value / reference) * 100,\n conversionFromPrevious: formatPercent(\n previousValue <= 0 ? 0 : step.value / previousValue,\n this.locale(),\n ),\n }\n })\n })\n\n protected readonly activeStep = computed<RenderedStep | null>(() => {\n const index = this.activeIndex()\n if (index === null) return null\n return this.renderedSteps()[index] ?? null\n })\n\n protected readonly columns = computed(() => [\n this.stepColumn(),\n this.valueColumn(),\n this.conversionColumn(),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() => {\n const reference = this.reference()\n return this.steps().map((step) => [\n step.label,\n formatNumber(step.value, this.locale()),\n formatPercent(reference <= 0 ? 0 : step.value / reference, this.locale()),\n ])\n })\n}\n","@if (renderedSteps().length > 0) {\n <ol class=\"gbt-funnel-chart\" [attr.aria-label]=\"label()\">\n @for (step of renderedSteps(); track $index) {\n <li\n class=\"gbt-funnel-chart__step\"\n [attr.data-active]=\"$index === activeIndex() ? '' : null\"\n tabindex=\"0\"\n (mouseenter)=\"activeIndex.set($index)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (focus)=\"activeIndex.set($index)\"\n (blur)=\"activeIndex.set(null)\"\n >\n <div class=\"gbt-funnel-chart__bar\" [style.width.%]=\"step.part\" aria-hidden=\"true\"></div>\n <span class=\"gbt-funnel-chart__label\">{{ step.label }}</span>\n <span class=\"gbt-funnel-chart__value\">{{ step.formattedValue }}</span>\n @if ($index === activeIndex()) {\n <span class=\"gbt-funnel-chart__tip\" aria-hidden=\"true\">{{\n step.conversionFromPrevious\n }}</span>\n }\n </li>\n }\n </ol>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n @if (activeStep(); as step) {\n {{ stepAnnouncement()(step.label, step.conversionFromPrevious) }}\n }\n </div>\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"columns()\" [rows]=\"tableRows()\" />\n} @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\ninterface PopupPosition {\n top: string\n left: string | null\n right: string | null\n}\n\n@Component({\n selector: 'gbt-menu',\n standalone: true,\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(focusout)': 'onFocusOut($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Menu {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly injector = inject(Injector)\n\n label = input.required<string>()\n align = input<'start' | 'end'>('start')\n triggerIcon = input<string | null>(null)\n opened = output<void>()\n\n protected readonly open = signal(false)\n protected readonly position = signal<PopupPosition | null>(null)\n\n private readonly trigger = viewChild<ElementRef<HTMLButtonElement>>('trigger')\n private readonly list = viewChild<ElementRef<HTMLElement>>('list')\n\n protected toggle(): void {\n this.open.update((value) => !value)\n if (this.open()) {\n this.updatePosition()\n this.focusAfterRender('first')\n this.opened.emit()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) return\n this.open.set(false)\n if (returnFocus) {\n this.trigger()?.nativeElement.focus()\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return\n event.preventDefault()\n const target = event.key === 'ArrowUp' ? 'last' : 'first'\n if (!this.open()) {\n this.open.set(true)\n this.updatePosition()\n this.opened.emit()\n }\n this.focusAfterRender(target)\n }\n\n protected onListKeydown(event: KeyboardEvent): void {\n const items = this.items()\n if (items.length === 0) return\n const index = items.indexOf(document.activeElement as HTMLElement)\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this.close(true)\n break\n case 'ArrowDown':\n event.preventDefault()\n this.focus((index + 1) % items.length)\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focus((index - 1 + items.length) % items.length)\n break\n case 'Home':\n event.preventDefault()\n this.focus(0)\n break\n case 'End':\n event.preventDefault()\n this.focus(items.length - 1)\n break\n }\n }\n\n protected onListClick(): void {\n this.close(false)\n }\n\n protected onDocumentClick(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as Node | null\n if (this.open() && !this.elementRef.nativeElement.contains(target)) {\n this.open.set(false)\n }\n }\n\n protected updatePosition(): void {\n if (!this.open()) return\n const trigger = this.trigger()?.nativeElement\n if (!trigger) return\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n private items(): HTMLElement[] {\n const list = this.list()?.nativeElement\n if (!list) return []\n return [...list.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')]\n }\n\n private focus(index: number): void {\n this.items()[index]?.focus()\n }\n\n private focusAfterRender(target: 'first' | 'last'): void {\n afterNextRender(\n () => {\n const items = this.items()\n this.focus(target === 'last' ? items.length - 1 : 0)\n },\n { injector: this.injector },\n )\n }\n}\n","<div class=\"gbt-menu\">\n <button\n #trigger\n type=\"button\"\n class=\"gbt-menu__trigger\"\n [class.gbt-menu__trigger--open]=\"open()\"\n [class.gbt-menu__trigger--icon-only]=\"triggerIcon()\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"triggerIcon() ? label() : null\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (triggerIcon(); as icon) {\n <gbt-icon [name]=\"icon\" aria-hidden=\"true\" />\n } @else {\n <span class=\"gbt-menu__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-menu__chevron\" aria-hidden=\"true\" />\n }\n </button>\n\n @if (open() && position(); as pos) {\n <div\n #list\n class=\"gbt-menu__list\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"label()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n [style.right]=\"pos.right\"\n (keydown)=\"onListKeydown($event)\"\n (click)=\"onListClick()\"\n >\n <ng-content />\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core'\n\nexport type PopoverAlign = 'start' | 'end'\n\ninterface PopoverPosition {\n top: string\n left: string | null\n right: string | null\n}\n\nlet nextPopoverId = 0\n\n@Component({\n selector: 'gbt-popover',\n standalone: true,\n exportAs: 'gbtPopover',\n imports: [],\n templateUrl: './popover.html',\n styleUrl: './popover.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-popover-host',\n '(click)': 'onTriggerClick($event)',\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onKeydown($event)',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Popover {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n private readonly triggerSlot = viewChild<ElementRef<HTMLElement>>('triggerSlot')\n\n align = input<PopoverAlign>('start')\n\n readonly panelId = `gbt-popover-${++nextPopoverId}`\n\n private readonly isOpen = signal(false)\n readonly open = this.isOpen.asReadonly()\n\n protected readonly position = signal<PopoverPosition | null>(null)\n\n toggle(): void {\n this.isOpen.update((value) => !value)\n if (this.isOpen()) {\n this.updatePosition()\n }\n }\n\n close(returnFocus = false): void {\n if (!this.isOpen()) {\n return\n }\n this.isOpen.set(false)\n if (returnFocus) {\n this.focusTrigger()\n }\n }\n\n protected onTriggerClick(event: MouseEvent): void {\n const trigger = this.triggerSlot()?.nativeElement\n if (trigger?.contains(event.target as Node)) {\n this.toggle()\n }\n }\n\n protected updatePosition(): void {\n if (!this.isOpen()) {\n return\n }\n const trigger = this.triggerSlot()?.nativeElement\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.position.set(\n this.align() === 'end'\n ? { top: `${rect.bottom + 6}px`, left: null, right: `${window.innerWidth - rect.right}px` }\n : { top: `${rect.bottom + 6}px`, left: `${rect.left}px`, right: null },\n )\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.isOpen() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n private focusTrigger(): void {\n const trigger = this.triggerSlot()?.nativeElement\n trigger?.querySelector<HTMLElement>('button, a[href], input, select, textarea, [tabindex]')?.focus()\n }\n}\n","<span #triggerSlot class=\"gbt-popover__trigger\">\n <ng-content></ng-content>\n</span>\n@if (open() && position(); as pos) {\n <div class=\"gbt-popover__panel\" [id]=\"panelId\" [style.top]=\"pos.top\" [style.left]=\"pos.left\" [style.right]=\"pos.right\">\n <ng-content select=\"[popover-content]\"></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, input } from '@angular/core'\nimport { NgTemplateOutlet } from '@angular/common'\n\nexport type DescriptionListLayout = 'stacked' | 'inline'\n\nexport interface DescriptionListEntry {\n term: string\n value: string | TemplateRef<unknown>\n}\n\n@Component({\n selector: 'gbt-description-list',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './description-list.html',\n styleUrl: './description-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DescriptionList {\n items = input.required<DescriptionListEntry[]>()\n layout = input<DescriptionListLayout>('stacked')\n\n protected isTemplate(value: DescriptionListEntry['value']): value is TemplateRef<unknown> {\n return value instanceof TemplateRef\n }\n}\n","<dl class=\"gbt-description-list\" [attr.data-layout]=\"layout()\">\n @for (item of items(); track $index) {\n <dt class=\"gbt-description-list__term\">{{ item.term }}</dt>\n <dd class=\"gbt-description-list__value\">\n @if (isTemplate(item.value)) {\n <ng-container [ngTemplateOutlet]=\"item.value\"></ng-container>\n } @else {\n {{ item.value }}\n }\n </dd>\n }\n</dl>\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, model, viewChild } from '@angular/core'\n\nexport interface SegmentedControlOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\n@Component({\n selector: 'gbt-segmented-control',\n standalone: true,\n imports: [],\n templateUrl: './segmented-control.html',\n styleUrl: './segmented-control.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SegmentedControl<T = string> {\n private readonly group = viewChild<ElementRef<HTMLElement>>('group')\n\n options = input.required<SegmentedControlOption<T>[]>()\n value = model.required<T>()\n ariaLabel = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected isSelected(value: T): boolean {\n return this.value() === value\n }\n\n protected select(option: SegmentedControlOption<T>): void {\n if (this.disabled() || option.disabled) {\n return\n }\n this.value.set(option.value)\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const options = this.options()\n const count = options.length\n if (count === 0) {\n return\n }\n let next: number | null = null\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n next = this.nextEnabledIndex(index, 1)\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n next = this.nextEnabledIndex(index, -1)\n break\n case 'Home':\n next = this.nextEnabledIndex(-1, 1)\n break\n case 'End':\n next = this.nextEnabledIndex(count, -1)\n break\n }\n if (next === null) {\n return\n }\n event.preventDefault()\n this.select(options[next])\n this.focusButton(next)\n }\n\n private nextEnabledIndex(from: number, direction: 1 | -1): number | null {\n const options = this.options()\n const count = options.length\n for (let step = 1; step <= count; step++) {\n const candidate = (from + direction * step + count) % count\n if (!options[candidate].disabled) {\n return candidate\n }\n }\n return null\n }\n\n private focusButton(index: number): void {\n this.group()?.nativeElement.querySelectorAll<HTMLElement>('[role=\"radio\"]')[index]?.focus()\n }\n}\n","<div #group class=\"gbt-segmented-control\" role=\"radiogroup\" [attr.aria-label]=\"ariaLabel() || null\">\n @for (option of options(); track option.value; let i = $index) {\n <button\n type=\"button\"\n role=\"radio\"\n class=\"gbt-segmented-control__option\"\n [class.gbt-segmented-control__option--selected]=\"isSelected(option.value)\"\n [attr.aria-checked]=\"isSelected(option.value)\"\n [tabIndex]=\"isSelected(option.value) ? 0 : -1\"\n [disabled]=\"disabled() || !!option.disabled\"\n (click)=\"select(option)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n {{ option.label }}\n </button>\n }\n</div>\n","export type WeekStartsOn = 0 | 1\n\nexport interface CalendarDay {\n date: Date\n inCurrentMonth: boolean\n isToday: boolean\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n )\n}\n\n/** Adds `delta` whole months, clamping an overflowing day to the target month's last day. */\nexport function addMonths(date: Date, delta: number): Date {\n const day = date.getDate()\n const firstOfTarget = new Date(date.getFullYear(), date.getMonth() + delta, 1)\n const daysInTarget = new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth() + 1, 0).getDate()\n return new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth(), Math.min(day, daysInTarget))\n}\n\n/** Adds `delta` whole years, clamping Feb 29 to Feb 28 on a non-leap target year. */\nexport function addYears(date: Date, delta: number): Date {\n return addMonths(date, delta * 12)\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: WeekStartsOn): Date {\n const weekday = date.getDay()\n const diff = (weekday - weekStartsOn + 7) % 7\n const result = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n result.setDate(result.getDate() - diff)\n return result\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: WeekStartsOn): Date {\n const start = startOfWeek(date, weekStartsOn)\n start.setDate(start.getDate() + 6)\n return start\n}\n\n/** Always 42 days (6 full weeks), starting on the week containing the 1st of `month`. */\nexport function buildCalendarGrid(year: number, month: number, weekStartsOn: WeekStartsOn): CalendarDay[] {\n const firstOfMonth = new Date(year, month, 1)\n const gridStart = startOfWeek(firstOfMonth, weekStartsOn)\n const today = new Date()\n\n const days: CalendarDay[] = []\n for (let i = 0; i < 42; i++) {\n const date = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i)\n days.push({\n date,\n inCurrentMonth: date.getMonth() === month,\n isToday: isSameDay(date, today),\n })\n }\n return days\n}\n\nexport function weekdayLabels(locale: string, weekStartsOn: WeekStartsOn): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: 'short' })\n // Any Sunday-anchored reference week: Jan 7 2024 is a Sunday.\n const reference = new Date(2024, 0, 7 + weekStartsOn)\n return Array.from({ length: 7 }, (_, i) => {\n const date = new Date(reference.getFullYear(), reference.getMonth(), reference.getDate() + i)\n return formatter.format(date)\n })\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport {\n CalendarDay,\n WeekStartsOn,\n addMonths,\n addYears,\n buildCalendarGrid,\n endOfWeek,\n isSameDay,\n startOfWeek,\n weekdayLabels,\n} from './date-picker-calendar'\n\nexport type DatePickerVisibleMonths = 1 | 2\n\nexport interface DatePickerMonthView {\n year: number\n month: number\n label: string\n weeks: CalendarDay[][]\n}\n\nlet nextDatePickerId = 0\n\nconst CURRENT_YEAR = new Date().getFullYear()\n\n@Component({\n selector: 'gbt-date-picker',\n standalone: true,\n imports: [Icon],\n templateUrl: './date-picker.html',\n styleUrl: './date-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onEscape($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePicker),\n multi: true,\n },\n ],\n})\nexport class DatePicker implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n id = input<string>(`gbt-date-picker-${++nextDatePickerId}`)\n label = input<string>('')\n placeholder = input<string>('Select a date…')\n locale = input<string>('en-US')\n weekStartsOn = input<WeekStartsOn>(1)\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n previousMonthLabel = input<string>('Previous month')\n nextMonthLabel = input<string>('Next month')\n clearable = input(false, { transform: booleanAttribute })\n clearLabel = input<string>('Clear date')\n visibleMonths = input<DatePickerVisibleMonths>(1)\n monthSelectLabel = input<string>('Month')\n yearSelectLabel = input<string>('Year')\n minYear = input<number>(CURRENT_YEAR - 100)\n maxYear = input<number>(CURRENT_YEAR + 10)\n\n protected readonly open = signal(false)\n protected readonly selected = signal<Date | null>(null)\n protected readonly focusedDate = signal<Date>(new Date())\n protected readonly anchorDate = signal<Date>(new Date())\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n private onChange: (value: Date | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n protected readonly showClear = computed(\n () => this.clearable() && this.selected() !== null && !this.isDisabled(),\n )\n\n protected readonly monthViews = computed<DatePickerMonthView[]>(() => {\n const anchor = this.anchorDate()\n const count = this.visibleMonths()\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' })\n const views = Array.from({ length: count }, (_, i) => {\n const monthDate = new Date(anchor.getFullYear(), anchor.getMonth() + i, 1)\n const year = monthDate.getFullYear()\n const month = monthDate.getMonth()\n const days = buildCalendarGrid(year, month, this.weekStartsOn())\n const weeks: CalendarDay[][] = []\n for (let d = 0; d < days.length; d += 7) {\n weeks.push(days.slice(d, d + 7))\n }\n return { year, month, label: formatter.format(monthDate), weeks }\n })\n // Trim wholly-blank trailing weeks (pure next-month filler) — but by the\n // same amount across every visible month, so side-by-side calendars\n // (`visibleMonths=\"2\"`) stay the same height even when only one of them\n // actually needs the extra week.\n const neededWeeks = views.map((view) => {\n let last = view.weeks.length\n while (last > 1 && view.weeks[last - 1].every((day) => !day.inCurrentMonth)) {\n last--\n }\n return last\n })\n const sharedWeeks = Math.max(...neededWeeks)\n return views.map((view) => ({ ...view, weeks: view.weeks.slice(0, sharedWeeks) }))\n })\n\n protected readonly panelLabel = computed(() => {\n const views = this.monthViews()\n return views.length === 1 ? views[0].label : `${views[0].label} – ${views[views.length - 1].label}`\n })\n\n protected readonly weekdayLabels = computed(() => weekdayLabels(this.locale(), this.weekStartsOn()))\n\n protected readonly monthOptions = computed(() => {\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long' })\n return Array.from({ length: 12 }, (_, i) => ({ value: i, label: formatter.format(new Date(2024, i, 1)) }))\n })\n\n protected readonly yearOptions = computed(() => {\n const min = this.minYear()\n const max = this.maxYear()\n return Array.from({ length: max - min + 1 }, (_, i) => min + i)\n })\n\n protected readonly triggerLabel = computed(() => {\n const value = this.selected()\n return value ? new Intl.DateTimeFormat(this.locale(), { dateStyle: 'medium' }).format(value) : ''\n })\n\n writeValue(value: Date | null): void {\n this.selected.set(value)\n if (value) {\n this.focusedDate.set(value)\n this.anchorDate.set(new Date(value.getFullYear(), value.getMonth(), 1))\n }\n }\n\n registerOnChange(fn: (value: Date | null) => 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 protected isSelected(date: Date): boolean {\n const value = this.selected()\n return value !== null && isSameDay(value, date)\n }\n\n protected isFocused(date: Date): boolean {\n return isSameDay(this.focusedDate(), date)\n }\n\n protected cellId(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(\n date.getDate(),\n ).padStart(2, '0')}`\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((value) => !value)\n if (this.open()) {\n const target = this.selected() ?? new Date()\n this.focusedDate.set(target)\n this.anchorDate.set(new Date(target.getFullYear(), target.getMonth(), 1))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n } else {\n this.onTouched()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) {\n return\n }\n this.open.set(false)\n this.onTouched()\n if (returnFocus) {\n this.trigger()?.focus()\n }\n }\n\n protected clear(event: Event): void {\n event.stopPropagation()\n if (this.isDisabled()) {\n return\n }\n this.selected.set(null)\n this.onChange(null)\n this.onTouched()\n this.close(false)\n }\n\n protected selectDay(day: CalendarDay): void {\n if (this.isDisabled()) {\n return\n }\n this.selected.set(day.date)\n this.focusedDate.set(day.date)\n this.ensureVisible(day.date)\n this.onChange(day.date)\n this.close(true)\n }\n\n protected shiftMonth(delta: number): void {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(this.focusedDate(), delta))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onMonthSelect(value: string): void {\n this.setAnchorMonth(this.anchorDate().getFullYear(), Number(value))\n }\n\n protected onYearSelect(value: string): void {\n this.setAnchorMonth(Number(value), this.anchorDate().getMonth())\n }\n\n private setAnchorMonth(year: number, month: number): void {\n const dayOfMonth = this.focusedDate().getDate()\n const daysInTarget = new Date(year, month + 1, 0).getDate()\n this.anchorDate.set(new Date(year, month, 1))\n this.focusedDate.set(new Date(year, month, Math.min(dayOfMonth, daysInTarget)))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const current = this.focusedDate()\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.selectDay({ date: current, inCurrentMonth: true, isToday: isSameDay(current, new Date()) })\n return\n }\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n event.preventDefault()\n const delta = event.key === 'PageDown' ? 1 : -1\n if (event.shiftKey) {\n this.anchorDate.set(addYears(this.anchorDate(), delta))\n this.focusedDate.set(addYears(current, delta))\n } else {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(current, delta))\n }\n this.updatePanelPosition()\n this.focusCellAfterRender()\n return\n }\n const next = this.nextFocusedDate(current, event)\n if (next === null) {\n return\n }\n event.preventDefault()\n this.ensureVisible(next)\n this.focusedDate.set(next)\n this.focusCellAfterRender()\n }\n\n private nextFocusedDate(current: Date, event: KeyboardEvent): Date | null {\n switch (event.key) {\n case 'ArrowRight':\n return shiftDays(current, 1)\n case 'ArrowLeft':\n return shiftDays(current, -1)\n case 'ArrowDown':\n return shiftDays(current, 7)\n case 'ArrowUp':\n return shiftDays(current, -7)\n case 'Home':\n return startOfWeek(current, this.weekStartsOn())\n case 'End':\n return endOfWeek(current, this.weekStartsOn())\n default:\n return null\n }\n }\n\n /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */\n private ensureVisible(date: Date): void {\n const anchor = this.anchorDate()\n const visibleMonths = this.visibleMonths()\n const monthsDiff =\n (date.getFullYear() - anchor.getFullYear()) * 12 + (date.getMonth() - anchor.getMonth())\n if (monthsDiff < 0) {\n this.anchorDate.set(new Date(date.getFullYear(), date.getMonth(), 1))\n } else if (monthsDiff >= visibleMonths) {\n this.anchorDate.set(addMonths(anchor, monthsDiff - visibleMonths + 1))\n }\n }\n\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.trigger()\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({ top: `${rect.bottom + 6}px`, left: `${rect.left}px` })\n }\n\n private trigger(): HTMLButtonElement | null {\n return this.elementRef.nativeElement.querySelector('.gbt-date-picker__trigger')\n }\n\n private focusCellAfterRender(): void {\n afterNextRender(\n () => {\n const id = this.cellId(this.focusedDate())\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-date=\"${id}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction shiftDays(date: Date, delta: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + delta)\n}\n","<div class=\"gbt-date-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-picker__label\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-date-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-picker__trigger\"\n [class.gbt-date-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-picker__trigger-label\"\n [class.gbt-date-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">{{ year }}</option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-picker__month\">\n <div\n class=\"gbt-date-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-picker__row gbt-date-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-picker__day\"\n [class.gbt-date-picker__day--today]=\"day.isToday\"\n [class.gbt-date-picker__day--selected]=\"isSelected(day.date)\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-selected]=\"isSelected(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span role=\"gridcell\" class=\"gbt-date-picker__day gbt-date-picker__day--empty\"></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport {\n CalendarDay,\n WeekStartsOn,\n addMonths,\n addYears,\n buildCalendarGrid,\n endOfWeek,\n isSameDay,\n startOfWeek,\n weekdayLabels,\n} from '../date-picker/date-picker-calendar'\n\nexport type DateRangeVisibleMonths = 1 | 2\n\nexport interface DateRangeValue {\n start: Date\n end: Date | null\n}\n\nexport interface DateRangePickerMonthView {\n year: number\n month: number\n label: string\n weeks: CalendarDay[][]\n}\n\nlet nextId = 0\n\nconst CURRENT_YEAR = new Date().getFullYear()\n\n@Component({\n selector: 'gbt-date-range-picker',\n standalone: true,\n imports: [Icon],\n templateUrl: './date-range-picker.html',\n styleUrl: './date-range-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'handleClickOutside($event)',\n '(keydown)': 'onEscape($event)',\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePicker),\n multi: true,\n },\n ],\n})\nexport class DateRangePicker implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n id = input<string>(`gbt-date-range-picker-${++nextId}`)\n label = input<string>('')\n placeholder = input<string>('Select a date range…')\n locale = input<string>('en-US')\n weekStartsOn = input<WeekStartsOn>(1)\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n previousMonthLabel = input<string>('Previous month')\n nextMonthLabel = input<string>('Next month')\n clearable = input(false, { transform: booleanAttribute })\n clearLabel = input<string>('Clear date range')\n visibleMonths = input<DateRangeVisibleMonths>(2)\n monthSelectLabel = input<string>('Month')\n yearSelectLabel = input<string>('Year')\n minYear = input<number>(CURRENT_YEAR - 100)\n maxYear = input<number>(CURRENT_YEAR + 10)\n rangeStatus = input<(start: string | null, end: string | null) => string>((start, end) => {\n if (!start) return ''\n if (!end) return `${start} selected as the start date. Choose an end date.`\n return `Date range: ${start} to ${end}.`\n })\n\n protected readonly open = signal(false)\n protected readonly value = signal<DateRangeValue | null>(null)\n protected readonly draftStart = signal<Date | null>(null)\n protected readonly draftEnd = signal<Date | null>(null)\n protected readonly hoveredDate = signal<Date | null>(null)\n protected readonly focusedDate = signal<Date>(new Date())\n protected readonly anchorDate = signal<Date>(new Date())\n protected readonly panelStyle = signal<{ top: string; left: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n private onChange: (value: DateRangeValue | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n protected readonly showClear = computed(\n () => this.clearable() && this.value() !== null && !this.isDisabled(),\n )\n\n protected readonly monthViews = computed<DateRangePickerMonthView[]>(() => {\n const anchor = this.anchorDate()\n const count = this.visibleMonths()\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long', year: 'numeric' })\n const views = Array.from({ length: count }, (_, i) => {\n const monthDate = new Date(anchor.getFullYear(), anchor.getMonth() + i, 1)\n const year = monthDate.getFullYear()\n const month = monthDate.getMonth()\n const days = buildCalendarGrid(year, month, this.weekStartsOn())\n const weeks: CalendarDay[][] = []\n for (let d = 0; d < days.length; d += 7) {\n weeks.push(days.slice(d, d + 7))\n }\n return { year, month, label: formatter.format(monthDate), weeks }\n })\n const neededWeeks = views.map((view) => {\n let last = view.weeks.length\n while (last > 1 && view.weeks[last - 1].every((day) => !day.inCurrentMonth)) {\n last--\n }\n return last\n })\n const sharedWeeks = Math.max(...neededWeeks)\n return views.map((view) => ({ ...view, weeks: view.weeks.slice(0, sharedWeeks) }))\n })\n\n protected readonly panelLabel = computed(() => {\n const views = this.monthViews()\n return views.length === 1 ? views[0].label : `${views[0].label} – ${views[views.length - 1].label}`\n })\n\n protected readonly weekdayLabels = computed(() => weekdayLabels(this.locale(), this.weekStartsOn()))\n\n protected readonly monthOptions = computed(() => {\n const formatter = new Intl.DateTimeFormat(this.locale(), { month: 'long' })\n return Array.from({ length: 12 }, (_, i) => ({ value: i, label: formatter.format(new Date(2024, i, 1)) }))\n })\n\n protected readonly yearOptions = computed(() => {\n const min = this.minYear()\n const max = this.maxYear()\n return Array.from({ length: max - min + 1 }, (_, i) => min + i)\n })\n\n private readonly dateFormatter = computed(\n () => new Intl.DateTimeFormat(this.locale(), { dateStyle: 'medium' }),\n )\n\n protected readonly triggerLabel = computed(() => {\n const v = this.value()\n if (!v) return ''\n const formatter = this.dateFormatter()\n if (!v.end) return formatter.format(v.start)\n return `${formatter.format(v.start)} – ${formatter.format(v.end)}`\n })\n\n /** The visual [lower, upper] bounds to paint — the confirmed range once `draftEnd` is set, else a live preview against `hoveredDate`. */\n private readonly previewBounds = computed<{ lower: Date; upper: Date } | null>(() => {\n const start = this.draftStart()\n if (!start) return null\n const other = this.draftEnd() ?? this.hoveredDate()\n if (!other) return null\n return start.getTime() <= other.getTime() ? { lower: start, upper: other } : { lower: other, upper: start }\n })\n\n protected readonly isPreviewing = computed(() => this.draftStart() !== null && this.draftEnd() === null)\n\n protected readonly statusMessage = computed(() => {\n const start = this.draftStart()\n if (!start) return ''\n const formatter = this.dateFormatter()\n const end = this.draftEnd()\n return this.rangeStatus()(formatter.format(start), end ? formatter.format(end) : null)\n })\n\n writeValue(value: DateRangeValue | null): void {\n this.value.set(value)\n if (value) {\n this.focusedDate.set(value.start)\n this.anchorDate.set(new Date(value.start.getFullYear(), value.start.getMonth(), 1))\n }\n }\n\n registerOnChange(fn: (value: DateRangeValue | null) => 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 protected isRangeStartCap(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && isSameDay(date, bounds.lower)\n }\n\n protected isRangeEndCap(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && isSameDay(date, bounds.upper)\n }\n\n protected isInRange(date: Date): boolean {\n const bounds = this.previewBounds()\n return bounds !== null && date.getTime() > bounds.lower.getTime() && date.getTime() < bounds.upper.getTime()\n }\n\n protected isFocused(date: Date): boolean {\n return isSameDay(this.focusedDate(), date)\n }\n\n protected cellId(date: Date): string {\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(\n date.getDate(),\n ).padStart(2, '0')}`\n }\n\n protected toggleOpen(): void {\n if (this.isDisabled()) {\n return\n }\n this.open.update((v) => !v)\n if (this.open()) {\n const value = this.value()\n const target = value?.start ?? new Date()\n this.draftStart.set(value?.start ?? null)\n this.draftEnd.set(value?.end ?? null)\n this.hoveredDate.set(null)\n this.focusedDate.set(target)\n this.anchorDate.set(new Date(target.getFullYear(), target.getMonth(), 1))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n } else {\n this.onTouched()\n }\n }\n\n protected close(returnFocus: boolean): void {\n if (!this.open()) {\n return\n }\n this.open.set(false)\n this.onTouched()\n if (returnFocus) {\n this.trigger()?.focus()\n }\n }\n\n protected clear(event: Event): void {\n event.stopPropagation()\n if (this.isDisabled()) {\n return\n }\n this.value.set(null)\n this.draftStart.set(null)\n this.draftEnd.set(null)\n this.onChange(null)\n this.onTouched()\n this.close(false)\n }\n\n protected selectDay(date: Date): void {\n if (this.isDisabled()) {\n return\n }\n const start = this.draftStart()\n const complete = start !== null && this.draftEnd() !== null\n if (!start || complete) {\n this.draftStart.set(date)\n this.draftEnd.set(null)\n this.focusedDate.set(date)\n this.ensureVisible(date)\n this.focusCellAfterRender()\n return\n }\n const [rangeStart, rangeEnd] = start.getTime() <= date.getTime() ? [start, date] : [date, start]\n this.draftStart.set(rangeStart)\n this.draftEnd.set(rangeEnd)\n this.focusedDate.set(date)\n this.ensureVisible(date)\n const next: DateRangeValue = { start: rangeStart, end: rangeEnd }\n this.value.set(next)\n this.onChange(next)\n this.onTouched()\n this.close(true)\n }\n\n protected onDayMouseEnter(date: Date): void {\n this.hoveredDate.set(date)\n }\n\n protected onDayMouseLeave(): void {\n this.hoveredDate.set(null)\n }\n\n protected shiftMonth(delta: number): void {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(this.focusedDate(), delta))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onMonthSelect(value: string): void {\n this.setAnchorMonth(this.anchorDate().getFullYear(), Number(value))\n }\n\n protected onYearSelect(value: string): void {\n this.setAnchorMonth(Number(value), this.anchorDate().getMonth())\n }\n\n private setAnchorMonth(year: number, month: number): void {\n const dayOfMonth = this.focusedDate().getDate()\n const daysInTarget = new Date(year, month + 1, 0).getDate()\n this.anchorDate.set(new Date(year, month, 1))\n this.focusedDate.set(new Date(year, month, Math.min(dayOfMonth, daysInTarget)))\n this.updatePanelPosition()\n this.focusCellAfterRender()\n }\n\n protected onGridKeydown(event: KeyboardEvent): void {\n const current = this.focusedDate()\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.selectDay(current)\n return\n }\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n event.preventDefault()\n const delta = event.key === 'PageDown' ? 1 : -1\n if (event.shiftKey) {\n this.anchorDate.set(addYears(this.anchorDate(), delta))\n this.focusedDate.set(addYears(current, delta))\n } else {\n this.anchorDate.set(addMonths(this.anchorDate(), delta))\n this.focusedDate.set(addMonths(current, delta))\n }\n this.updatePanelPosition()\n this.focusCellAfterRender()\n return\n }\n const next = this.nextFocusedDate(current, event)\n if (next === null) {\n return\n }\n event.preventDefault()\n this.ensureVisible(next)\n this.focusedDate.set(next)\n this.focusCellAfterRender()\n }\n\n private nextFocusedDate(current: Date, event: KeyboardEvent): Date | null {\n switch (event.key) {\n case 'ArrowRight':\n return shiftDays(current, 1)\n case 'ArrowLeft':\n return shiftDays(current, -1)\n case 'ArrowDown':\n return shiftDays(current, 7)\n case 'ArrowUp':\n return shiftDays(current, -7)\n case 'Home':\n return startOfWeek(current, this.weekStartsOn())\n case 'End':\n return endOfWeek(current, this.weekStartsOn())\n default:\n return null\n }\n }\n\n /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */\n private ensureVisible(date: Date): void {\n const anchor = this.anchorDate()\n const visibleMonths = this.visibleMonths()\n const monthsDiff =\n (date.getFullYear() - anchor.getFullYear()) * 12 + (date.getMonth() - anchor.getMonth())\n if (monthsDiff < 0) {\n this.anchorDate.set(new Date(date.getFullYear(), date.getMonth(), 1))\n } else if (monthsDiff >= visibleMonths) {\n this.anchorDate.set(addMonths(anchor, monthsDiff - visibleMonths + 1))\n }\n }\n\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.close(true)\n }\n }\n\n protected handleClickOutside(event: MouseEvent): void {\n if (this.open() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close(false)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.trigger()\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({ top: `${rect.bottom + 6}px`, left: `${rect.left}px` })\n }\n\n private trigger(): HTMLButtonElement | null {\n return this.elementRef.nativeElement.querySelector('.gbt-date-range-picker__trigger')\n }\n\n private focusCellAfterRender(): void {\n afterNextRender(\n () => {\n const id = this.cellId(this.focusedDate())\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-date=\"${id}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction shiftDays(date: Date, delta: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + delta)\n}\n","<div class=\"gbt-date-range-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-range-picker__label\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <div class=\"gbt-date-range-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-range-picker__trigger\"\n [class.gbt-date-range-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-range-picker__trigger-label\"\n [class.gbt-date-range-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-range-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-range-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-range-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-range-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-range-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">{{ year }}</option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-range-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-range-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-range-picker__month\">\n <div\n class=\"gbt-date-range-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-range-picker__row gbt-date-range-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-range-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-range-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day\"\n [class.gbt-date-range-picker__day--today]=\"day.isToday\"\n [class.gbt-date-range-picker__day--start-cap]=\"isRangeStartCap(day.date)\"\n [class.gbt-date-range-picker__day--end-cap]=\"isRangeEndCap(day.date)\"\n [class.gbt-date-range-picker__day--in-range]=\"isInRange(day.date)\"\n [class.gbt-date-range-picker__day--preview]=\"isPreviewing()\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\"\n (mouseleave)=\"onDayMouseLeave()\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span role=\"gridcell\" class=\"gbt-date-range-picker__day gbt-date-range-picker__day--empty\"></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{ statusMessage() }}</div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-range-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Accordion } from '../accordion/accordion'\n\n@Component({\n selector: 'gbt-accordion-item',\n standalone: true,\n imports: [Icon],\n templateUrl: './accordion-item.html',\n styleUrl: './accordion-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItem {\n private readonly parent = inject(Accordion)\n private readonly header = viewChild<ElementRef<HTMLButtonElement>>('header')\n\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n protected readonly headerId = computed(() => `${this.groupId()}-header-${this.index()}`)\n protected readonly panelId = computed(() => `${this.groupId()}-panel-${this.index()}`)\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n\n focusHeader(): void {\n this.header()?.nativeElement.focus()\n }\n\n protected toggle(): void {\n this.parent.toggle(this.index())\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n this.parent.focusHeader(this.index() + 1)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n this.parent.focusHeader(this.index() - 1)\n }\n }\n}\n","<button\n #header\n type=\"button\"\n class=\"gbt-accordion-item__header\"\n [class.gbt-accordion-item__header--open]=\"active()\"\n [id]=\"headerId()\"\n [attr.aria-expanded]=\"active()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"gbt-accordion-item__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-accordion-item__chevron\" aria-hidden=\"true\" />\n</button>\n<div\n class=\"gbt-accordion-item__panel\"\n [class.gbt-accordion-item__panel--open]=\"active()\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.inert]=\"active() ? null : ''\"\n>\n <div class=\"gbt-accordion-item__panel-inner\">\n <div class=\"gbt-accordion-item__panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren, effect, input, model } from '@angular/core'\nimport { AccordionItem } from '../accordion-item/accordion-item'\n\nexport type AccordionMode = 'single' | 'multiple'\n\nlet nextAccordionId = 0\n\n@Component({\n selector: 'gbt-accordion',\n standalone: true,\n imports: [],\n template: `\n <div class=\"gbt-accordion\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './accordion.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n id = input<string>(`gbt-accordion-${++nextAccordionId}`)\n mode = input<AccordionMode>('single')\n expanded = model<number[]>([])\n\n protected readonly items = contentChildren(AccordionItem)\n\n constructor() {\n effect(() => {\n const items = this.items()\n const expanded = this.expanded()\n const groupId = this.id()\n items.forEach((item, i) => item.setState(i, expanded.includes(i), groupId))\n })\n }\n\n toggle(index: number): void {\n const current = this.expanded()\n if (this.mode() === 'single') {\n this.expanded.set(current.includes(index) ? [] : [index])\n return\n }\n this.expanded.set(\n current.includes(index) ? current.filter((i) => i !== index) : [...current, index],\n )\n }\n\n focusHeader(index: number): void {\n const items = this.items()\n const count = items.length\n if (count === 0) {\n return\n }\n const wrapped = ((index % count) + count) % count\n items[wrapped]?.focusHeader()\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n effect,\n input,\n output,\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormControl, ReactiveFormsModule } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\nimport { Select, SelectOption } from '../select/select'\n\nexport const ELLIPSIS = '…' as const\nexport type PaginationItem = number | typeof ELLIPSIS\n\nfunction range(start: number, end: number): number[] {\n return Array.from({ length: end - start + 1 }, (_, i) => start + i)\n}\n\nexport function paginationRange(page: number, pageCount: number, siblingCount: number): PaginationItem[] {\n const totalPageNumbers = siblingCount + 5\n\n if (totalPageNumbers >= pageCount) {\n return range(1, pageCount)\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1)\n const rightSiblingIndex = Math.min(page + siblingCount, pageCount)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n // -2, not -1: a lone skipped page right before the last one isn't worth an\n // ellipsis — showing that page costs no more room than the \"…\" would.\n const shouldShowRightDots = rightSiblingIndex < pageCount - 2\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + siblingCount * 2\n return [...range(1, leftItemCount), ELLIPSIS, pageCount]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + siblingCount * 2\n return [1, ELLIPSIS, ...range(pageCount - rightItemCount + 1, pageCount)]\n }\n\n return [1, ELLIPSIS, ...range(leftSiblingIndex, rightSiblingIndex), ELLIPSIS, pageCount]\n}\n\n@Component({\n selector: 'gbt-pagination',\n standalone: true,\n imports: [Icon, Select, ReactiveFormsModule],\n templateUrl: './pagination.html',\n styleUrl: './pagination.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Pagination {\n page = input<number>(1)\n pageSize = input<number>(10)\n totalItems = input.required<number>()\n siblingCount = input<number>(1)\n disabled = input(false, { transform: booleanAttribute })\n ariaLabel = input<string>('Pagination')\n previousLabel = input<string>('Previous page')\n nextLabel = input<string>('Next page')\n pageLabel = input<(page: number) => string>((page) => `Page ${page}`)\n\n pageSizeOptions = input<number[]>([])\n pageSizeLabel = input<(size: number) => string>((size) => `${size} / page`)\n pageSizeSelectLabel = input<string>('Rows per page')\n showItemsSummary = input(false, { transform: booleanAttribute })\n itemsSummaryLabel = input<(shown: number, total: number) => string>(\n (shown, total) => `${shown} of ${total} items`,\n )\n\n pageChange = output<number>()\n pageSizeChange = output<number>()\n\n protected readonly ELLIPSIS = ELLIPSIS\n\n protected readonly pageCount = computed(() =>\n Math.max(1, Math.ceil(this.totalItems() / this.pageSize())),\n )\n\n protected readonly items = computed(() =>\n paginationRange(this.page(), this.pageCount(), this.siblingCount()),\n )\n\n protected readonly itemsShown = computed(() => {\n const start = (this.page() - 1) * this.pageSize()\n return Math.max(0, Math.min(this.pageSize(), this.totalItems() - start))\n })\n\n protected readonly itemsSummary = computed(() =>\n this.itemsSummaryLabel()(this.itemsShown(), this.totalItems()),\n )\n\n protected readonly pageSizeSelectOptions = computed<SelectOption<number>[]>(() =>\n this.pageSizeOptions().map((size) => ({ value: size, label: this.pageSizeLabel()(size) })),\n )\n\n protected readonly pageSizeControl = new FormControl<number>(this.pageSize(), {\n nonNullable: true,\n })\n\n constructor() {\n effect(() => {\n const size = this.pageSize()\n if (this.pageSizeControl.value !== size) {\n this.pageSizeControl.setValue(size, { emitEvent: false })\n }\n })\n\n this.pageSizeControl.valueChanges.pipe(takeUntilDestroyed()).subscribe((size) => {\n this.pageSizeChange.emit(size)\n this.pageChange.emit(1)\n })\n\n // Self-heals a stale `page` — e.g. a filter shrinks `totalItems` while\n // the app was sitting on a now out-of-range page — instead of leaving\n // the pager stuck with no page marked current and a live \"previous\"\n // button pointing at a page that no longer exists.\n effect(() => {\n const count = this.pageCount()\n const current = this.page()\n const clamped = Math.min(Math.max(current, 1), count)\n if (clamped !== current) {\n this.pageChange.emit(clamped)\n }\n })\n }\n\n protected goTo(page: number): void {\n if (this.disabled()) return\n const clamped = Math.min(Math.max(page, 1), this.pageCount())\n if (clamped === this.page()) return\n this.pageChange.emit(clamped)\n }\n}\n","<div class=\"gbt-pagination\">\n <div class=\"gbt-pagination__side gbt-pagination__side--start\">\n @if (showItemsSummary()) {\n <span class=\"gbt-pagination__summary\">{{ itemsSummary() }}</span>\n }\n </div>\n\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ul class=\"gbt-pagination__list\">\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n </li>\n @for (item of items(); track $index) {\n @if (item === ELLIPSIS) {\n <li class=\"gbt-pagination__ellipsis\" aria-hidden=\"true\">{{ ELLIPSIS }}</li>\n } @else {\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__page\"\n [class.gbt-pagination__page--current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n [attr.aria-label]=\"pageLabel()(item)\"\n [disabled]=\"disabled()\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n }\n }\n <li>\n <button\n type=\"button\"\n class=\"gbt-pagination__nav\"\n [disabled]=\"disabled() || page() >= pageCount()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </li>\n </ul>\n </nav>\n\n <div class=\"gbt-pagination__side gbt-pagination__side--end\">\n @if (pageSizeOptions().length > 0) {\n <gbt-select\n class=\"gbt-pagination__page-size\"\n size=\"sm\"\n [label]=\"pageSizeSelectLabel()\"\n [options]=\"pageSizeSelectOptions()\"\n [disabled]=\"disabled()\"\n [formControl]=\"pageSizeControl\"\n />\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\n@Component({\n selector: 'gbt-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Breadcrumb {\n ariaLabel = input.required<string>()\n}\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"gbt-breadcrumb\">\n <ol class=\"gbt-breadcrumb__list\">\n <ng-content select=\"[breadcrumb-ancestor]\" />\n <li class=\"gbt-breadcrumb__current\" aria-current=\"page\"><ng-content /></li>\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { FormsModule } from '@angular/forms'\nimport { Button } from '../../atoms/button/button'\nimport { GbtInput } from '../../atoms/input/input'\nimport { Modal } from '../modal/modal'\n\n@Component({\n selector: 'gbt-confirm-danger-modal',\n standalone: true,\n imports: [FormsModule, Modal, GbtInput, Button],\n templateUrl: './confirm-danger-modal.html',\n styleUrl: './confirm-danger-modal.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmDangerModal {\n isOpen = input.required<boolean>()\n heading = input.required<string>()\n message = input.required<string>()\n confirmText = input.required<string>()\n confirmInputLabel = input<string>('Type to confirm')\n confirmLabel = input<string>('Confirm')\n cancelLabel = input<string>('Cancel')\n closeLabel = input<string>('Close')\n\n confirmed = output<void>()\n closed = output<void>()\n\n protected readonly typed = signal('')\n protected readonly canConfirm = computed(\n () => this.typed().length > 0 && this.typed() === this.confirmText(),\n )\n\n constructor() {\n // Cleared whenever the modal transitions to closed (Cancel, Escape,\n // backdrop, or the consumer setting isOpen false after a successful\n // confirm) — a later reopen must never show the previous attempt's text.\n effect(() => {\n if (!this.isOpen()) {\n this.typed.set('')\n }\n })\n }\n\n protected confirm(): void {\n if (this.canConfirm()) {\n this.confirmed.emit()\n }\n }\n\n protected cancel(): void {\n this.closed.emit()\n }\n}\n","<gbt-modal\n [isOpen]=\"isOpen()\"\n [heading]=\"heading()\"\n [closeLabel]=\"closeLabel()\"\n (closed)=\"cancel()\"\n>\n <p class=\"gbt-confirm-danger-modal__message\">{{ message() }}</p>\n <gbt-input\n [label]=\"confirmInputLabel()\"\n [ngModel]=\"typed()\"\n (ngModelChange)=\"typed.set($event)\"\n />\n <div class=\"gbt-confirm-danger-modal__actions\">\n <gbt-button variant=\"secondary\" [text]=\"cancelLabel()\" (clicked)=\"cancel()\" />\n <gbt-button\n variant=\"danger\"\n [text]=\"confirmLabel()\"\n [disabled]=\"!canConfirm()\"\n (clicked)=\"confirm()\"\n />\n </div>\n</gbt-modal>\n","import { ChangeDetectionStrategy, Component, OnDestroy, effect, input, output } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nconst DEFAULT_DURATION_MS = 5000\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info'\n\nexport type ToasterPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n\nexport interface ToastItem {\n id: string\n variant: ToastVariant\n message: string\n duration?: number\n}\n\nconst ASSERTIVE_VARIANTS: ReadonlySet<ToastVariant> = new Set(['warning', 'error'])\n\nconst VARIANT_ICONS: Record<ToastVariant, string> = {\n success: 'check-circle',\n error: 'alert-circle',\n warning: 'alert-triangle',\n info: 'info',\n}\n\n@Component({\n selector: 'gbt-toaster',\n standalone: true,\n imports: [Icon],\n templateUrl: './toaster.html',\n styleUrl: './toaster.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toaster implements OnDestroy {\n toasts = input.required<ToastItem[]>()\n position = input<ToasterPosition>('bottom-right')\n closeLabel = input<string>('Close')\n\n dismissed = output<string>()\n\n private readonly timers = new Map<string, ReturnType<typeof setTimeout>>()\n\n constructor() {\n effect(() => {\n const currentIds = new Set(this.toasts().map((toast) => toast.id))\n\n for (const [id, timer] of this.timers) {\n if (!currentIds.has(id)) {\n clearTimeout(timer)\n this.timers.delete(id)\n }\n }\n\n for (const toast of this.toasts()) {\n if (this.timers.has(toast.id)) {\n continue\n }\n const duration = toast.duration ?? DEFAULT_DURATION_MS\n if (!Number.isFinite(duration) || duration <= 0) {\n continue\n }\n this.timers.set(\n toast.id,\n setTimeout(() => {\n this.timers.delete(toast.id)\n this.dismissed.emit(toast.id)\n }, duration),\n )\n }\n })\n }\n\n ngOnDestroy(): void {\n for (const timer of this.timers.values()) {\n clearTimeout(timer)\n }\n this.timers.clear()\n }\n\n protected roleFor(variant: ToastVariant): 'alert' | 'status' {\n return ASSERTIVE_VARIANTS.has(variant) ? 'alert' : 'status'\n }\n\n protected iconFor(variant: ToastVariant): string {\n return VARIANT_ICONS[variant]\n }\n}\n","<div class=\"gbt-toaster\" [attr.data-position]=\"position()\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"gbt-toaster__item\"\n [attr.data-variant]=\"toast.variant\"\n [attr.role]=\"roleFor(toast.variant)\"\n aria-atomic=\"true\"\n >\n <span class=\"gbt-toaster__icon\">\n <gbt-icon [name]=\"iconFor(toast.variant)\" aria-hidden=\"true\" />\n </span>\n <p class=\"gbt-toaster__message\">{{ toast.message }}</p>\n <button\n type=\"button\"\n class=\"gbt-toaster__close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"dismissed.emit(toast.id)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n inject,\n input,\n signal,\n} from '@angular/core'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipCoords {\n top: number\n left: number\n}\n\nconst SHOW_DELAY_MS = 400\nconst FADE_MS = 120\nconst GAP_PX = 8\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tooltip',\n standalone: true,\n exportAs: 'gbtTooltip',\n imports: [],\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gbt-tooltip-host',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'hide()',\n '(keydown.escape)': 'hide()',\n '(window:scroll)': 'updatePosition()',\n '(window:resize)': 'updatePosition()',\n },\n})\nexport class Tooltip implements OnDestroy {\n private readonly elementRef = inject(ElementRef<HTMLElement>)\n\n text = input.required<string>()\n position = input<TooltipPosition>('top')\n\n readonly tooltipId = `gbt-tooltip-${++nextId}`\n\n protected readonly visible = signal(false)\n protected readonly closing = signal(false)\n protected readonly coords = signal<TooltipCoords | null>(null)\n\n private showTimer: ReturnType<typeof setTimeout> | null = null\n private hideTimer: ReturnType<typeof setTimeout> | null = null\n\n protected onMouseEnter(): void {\n this.showTimer = setTimeout(() => {\n this.showTimer = null\n this.show()\n }, SHOW_DELAY_MS)\n }\n\n protected onFocusIn(): void {\n this.show()\n }\n\n private show(): void {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n this.closing.set(false)\n this.updatePosition()\n this.visible.set(true)\n }\n\n protected updatePosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect()\n switch (this.position()) {\n case 'top':\n this.coords.set({ top: rect.top - GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'bottom':\n this.coords.set({ top: rect.bottom + GAP_PX, left: rect.left + rect.width / 2 })\n break\n case 'left':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.left - GAP_PX })\n break\n case 'right':\n this.coords.set({ top: rect.top + rect.height / 2, left: rect.right + GAP_PX })\n break\n }\n }\n\n protected hide(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (!this.visible() || this.closing()) return\n this.closing.set(true)\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n this.closing.set(false)\n this.visible.set(false)\n }, FADE_MS)\n }\n\n ngOnDestroy(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer)\n this.showTimer = null\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n }\n }\n}\n","<ng-content />\n@if (visible() && coords(); as pos) {\n <span\n class=\"gbt-tooltip__bubble\"\n [class.gbt-tooltip__bubble--leaving]=\"closing()\"\n role=\"tooltip\"\n [id]=\"tooltipId\"\n [attr.data-position]=\"position()\"\n [style.top.px]=\"pos.top\"\n [style.left.px]=\"pos.left\"\n >\n {{ text() }}\n </span>\n}","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nexport interface RadioOption<T = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-radio-group',\n standalone: true,\n imports: [],\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup<T = string> implements ControlValueAccessor {\n id = input<string>(`gbt-radio-group-${++nextId}`)\n label = input.required<string>()\n options = input.required<RadioOption<T>[]>()\n orientation = input<'vertical' | 'horizontal'>('vertical')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n\n protected readonly selected = signal<T | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: T) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: T | null): void {\n this.selected.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 protected isSelected(value: T): boolean {\n return this.selected() === value\n }\n\n protected selectOption(value: T): void {\n this.selected.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<fieldset\n class=\"gbt-radio-group\"\n [attr.data-orientation]=\"orientation()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n>\n <legend class=\"gbt-radio-group__legend\">{{ label() }}{{ required() ? ' *' : '' }}</legend>\n <div class=\"gbt-radio-group__options\">\n @for (option of options(); track option.value; let i = $index) {\n <label class=\"gbt-radio-group__option\">\n <input\n type=\"radio\"\n [id]=\"id() + '-' + i\"\n [name]=\"id()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"selectOption(option.value)\"\n />\n <span>{{ option.label }}</span>\n </label>\n }\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-radio-group__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</fieldset>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextSwitchId = 0\n\n@Component({\n selector: 'gbt-switch',\n standalone: true,\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Switch),\n multi: true,\n },\n ],\n})\nexport class Switch implements ControlValueAccessor {\n id = input<string>(`gbt-switch-${++nextSwitchId}`)\n label = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n\n protected readonly checked = signal(false)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: boolean) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: boolean): void {\n this.checked.set(!!value)\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n protected onToggle(event: Event): void {\n const value = (event.target as HTMLInputElement).checked\n this.checked.set(value)\n this.onChange(value)\n this.onTouched()\n }\n}\n","<label class=\"gbt-switch\" [class.gbt-switch--disabled]=\"isDisabled()\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"gbt-switch__input\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onToggle($event)\"\n />\n <span class=\"gbt-switch__track\">\n <span class=\"gbt-switch__thumb\"></span>\n </span>\n <span>{{ label() }}</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-textarea',\n standalone: true,\n imports: [],\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Textarea),\n multi: true,\n },\n ],\n})\nexport class Textarea implements ControlValueAccessor {\n id = input<string>(`gbt-textarea-${++nextId}`)\n label = input<string>('')\n required = input(false, { transform: booleanAttribute })\n disabled = input(false, { transform: booleanAttribute })\n placeholder = input<string>('')\n errorMessage = input<string | null>(null)\n rows = input(3)\n\n committed = output<string>()\n\n protected readonly value = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string): void {\n this.value.set(value ?? '')\n }\n\n registerOnChange(fn: (value: string) => 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 protected onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n this.committed.emit(this.value())\n }\n}\n","<div class=\"gbt-textarea\">\n @if (label()) {\n <label [for]=\"id()\">{{ label() }}{{ required() ? ' *' : '' }}</label>\n }\n <textarea\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value() }}</textarea\n >\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-textarea__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { NgTemplateOutlet } from '@angular/common'\nimport { Subscription, isObservable, type Observable } from 'rxjs'\n\nexport type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>\n\nlet nextAutocompleteId = 0\n\n@Component({\n selector: 'gbt-autocomplete',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'updatePanelPosition()',\n '(window:resize)': 'updatePanelPosition()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Autocomplete),\n multi: true,\n },\n ],\n})\nexport class Autocomplete<T = unknown> implements ControlValueAccessor, OnDestroy {\n private readonly elementRef = inject(ElementRef)\n\n id = input<string>(`gbt-autocomplete-${++nextAutocompleteId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n required = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n search = input.required<AutocompleteSearchFn<T>>()\n displayFn = input<(item: T) => string>((item) => String(item))\n itemTemplate = input<TemplateRef<unknown>>()\n debounceMs = input<number>(300)\n minLength = input<number>(1)\n loadingMessage = input<string>('Searching…')\n noResultsMessage = input<string>('No results')\n searchErrorMessage = input<string>('Search failed')\n resultsAnnouncement = input<(count: number) => string>(\n (count) => `${count} result${count !== 1 ? 's' : ''}`,\n )\n\n itemSelected = output<T>()\n\n protected readonly query = signal('')\n protected readonly open = signal(false)\n protected readonly results = signal<T[]>([])\n protected readonly loading = signal(false)\n protected readonly searchFailed = signal(false)\n protected readonly activeIndex = signal(0)\n protected readonly selectedItem = signal<T | null>(null)\n protected readonly panelStyle = signal<{ top: string; left: string; width: string } | null>(null)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly hasNoResults = computed(\n () => this.open() && !this.loading() && !this.searchFailed() && this.results().length === 0,\n )\n\n protected readonly activeOptionId = computed(() =>\n this.open() && this.results().length > 0 ? `${this.id()}-option-${this.activeIndex()}` : null,\n )\n\n private onChange: (value: T | null) => void = () => {}\n private onTouched: () => void = () => {}\n\n private requestSeq = 0\n private debounceHandle?: ReturnType<typeof setTimeout>\n private subscription?: Subscription\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled)\n }\n\n writeValue(value: T | null): void {\n this.selectedItem.set(value)\n this.query.set(value === null || value === undefined ? '' : this.displayFn()(value))\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n protected onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value\n this.query.set(value)\n this.activeIndex.set(0)\n if (this.selectedItem() !== null) {\n this.selectedItem.set(null)\n this.onChange(null)\n }\n this.scheduleSearch(value)\n }\n\n protected onFocus(): void {\n if (\n this.query().trim().length >= this.minLength() &&\n (this.results().length > 0 || this.searchFailed())\n ) {\n this.open.set(true)\n this.updatePanelPosition()\n }\n }\n\n protected onBlur(): void {\n this.onTouched()\n setTimeout(() => {\n if (!this.elementRef.nativeElement.contains(document.activeElement)) {\n this.open.set(false)\n }\n }, 200)\n }\n\n private scheduleSearch(value: string): void {\n clearTimeout(this.debounceHandle)\n if (value.trim().length < this.minLength()) {\n this.requestSeq++\n this.subscription?.unsubscribe()\n this.open.set(false)\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(false)\n return\n }\n this.debounceHandle = setTimeout(() => this.runSearch(value), this.debounceMs())\n }\n\n private runSearch(query: string): void {\n const seq = ++this.requestSeq\n this.subscription?.unsubscribe()\n this.loading.set(true)\n this.searchFailed.set(false)\n this.open.set(true)\n this.updatePanelPosition()\n\n const applyResults = (items: T[]): void => {\n if (seq !== this.requestSeq) return\n this.results.set(items)\n this.loading.set(false)\n this.activeIndex.set(0)\n this.updatePanelPosition()\n }\n const applyError = (): void => {\n if (seq !== this.requestSeq) return\n this.results.set([])\n this.loading.set(false)\n this.searchFailed.set(true)\n this.updatePanelPosition()\n }\n\n const result = this.search()(query)\n if (isObservable(result)) {\n this.subscription = result.subscribe({ next: applyResults, error: applyError })\n } else {\n result.then(applyResults, applyError)\n }\n }\n\n protected updatePanelPosition(): void {\n if (!this.open()) {\n return\n }\n const trigger = this.elementRef.nativeElement.querySelector(\n '.gbt-autocomplete__input',\n ) as HTMLElement | null\n if (!trigger) {\n return\n }\n const rect = trigger.getBoundingClientRect()\n this.panelStyle.set({\n top: `${rect.bottom + 6}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n })\n }\n\n protected selectOption(item: T): void {\n this.selectedItem.set(item)\n this.query.set(this.displayFn()(item))\n this.results.set([])\n this.open.set(false)\n this.onChange(item)\n this.onTouched()\n this.itemSelected.emit(item)\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) {\n return\n }\n if (event.key === 'Escape') {\n if (this.open()) {\n event.preventDefault()\n event.stopPropagation()\n this.open.set(false)\n }\n return\n }\n if (!this.open() || this.results().length === 0) {\n return\n }\n const results = this.results()\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.activeIndex.update((i) => Math.min(i + 1, results.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.activeIndex.update((i) => Math.max(i - 1, 0))\n break\n case 'Enter': {\n event.preventDefault()\n const active = results[this.activeIndex()]\n if (active) {\n this.selectOption(active)\n }\n break\n }\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.debounceHandle)\n this.subscription?.unsubscribe()\n }\n}\n","<div class=\"gbt-autocomplete\" [class.gbt-autocomplete--disabled]=\"isDisabled()\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-autocomplete__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n\n <input\n [id]=\"id()\"\n type=\"text\"\n class=\"gbt-autocomplete__input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? id() + '-listbox' : null\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-required]=\"required() ? true : null\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n @if (open()) {\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\n @if (loading()) {\n {{ loadingMessage() }}\n } @else if (searchFailed()) {\n {{ searchErrorMessage() }}\n } @else {\n {{ resultsAnnouncement()(results().length) }}\n }\n </div>\n }\n\n @if (open() && panelStyle(); as style) {\n <div\n class=\"gbt-autocomplete__panel\"\n [style.top]=\"style.top\"\n [style.left]=\"style.left\"\n [style.width]=\"style.width\"\n (mousedown)=\"$event.preventDefault()\"\n >\n @if (loading()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ loadingMessage() }}</span>\n </div>\n } @else if (searchFailed()) {\n <div class=\"gbt-autocomplete__state gbt-autocomplete__state--error\" role=\"alert\">\n <span>{{ searchErrorMessage() }}</span>\n </div>\n } @else if (hasNoResults()) {\n <div class=\"gbt-autocomplete__state\" role=\"status\">\n <span>{{ noResultsMessage() }}</span>\n </div>\n } @else {\n <ul\n [id]=\"id() + '-listbox'\"\n class=\"gbt-autocomplete__list\"\n role=\"listbox\"\n [attr.aria-label]=\"label() || placeholder()\"\n >\n @for (item of results(); track $index; let i = $index) {\n <li role=\"presentation\">\n <button\n [id]=\"id() + '-option-' + i\"\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"gbt-autocomplete__option\"\n [class.gbt-autocomplete__option--active]=\"i === activeIndex()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (click)=\"selectOption(item)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (itemTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n } @else {\n <span class=\"gbt-autocomplete__option-label\">{{ displayFn()(item) }}</span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-autocomplete__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\n\n@Component({\n selector: 'gbt-divider',\n standalone: true,\n templateUrl: './divider.html',\n styleUrl: './divider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'separator',\n '[attr.data-orientation]': 'orientation()',\n '[attr.aria-orientation]': \"orientation() === 'vertical' ? 'vertical' : null\",\n },\n})\nexport class Divider {\n orientation = input<DividerOrientation>('horizontal')\n label = input<string>('')\n}\n","@if (label()) {\n <span class=\"gbt-divider__line\"></span>\n <span class=\"gbt-divider__label\">{{ label() }}</span>\n <span class=\"gbt-divider__line\"></span>\n} @else {\n <span class=\"gbt-divider__line\"></span>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\n@Component({\n selector: 'gbt-spinner',\n standalone: true,\n templateUrl: './spinner.html',\n styleUrl: './spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'status',\n '[attr.data-size]': 'size()',\n },\n})\nexport class Spinner {\n size = input<SpinnerSize>('md')\n label = input<string>('Loading…')\n}\n","<span class=\"gbt-spinner__ring\" aria-hidden=\"true\"></span>\n<span class=\"sr-only\">{{ label() }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-slider',\n standalone: true,\n imports: [],\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true,\n },\n ],\n})\nexport class Slider implements ControlValueAccessor {\n id = input<string>(`gbt-slider-${++nextId}`)\n label = input.required<string>()\n min = input(0)\n max = input(100)\n step = input(1)\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n showValue = input(true, { transform: booleanAttribute })\n formatValue = input<(value: number) => string>((value) => `${value}`)\n\n protected readonly value = signal(0)\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n protected readonly fillPercent = computed(() => {\n const range = this.max() - this.min()\n if (range <= 0) {\n return 0\n }\n return ((this.value() - this.min()) / range) * 100\n })\n\n private onChange: (value: number) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: number): void {\n this.value.set(value ?? 0)\n }\n\n registerOnChange(fn: (value: number) => 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 protected onInput(event: Event): void {\n const value = Number((event.target as HTMLInputElement).value)\n this.value.set(value)\n this.onChange(value)\n }\n\n protected onBlur(): void {\n this.onTouched()\n }\n}\n","<div class=\"gbt-slider\">\n <div class=\"gbt-slider__header\">\n <label [for]=\"id()\">{{ label() }}</label>\n @if (showValue()) {\n <span class=\"gbt-slider__value\">{{ formatValue()(value()) }}</span>\n }\n </div>\n <input\n type=\"range\"\n [id]=\"id()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"isDisabled()\"\n [style.--gbt-slider-fill.%]=\"fillPercent()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-slider__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common'\nimport { ChangeDetectionStrategy, Component, booleanAttribute, input, model } from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\n\nexport type StepperStatus = 'upcoming' | 'current' | 'completed' | 'error'\nexport type StepperOrientation = 'horizontal' | 'vertical'\n\nexport interface StepperStep {\n label: string\n hasError?: boolean\n}\n\n@Component({\n selector: 'gbt-stepper',\n standalone: true,\n imports: [Icon, NgTemplateOutlet],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stepper {\n steps = input.required<StepperStep[]>()\n activeIndex = model(0)\n orientation = input<StepperOrientation>('horizontal')\n completedLabel = input<string>('Completed')\n errorLabel = input<string>('Error')\n interactive = input(false, { transform: booleanAttribute })\n selectedIndex = model<number | null>(null)\n selectedLabel = input<string>('Selected')\n\n protected select(index: number): void {\n this.selectedIndex.set(index)\n }\n\n protected isSelected(index: number): boolean {\n return this.interactive() && this.selectedIndex() === index\n }\n\n protected statusOf(index: number): StepperStatus {\n const step = this.steps()[index]\n const active = this.activeIndex()\n if (step.hasError && index <= active) {\n return 'error'\n }\n if (index < active) {\n return 'completed'\n }\n if (index === active) {\n return 'current'\n }\n return 'upcoming'\n }\n}\n","<ng-template #content let-index=\"index\" let-step=\"step\">\n <span class=\"gbt-stepper__indicator\">\n @switch (statusOf(index)) {\n @case ('completed') {\n <gbt-icon name=\"check\" aria-hidden=\"true\" />\n }\n @case ('error') {\n <gbt-icon name=\"alert-triangle\" aria-hidden=\"true\" />\n }\n @default {\n {{ index + 1 }}\n }\n }\n </span>\n <span class=\"gbt-stepper__label\">\n {{ step.label }}\n @if (statusOf(index) === 'completed') {\n <span class=\"sr-only\"> — {{ completedLabel() }}</span>\n } @else if (statusOf(index) === 'error') {\n <span class=\"sr-only\"> — {{ errorLabel() }}</span>\n }\n @if (isSelected(index)) {\n <span class=\"sr-only\"> — {{ selectedLabel() }}</span>\n }\n </span>\n</ng-template>\n\n<ol class=\"gbt-stepper\" [attr.data-orientation]=\"orientation()\">\n @for (step of steps(); track $index) {\n <li\n class=\"gbt-stepper__step\"\n [attr.data-status]=\"statusOf($index)\"\n [attr.data-selected]=\"isSelected($index) ? '' : null\"\n [attr.aria-current]=\"statusOf($index) === 'current' ? 'step' : null\"\n >\n @if (interactive()) {\n <button type=\"button\" class=\"gbt-stepper__button\" (click)=\"select($index)\">\n <ng-container *ngTemplateOutlet=\"content; context: { index: $index, step: step }\" />\n </button>\n } @else {\n <ng-container *ngTemplateOutlet=\"content; context: { index: $index, step: step }\" />\n }\n </li>\n }\n</ol>\n","import type { JobGraphStage } from './job-graph.types'\n\nexport interface GraphEdge {\n from: string\n to: string\n}\n\nexport interface Box {\n left: number\n top: number\n width: number\n height: number\n}\n\nexport function graphEdges(stages: JobGraphStage[]): GraphEdge[] {\n const names = new Set(stages.flatMap((stage) => stage.jobs.map((job) => job.name)))\n return stages.flatMap((stage) =>\n stage.jobs.flatMap((job) =>\n job.needs.filter((need) => names.has(need)).map((need) => ({ from: need, to: job.name })),\n ),\n )\n}\n\nconst round = (value: number): number => Math.round(value * 10) / 10\n\nexport function linkPath(from: Box, to: Box): string {\n const x1 = from.left + from.width\n const y1 = from.top + from.height / 2\n const x2 = to.left\n const y2 = to.top + to.height / 2\n const dx = Math.max(24, (x2 - x1) / 2)\n return `M ${round(x1)} ${round(y1)} C ${round(x1 + dx)} ${round(y1)}, ${round(x2 - dx)} ${round(y2)}, ${round(x2)} ${round(y2)}`\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n afterRenderEffect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\nimport { graphEdges, linkPath } from './job-graph-layout'\nimport type { JobGraphStage, JobGraphStatus } from './job-graph.types'\n\nexport type { JobGraphJob, JobGraphStage, JobGraphStatus } from './job-graph.types'\n\ninterface GraphLink {\n key: string\n d: string\n done: boolean\n}\n\nconst DEFAULT_STATUS_LABELS: Record<JobGraphStatus, string> = {\n pending: 'Pending',\n running: 'Running',\n success: 'Succeeded',\n failed: 'Failed',\n canceled: 'Canceled',\n}\n\n@Component({\n selector: 'gbt-job-graph',\n standalone: true,\n imports: [Icon],\n templateUrl: './job-graph.html',\n styleUrl: './job-graph.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class JobGraph {\n stages = input.required<JobGraphStage[]>()\n selectedJobId = input<string | null>(null)\n statusLabels = input<Record<JobGraphStatus, string>>(DEFAULT_STATUS_LABELS)\n needsLabel = input<string>('Needs')\n ariaLabel = input<string>('Pipeline jobs')\n jobSelected = output<string>()\n\n protected readonly links = signal<GraphLink[]>([])\n\n private readonly graph = viewChild<ElementRef<HTMLElement>>('graph')\n private readonly destroyRef = inject(DestroyRef)\n\n constructor() {\n afterRenderEffect(() => {\n this.stages()\n this.measure()\n })\n afterNextRender(() => {\n const root = this.graph()?.nativeElement\n if (!root || typeof ResizeObserver === 'undefined') {\n return\n }\n const observer = new ResizeObserver(() => this.measure())\n observer.observe(root)\n this.destroyRef.onDestroy(() => observer.disconnect())\n })\n }\n\n private measure(): void {\n const root = this.graph()?.nativeElement\n if (!root) {\n return\n }\n const origin = root.getBoundingClientRect()\n const boxes = new Map<string, { left: number; top: number; width: number; height: number }>()\n root.querySelectorAll<HTMLElement>('[data-job-name]').forEach((node) => {\n const rect = node.getBoundingClientRect()\n boxes.set(node.dataset['jobName'] ?? '', {\n left: rect.left - origin.left + root.scrollLeft,\n top: rect.top - origin.top + root.scrollTop,\n width: rect.width,\n height: rect.height,\n })\n })\n const statuses = new Map(\n this.stages().flatMap((s) => s.jobs.map((j) => [j.name, j.status] as const)),\n )\n this.links.set(\n graphEdges(this.stages()).flatMap((edge) => {\n const from = boxes.get(edge.from)\n const to = boxes.get(edge.to)\n return from && to\n ? [\n {\n key: `${edge.from}->${edge.to}`,\n d: linkPath(from, to),\n done: statuses.get(edge.from) === 'success',\n },\n ]\n : []\n }),\n )\n }\n}\n","<div class=\"gbt-job-graph\" #graph>\n <ol class=\"gbt-job-graph__stages\" [attr.aria-label]=\"ariaLabel()\">\n @for (stage of stages(); track stage.name) {\n <li class=\"gbt-job-graph__stage\">\n <h3 class=\"gbt-job-graph__stage-name\">{{ stage.name }}</h3>\n <ul class=\"gbt-job-graph__jobs\">\n @for (job of stage.jobs; track job.id) {\n <li>\n <button\n type=\"button\"\n class=\"gbt-job-graph__node\"\n [attr.data-job-name]=\"job.name\"\n [attr.data-status]=\"job.status\"\n [attr.aria-current]=\"job.id === selectedJobId() ? 'true' : null\"\n (click)=\"jobSelected.emit(job.id)\"\n >\n <span class=\"gbt-job-graph__glyph\" data-glyph aria-hidden=\"true\">\n @switch (job.status) {\n @case ('success') {\n <gbt-icon name=\"check-circle\" />\n }\n @case ('failed') {\n <gbt-icon name=\"alert-circle\" />\n }\n @case ('canceled') {\n <gbt-icon name=\"x\" />\n }\n @default {\n <span class=\"gbt-job-graph__dot\"></span>\n }\n }\n </span>\n <span class=\"gbt-job-graph__name\">{{ job.name }}</span>\n @if (job.durationLabel) {\n <span class=\"gbt-job-graph__duration\">{{ job.durationLabel }}</span>\n }\n <span class=\"sr-only\">\n — {{ statusLabels()[job.status] }}@if (job.needs.length > 0) {. {{ needsLabel() }}: {{ job.needs.join(', ') }}}\n </span>\n </button>\n </li>\n }\n </ul>\n </li>\n }\n </ol>\n <svg class=\"gbt-job-graph__links\" aria-hidden=\"true\" focusable=\"false\">\n @for (link of links(); track link.key) {\n <path [attr.d]=\"link.d\" [attr.data-done]=\"link.done ? '' : null\" />\n }\n </svg>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Icon } from '../../atoms/icon/icon'\n\nlet nextId = 0\n\nfunction formatFileSize(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 return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\n@Component({\n selector: 'gbt-file-upload',\n standalone: true,\n imports: [Icon],\n templateUrl: './file-upload.html',\n styleUrl: './file-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n ],\n})\nexport class FileUpload implements ControlValueAccessor {\n private readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput')\n\n id = input<string>(`gbt-file-upload-${++nextId}`)\n label = input<string>('')\n multiple = input(false, { transform: booleanAttribute })\n accept = input<string>('')\n maxSizeMb = input<number | null>(null)\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n dropLabel = input<string>('Drag and drop a file here, or click to browse')\n removeLabel = input<(name: string) => string>((name) => `Remove ${name}`)\n oversizeMessage = input<(name: string, maxSizeMb: number) => string>(\n (name, maxSizeMb) => `${name} exceeds ${maxSizeMb} MB and was not added.`,\n )\n\n protected readonly files = signal<File[]>([])\n protected readonly rejections = signal<string[]>([])\n protected readonly dragOver = signal(false)\n\n protected readonly formatFileSize = formatFileSize\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: File[]) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: File[] | null): void {\n this.files.set(value ?? [])\n }\n\n registerOnChange(fn: (value: File[]) => 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 protected openPicker(): void {\n if (this.isDisabled()) {\n return\n }\n this.fileInput()?.nativeElement.click()\n }\n\n protected onFilesSelected(event: Event): void {\n const input = event.target as HTMLInputElement\n this.addFiles(input.files)\n input.value = ''\n }\n\n protected onDragEnter(event: DragEvent): void {\n event.preventDefault()\n if (!this.isDisabled()) {\n this.dragOver.set(true)\n }\n }\n\n protected onDragOver(event: DragEvent): void {\n event.preventDefault()\n }\n\n protected onDragLeave(event: DragEvent): void {\n event.preventDefault()\n this.dragOver.set(false)\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault()\n this.dragOver.set(false)\n if (this.isDisabled()) {\n return\n }\n this.addFiles(event.dataTransfer?.files ?? null)\n }\n\n protected removeFile(file: File): void {\n if (this.isDisabled()) {\n return\n }\n const next = this.files().filter((f) => f !== file)\n this.files.set(next)\n this.onChange(next)\n this.onTouched()\n }\n\n private addFiles(fileList: FileList | null): void {\n if (!fileList || fileList.length === 0) {\n return\n }\n const incoming = Array.from(fileList)\n const maxSizeMb = this.maxSizeMb()\n const accepted: File[] = []\n const rejected: string[] = []\n for (const file of incoming) {\n if (maxSizeMb !== null && file.size > maxSizeMb * 1024 * 1024) {\n rejected.push(this.oversizeMessage()(file.name, maxSizeMb))\n } else {\n accepted.push(file)\n }\n }\n this.rejections.set(rejected)\n if (accepted.length === 0) {\n return\n }\n const next = this.multiple() ? [...this.files(), ...accepted] : accepted.slice(0, 1)\n this.files.set(next)\n this.onChange(next)\n this.onTouched()\n }\n}\n","<div class=\"gbt-file-upload\">\n @if (label()) {\n <span class=\"gbt-file-upload__label\" [id]=\"id() + '-label'\">{{ label() }}</span>\n }\n <button\n type=\"button\"\n class=\"gbt-file-upload__dropzone\"\n [class.gbt-file-upload__dropzone--drag-over]=\"dragOver()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-labelledby]=\"label() ? id() + '-label' : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"openPicker()\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event)\"\n >\n <gbt-icon name=\"upload\" class=\"gbt-file-upload__icon\" aria-hidden=\"true\" />\n <span class=\"gbt-file-upload__hint\">{{ dropLabel() }}</span>\n </button>\n <input\n #fileInput\n type=\"file\"\n class=\"gbt-file-upload__input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [multiple]=\"multiple()\"\n [attr.accept]=\"accept() || null\"\n [disabled]=\"isDisabled()\"\n (change)=\"onFilesSelected($event)\"\n />\n @if (rejections().length > 0) {\n <div class=\"gbt-file-upload__rejections\" role=\"alert\">\n <ul>\n @for (message of rejections(); track message) {\n <li>{{ message }}</li>\n }\n </ul>\n </div>\n }\n @if (files().length > 0) {\n <ul class=\"gbt-file-upload__files\">\n @for (file of files(); track file) {\n <li class=\"gbt-file-upload__file\">\n <span class=\"gbt-file-upload__file-name\">{{ file.name }}</span>\n <span class=\"gbt-file-upload__file-size\">{{ formatFileSize(file.size) }}</span>\n <button\n type=\"button\"\n class=\"gbt-file-upload__file-remove\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"removeLabel()(file.name)\"\n (click)=\"removeFile(file)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n </li>\n }\n </ul>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-file-upload__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\n\nexport type NotificationDotVariant = 'error' | 'warning' | 'success' | 'info'\n\n@Component({\n selector: 'gbt-notification-dot',\n standalone: true,\n exportAs: 'gbtNotificationDot',\n templateUrl: './notification-dot.html',\n styleUrl: './notification-dot.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationDot {\n count = input<number | null>(null)\n max = input<number>(99)\n variant = input<NotificationDotVariant>('error')\n hidden = input(false)\n\n protected readonly showDot = computed(() => !this.hidden() && this.count() !== 0)\n\n protected readonly displayValue = computed(() => {\n const count = this.count()\n if (count === null) {\n return ''\n }\n const max = this.max()\n return count > max ? `${max}+` : `${count}`\n })\n}\n","<span class=\"gbt-notification-dot__anchor\">\n <ng-content></ng-content>\n</span>\n@if (showDot()) {\n <span\n class=\"gbt-notification-dot__badge\"\n [class.gbt-notification-dot__badge--count]=\"count() !== null\"\n [attr.data-variant]=\"variant()\"\n aria-hidden=\"true\"\n >{{ displayValue() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { Tag } from '../../atoms/tag/tag'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-tag-input',\n standalone: true,\n imports: [Tag],\n templateUrl: './tag-input.html',\n styleUrl: './tag-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInput),\n multi: true,\n },\n ],\n})\nexport class TagInput implements ControlValueAccessor {\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('input')\n\n id = input<string>(`gbt-tag-input-${++nextId}`)\n label = input<string>('')\n placeholder = input<string>('')\n disabled = input(false, { transform: booleanAttribute })\n errorMessage = input<string | null>(null)\n separatorKeys = input<string[]>(['Enter', ','])\n allowDuplicates = input(false, { transform: booleanAttribute })\n color = input<string>('#6b7280')\n removeLabel = input<(value: string) => string>((value) => `Remove ${value}`)\n\n protected readonly tags = signal<string[]>([])\n protected readonly draft = signal('')\n\n private readonly formDisabled = signal(false)\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled())\n\n private onChange: (value: string[]) => void = () => {}\n private onTouched: () => void = () => {}\n\n writeValue(value: string[] | null): void {\n this.tags.set(value ?? [])\n }\n\n registerOnChange(fn: (value: string[]) => 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 protected focusInput(): void {\n if (!this.isDisabled()) {\n this.inputRef()?.nativeElement.focus()\n }\n }\n\n protected onInputChange(event: Event): void {\n this.draft.set((event.target as HTMLInputElement).value)\n }\n\n protected onInputKeydown(event: KeyboardEvent): void {\n if (this.separatorKeys().includes(event.key)) {\n event.preventDefault()\n this.commitDraft()\n return\n }\n if (event.key === 'Backspace' && this.draft() === '' && this.tags().length > 0) {\n event.preventDefault()\n this.removeTagAt(this.tags().length - 1)\n }\n }\n\n protected onBlur(): void {\n this.commitDraft()\n this.onTouched()\n }\n\n protected removeTagAt(index: number): void {\n if (this.isDisabled()) {\n return\n }\n const next = this.tags().filter((_, i) => i !== index)\n this.tags.set(next)\n this.onChange(next)\n }\n\n private commitDraft(): void {\n const value = this.draft().trim()\n this.draft.set('')\n if (!value || this.isDisabled()) {\n return\n }\n if (!this.allowDuplicates() && this.tags().includes(value)) {\n return\n }\n const next = [...this.tags(), value]\n this.tags.set(next)\n this.onChange(next)\n }\n}\n","<div class=\"gbt-tag-input\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-tag-input__label\">{{ label() }}</label>\n }\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"gbt-tag-input__field\"\n [class.gbt-tag-input__field--disabled]=\"isDisabled()\"\n (click)=\"focusInput()\"\n >\n @for (tag of tags(); track tag; let i = $index) {\n <gbt-tag\n [color]=\"color()\"\n [removable]=\"!isDisabled()\"\n [disabled]=\"isDisabled()\"\n [removeLabel]=\"removeLabel()(tag)\"\n (removed)=\"removeTagAt(i)\"\n >\n {{ tag }}\n </gbt-tag>\n }\n <input\n #input\n type=\"text\"\n [id]=\"id()\"\n class=\"gbt-tag-input__input\"\n [placeholder]=\"tags().length === 0 ? placeholder() : ''\"\n [disabled]=\"isDisabled()\"\n [value]=\"draft()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"onInputKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-tag-input__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n","export interface TreeNode {\n id: string\n label: string\n icon?: string\n children?: TreeNode[]\n}\n\nexport interface FlatTreeNode {\n node: TreeNode\n depth: number\n hasChildren: boolean\n parentId: string | null\n}\n\nexport function flattenTree(\n nodes: TreeNode[],\n expandedIds: ReadonlySet<string>,\n depth = 0,\n parentId: string | null = null,\n): FlatTreeNode[] {\n const result: FlatTreeNode[] = []\n for (const node of nodes) {\n const hasChildren = !!node.children && node.children.length > 0\n result.push({ node, depth, hasChildren, parentId })\n if (hasChildren && expandedIds.has(node.id)) {\n result.push(...flattenTree(node.children!, expandedIds, depth + 1, node.id))\n }\n }\n return result\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n afterNextRender,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core'\nimport { Icon } from '../../atoms/icon/icon'\nimport { FlatTreeNode, TreeNode, flattenTree } from './tree-flatten'\n\n@Component({\n selector: 'gbt-tree',\n standalone: true,\n imports: [Icon],\n templateUrl: './tree.html',\n styleUrl: './tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tree {\n private readonly elementRef = inject(ElementRef)\n private readonly injector = inject(Injector)\n\n items = input.required<TreeNode[]>()\n ariaLabel = input<string>('')\n selectedId = model<string | null>(null)\n expandedIds = model<string[]>([])\n expandLabel = input<string>('Expand')\n collapseLabel = input<string>('Collapse')\n\n protected readonly focusedId = signal<string | null>(null)\n\n private readonly expandedSet = computed(() => new Set(this.expandedIds()))\n protected readonly flatNodes = computed(() => flattenTree(this.items(), this.expandedSet()))\n\n protected readonly activeId = computed(() => {\n const focused = this.focusedId()\n const flat = this.flatNodes()\n if (focused && flat.some((f) => f.node.id === focused)) {\n return focused\n }\n const selected = this.selectedId()\n if (selected && flat.some((f) => f.node.id === selected)) {\n return selected\n }\n return flat[0]?.node.id ?? null\n })\n\n protected isExpanded(id: string): boolean {\n return this.expandedSet().has(id)\n }\n\n protected toggle(id: string): void {\n const set = new Set(this.expandedIds())\n if (set.has(id)) {\n set.delete(id)\n } else {\n set.add(id)\n }\n this.expandedIds.set([...set])\n }\n\n protected select(node: TreeNode): void {\n this.selectedId.set(node.id)\n this.focusedId.set(node.id)\n }\n\n protected onItemClick(flat: FlatTreeNode): void {\n this.select(flat.node)\n if (flat.hasChildren) {\n this.toggle(flat.node.id)\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const flat = this.flatNodes()\n const index = flat.findIndex((f) => f.node.id === this.activeId())\n if (index === -1) {\n return\n }\n const current = flat[index]\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n this.focusIndex(Math.min(index + 1, flat.length - 1))\n break\n case 'ArrowUp':\n event.preventDefault()\n this.focusIndex(Math.max(index - 1, 0))\n break\n case 'ArrowRight':\n event.preventDefault()\n if (current.hasChildren && !this.isExpanded(current.node.id)) {\n this.toggle(current.node.id)\n } else if (current.hasChildren) {\n this.focusIndex(index + 1)\n }\n break\n case 'ArrowLeft':\n event.preventDefault()\n if (current.hasChildren && this.isExpanded(current.node.id)) {\n this.toggle(current.node.id)\n } else if (current.parentId) {\n const parentIndex = flat.findIndex((f) => f.node.id === current.parentId)\n if (parentIndex !== -1) {\n this.focusIndex(parentIndex)\n }\n }\n break\n case 'Home':\n event.preventDefault()\n this.focusIndex(0)\n break\n case 'End':\n event.preventDefault()\n this.focusIndex(flat.length - 1)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n this.select(current.node)\n break\n default:\n return\n }\n }\n\n private focusIndex(index: number): void {\n const target = this.flatNodes()[index]\n if (!target) {\n return\n }\n this.focusedId.set(target.node.id)\n afterNextRender(\n () => {\n const host = this.elementRef.nativeElement as HTMLElement\n host.querySelector<HTMLElement>(`[data-node-id=\"${cssEscape(target.node.id)}\"]`)?.focus()\n },\n { injector: this.injector },\n )\n }\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(value) : value.replace(/\"/g, '\\\\\"')\n}\n","<ul\n class=\"gbt-tree\"\n role=\"tree\"\n tabindex=\"-1\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (keydown)=\"onKeydown($event)\"\n>\n @for (flat of flatNodes(); track flat.node.id) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <li\n class=\"gbt-tree__item\"\n role=\"treeitem\"\n [attr.data-node-id]=\"flat.node.id\"\n [attr.aria-level]=\"flat.depth + 1\"\n [attr.aria-expanded]=\"flat.hasChildren ? isExpanded(flat.node.id) : null\"\n [attr.aria-selected]=\"selectedId() === flat.node.id\"\n [style.paddingLeft.px]=\"flat.depth * 20\"\n [attr.tabindex]=\"activeId() === flat.node.id ? 0 : -1\"\n (click)=\"onItemClick(flat)\"\n >\n @if (flat.hasChildren) {\n <button\n type=\"button\"\n class=\"gbt-tree__toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"isExpanded(flat.node.id) ? collapseLabel() : expandLabel()\"\n (click)=\"toggle(flat.node.id); $event.stopPropagation()\"\n >\n <gbt-icon\n name=\"chevron-right\"\n class=\"gbt-tree__chevron\"\n [class.gbt-tree__chevron--expanded]=\"isExpanded(flat.node.id)\"\n aria-hidden=\"true\"\n />\n </button>\n } @else {\n <span class=\"gbt-tree__spacer\"></span>\n }\n @if (flat.node.icon) {\n <gbt-icon [name]=\"flat.node.icon\" class=\"gbt-tree__icon\" aria-hidden=\"true\" />\n }\n <span class=\"gbt-tree__label\">{{ flat.node.label }}</span>\n </li>\n }\n</ul>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","ASSERTIVE_VARIANTS","VARIANT_ICONS","DAY","round","DASH_ARRAYS","CURRENT_YEAR","shiftDays"],"mappings":"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"}