@masmarino/gabarit 0.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.
@@ -0,0 +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/molecules/card/card.ts","../../../projects/gabarit/src/lib/components/molecules/card/card.html","../../../projects/gabarit/src/lib/components/atoms/input/input.ts","../../../projects/gabarit/src/lib/components/atoms/input/input.html","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.ts","../../../projects/gabarit/src/lib/components/atoms/checkbox/checkbox.html","../../../projects/gabarit/src/lib/components/molecules/select/select.ts","../../../projects/gabarit/src/lib/components/molecules/select/select.html","../../../projects/gabarit/src/lib/components/organisms/modal/modal.ts","../../../projects/gabarit/src/lib/components/organisms/modal/modal.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/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/masmarino-gabarit.ts"],"sourcesContent":["export const GABARIT_VERSION = '0.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 check: `<path d=\"M20 6 9 17l-5-5\" />`,\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 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 signal,\n viewChild,\n} from '@angular/core'\n\nlet nextId = 0\n\n@Component({\n selector: 'gbt-app-shell',\n standalone: true,\n imports: [],\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\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 @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 [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 </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 { 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'\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'>('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 protected readonly value = signal('')\n protected readonly passwordVisible = signal(false)\n protected readonly effectiveType = computed(() =>\n this.type() === 'password' && !this.passwordVisible() ? 'password' : 'text',\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 }\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 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 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'\n\nexport interface SelectOption<T = string> {\n value: T\n label: string\n icon?: string\n}\n\nlet nextSelectId = 0\n\n@Component({\n selector: 'gbt-select',\n standalone: true,\n imports: [Icon],\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 },\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 options = input.required<SelectOption<T>[]>()\n multiple = 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\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 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.multiple() && opts.length > 1) {\n return this.selectedCountLabel()(opts.length)\n }\n return opts[0].label\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 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(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 } 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]=\"errorMessage() ? id() + '-error' : null\"\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 (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 {\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 { 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 signal,\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 protected readonly activeIndex = signal(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\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","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, input } from '@angular/core'\n\nexport interface LegendEntry {\n label: string\n\n pattern?: 'solid' | 'dashed' | 'dotted'\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 protected dashArray(pattern: LegendEntry['pattern']): string {\n return DASH_ARRAYS[pattern ?? 'solid']\n }\n}\n","<ul class=\"gbt-chart-legend\">\n @for (entry of entries(); track $index) {\n <li class=\"gbt-chart-legend__item\" [attr.data-pattern]=\"entry.pattern ?? 'solid'\">\n <svg class=\"gbt-chart-legend__swatch\" viewBox=\"0 0 24 8\" aria-hidden=\"true\" focusable=\"false\">\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 </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 <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 { 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\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: 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 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\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 }\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 }\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 aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n <span class=\"gbt-menu__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-menu__chevron\" aria-hidden=\"true\" />\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DAY","DASH_ARRAYS"],"mappings":"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"}