gravitas-ui 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":"gravitas-ui.mjs","sources":["../../../projects/gravitas-ui/src/lib/components/button/button.ts","../../../projects/gravitas-ui/src/lib/components/button/button.html","../../../projects/gravitas-ui/src/lib/components/card/card.ts","../../../projects/gravitas-ui/src/lib/components/card/card.html","../../../projects/gravitas-ui/src/lib/components/form-field/form-field.ts","../../../projects/gravitas-ui/src/lib/components/form-field/form-field.html","../../../projects/gravitas-ui/src/lib/components/input/input.ts","../../../projects/gravitas-ui/src/lib/components/input/input.html","../../../projects/gravitas-ui/src/lib/components/select/select.ts","../../../projects/gravitas-ui/src/lib/components/select/select.html","../../../projects/gravitas-ui/src/lib/components/checkbox/checkbox.ts","../../../projects/gravitas-ui/src/lib/components/checkbox/checkbox.html","../../../projects/gravitas-ui/src/lib/components/radio/radio.ts","../../../projects/gravitas-ui/src/lib/components/radio/radio.html","../../../projects/gravitas-ui/src/lib/components/switch/switch.ts","../../../projects/gravitas-ui/src/lib/components/switch/switch.html","../../../projects/gravitas-ui/src/lib/components/textarea/textarea.ts","../../../projects/gravitas-ui/src/lib/components/textarea/textarea.html","../../../projects/gravitas-ui/src/lib/components/modal/modal.ts","../../../projects/gravitas-ui/src/lib/components/modal/modal.html","../../../projects/gravitas-ui/src/lib/components/toast/toasts.service.ts","../../../projects/gravitas-ui/src/lib/components/toast/toasts.ts","../../../projects/gravitas-ui/src/lib/components/toast/toasts.html","../../../projects/gravitas-ui/src/lib/components/tabs/tab.ts","../../../projects/gravitas-ui/src/lib/components/tabs/tab-panel.ts","../../../projects/gravitas-ui/src/lib/components/tabs/tabs.ts","../../../projects/gravitas-ui/src/lib/components/tabs/tab-list.ts","../../../projects/gravitas-ui/src/lib/components/tabs/tab-panels.ts","../../../projects/gravitas-ui/src/lib/components/loader/loader.ts","../../../projects/gravitas-ui/src/lib/components/loader/loader.html","../../../projects/gravitas-ui/src/lib/components/empty/empty.ts","../../../projects/gravitas-ui/src/lib/components/empty/empty.html","../../../projects/gravitas-ui/src/lib/components/table/table.ts","../../../projects/gravitas-ui/src/lib/components/table/table.html","../../../projects/gravitas-ui/src/lib/components/skeleton/skeleton.ts","../../../projects/gravitas-ui/src/lib/components/skeleton/skeleton.html","../../../projects/gravitas-ui/src/lib/components/dropdown/dropdown.ts","../../../projects/gravitas-ui/src/lib/components/dropdown/dropdown.html","../../../projects/gravitas-ui/src/lib/components/avatar/avatar.ts","../../../projects/gravitas-ui/src/lib/components/avatar/avatar.html","../../../projects/gravitas-ui/src/lib/components/badge/badge.ts","../../../projects/gravitas-ui/src/lib/components/badge/badge.html","../../../projects/gravitas-ui/src/lib/components/alert/alert.ts","../../../projects/gravitas-ui/src/lib/components/alert/alert.html","../../../projects/gravitas-ui/src/lib/components/tooltip/tooltip-panel.ts","../../../projects/gravitas-ui/src/lib/components/tooltip/tooltip-directive.ts","../../../projects/gravitas-ui/src/lib/components/icon-button/icon-button.ts","../../../projects/gravitas-ui/src/lib/components/icon-button/icon-button.html","../../../projects/gravitas-ui/src/lib/components/divider/divider.ts","../../../projects/gravitas-ui/src/lib/components/divider/divider.html","../../../projects/gravitas-ui/src/public-api.ts","../../../projects/gravitas-ui/src/gravitas-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\n\ntype ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'light'\n | 'dark'\n | 'link';\n\ntype ButtonSize = 'sm' | 'md' | 'lg';\ntype ButtonAppearance = 'solid' | 'soft' | 'outline' | 'ghost' | 'link';\n\n@Component({\n selector: 'gv-button',\n standalone: true,\n templateUrl: './button.html',\n styleUrls: ['./button.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Button {\n @ViewChild('buttonElement', { static: true })\n buttonElement?: ElementRef<HTMLButtonElement>;\n\n /** Native button type attribute. */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n /** Visual style variant. Maps to Bootstrap variants (btn-*) with Gravitas styling. */\n @Input() variant: ButtonVariant = 'primary';\n\n /** Visual treatment independent from semantic variant. */\n @Input() appearance: ButtonAppearance = 'solid';\n\n /** Size variant. Maps to Bootstrap size classes (btn-sm / btn-lg). */\n @Input() size: ButtonSize = 'md';\n\n /** Disables the button. */\n @Input() disabled = false;\n\n /** Shows a busy state (disables button + shows spinner). */\n @Input() loading = false;\n\n /** If true, makes the button full width. */\n @Input() fullWidth = false;\n\n /** Optional label shown while loading (ex: \"Saving...\"). If empty, shows normal content. */\n @Input() loadingText = '';\n\n /** Extra CSS classes applied to the button element (ex: \"mt-3 px-4\"). */\n @Input() className = '';\n\n get nativeButton(): HTMLButtonElement | null {\n return this.buttonElement?.nativeElement ?? null;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n get btnClass(): string {\n const sizeClass = this.size === 'md' ? '' : `btn-${this.size}`;\n const disabledClass = this.isDisabled ? 'disabled' : '';\n const widthClass = this.fullWidth ? 'w-100' : '';\n const appearanceClass = `gv-button--appearance-${this.resolvedAppearance}`;\n const variantClass = `gv-button--variant-${this.variant}`;\n\n return [\n 'btn',\n 'gv-button',\n sizeClass,\n widthClass,\n disabledClass,\n appearanceClass,\n variantClass,\n this.className,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get resolvedAppearance(): ButtonAppearance {\n if (this.appearance === 'solid' && this.variant === 'link') {\n return 'link';\n }\n return this.appearance;\n }\n\n focus(): void {\n this.nativeButton?.focus();\n }\n}\n","<button\n #buttonElement\n [attr.type]=\"type\"\n [class]=\"btnClass\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n>\n <!-- Left icon slot -->\n <span class=\"gv-btn-icon gv-btn-icon--left\" aria-hidden=\"true\">\n <ng-content select=\"[gvIconLeft]\"></ng-content>\n </span>\n\n <!-- Loading spinner -->\n @if (loading) {\n <span class=\"gv-button__spinner spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n }\n\n <!-- Label -->\n @if (loading && loadingText) {\n <span class=\"gv-btn-label\">{{ loadingText }}</span>\n } @else {\n <span class=\"gv-btn-label\">\n <ng-content></ng-content>\n </span>\n }\n\n <!-- Right icon slot -->\n <span class=\"gv-btn-icon gv-btn-icon--right\" aria-hidden=\"true\">\n <ng-content select=\"[gvIconRight]\"></ng-content>\n </span>\n\n @if (loading) {\n <span class=\"visually-hidden\">Loading</span>\n }\n</button>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n HostBinding,\n HostListener,\n} from '@angular/core';\n\n@Component({\n selector: 'gv-card',\n standalone: true,\n templateUrl: './card.html',\n styleUrl: './card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {\n @Input() title: string | null = null;\n @Input() subtitle: string | null = null;\n\n /** Force header on/off. null = auto (shows if title/subtitle/actions exist) */\n @Input() showHeader: boolean | null = null;\n\n /** Makes the card fill its container height */\n @Input() fullHeight = false;\n\n /** Enables hover/press styles + click behavior */\n @Input() interactive = false;\n\n /** Disables interactions (no hover, no click, no keyboard activation) */\n @Input() disabled = false;\n\n /** Extra classes (Bootstrap utilities etc.) */\n @Input() className = '';\n\n @Output() cardClick = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n /** Accessibility: only focusable when interactive and not disabled */\n @HostBinding('attr.role') get roleAttr() {\n return this.interactive && !this.disabled ? 'button' : null;\n }\n\n @HostBinding('attr.tabindex') get tabIndexAttr() {\n return this.interactive && !this.disabled ? 0 : null;\n }\n\n @HostBinding('attr.aria-disabled') get ariaDisabled() {\n return this.interactive ? String(this.disabled) : null;\n }\n\n get hasHeader(): boolean {\n if (this.showHeader === true) return true;\n if (this.showHeader === false) return false;\n\n // auto: show when there's title/subtitle OR projected actions slot exists\n // We can't easily detect slot content without more complexity, so:\n return !!this.title || !!this.subtitle;\n }\n\n get cardClass(): string {\n const classes = [\n 'gv-card',\n this.fullHeight ? 'h-100' : '',\n this.interactive ? 'gv-card--interactive' : '',\n this.disabled ? 'gv-card--disabled' : '',\n this.className,\n ];\n\n return classes.filter(Boolean).join(' ');\n }\n\n @HostListener('click', ['$event'])\n onHostClick(event: MouseEvent) {\n if (!this.interactive || this.disabled) return;\n this.cardClick.emit(event);\n }\n\n @HostListener('keydown', ['$event'])\n onHostKeydown(event: KeyboardEvent) {\n if (!this.interactive || this.disabled) return;\n\n // Keyboard activation\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClick.emit(event);\n }\n }\n}\n","<div [class]=\"cardClass\">\n @if (hasHeader) {\n <div class=\"gv-card__header\">\n <div class=\"gv-card__header-text\">\n @if (title) {\n <div class=\"gv-card__title\">{{ title }}</div>\n }\n @if (subtitle) {\n <div class=\"gv-card__subtitle\">{{ subtitle }}</div>\n }\n </div>\n\n <div class=\"gv-card__actions\">\n <ng-content select=\"[gvCardActions]\"></ng-content>\n </div>\n </div>\n }\n\n <div class=\"gv-card__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"gv-card__footer\">\n <ng-content select=\"[gvCardFooter]\"></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nlet nextId = 0;\n\n@Component({\n selector: 'gv-form-field',\n standalone: true,\n templateUrl: './form-field.html',\n styleUrl: './form-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormField {\n /** Visible label above the control */\n @Input() label: string | null = null;\n\n /** Optional supporting description shown between label and control */\n @Input() description: string | null = null;\n\n /** Shows a red asterisk next to label */\n @Input() required = false;\n\n /** Helper text (only shows when there is no error) */\n @Input() helperText: string | null = null;\n\n /** Error message (shows under the control) */\n @Input() error: string | null = null;\n\n /** Makes the field take full width */\n @Input() fullWidth = false;\n\n /**\n * Use this to connect label->control and error/helper -> aria-describedby.\n * Example: controlId=\"email\"\n */\n @Input() controlId: string = `gv-ff-${++nextId}`;\n\n /** Optional: set to false to hide the label visually (keeps layout consistent) */\n @Input() showLabel = true;\n\n @HostBinding('class')\n get hostClass() {\n return ['gv-form-field', this.fullWidth ? 'w-100' : ''].filter(Boolean).join(' ');\n }\n\n get describedById(): string {\n return `${this.controlId}__desc`;\n }\n\n get labelId(): string {\n return `${this.controlId}__label`;\n }\n\n get hasError(): boolean {\n return !!(this.error && this.error.trim().length);\n }\n\n get hasHelper(): boolean {\n return !!(this.helperText && this.helperText.trim().length);\n }\n\n get hasDescription(): boolean {\n return !!(this.description && this.description.trim().length);\n }\n\n get describedByText(): string {\n if (this.hasError) return this.error!.trim();\n if (this.hasHelper) return this.helperText!.trim();\n return '';\n }\n}\n","<div class=\"gv-field\" [class.w-100]=\"fullWidth\">\n @if (label && showLabel) {\n <label class=\"gv-field__label\" [attr.for]=\"controlId\" [attr.id]=\"labelId\">\n <span class=\"gv-field__label-text\">{{ label }}</span>\n\n @if (required) {\n <span class=\"gv-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n @if (hasDescription) {\n <div class=\"gv-field__description\">\n {{ description }}\n </div>\n }\n\n <div class=\"gv-field__row\" [class.w-100]=\"fullWidth\">\n <div class=\"gv-field__prefix\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n\n <div class=\"gv-field__control\" [class.w-100]=\"fullWidth\">\n <!-- Consumer control goes here (gv-input, gv-select, etc.) -->\n <ng-content></ng-content>\n </div>\n\n <div class=\"gv-field__suffix\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n </div>\n\n @if (hasError || hasHelper) {\n <div\n class=\"gv-field__message\"\n [class.gv-field__message--error]=\"hasError\"\n [attr.id]=\"describedById\"\n >\n <!-- Use Bootstrap feedback styles but keep Gravitas class hooks -->\n @if (hasError) {\n <div class=\"gv-field__error\" role=\"alert\">\n {{ error }}\n </div>\n } @else {\n <div class=\"gv-field__helper\">\n {{ helperText }}\n </div>\n }\n </div>\n }\n</div>\n","import { Component, Input, ChangeDetectionStrategy, Optional, Self, computed } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FormField } from '../form-field/form-field';\n\ntype InputSize = 'sm' | 'md' | 'lg';\ntype InputType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search'\n | 'date'\n | 'datetime-local';\n\n@Component({\n selector: 'gv-input',\n standalone: true,\n imports: [NgClass, FormField],\n templateUrl: './input.html',\n styleUrl: './input.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements ControlValueAccessor {\n private readonly generatedId = `gv-input-${Math.random().toString(16).slice(2)}`;\n\n @Input() id?: string;\n\n @Input() label?: string;\n @Input() placeholder = '';\n @Input() hint?: string;\n @Input({ alias: 'helperText' }) set helperText(value: string | undefined) {\n this.hint = value;\n }\n\n /** If set, overrides control-based validation UI */\n @Input() error?: string;\n\n @Input() type: InputType = 'text';\n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n\n /** Bootstrap utilities */\n @Input() className = '';\n\n /** Show required asterisk (doesn't enforce validation) */\n @Input() required = false;\n\n /** Optional projected \"prefix\" / \"suffix\" areas */\n @Input() hasPrefix = false;\n @Input() hasSuffix = false;\n\n // ---- forms glue (Reactive + Template-driven) ----\n value: string | number | null = null;\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (this.ngControl) this.ngControl.valueAccessor = this;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // --- computed state ---\n private control = computed(() => this.ngControl?.control ?? null);\n\n readonly isInvalid = computed(() => {\n if (this.error) return true;\n const c = this.control();\n return !!c && c.invalid && (c.dirty || c.touched);\n });\n\n get inputId(): string {\n return this.id ?? this.generatedId;\n }\n\n get describedBy(): string {\n return this.fieldHelperText || this.errorText ? `${this.inputId}__desc` : '';\n }\n\n get fieldHelperText(): string | null {\n return !this.isInvalid() && this.hint ? this.hint : null;\n }\n\n get isDateLike(): boolean {\n return this.type === 'date' || this.type === 'datetime-local';\n }\n\n get inputClasses(): string {\n const sizeClass = this.size === 'md' ? '' : `form-control-${this.size}`;\n return ['form-control', sizeClass, this.isInvalid() ? 'is-invalid' : '', this.className]\n .filter(Boolean)\n .join(' ');\n }\n\n get errorText(): string | null {\n if (this.error) return this.error;\n\n const c = this.ngControl?.control;\n if (!c) return null;\n\n const show = c.invalid && (c.touched || c.dirty);\n if (!show) return null;\n\n const e = c.errors ?? {};\n\n if (e['required']) return 'This field is required.';\n if (e['minlength']) return `Must be at least ${e['minlength'].requiredLength} characters long.`;\n if (e['maxlength']) return `Must be at most ${e['maxlength'].requiredLength} characters long.`;\n if (e['email']) return 'Please enter a valid email address.';\n\n return 'Invalid value.';\n }\n\n // DOM event handlers\n handleInput(value: string) {\n const casted = this.type === 'number' ? (value === '' ? null : Number(value)) : value;\n this.value = casted;\n this.onChange(casted);\n }\n\n handleBlur() {\n this.onTouched();\n }\n}\n","<gv-form-field\n [label]=\"label ?? null\"\n [required]=\"required\"\n [helperText]=\"fieldHelperText\"\n [error]=\"errorText\"\n [controlId]=\"inputId\"\n>\n <div\n class=\"gv-inputwrap\"\n [ngClass]=\"{\n 'gv-inputwrap--prefix': hasPrefix,\n 'gv-inputwrap--suffix': hasSuffix,\n }\"\n >\n @if (hasPrefix) {\n <div class=\"gv-affix gv-affix--prefix\">\n <ng-content select=\"[gvPrefix]\"></ng-content>\n </div>\n }\n\n <input\n [id]=\"inputId\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [class]=\"inputClasses\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.aria-invalid]=\"isInvalid() ? 'true' : 'false'\"\n [attr.aria-describedby]=\"describedBy\"\n [value]=\"value ?? ''\"\n (input)=\"handleInput($any($event.target).value)\"\n (blur)=\"handleBlur()\"\n />\n\n @if (hasSuffix || isDateLike) {\n <div class=\"gv-affix gv-affix--suffix\">\n @if (hasSuffix) {\n <ng-content select=\"[gvSuffix]\"></ng-content>\n } @else {\n <span class=\"gv-dateicon\" aria-hidden=\"true\">📅</span>\n }\n </div>\n }\n </div>\n</gv-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormField } from '../form-field/form-field';\n\nexport type GvSelectSize = 'sm' | 'md' | 'lg';\nexport type SelectValue<T> = T | T[] | null;\n\nexport interface GvSelectOption<T = any> {\n label: string;\n value: T;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'gv-select',\n standalone: true,\n imports: [CommonModule, FormField],\n templateUrl: './select.html',\n styleUrls: ['./select.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Select),\n multi: true,\n },\n ],\n})\nexport class Select<T = any> implements ControlValueAccessor, OnChanges {\n private readonly generatedId = `gv-select-${Math.random().toString(16).slice(2)}`;\n\n // --- UI ---\n @Input() id?: string;\n @Input() label = '';\n @Input() helperText = '';\n @Input() placeholder = 'Select...';\n @Input() error: string | null = null;\n @Input() required = false;\n @Input() size: GvSelectSize = 'md';\n @Input() fullWidth = false;\n @Input() className = '';\n\n // --- Behavior ---\n @Input() multiple = false;\n @Input() searchable = false;\n @Input() searchPlaceholder = 'Search...';\n @Input() noResultsText = 'No results found';\n @Input() clearable = false;\n @Input() compareWith?: (a: T, b: T) => boolean;\n\n // --- Data ---\n @Input() options: GvSelectOption<T>[] = [];\n @Input() loading = false;\n @Input() loadingText = 'Loading...';\n\n // --- State ---\n value: SelectValue<T> = null;\n @Input() disabled = false;\n isOpen = false;\n searchTerm = '';\n\n private onChange: (value: SelectValue<T>) => void = () => {};\n private onTouched: () => void = () => {};\n\n private valueMap = new Map<string, T>();\n\n constructor(private host: ElementRef<HTMLElement>) {}\n\n @HostBinding('class.w-100')\n get hostFullWidth() {\n return this.fullWidth;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.rebuildValueMap();\n\n if (changes['multiple']) {\n this.normalizeValueForMode();\n }\n }\n\n writeValue(value: SelectValue<T>): void {\n this.value = value;\n this.normalizeValueForMode();\n }\n\n registerOnChange(fn: (value: SelectValue<T>) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private rebuildValueMap(): void {\n this.valueMap.clear();\n for (const [index, opt] of (this.options ?? []).entries()) {\n this.valueMap.set(this.getOptionKey(index), opt.value);\n }\n }\n\n getOptionKey(index: number): string {\n return `gv-select-option-${index}`;\n }\n\n private normalizeValueForMode(): void {\n if (this.multiple) {\n if (this.value == null) {\n this.value = [];\n } else if (!Array.isArray(this.value)) {\n this.value = [this.value];\n }\n } else {\n if (Array.isArray(this.value)) {\n this.value = this.value.length ? this.value[0] : null;\n }\n }\n }\n\n stringifyValue(v: T): string {\n return v === null || v === undefined ? '' : String(v as any);\n }\n\n private sameValue(a: T, b: T): boolean {\n if (a == null && b == null) return true;\n if (a == null || b == null) return false;\n\n if (this.compareWith) {\n return this.compareWith(a, b);\n }\n\n return this.stringifyValue(a) === this.stringifyValue(b);\n }\n\n isSelected(v: T): boolean {\n if (this.multiple) {\n return Array.isArray(this.value) && this.value.some((x) => this.sameValue(x, v));\n }\n\n return this.value !== null && !Array.isArray(this.value) && this.sameValue(this.value, v);\n }\n\n isOptionDisabled(opt: GvSelectOption<T>): boolean {\n return !!opt.disabled || this.disabled || this.loading;\n }\n\n get filteredOptions(): GvSelectOption<T>[] {\n const term = this.searchTerm.trim().toLowerCase();\n if (!term) return this.options ?? [];\n\n return (this.options ?? []).filter((opt) => opt.label.toLowerCase().includes(term));\n }\n\n get selectedOptions(): GvSelectOption<T>[] {\n return (this.options ?? []).filter((opt) => this.isSelected(opt.value));\n }\n\n get displayLabel(): string {\n if (this.multiple) {\n const selected = this.selectedOptions;\n if (!selected.length) return this.placeholder;\n if (selected.length <= 2) return selected.map((x) => x.label).join(', ');\n return `${selected.length} selected`;\n }\n\n const selected = (this.options ?? []).find((opt) => this.isSelected(opt.value));\n return selected?.label || this.placeholder;\n }\n\n get useCustomDropdown(): boolean {\n return this.multiple || this.searchable;\n }\n\n get controlId(): string {\n return this.id ?? this.generatedId;\n }\n\n get labelId(): string | null {\n return this.label ? `${this.controlId}__label` : null;\n }\n\n get helperTextId(): string | null {\n return this.helperText && !this.error ? `${this.controlId}__desc` : null;\n }\n\n get errorId(): string | null {\n return this.error ? `${this.controlId}__desc` : null;\n }\n\n get describedBy(): string | null {\n return this.errorId ?? this.helperTextId;\n }\n\n get selectClass(): string {\n const sizeClass = this.size === 'md' ? '' : `form-select-${this.size}`;\n const invalidClass = this.error ? 'is-invalid' : '';\n const widthClass = this.fullWidth ? 'w-100' : '';\n\n return ['form-select', sizeClass, invalidClass, widthClass, this.className]\n .filter(Boolean)\n .join(' ');\n }\n\n get triggerClass(): string {\n const invalidClass = this.error ? 'is-invalid' : '';\n const widthClass = this.fullWidth ? 'w-100' : '';\n\n return ['gv-select-trigger', invalidClass, widthClass, this.className]\n .filter(Boolean)\n .join(' ');\n }\n\n // --- Native single select mode ---\n handleNativeChange(event: Event): void {\n const raw = (event.target as HTMLSelectElement).value;\n\n if (raw === '') {\n this.value = null;\n this.onChange(null);\n return;\n }\n\n const mapped = this.valueMap.get(raw) ?? (raw as unknown as T);\n this.value = mapped;\n this.onChange(mapped);\n }\n\n // --- Custom dropdown mode ---\n toggleOpen(): void {\n if (this.disabled || this.loading) return;\n this.isOpen = !this.isOpen;\n\n if (!this.isOpen) {\n this.searchTerm = '';\n this.onTouched();\n }\n }\n\n open(): void {\n if (this.disabled || this.loading) return;\n this.isOpen = true;\n }\n\n close(): void {\n this.isOpen = false;\n this.searchTerm = '';\n this.onTouched();\n }\n\n selectOption(opt: GvSelectOption<T>): void {\n if (this.isOptionDisabled(opt)) return;\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? [...this.value] : [];\n const exists = current.some((v) => this.sameValue(v, opt.value));\n\n this.value = exists\n ? current.filter((v) => !this.sameValue(v, opt.value))\n : [...current, opt.value];\n\n this.onChange(this.value);\n return;\n }\n\n this.value = opt.value;\n this.onChange(opt.value);\n this.close();\n }\n\n removeSelected(opt: GvSelectOption<T>, event?: MouseEvent): void {\n event?.stopPropagation();\n\n if (!this.multiple || !Array.isArray(this.value)) return;\n\n this.value = this.value.filter((v) => !this.sameValue(v, opt.value));\n this.onChange(this.value);\n }\n\n clear(event?: MouseEvent): void {\n event?.stopPropagation();\n this.value = this.multiple ? [] : null;\n this.onChange(this.value);\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n trackByValue = (_: number, opt: GvSelectOption<T>) => this.stringifyValue(opt.value);\n\n handleBlur(): void {\n this.onTouched();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.host.nativeElement.contains(event.target as Node) && this.isOpen) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.isOpen) this.close();\n }\n}\n","<gv-form-field\n [label]=\"label || null\"\n [required]=\"required\"\n [helperText]=\"!error ? helperText : null\"\n [error]=\"error\"\n [controlId]=\"controlId\"\n [fullWidth]=\"fullWidth\"\n>\n <div class=\"gv-field__control\" [class.w-100]=\"fullWidth\">\n <div class=\"gv-select-wrap\" [class.w-100]=\"fullWidth\">\n @if (!useCustomDropdown) {\n <select\n [id]=\"controlId\"\n [class]=\"selectClass\"\n [disabled]=\"disabled || loading\"\n (blur)=\"handleBlur()\"\n (change)=\"handleNativeChange($event)\"\n [attr.aria-invalid]=\"!!error\"\n [attr.aria-describedby]=\"describedBy\"\n >\n <option [value]=\"''\" [disabled]=\"required\">\n {{ loading ? loadingText : placeholder }}\n </option>\n\n @for (opt of options; track trackByValue($index, opt)) {\n <option\n [value]=\"getOptionKey($index)\"\n [selected]=\"isSelected(opt.value)\"\n [disabled]=\"opt.disabled\"\n >\n {{ opt.label }}\n </option>\n }\n </select>\n } @else {\n <div class=\"gv-select-custom\" [class.w-100]=\"fullWidth\">\n <button\n type=\"button\"\n [id]=\"controlId\"\n [class]=\"triggerClass\"\n [disabled]=\"disabled || loading\"\n (click)=\"toggleOpen()\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-invalid]=\"!!error\"\n [attr.aria-labelledby]=\"labelId ? labelId + ' ' + controlId : null\"\n [attr.aria-describedby]=\"describedBy\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.role]=\"'combobox'\"\n >\n <div class=\"gv-select-trigger__content\">\n @if (multiple && selectedOptions.length) {\n <div class=\"gv-select-chips\">\n @for (opt of selectedOptions; track trackByValue($index, opt)) {\n <span class=\"gv-select-chip\">\n {{ opt.label }}\n <button\n type=\"button\"\n class=\"gv-select-chip__remove\"\n (click)=\"removeSelected(opt, $event)\"\n [disabled]=\"disabled || loading\"\n aria-label=\"Remove\"\n >\n ×\n </button>\n </span>\n }\n </div>\n } @else {\n <span\n class=\"gv-select-trigger__text\"\n [class.gv-select-trigger__placeholder]=\"!selectedOptions.length\"\n >\n {{ loading ? loadingText : displayLabel }}\n </span>\n }\n </div>\n\n <div class=\"gv-select-trigger__actions\">\n @if (clearable && selectedOptions.length) {\n <button\n type=\"button\"\n class=\"gv-select-clear\"\n (click)=\"clear($event)\"\n [disabled]=\"disabled || loading\"\n aria-label=\"Clear\"\n >\n ×\n </button>\n }\n <span class=\"gv-select-caret\">▾</span>\n </div>\n </button>\n\n @if (isOpen) {\n <div class=\"gv-select-panel\">\n @if (searchable) {\n <div class=\"gv-select-search\">\n <input\n type=\"text\"\n class=\"form-control\"\n [value]=\"searchTerm\"\n [placeholder]=\"searchPlaceholder\"\n (input)=\"searchTerm = $any($event.target).value\"\n />\n </div>\n }\n\n <div class=\"gv-select-options\">\n @if (filteredOptions.length) {\n @for (opt of filteredOptions; track trackByValue($index, opt)) {\n <button\n type=\"button\"\n class=\"gv-select-option\"\n [class.is-selected]=\"isSelected(opt.value)\"\n [class.is-disabled]=\"opt.disabled\"\n [disabled]=\"opt.disabled\"\n (click)=\"selectOption(opt)\"\n >\n @if (multiple) {\n <input\n type=\"checkbox\"\n class=\"gv-select-option__checkbox\"\n [checked]=\"isSelected(opt.value)\"\n [disabled]=\"opt.disabled\"\n tabindex=\"-1\"\n />\n }\n\n <span>{{ opt.label }}</span>\n </button>\n }\n } @else {\n <div class=\"gv-select-empty\">\n {{ noResultsText }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n</gv-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type GvCheckboxSize = 'sm' | 'md' | 'lg';\n\nlet nextCheckboxId = 0;\n\n@Component({\n selector: 'gv-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.html',\n styleUrls: ['./checkbox.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Checkbox),\n multi: true,\n },\n ],\n})\nexport class Checkbox implements ControlValueAccessor {\n private readonly generatedId = `gv-checkbox-${++nextCheckboxId}`;\n\n @Input() label = '';\n @Input() description = '';\n @Input() helperText = '';\n @Input() errorText = '';\n @Input({ alias: 'error' }) set error(value: string | null | undefined) {\n this.errorText = value ?? '';\n }\n @Input() size: GvCheckboxSize = 'md';\n @Input() inputId = this.generatedId;\n @Input({ alias: 'id' }) set id(value: string | null | undefined) {\n this.inputId = value?.trim() || this.generatedId;\n }\n @Input() name?: string;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n\n private _indeterminate = false;\n\n @Input({ transform: booleanAttribute })\n set indeterminate(value: boolean) {\n this._indeterminate = value;\n this.syncIndeterminateState();\n this.cdr.markForCheck();\n }\n\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n @ViewChild('inputRef') inputRef?: ElementRef<HTMLInputElement>;\n\n checked = false;\n focused = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-checkbox-host',\n `gv-checkbox-host--${this.size}`,\n this.disabled ? 'gv-checkbox-host--disabled' : '',\n this.checked ? 'gv-checkbox-host--checked' : '',\n this.indeterminate ? 'gv-checkbox-host--indeterminate' : '',\n this.focused ? 'gv-checkbox-host--focused' : '',\n this.errorText ? 'gv-checkbox-host--error' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n writeValue(value: boolean | null): void {\n this.checked = !!value;\n if (this.checked && this.indeterminate) {\n this._indeterminate = false;\n }\n this.syncIndeterminateState();\n this.cdr.markForCheck();\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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleInputChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n\n if (this.indeterminate) {\n this._indeterminate = false;\n input.indeterminate = false;\n }\n\n this.onChange(this.checked);\n this.checkedChange.emit(this.checked);\n this.cdr.markForCheck();\n }\n\n handleBlur(): void {\n this.focused = false;\n this.onTouched();\n this.cdr.markForCheck();\n }\n\n handleFocus(): void {\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n private syncIndeterminateState(): void {\n queueMicrotask(() => {\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.indeterminate = this._indeterminate;\n }\n });\n }\n}\n","<label class=\"gv-checkbox\" [attr.for]=\"inputId\">\n <span class=\"gv-checkbox__control\">\n <input\n #inputRef\n class=\"gv-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.aria-invalid]=\"errorText ? 'true' : null\"\n [attr.aria-describedby]=\"description || helperText || errorText ? inputId + '-meta' : null\"\n (change)=\"handleInputChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span class=\"gv-checkbox__box\" aria-hidden=\"true\">\n @if (indeterminate) {\n <span class=\"gv-checkbox__mark gv-checkbox__mark--indeterminate\"></span>\n } @else if (checked) {\n <svg class=\"gv-checkbox__mark gv-checkbox__mark--check\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3.5 8.25L6.5 11.25L12.5 4.75\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </span>\n </span>\n\n <span class=\"gv-checkbox__content\">\n @if (label) {\n <span class=\"gv-checkbox__label\">\n {{ label }}\n @if (required) {\n <span class=\"gv-checkbox__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description || helperText || errorText) {\n <span class=\"gv-checkbox__meta\" [id]=\"inputId + '-meta'\">\n @if (errorText) {\n <span class=\"gv-checkbox__error-text\">{{ errorText }}</span>\n } @else {\n @if (description) {\n <span class=\"gv-checkbox__description\">{{ description }}</span>\n }\n @if (helperText) {\n <span class=\"gv-checkbox__helper-text\">{{ helperText }}</span>\n }\n }\n </span>\n }\n </span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type GvRadioSize = 'sm' | 'md' | 'lg';\n\nlet nextRadioId = 0;\n\n@Component({\n selector: 'gv-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.html',\n styleUrls: ['./radio.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Radio),\n multi: true,\n },\n ],\n})\nexport class Radio implements ControlValueAccessor {\n private readonly generatedId = `gv-radio-${++nextRadioId}`;\n\n @Input() label = '';\n @Input() description = '';\n @Input() helperText = '';\n @Input() errorText = '';\n @Input({ alias: 'error' }) set error(value: string | null | undefined) {\n this.errorText = value ?? '';\n }\n @Input() size: GvRadioSize = 'md';\n @Input() inputId = this.generatedId;\n @Input({ alias: 'id' }) set id(value: string | null | undefined) {\n this.inputId = value?.trim() || this.generatedId;\n }\n @Input() name?: string;\n @Input() value: unknown = true;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n\n @Output() valueChange = new EventEmitter<unknown>();\n\n @ViewChild('inputRef') inputRef?: ElementRef<HTMLInputElement>;\n\n modelValue: unknown = null;\n focused = false;\n\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-radio-host',\n `gv-radio-host--${this.size}`,\n this.disabled ? 'gv-radio-host--disabled' : '',\n this.checked ? 'gv-radio-host--checked' : '',\n this.focused ? 'gv-radio-host--focused' : '',\n this.errorText ? 'gv-radio-host--error' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get checked(): boolean {\n return this.modelValue === this.value;\n }\n\n writeValue(value: unknown): void {\n this.modelValue = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: unknown) => 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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleInputChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n\n if (!input.checked) {\n return;\n }\n\n this.modelValue = this.value;\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.cdr.markForCheck();\n }\n\n handleBlur(): void {\n this.focused = false;\n this.onTouched();\n this.cdr.markForCheck();\n }\n\n handleFocus(): void {\n this.focused = true;\n this.cdr.markForCheck();\n }\n}\n","<label class=\"gv-radio\" [attr.for]=\"inputId\">\n <span class=\"gv-radio__control\">\n <input\n #inputRef\n class=\"gv-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [name]=\"name || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [value]=\"value\"\n [attr.aria-invalid]=\"errorText ? 'true' : null\"\n [attr.aria-describedby]=\"description || helperText || errorText ? inputId + '-meta' : null\"\n (change)=\"handleInputChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span class=\"gv-radio__outer\" aria-hidden=\"true\">\n <span class=\"gv-radio__inner\"></span>\n </span>\n </span>\n\n <span class=\"gv-radio__content\">\n @if (label) {\n <span class=\"gv-radio__label\">\n {{ label }}\n @if (required) {\n <span class=\"gv-radio__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description || helperText || errorText) {\n <span class=\"gv-radio__meta\" [id]=\"inputId + '-meta'\">\n @if (errorText) {\n <span class=\"gv-radio__error-text\">{{ errorText }}</span>\n } @else {\n @if (description) {\n <span class=\"gv-radio__description\">{{ description }}</span>\n }\n @if (helperText) {\n <span class=\"gv-radio__helper-text\">{{ helperText }}</span>\n }\n }\n </span>\n }\n </span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type GvSwitchSize = 'sm' | 'md' | 'lg';\n\nlet nextSwitchId = 0;\n\n@Component({\n selector: 'gv-switch',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './switch.html',\n styleUrls: ['./switch.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Switch),\n multi: true,\n },\n ],\n})\nexport class Switch implements ControlValueAccessor {\n private readonly generatedId = `gv-switch-${++nextSwitchId}`;\n\n @Input() label = '';\n @Input() description = '';\n @Input() helperText = '';\n @Input() errorText = '';\n @Input({ alias: 'error' }) set error(value: string | null | undefined) {\n this.errorText = value ?? '';\n }\n @Input() size: GvSwitchSize = 'md';\n @Input() inputId = this.generatedId;\n @Input({ alias: 'id' }) set id(value: string | null | undefined) {\n this.inputId = value?.trim() || this.generatedId;\n }\n @Input() name?: string;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n checked = false;\n focused = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-switch-host',\n `gv-switch-host--${this.size}`,\n this.disabled ? 'gv-switch-host--disabled' : '',\n this.checked ? 'gv-switch-host--checked' : '',\n this.focused ? 'gv-switch-host--focused' : '',\n this.errorText ? 'gv-switch-host--error' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n writeValue(value: boolean | null): void {\n this.checked = !!value;\n this.cdr.markForCheck();\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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleInputChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onChange(this.checked);\n this.checkedChange.emit(this.checked);\n this.cdr.markForCheck();\n }\n\n handleBlur(): void {\n this.focused = false;\n this.onTouched();\n this.cdr.markForCheck();\n }\n\n handleFocus(): void {\n this.focused = true;\n this.cdr.markForCheck();\n }\n}\n","<label class=\"gv-switch\" [attr.for]=\"inputId\">\n <span class=\"gv-switch__control\">\n <input\n class=\"gv-switch__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name || null\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.role]=\"'switch'\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-invalid]=\"errorText ? 'true' : null\"\n [attr.aria-describedby]=\"description || helperText || errorText ? inputId + '-meta' : null\"\n (change)=\"handleInputChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span class=\"gv-switch__track\" aria-hidden=\"true\">\n <span class=\"gv-switch__thumb\"></span>\n </span>\n </span>\n\n <span class=\"gv-switch__content\">\n @if (label) {\n <span class=\"gv-switch__label\">\n {{ label }}\n @if (required) {\n <span class=\"gv-switch__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description || helperText || errorText) {\n <span class=\"gv-switch__meta\" [id]=\"inputId + '-meta'\">\n @if (errorText) {\n <span class=\"gv-switch__error-text\">{{ errorText }}</span>\n } @else {\n @if (description) {\n <span class=\"gv-switch__description\">{{ description }}</span>\n }\n @if (helperText) {\n <span class=\"gv-switch__helper-text\">{{ helperText }}</span>\n }\n }\n </span>\n }\n </span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormField } from '../form-field/form-field';\n\nexport type GvTextareaSize = 'sm' | 'md' | 'lg';\nexport type GvTextareaResize = 'none' | 'vertical' | 'both';\n\nlet nextTextareaId = 0;\n\n@Component({\n selector: 'gv-textarea',\n standalone: true,\n imports: [CommonModule, FormField],\n templateUrl: './textarea.html',\n styleUrls: ['./textarea.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Textarea),\n multi: true,\n },\n ],\n})\nexport class Textarea implements ControlValueAccessor {\n private readonly generatedId = `gv-textarea-${++nextTextareaId}`;\n\n @Input() label = '';\n @Input() description = '';\n @Input() helperText = '';\n @Input() errorText = '';\n @Input({ alias: 'error' }) set error(value: string | null | undefined) {\n this.errorText = value ?? '';\n }\n @Input() placeholder = '';\n @Input() inputId = this.generatedId;\n @Input({ alias: 'id' }) set id(value: string | null | undefined) {\n this.inputId = value?.trim() || this.generatedId;\n }\n @Input() name?: string;\n @Input() rows = 4;\n @Input() size: GvTextareaSize = 'md';\n @Input() resize: GvTextareaResize = 'vertical';\n @Input() maxLength?: number;\n\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) readonly = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n value = '';\n focused = false;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-textarea-host',\n `gv-textarea-host--${this.size}`,\n `gv-textarea-host--resize-${this.resize}`,\n this.disabled ? 'gv-textarea-host--disabled' : '',\n this.focused ? 'gv-textarea-host--focused' : '',\n this.errorText ? 'gv-textarea-host--error' : '',\n this.readonly ? 'gv-textarea-host--readonly' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get characterCount(): number {\n return this.value?.length ?? 0;\n }\n\n get describedBy(): string | null {\n const ids: string[] = [];\n if (this.helperText || this.errorText) {\n ids.push(`${this.inputId}__desc`);\n }\n if (this.maxLength) {\n ids.push(`${this.inputId}-count`);\n }\n return ids.length ? ids.join(' ') : null;\n }\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n this.cdr.markForCheck();\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.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n handleInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.cdr.markForCheck();\n }\n\n handleFocus(): void {\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n handleBlur(): void {\n this.focused = false;\n this.onTouched();\n this.cdr.markForCheck();\n }\n}\n","<gv-form-field\n [label]=\"label || null\"\n [description]=\"description || null\"\n [required]=\"required\"\n [helperText]=\"!errorText ? helperText || null : null\"\n [error]=\"errorText || null\"\n [controlId]=\"inputId\"\n [fullWidth]=\"true\"\n>\n <div class=\"gv-textarea__control\">\n <textarea\n class=\"gv-textarea__field\"\n [id]=\"inputId\"\n [name]=\"name || null\"\n [value]=\"value\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [readOnly]=\"readonly\"\n [maxLength]=\"maxLength ?? null\"\n [attr.aria-invalid]=\"errorText ? 'true' : null\"\n [attr.aria-describedby]=\"describedBy\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n ></textarea>\n </div>\n\n @if (maxLength) {\n <div class=\"gv-textarea__meta\">\n @if (maxLength) {\n <div class=\"gv-textarea__count\" [id]=\"inputId + '-count'\">{{ characterCount }}/{{ maxLength }}</div>\n }\n </div>\n }\n</gv-form-field>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ElementRef,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n HostListener,\n ViewChild,\n} from '@angular/core';\n\ntype ModalSize = 'sm' | 'md' | 'lg' | 'xl';\ntype CloseReason = 'backdrop' | 'esc' | 'button';\n\nlet nextId = 0;\n\n@Component({\n selector: 'gv-modal',\n standalone: true,\n templateUrl: './modal.html',\n styleUrl: './modal.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal implements OnChanges, OnDestroy {\n @Input() open = false;\n\n @Input() title?: string;\n @Input() subtitle?: string;\n\n @Input() size: ModalSize = 'md';\n\n /** UX controls */\n @Input() closeOnBackdrop = true;\n @Input() closeOnEsc = true;\n\n /** When true, disables closing + shows overlayed spinner area (optional UI in CSS) */\n @Input() loading = false;\n\n /** Allows extra utility classes on the panel (ex: \"border-0\") */\n @Input() panelClass = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() closed = new EventEmitter<CloseReason>();\n\n @ViewChild('panel', { static: false }) panelRef?: ElementRef<HTMLElement>;\n\n readonly titleId = `gv-modal-title-${++nextId}`;\n\n private prevBodyOverflow: string | null = null;\n private prevFocused: HTMLElement | null = null;\n\n get sizeClass(): string {\n return `gv-modal--${this.size}`;\n }\n\n get panelClasses(): string {\n return ['gv-modal__panel', this.sizeClass, this.panelClass].filter(Boolean).join(' ');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open']) {\n if (this.open) this.onOpen();\n else this.onCloseCleanup();\n }\n }\n\n ngOnDestroy(): void {\n // in case component is destroyed while open\n this.onCloseCleanup();\n }\n\n /** Close triggers */\n onBackdropMouseDown(): void {\n if (!this.open) return;\n if (this.loading) return;\n if (!this.closeOnBackdrop) return;\n this.requestClose('backdrop');\n }\n\n onCloseButton(): void {\n if (!this.open) return;\n if (this.loading) return;\n this.requestClose('button');\n }\n\n @HostListener('document:keydown', ['$event'])\n onDocKeydown(e: KeyboardEvent): void {\n if (!this.open) return;\n\n if (e.key === 'Escape') {\n if (this.loading) return;\n if (!this.closeOnEsc) return;\n e.preventDefault();\n this.requestClose('esc');\n return;\n }\n\n // super-light focus trap (v1)\n if (e.key === 'Tab') {\n this.trapFocus(e);\n }\n }\n\n private requestClose(reason: CloseReason): void {\n this.openChange.emit(false);\n this.closed.emit(reason);\n }\n\n private onOpen(): void {\n this.prevFocused = document.activeElement as HTMLElement | null;\n this.lockBodyScroll();\n\n // focus the panel (or first focusable) on next tick\n queueMicrotask(() => {\n const panel = this.panelRef?.nativeElement;\n if (!panel) return;\n\n const focusable = this.getFocusable(panel);\n (focusable[0] ?? panel).focus?.();\n });\n }\n\n private onCloseCleanup(): void {\n this.unlockBodyScroll();\n // restore focus\n queueMicrotask(() => this.prevFocused?.focus?.());\n this.prevFocused = null;\n }\n\n private lockBodyScroll(): void {\n const body = document.body;\n if (this.prevBodyOverflow === null) {\n this.prevBodyOverflow = body.style.overflow || '';\n body.style.overflow = 'hidden';\n }\n }\n\n private unlockBodyScroll(): void {\n if (this.prevBodyOverflow === null) return;\n document.body.style.overflow = this.prevBodyOverflow;\n this.prevBodyOverflow = null;\n }\n\n private trapFocus(e: KeyboardEvent): void {\n const panel = this.panelRef?.nativeElement;\n if (!panel) return;\n\n const focusable = this.getFocusable(panel);\n if (focusable.length === 0) {\n e.preventDefault();\n panel.focus?.();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement as HTMLElement | null;\n\n if (e.shiftKey) {\n if (!active || active === first || !panel.contains(active)) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (!active || active === last || !panel.contains(active)) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n\n private getFocusable(root: HTMLElement): HTMLElement[] {\n const selectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',');\n\n return Array.from(root.querySelectorAll<HTMLElement>(selectors)).filter(\n (el) => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'),\n );\n }\n}\n","@if (open) {\n <div class=\"gv-modal\" role=\"presentation\">\n <div class=\"gv-modal__backdrop\" (mousedown)=\"onBackdropMouseDown()\"></div>\n\n <div class=\"gv-modal__viewport\">\n <section\n #panel\n [class]=\"panelClasses\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"title ? titleId : null\"\n tabindex=\"-1\"\n >\n @if (title || subtitle) {\n <header class=\"gv-modal__header\">\n <div class=\"gv-modal__heading\">\n @if (title) {\n <div class=\"gv-modal__title\" [id]=\"titleId\">{{ title }}</div>\n }\n @if (subtitle) {\n <div class=\"gv-modal__subtitle\">{{ subtitle }}</div>\n }\n </div>\n\n <button\n type=\"button\"\n class=\"gv-modal__close\"\n (click)=\"onCloseButton()\"\n [disabled]=\"loading\"\n aria-label=\"Close dialog\"\n >\n ✕\n </button>\n </header>\n }\n\n <div class=\"gv-modal__body\">\n <ng-content></ng-content>\n </div>\n\n <footer class=\"gv-modal__footer\">\n <ng-content select=\"[gvFooter]\"></ng-content>\n </footer>\n\n @if (loading) {\n <div class=\"gv-modal__loading\" aria-hidden=\"true\">\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\"></div>\n </div>\n }\n </section>\n </div>\n </div>\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ToastItem, ToastOptions, ToastPosition, ToastVariant } from './toast.model';\n\nconst DEFAULTS: Required<Omit<ToastOptions, 'id'>> = {\n title: '',\n message: '',\n variant: 'primary',\n durationMs: 3500,\n dismissible: true,\n position: 'top-end',\n ariaLive: 'polite',\n};\n\nfunction uid() {\n return `gv_${Math.random().toString(36).slice(2)}_${Date.now().toString(36)}`;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private readonly _toasts$ = new BehaviorSubject<ToastItem[]>([]);\n readonly toasts$ = this._toasts$.asObservable();\n\n show(opts: ToastOptions): string {\n const id = opts.id ?? uid();\n const toast: ToastItem = {\n ...DEFAULTS,\n ...opts,\n id,\n createdAt: Date.now(),\n // message required\n message: opts.message,\n title: opts.title ?? DEFAULTS.title,\n variant: (opts.variant ?? DEFAULTS.variant) as ToastVariant,\n position: (opts.position ?? DEFAULTS.position) as ToastPosition,\n durationMs: opts.durationMs ?? DEFAULTS.durationMs,\n dismissible: opts.dismissible ?? DEFAULTS.dismissible,\n ariaLive: opts.ariaLive ?? DEFAULTS.ariaLive,\n };\n\n this._toasts$.next([toast, ...this._toasts$.value]);\n\n if (toast.durationMs > 0) {\n window.setTimeout(() => this.dismiss(id), toast.durationMs);\n }\n\n return id;\n }\n\n dismiss(id: string) {\n this._toasts$.next(this._toasts$.value.filter((t) => t.id !== id));\n }\n\n clear() {\n this._toasts$.next([]);\n }\n\n // Convenience helpers (enterprise apps use these a lot)\n success(message: string, title = 'Success') {\n return this.show({ variant: 'success', title, message });\n }\n\n error(message: string, title = 'Error') {\n return this.show({ variant: 'danger', title, message, ariaLive: 'assertive' });\n }\n\n warning(message: string, title = 'Warning') {\n return this.show({ variant: 'warning', title, message });\n }\n\n info(message: string, title = 'Info') {\n return this.show({ variant: 'info', title, message });\n }\n}\nexport type { ToastItem, ToastPosition };\n\n","import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { ToastService } from './toasts.service';\nimport { ToastItem, ToastPosition } from './toasts.service';\n\n@Component({\n selector: 'gv-toasts',\n standalone: true,\n imports: [NgFor, NgIf, NgClass, AsyncPipe],\n templateUrl: './toasts.html',\n styleUrl: './toasts.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toasts {\n private readonly toastSvc = inject(ToastService);\n readonly toasts$ = this.toastSvc.toasts$;\n\n dismiss(id: string) {\n this.toastSvc.dismiss(id);\n }\n\n trackById(_: number, t: ToastItem) {\n return t.id;\n }\n\n positionClass(pos: ToastPosition) {\n // one container per position is a v2 feature; for v1 we use per-toast class\n return `gv-toasts--${pos}`;\n }\n}\n","<div class=\"gv-toasts-root\" aria-live=\"polite\" aria-relevant=\"additions text\">\n <ng-container *ngIf=\"toasts$ | async as toasts\">\n <div\n *ngFor=\"let t of toasts; trackBy: trackById\"\n class=\"gv-toast\"\n [ngClass]=\"[positionClass(t.position), 'gv-toast--' + t.variant]\"\n [attr.role]=\"t.ariaLive === 'assertive' ? 'alert' : 'status'\"\n [attr.aria-live]=\"t.ariaLive\"\n >\n <div class=\"gv-toast__inner\">\n <div class=\"gv-toast__body\">\n <div class=\"gv-toast__title\" *ngIf=\"t.title\">{{ t.title }}</div>\n <div class=\"gv-toast__msg\">{{ t.message }}</div>\n </div>\n\n <button\n *ngIf=\"t.dismissible\"\n type=\"button\"\n class=\"btn btn-sm btn-link gv-toast__close\"\n aria-label=\"Dismiss notification\"\n (click)=\"dismiss(t.id)\"\n >\n ✕\n </button>\n </div>\n </div>\n </ng-container>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n HostListener,\n Input,\n Optional,\n ElementRef,\n ViewChild,\n} from '@angular/core';\nimport { Tabs } from './tabs';\n\n@Component({\n selector: 'gv-tab',\n standalone: true,\n styleUrls: ['./tabs.css'],\n template: `\n <button\n #btn\n class=\"gv-tab\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"active\"\n [attr.aria-disabled]=\"disabled\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n >\n <ng-content></ng-content>\n </button>\n `,\n})\nexport class Tab {\n @Input({ required: true }) value!: string;\n @Input() disabled = false;\n\n private _active = false;\n\n @ViewChild('btn', { read: ElementRef })\n private _btn!: ElementRef<HTMLButtonElement>;\n\n get active() {\n return this._active;\n }\n\n set active(next: boolean) {\n if (this._active === next) return;\n this._active = next;\n this.cdr.markForCheck();\n }\n\n get buttonEl(): HTMLButtonElement | null {\n return this._btn?.nativeElement ?? null;\n }\n\n constructor(\n @Optional() private tabs: Tabs | null,\n private cdr: ChangeDetectorRef\n ) {}\n\n get tabIndex() {\n return this.active && !this.disabled ? 0 : -1;\n }\n\n @HostListener('click')\n onClick() {\n if (this.disabled) return;\n this.tabs?.setValue(this.value);\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(e: KeyboardEvent) {\n if (!this.tabs) return;\n\n const key = e.key;\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End', 'Enter', ' '].includes(key)) return;\n\n e.preventDefault();\n\n const tabs = this.tabs.tabs.toArray().filter((t) => !t.disabled);\n if (!tabs.length) return;\n\n const idx = tabs.findIndex((t) => t.value === this.tabs!.value);\n\n const focusTab = (t: Tab) => t.buttonEl?.focus();\n\n if (key === 'Enter' || key === ' ') {\n this.tabs.setValue(this.value);\n return;\n }\n\n let next: Tab;\n if (key === 'Home') next = tabs[0];\n else if (key === 'End') next = tabs[tabs.length - 1];\n else if (key === 'ArrowRight') next = tabs[(idx + 1 + tabs.length) % tabs.length];\n else next = tabs[(idx - 1 + tabs.length) % tabs.length];\n\n this.tabs.setValue(next.value);\n focusTab(next);\n }\n}\n","import { ChangeDetectorRef, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'gv-tab-panel',\n styleUrls: ['./tabs.css'],\n standalone: true,\n template: `\n <div class=\"gv-tab-panel\" role=\"tabpanel\" [hidden]=\"!active\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class TabPanel {\n @Input({ required: true }) value!: string;\n private _active = false;\n\n @HostBinding('class.gv-tab-panel-host') host = true;\n\n get active() {\n return this._active;\n }\n\n set active(next: boolean) {\n if (this._active === next) return;\n this._active = next;\n this.cdr.markForCheck();\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n Output,\n QueryList,\n inject,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { Tab } from './tab';\nimport { TabPanel } from './tab-panel';\n\nexport type TabsVariant = 'underline' | 'pill';\n\n@Component({\n selector: 'gv-tabs',\n standalone: true,\n styleUrls: ['./tabs.css'],\n template: `\n <ng-content select=\"gv-tab-list\"></ng-content>\n <ng-content select=\"gv-tab-panels\"></ng-content>\n `,\n})\nexport class Tabs implements AfterContentInit {\n @Input() value: string | null = null;\n @Output() valueChange = new EventEmitter<string>();\n\n @Input() variant: TabsVariant = 'underline';\n\n @HostBinding('attr.data-gv-tabs-variant')\n get dataVariant() {\n return this.variant;\n }\n\n @ContentChildren(Tab, { descendants: true }) tabs!: QueryList<Tab>;\n @ContentChildren(TabPanel, { descendants: true }) panels!: QueryList<TabPanel>;\n\n private zone = inject(NgZone);\n private destroyRef = inject(DestroyRef);\n\n constructor(private hostEl: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n // Keep underline correct on resize\n const onResize = () => this.updateIndicatorAfterRender();\n window.addEventListener('resize', onResize, { passive: true });\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('resize', onResize);\n });\n\n queueMicrotask(() => {\n // If no value, pick first enabled tab.\n if (!this.value) {\n const firstEnabled = this.tabs?.find((t) => !t.disabled);\n if (firstEnabled) this.setValue(firstEnabled.value, false);\n }\n\n this.syncChildren();\n this.updateIndicatorAfterRender(); // ✅ initial position\n\n this.tabs.changes.subscribe(() => {\n this.syncChildren();\n this.updateIndicatorAfterRender();\n });\n\n this.panels.changes.subscribe(() => {\n this.syncChildren();\n this.updateIndicatorAfterRender();\n });\n });\n }\n\n setValue(next: string, emit = true) {\n if (this.value === next) return;\n\n this.value = next;\n if (emit) this.valueChange.emit(next);\n\n this.syncChildren();\n this.updateIndicatorAfterRender(); // ✅ slide underline\n }\n\n private syncChildren() {\n const active = this.value;\n\n this.tabs?.forEach((t) => (t.active = t.value === active));\n this.panels?.forEach((p) => (p.active = p.value === active));\n }\n\n /** Wait until Angular finishes applying DOM updates, then measure */\n private updateIndicatorAfterRender() {\n if (this.variant !== 'underline') return;\n\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n requestAnimationFrame(() => this.updateIndicatorNow());\n });\n }\n\n /** Measure active tab button + write CSS vars on the list */\n private updateIndicatorNow() {\n const root = this.hostEl.nativeElement;\n\n const list = root.querySelector('.gv-tabs__list') as HTMLElement | null;\n if (!list) return;\n\n // ✅ No aria-selected query:\n // Find the active Tab component instance and use its actual button element.\n const activeTab =\n this.tabs?.find((t) => t.active && !t.disabled) ??\n (this.value ? this.tabs?.find((t) => t.value === this.value && !t.disabled) : null) ??\n null;\n\n const activeBtn = activeTab?.buttonEl ?? null;\n\n if (!activeBtn) {\n list.style.setProperty('--gv-tabs-indicator-width', `0px`);\n list.style.setProperty('--gv-tabs-indicator-left', `0px`);\n return;\n }\n\n const listRect = list.getBoundingClientRect();\n const btnRect = activeBtn.getBoundingClientRect();\n\n const left = btnRect.left - listRect.left;\n const width = btnRect.width;\n\n list.style.setProperty('--gv-tabs-indicator-left', `${left}px`);\n list.style.setProperty('--gv-tabs-indicator-width', `${width}px`);\n }\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'gv-tab-list',\n styleUrls: ['./tabs.css'],\n standalone: true,\n template: `\n <div class=\"gv-tabs__list\" role=\"tablist\">\n <ng-content></ng-content>\n\n <!-- Single moving underline -->\n <span class=\"gv-tabs__indicator\" aria-hidden=\"true\"></span>\n </div>\n `,\n})\nexport class TabList {\n @HostBinding('class.gv-tabs') hostClass = true;\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'gv-tab-panels',\n styleUrls: ['./tabs.css'],\n standalone: true,\n template: `<div class=\"gv-tabs__panels\"><ng-content></ng-content></div>`,\n})\nexport class TabPanels {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GvLoaderVariant = 'spinner' | 'dots';\nexport type GvLoaderSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'gv-loader',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './loader.html',\n styleUrl: './loader.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Loader {\n @Input() variant: GvLoaderVariant = 'spinner';\n @Input() size: GvLoaderSize = 'md';\n @Input() label?: string;\n @Input() inline = false;\n @Input() overlay = false;\n @Input() centered = false;\n\n @HostBinding('class.gv-loader')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-loader--inline')\n get inlineClass(): boolean {\n return this.inline;\n }\n\n @HostBinding('class.gv-loader--overlay')\n get overlayClass(): boolean {\n return this.overlay;\n }\n\n @HostBinding('class.gv-loader--centered')\n get centeredClass(): boolean {\n return this.centered;\n }\n\n @HostBinding('class.gv-loader--spinner')\n get spinnerClass(): boolean {\n return this.variant === 'spinner';\n }\n\n @HostBinding('class.gv-loader--dots')\n get dotsClass(): boolean {\n return this.variant === 'dots';\n }\n\n @HostBinding('class.gv-loader--sm')\n get smClass(): boolean {\n return this.size === 'sm';\n }\n\n @HostBinding('class.gv-loader--md')\n get mdClass(): boolean {\n return this.size === 'md';\n }\n\n @HostBinding('class.gv-loader--lg')\n get lgClass(): boolean {\n return this.size === 'lg';\n }\n\n get ariaLabel(): string {\n return this.label?.trim() || 'Loading...';\n }\n\n get showVisibleLabel(): boolean {\n return !!this.label?.trim();\n }\n\n get dots(): number[] {\n return [0, 1, 2];\n }\n}\n","<div class=\"gv-loader__content\" role=\"status\" aria-live=\"polite\" [attr.aria-label]=\"ariaLabel\">\n @if (variant === 'spinner') {\n <span class=\"gv-loader__spinner\" aria-hidden=\"true\"></span>\n }\n\n @if (variant === 'dots') {\n <span class=\"gv-loader__dots\" aria-hidden=\"true\">\n @for (dot of dots; track $index) {\n <span class=\"gv-loader__dot\"></span>\n }\n </span>\n }\n\n @if (showVisibleLabel) {\n <span class=\"gv-loader__label\">{{ label }}</span>\n } @else {\n <span class=\"visually-hidden\">{{ ariaLabel }}</span>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'gv-empty',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './empty.html',\n styleUrl: './empty.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Empty {\n @Input() title = 'Nothing to show';\n @Input() description = '';\n\n @Input({ transform: booleanAttribute }) compact = false;\n\n @HostBinding('class.gv-empty')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-empty--compact')\n get compactClass(): boolean {\n return this.compact;\n }\n}\n","<div class=\"gv-empty__container\">\n <div class=\"gv-empty__content\">\n <!-- Icon / visual (optional slot later if needed) -->\n <div class=\"gv-empty__icon\" aria-hidden=\"true\">\n <div class=\"gv-empty__icon-inner\"></div>\n </div>\n\n <!-- Text -->\n <div class=\"gv-empty__text\">\n @if (title?.trim()) {\n <div class=\"gv-empty__title\">{{ title }}</div>\n }\n\n @if (description?.trim()) {\n <div class=\"gv-empty__description\">\n {{ description }}\n </div>\n }\n </div>\n\n <!-- Actions -->\n <div class=\"gv-empty__actions\">\n <ng-content select=\"[gvEmptyActions]\"></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Empty } from '../empty/empty';\n\nexport type GvTableSortDirection = 'asc' | 'desc' | null;\nexport type GvTableFilterType = 'text' | 'select' | 'number-range' | 'date-range';\n\nexport interface GvTableFilterOption {\n label: string;\n value: any;\n}\n\nexport interface GvTableColumnFilter {\n type: GvTableFilterType;\n options?: GvTableFilterOption[];\n}\n\nexport interface GvTableColumn<T = any> {\n key: keyof T | string;\n label: string;\n sortable?: boolean;\n searchable?: boolean;\n width?: string;\n align?: 'start' | 'center' | 'end';\n filter?: GvTableColumnFilter;\n}\n\nexport interface GvTablePageSizeOption {\n label: string;\n value: number;\n}\n\ntype GvNumberRangeFilterValue = {\n min?: number | null;\n max?: number | null;\n};\n\ntype GvDateRangeFilterValue = {\n from?: string | null;\n to?: string | null;\n};\n\ntype GvActiveFilterChip<T> = {\n key: string;\n label: string;\n valueLabel: string;\n column?: GvTableColumn<T>;\n kind: 'global' | 'column';\n};\n\n@Component({\n selector: 'gv-table',\n standalone: true,\n imports: [CommonModule, FormsModule, Empty],\n templateUrl: './table.html',\n styleUrls: ['./table.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Table<T extends Record<string, any>> implements OnChanges {\n @Input() columns: GvTableColumn<T>[] = [];\n @Input() rows: T[] = [];\n\n @Input() filterable = false;\n @Input() showColumnFilters = true;\n @Input() collapsibleFilters = true;\n @Input() filtersExpanded = false;\n @Input() filterPlaceholder = 'Search...';\n\n @Input() pagination = true;\n @Input() pageSize = 10;\n @Input() pageSizeOptions: GvTablePageSizeOption[] = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n ];\n\n @Input() rowLimit: number | null = null;\n\n @Input() minBodyHeight = 320;\n @Input() loading = false;\n @Input() emptyText = 'No records found.';\n @Input() emptyTitle = 'No records found';\n @Input() emptyDescription = 'There are no rows to display right now.';\n @Input() loadingTitle = 'Loading data';\n @Input() loadingDescription = 'Please wait while the table content is loaded.';\n\n @Input() className = '';\n @Input() striped = false;\n @Input() hover = true;\n @Input() compact = false;\n\n filterTerm = '';\n currentPage = 1;\n\n sortKey: string | null = null;\n sortDirection: GvTableSortDirection = null;\n\n columnFilters: Record<string, any> = {};\n areFiltersOpen = false;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['rows'] || changes['rowLimit'] || changes['columns']) {\n this.initializeColumnFilters();\n this.ensureValidPage();\n }\n\n if (changes['filtersExpanded']) {\n this.areFiltersOpen = !!this.filtersExpanded;\n }\n }\n\n get processedRows(): T[] {\n let data = [...(this.rows ?? [])];\n\n if (this.rowLimit !== null && this.rowLimit >= 0) {\n data = data.slice(0, this.rowLimit);\n }\n\n data = this.applyGlobalSearch(data);\n data = this.applyColumnFilters(data);\n\n if (this.sortKey && this.sortDirection) {\n data.sort((a, b) => {\n const aValue = this.getCellValue(a, this.sortKey!);\n const bValue = this.getCellValue(b, this.sortKey!);\n\n const result = this.compareValues(aValue, bValue);\n return this.sortDirection === 'asc' ? result : -result;\n });\n }\n\n return data;\n }\n\n get pagedRows(): T[] {\n if (!this.pagination) return this.processedRows;\n\n const start = (this.currentPage - 1) * this.pageSize;\n return this.processedRows.slice(start, start + this.pageSize);\n }\n\n get totalRows(): number {\n return this.processedRows.length;\n }\n\n get totalPages(): number {\n if (!this.pagination) return 1;\n return Math.max(1, Math.ceil(this.totalRows / this.pageSize));\n }\n\n get startRow(): number {\n if (!this.totalRows) return 0;\n return (this.currentPage - 1) * this.pageSize + 1;\n }\n\n get endRow(): number {\n if (!this.totalRows) return 0;\n return Math.min(this.currentPage * this.pageSize, this.totalRows);\n }\n\n get tableClass(): string {\n return [\n 'gv-table',\n this.striped ? 'gv-table--striped' : '',\n this.hover ? 'gv-table--hover' : '',\n this.compact ? 'gv-table--compact' : '',\n this.className,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get filterColumns(): GvTableColumn<T>[] {\n return (this.columns ?? []).filter((column) => !!column.filter);\n }\n\n get hasColumnFilters(): boolean {\n return this.showColumnFilters && this.filterColumns.length > 0;\n }\n\n get searchableColumns(): GvTableColumn<T>[] {\n return (this.columns ?? []).filter((column) => column.searchable);\n }\n\n get shouldShowFiltersPanel(): boolean {\n if (!this.hasColumnFilters) return false;\n if (!this.collapsibleFilters) return true;\n return this.areFiltersOpen;\n }\n\n get activeFilterCount(): number {\n return this.activeFilterChips.length;\n }\n\n get activeFilterChips(): GvActiveFilterChip<T>[] {\n const chips: GvActiveFilterChip<T>[] = [];\n\n const globalTerm = this.filterTerm.trim();\n if (globalTerm) {\n chips.push({\n key: '__global__',\n label: 'Search',\n valueLabel: globalTerm,\n kind: 'global',\n });\n }\n\n for (const column of this.filterColumns) {\n const key = this.getFilterKey(column);\n const filterType = column.filter?.type;\n const filterValue = this.columnFilters[key];\n\n switch (filterType) {\n case 'text': {\n const value = String(filterValue ?? '').trim();\n if (value) {\n chips.push({\n key,\n label: column.label,\n valueLabel: value,\n column,\n kind: 'column',\n });\n }\n break;\n }\n\n case 'select': {\n if (filterValue !== '' && filterValue != null) {\n const optionLabel =\n column.filter?.options?.find((opt) => opt.value === filterValue)?.label ??\n String(filterValue);\n\n chips.push({\n key,\n label: column.label,\n valueLabel: optionLabel,\n column,\n kind: 'column',\n });\n }\n break;\n }\n\n case 'number-range': {\n const min = filterValue?.min;\n const max = filterValue?.max;\n\n if (min != null || max != null) {\n let valueLabel = '';\n if (min != null && max != null) valueLabel = `${min}–${max}`;\n else if (min != null) valueLabel = `≥ ${min}`;\n else valueLabel = `≤ ${max}`;\n\n chips.push({\n key,\n label: column.label,\n valueLabel,\n column,\n kind: 'column',\n });\n }\n break;\n }\n\n case 'date-range': {\n const from = filterValue?.from;\n const to = filterValue?.to;\n\n if (from || to) {\n let valueLabel = '';\n if (from && to) valueLabel = `${from} → ${to}`;\n else if (from) valueLabel = `From ${from}`;\n else valueLabel = `To ${to}`;\n\n chips.push({\n key,\n label: column.label,\n valueLabel,\n column,\n kind: 'column',\n });\n }\n break;\n }\n }\n }\n\n return chips;\n }\n\n get resolvedEmptyDescription(): string {\n return this.emptyDescription?.trim() || this.emptyText;\n }\n\n onFilterChange(): void {\n this.currentPage = 1;\n }\n\n onColumnFilterChange(): void {\n this.currentPage = 1;\n }\n\n onPageSizeChange(value: string | number): void {\n this.pageSize = Number(value);\n this.currentPage = 1;\n this.ensureValidPage();\n }\n\n toggleFilters(): void {\n if (!this.hasColumnFilters) return;\n this.areFiltersOpen = !this.areFiltersOpen;\n }\n\n clearFilterChip(chip: GvActiveFilterChip<T>): void {\n if (chip.kind === 'global') {\n this.filterTerm = '';\n this.currentPage = 1;\n return;\n }\n\n const column = chip.column;\n if (!column) return;\n\n const key = this.getFilterKey(column);\n\n switch (column.filter?.type) {\n case 'text':\n case 'select':\n this.columnFilters[key] = '';\n break;\n case 'number-range':\n this.columnFilters[key] = { min: null, max: null };\n break;\n case 'date-range':\n this.columnFilters[key] = { from: null, to: null };\n break;\n }\n\n this.currentPage = 1;\n }\n\n toggleSort(column: GvTableColumn<T>): void {\n if (!column.sortable) return;\n\n const key = String(column.key);\n\n if (this.sortKey !== key) {\n this.sortKey = key;\n this.sortDirection = 'asc';\n } else if (this.sortDirection === 'asc') {\n this.sortDirection = 'desc';\n } else if (this.sortDirection === 'desc') {\n this.sortKey = null;\n this.sortDirection = null;\n } else {\n this.sortDirection = 'asc';\n }\n\n this.currentPage = 1;\n }\n\n getSortDirection(column: GvTableColumn<T>): GvTableSortDirection {\n return this.sortKey === String(column.key) ? this.sortDirection : null;\n }\n\n goToPage(page: number): void {\n if (page < 1 || page > this.totalPages) return;\n this.currentPage = page;\n }\n\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n clearAllFilters(): void {\n this.filterTerm = '';\n this.columnFilters = {};\n this.initializeColumnFilters();\n this.currentPage = 1;\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n trackByColumn = (_: number, column: GvTableColumn<T>) => String(column.key);\n trackByChip = (_: number, chip: GvActiveFilterChip<T>) => chip.key;\n\n getCellValue(row: T, key: keyof T | string): any {\n return String(key)\n .split('.')\n .reduce((acc: any, part: string) => acc?.[part], row);\n }\n\n getAlignClass(column: GvTableColumn<T>): string {\n switch (column.align) {\n case 'center':\n return 'gv-table__cell--center';\n case 'end':\n return 'gv-table__cell--end';\n default:\n return 'gv-table__cell--start';\n }\n }\n\n getFilterKey(column: GvTableColumn<T>): string {\n return String(column.key);\n }\n\n getFilterType(column: GvTableColumn<T>): GvTableFilterType | null {\n return column.filter?.type ?? null;\n }\n\n getTextFilterValue(column: GvTableColumn<T>): string {\n return this.columnFilters[this.getFilterKey(column)] ?? '';\n }\n\n setTextFilterValue(column: GvTableColumn<T>, value: string): void {\n this.columnFilters[this.getFilterKey(column)] = value;\n this.onColumnFilterChange();\n }\n\n getSelectFilterValue(column: GvTableColumn<T>): any {\n return this.columnFilters[this.getFilterKey(column)] ?? '';\n }\n\n setSelectFilterValue(column: GvTableColumn<T>, value: any): void {\n this.columnFilters[this.getFilterKey(column)] = value;\n this.onColumnFilterChange();\n }\n\n getNumberRangeFilterValue(column: GvTableColumn<T>): GvNumberRangeFilterValue {\n return this.columnFilters[this.getFilterKey(column)] ?? { min: null, max: null };\n }\n\n setNumberRangeFilterMin(column: GvTableColumn<T>, value: string | number | null): void {\n const key = this.getFilterKey(column);\n const current = this.getNumberRangeFilterValue(column);\n\n this.columnFilters[key] = {\n ...current,\n min: value === '' || value === null ? null : Number(value),\n };\n\n this.onColumnFilterChange();\n }\n\n setNumberRangeFilterMax(column: GvTableColumn<T>, value: string | number | null): void {\n const key = this.getFilterKey(column);\n const current = this.getNumberRangeFilterValue(column);\n\n this.columnFilters[key] = {\n ...current,\n max: value === '' || value === null ? null : Number(value),\n };\n\n this.onColumnFilterChange();\n }\n\n getDateRangeFilterValue(column: GvTableColumn<T>): GvDateRangeFilterValue {\n return this.columnFilters[this.getFilterKey(column)] ?? { from: null, to: null };\n }\n\n setDateRangeFilterFrom(column: GvTableColumn<T>, value: string | null): void {\n const key = this.getFilterKey(column);\n const current = this.getDateRangeFilterValue(column);\n\n this.columnFilters[key] = {\n ...current,\n from: value || null,\n };\n\n this.onColumnFilterChange();\n }\n\n setDateRangeFilterTo(column: GvTableColumn<T>, value: string | null): void {\n const key = this.getFilterKey(column);\n const current = this.getDateRangeFilterValue(column);\n\n this.columnFilters[key] = {\n ...current,\n to: value || null,\n };\n\n this.onColumnFilterChange();\n }\n\n private initializeColumnFilters(): void {\n const nextFilters: Record<string, any> = {};\n\n for (const column of this.filterColumns) {\n const key = this.getFilterKey(column);\n const existing = this.columnFilters[key];\n\n switch (column.filter?.type) {\n case 'text':\n nextFilters[key] = existing ?? '';\n break;\n case 'select':\n nextFilters[key] = existing ?? '';\n break;\n case 'number-range':\n nextFilters[key] = existing ?? { min: null, max: null };\n break;\n case 'date-range':\n nextFilters[key] = existing ?? { from: null, to: null };\n break;\n }\n }\n\n this.columnFilters = nextFilters;\n }\n\n private applyGlobalSearch(data: T[]): T[] {\n const term = this.filterTerm.trim().toLowerCase();\n if (!term) return data;\n\n const searchableColumns = this.searchableColumns;\n if (!searchableColumns.length) return data;\n\n return data.filter((row) =>\n searchableColumns.some((column) => {\n const value = this.getCellValue(row, column.key);\n return String(value ?? '')\n .toLowerCase()\n .includes(term);\n }),\n );\n }\n\n private applyColumnFilters(data: T[]): T[] {\n if (!this.filterColumns.length) return data;\n\n return data.filter((row) =>\n this.filterColumns.every((column) => {\n const key = this.getFilterKey(column);\n const filterType = column.filter?.type;\n const cellValue = this.getCellValue(row, column.key);\n const filterValue = this.columnFilters[key];\n\n switch (filterType) {\n case 'text': {\n const term = String(filterValue ?? '')\n .trim()\n .toLowerCase();\n if (!term) return true;\n\n return String(cellValue ?? '')\n .toLowerCase()\n .includes(term);\n }\n\n case 'select': {\n if (filterValue === '' || filterValue == null) return true;\n return cellValue === filterValue;\n }\n\n case 'number-range': {\n const min = filterValue?.min;\n const max = filterValue?.max;\n\n if ((min == null || min === '') && (max == null || max === '')) {\n return true;\n }\n\n const numericValue = Number(cellValue);\n if (Number.isNaN(numericValue)) return false;\n\n if (min != null && min !== '' && numericValue < min) return false;\n if (max != null && max !== '' && numericValue > max) return false;\n\n return true;\n }\n\n case 'date-range': {\n const from = filterValue?.from;\n const to = filterValue?.to;\n\n if (!from && !to) return true;\n if (!cellValue) return false;\n\n const cellDate = new Date(cellValue).getTime();\n if (Number.isNaN(cellDate)) return false;\n\n if (from) {\n const fromDate = new Date(from).setHours(0, 0, 0, 0);\n if (cellDate < fromDate) return false;\n }\n\n if (to) {\n const toDate = new Date(to).setHours(23, 59, 59, 999);\n if (cellDate > toDate) return false;\n }\n\n return true;\n }\n\n default:\n return true;\n }\n }),\n );\n }\n\n private compareValues(a: any, b: any): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n }\n\n const aDate = new Date(a).getTime();\n const bDate = new Date(b).getTime();\n const aLooksLikeDate = !Number.isNaN(aDate) && typeof a === 'string';\n const bLooksLikeDate = !Number.isNaN(bDate) && typeof b === 'string';\n\n if (aLooksLikeDate && bLooksLikeDate) {\n return aDate - bDate;\n }\n\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n }\n\n private ensureValidPage(): void {\n if (this.currentPage > this.totalPages) {\n this.currentPage = this.totalPages;\n }\n if (this.currentPage < 1) {\n this.currentPage = 1;\n }\n }\n}\n","<div class=\"gv-table-shell\">\n @if (filterable || hasColumnFilters || pagination) {\n <div class=\"gv-table-toolbar\">\n <div class=\"gv-table-toolbar__left\">\n @if (filterable) {\n <div class=\"gv-table-toolbar__search\">\n <input\n type=\"text\"\n class=\"form-control\"\n [placeholder]=\"filterPlaceholder\"\n [(ngModel)]=\"filterTerm\"\n (ngModelChange)=\"onFilterChange()\"\n />\n </div>\n }\n\n @if (hasColumnFilters) {\n <button\n type=\"button\"\n class=\"gv-table-toolbar__filters-btn\"\n [class.is-active]=\"activeFilterCount > 0\"\n (click)=\"toggleFilters()\"\n >\n <span>Filters</span>\n @if (activeFilterCount > 0) {\n <span class=\"gv-table-toolbar__filters-count\">{{ activeFilterCount }}</span>\n }\n <span class=\"gv-table-toolbar__filters-caret\">\n {{ shouldShowFiltersPanel ? '▴' : '▾' }}\n </span>\n </button>\n }\n </div>\n\n @if (pagination) {\n <div class=\"gv-table-toolbar__page-size\">\n <label class=\"gv-table-toolbar__label\">Rows per page</label>\n <select\n class=\"form-select\"\n [ngModel]=\"pageSize\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n >\n @for (opt of pageSizeOptions; track trackByIndex($index)) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n }\n </div>\n }\n\n @if (activeFilterChips.length) {\n <div class=\"gv-table-active-filters\">\n @for (chip of activeFilterChips; track trackByChip($index, chip)) {\n <button\n type=\"button\"\n class=\"gv-table-active-filters__chip\"\n (click)=\"clearFilterChip(chip)\"\n [attr.aria-label]=\"'Remove filter ' + chip.label\"\n >\n <span class=\"gv-table-active-filters__chip-label\">{{ chip.label }}:</span>\n <span class=\"gv-table-active-filters__chip-value\">{{ chip.valueLabel }}</span>\n <span class=\"gv-table-active-filters__chip-remove\">×</span>\n </button>\n }\n\n <button type=\"button\" class=\"gv-table-active-filters__clear-all\" (click)=\"clearAllFilters()\">\n Clear all\n </button>\n </div>\n }\n\n @if (shouldShowFiltersPanel) {\n <div class=\"gv-table-filters\">\n <div class=\"gv-table-filters__grid\">\n @for (column of filterColumns; track trackByColumn($index, column)) {\n <div class=\"gv-table-filter\">\n <label class=\"gv-table-filter__label\">{{ column.label }}</label>\n\n @switch (getFilterType(column)) {\n @case ('text') {\n <input\n type=\"text\"\n class=\"form-control\"\n [value]=\"getTextFilterValue(column)\"\n [placeholder]=\"'Filter ' + column.label\"\n (input)=\"setTextFilterValue(column, $any($event.target).value)\"\n />\n }\n\n @case ('select') {\n <select\n class=\"form-select\"\n [ngModel]=\"getSelectFilterValue(column)\"\n (ngModelChange)=\"setSelectFilterValue(column, $event)\"\n >\n <option value=\"\">All</option>\n @for (opt of column.filter?.options ?? []; track trackByIndex($index)) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n }\n\n @case ('number-range') {\n <div class=\"gv-table-filter__range\">\n <input\n type=\"number\"\n class=\"form-control\"\n placeholder=\"Min\"\n [value]=\"getNumberRangeFilterValue(column).min ?? ''\"\n (input)=\"setNumberRangeFilterMin(column, $any($event.target).value)\"\n />\n <input\n type=\"number\"\n class=\"form-control\"\n placeholder=\"Max\"\n [value]=\"getNumberRangeFilterValue(column).max ?? ''\"\n (input)=\"setNumberRangeFilterMax(column, $any($event.target).value)\"\n />\n </div>\n }\n\n @case ('date-range') {\n <div class=\"gv-table-filter__range\">\n <input\n type=\"date\"\n class=\"form-control\"\n [value]=\"getDateRangeFilterValue(column).from ?? ''\"\n (input)=\"setDateRangeFilterFrom(column, $any($event.target).value)\"\n />\n <input\n type=\"date\"\n class=\"form-control\"\n [value]=\"getDateRangeFilterValue(column).to ?? ''\"\n (input)=\"setDateRangeFilterTo(column, $any($event.target).value)\"\n />\n </div>\n }\n }\n </div>\n }\n </div>\n\n <div class=\"gv-table-filters__actions\">\n <button type=\"button\" class=\"gv-table-filters__clear\" (click)=\"clearAllFilters()\">\n Clear filters\n </button>\n </div>\n </div>\n }\n\n <div class=\"gv-table-wrap\" [style.min-height.px]=\"minBodyHeight\">\n <table [class]=\"tableClass\">\n <thead>\n <tr>\n @for (column of columns; track trackByColumn($index, column)) {\n <th [style.width]=\"column.width || null\" [class]=\"getAlignClass(column)\">\n @if (column.sortable) {\n <button type=\"button\" class=\"gv-table__sort\" (click)=\"toggleSort(column)\">\n <span>{{ column.label }}</span>\n <span class=\"gv-table__sort-icon\">\n @switch (getSortDirection(column)) {\n @case ('asc') {\n ▲\n }\n @case ('desc') {\n ▼\n }\n @default {\n ↕\n }\n }\n </span>\n </button>\n } @else {\n <span>{{ column.label }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) {\n <tr>\n <td\n [attr.colspan]=\"columns.length\"\n class=\"gv-table__empty gv-table__empty--fill\"\n [style.height.px]=\"minBodyHeight\"\n >\n <gv-empty\n compact\n [title]=\"loadingTitle\"\n [description]=\"loadingDescription\"\n ></gv-empty>\n </td>\n </tr>\n } @else if (!pagedRows.length) {\n <tr>\n <td\n [attr.colspan]=\"columns.length\"\n class=\"gv-table__empty gv-table__empty--fill\"\n [style.height.px]=\"minBodyHeight\"\n >\n <gv-empty\n compact\n [title]=\"emptyTitle\"\n [description]=\"resolvedEmptyDescription\"\n ></gv-empty>\n </td>\n </tr>\n } @else {\n @for (row of pagedRows; track trackByIndex($index)) {\n <tr>\n @for (column of columns; track trackByColumn($index, column)) {\n <td [class]=\"getAlignClass(column)\">\n {{ getCellValue(row, column.key) }}\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (pagination) {\n <div class=\"gv-table-footer\">\n <div class=\"gv-table-footer__meta\">\n Showing {{ startRow }} to {{ endRow }} of {{ totalRows }}\n </div>\n\n <div class=\"gv-table-pagination\">\n <button\n type=\"button\"\n class=\"gv-table-pagination__icon-btn\"\n (click)=\"previousPage()\"\n [disabled]=\"currentPage === 1\"\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n\n <div class=\"gv-table-pagination__pill\">\n <span class=\"gv-table-pagination__current\">{{ currentPage }}</span>\n <span class=\"gv-table-pagination__separator\">/</span>\n <span class=\"gv-table-pagination__total\">{{ totalPages }}</span>\n </div>\n\n <button\n type=\"button\"\n class=\"gv-table-pagination__icon-btn\"\n (click)=\"nextPage()\"\n [disabled]=\"currentPage === totalPages\"\n aria-label=\"Next page\"\n >\n ›\n </button>\n </div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GvSkeletonVariant = 'text' | 'rect' | 'circle';\n\n@Component({\n selector: 'gv-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Skeleton {\n @Input() variant: GvSkeletonVariant = 'rect';\n @Input() width?: string;\n @Input() height?: string;\n @Input() lines = 1;\n @Input() animated = true;\n\n @HostBinding('class.gv-skeleton')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-skeleton--animated')\n get animatedClass(): boolean {\n return this.animated;\n }\n\n @HostBinding('class.gv-skeleton--text')\n get textClass(): boolean {\n return this.variant === 'text';\n }\n\n @HostBinding('class.gv-skeleton--rect')\n get rectClass(): boolean {\n return this.variant === 'rect';\n }\n\n @HostBinding('class.gv-skeleton--circle')\n get circleClass(): boolean {\n return this.variant === 'circle';\n }\n\n @HostBinding('style.--gv-skeleton-width')\n get skeletonWidth(): string | null {\n return this.hostWidth;\n }\n\n @HostBinding('style.--gv-skeleton-height')\n get skeletonHeight(): string | null {\n return this.hostHeight;\n }\n\n get resolvedLines(): number[] {\n const total = this.variant === 'text' ? Math.max(1, this.lines) : 1;\n return Array.from({ length: total }, (_, index) => index);\n }\n\n get hostWidth(): string | null {\n return this.width?.trim() || null;\n }\n\n get hostHeight(): string | null {\n if (this.height?.trim()) {\n return this.height.trim();\n }\n\n if (this.variant === 'text') {\n return null;\n }\n\n if (this.variant === 'circle') {\n return this.hostWidth || '2.5rem';\n }\n\n return '1rem';\n }\n\n lineWidth(index: number): string | null {\n if (this.variant !== 'text') {\n return null;\n }\n\n if (this.width?.trim()) {\n return this.width.trim();\n }\n\n const widths = ['100%', '92%', '84%', '76%'];\n return widths[index % widths.length];\n }\n}\n","<div class=\"gv-skeleton__group\" role=\"status\" aria-live=\"polite\" aria-label=\"Loading content\">\n @for (line of resolvedLines; track line) {\n <span\n class=\"gv-skeleton__item\"\n [style.width]=\"lineWidth($index)\"\n [style.height]=\"variant === 'text' ? height || null : null\"\n aria-hidden=\"true\"\n ></span>\n }\n\n <span class=\"visually-hidden\">Loading content</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GvDropdownAlign = 'start' | 'end';\n\n@Directive({\n selector: '[gvDropdownTrigger]',\n standalone: true,\n})\nexport class DropdownTriggerDirective {}\n\n@Directive({\n selector: '[gvDropdownMenu]',\n standalone: true,\n})\nexport class DropdownMenuDirective {}\n\n@Component({\n selector: 'gv-dropdown',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dropdown.html',\n styleUrl: './dropdown.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Dropdown {\n @Input() align: GvDropdownAlign = 'start';\n @Input() disabled = false;\n @Input() closeOnItemClick = true;\n\n @HostBinding('class.gv-dropdown')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-dropdown--open')\n get openClass(): boolean {\n return this.open;\n }\n\n @HostBinding('class.gv-dropdown--disabled')\n get disabledClass(): boolean {\n return this.disabled;\n }\n\n @HostBinding('class.gv-dropdown--align-end')\n get alignEndClass(): boolean {\n return this.align === 'end';\n }\n\n open = false;\n\n constructor(\n private readonly hostRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n toggle(event?: Event): void {\n event?.stopPropagation();\n\n if (this.disabled) {\n return;\n }\n\n this.open = !this.open;\n this.cdr.markForCheck();\n }\n\n closeMenu(): void {\n if (!this.open) {\n return;\n }\n\n this.open = false;\n this.cdr.markForCheck();\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle(event);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.open = true;\n this.cdr.markForCheck();\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeMenu();\n }\n }\n\n onMenuClick(event: MouseEvent): void {\n event.stopPropagation();\n\n if (!this.closeOnItemClick) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n const actionable = target?.closest('button, a, [role=\"menuitem\"]');\n\n if (actionable) {\n this.closeMenu();\n }\n }\n\n onMenuKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeMenu();\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.open) {\n return;\n }\n\n const host = this.hostRef.nativeElement;\n const target = event.target as Node | null;\n\n if (target && !host.contains(target)) {\n this.closeMenu();\n }\n }\n}\n","<div\n class=\"gv-dropdown__trigger-wrap\"\n (click)=\"toggle($event)\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <ng-content select=\"[gvDropdownTrigger]\"></ng-content>\n</div>\n\n@if (open) {\n <div class=\"gv-dropdown__panel\" (click)=\"onMenuClick($event)\" (keydown)=\"onMenuKeydown($event)\">\n <ng-content select=\"[gvDropdownMenu]\"></ng-content>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nexport type GvAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type GvAvatarShape = 'circle' | 'rounded' | 'square';\nexport type GvAvatarBackground = 'subtle' | 'primary' | 'neutral';\n\n@Component({\n selector: 'gv-avatar',\n standalone: true,\n templateUrl: './avatar.html',\n styleUrls: ['./avatar.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Avatar {\n @Input() src?: string;\n @Input() alt?: string;\n @Input() name?: string;\n @Input() initials?: string;\n @Input() size: GvAvatarSize = 'md';\n @Input() shape: GvAvatarShape = 'circle';\n @Input() background: GvAvatarBackground = 'subtle';\n\n imageFailed = false;\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-avatar-host',\n `gv-avatar-host--${this.size}`,\n `gv-avatar-host--${this.shape}`,\n `gv-avatar-host--${this.background}`,\n ].join(' ');\n }\n\n get hasImage(): boolean {\n return !!this.src && !this.imageFailed;\n }\n\n get computedAlt(): string {\n return this.alt?.trim() || this.name?.trim() || 'Avatar';\n }\n\n get displayInitials(): string {\n if (this.initials?.trim()) {\n return this.initials.trim().slice(0, 2).toUpperCase();\n }\n\n if (!this.name?.trim()) {\n return '';\n }\n\n const parts = this.name.trim().split(/\\s+/).filter(Boolean).slice(0, 2);\n\n return parts\n .map((part) => part.charAt(0))\n .join('')\n .toUpperCase();\n }\n\n get shouldShowInitials(): boolean {\n return !this.hasImage && !!this.displayInitials;\n }\n\n get shouldShowProjectedContent(): boolean {\n return !this.hasImage && !this.displayInitials;\n }\n\n onImageError(): void {\n this.imageFailed = true;\n }\n}\n","<div class=\"gv-avatar\" [attr.aria-label]=\"computedAlt\">\n @if (hasImage) {\n <img class=\"gv-avatar__image\" [src]=\"src!\" [alt]=\"computedAlt\" (error)=\"onImageError()\" />\n } @else if (shouldShowInitials) {\n <span class=\"gv-avatar__initials\">{{ displayInitials }}</span>\n } @else {\n <span class=\"gv-avatar__icon\">\n <ng-content>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" class=\"gv-avatar__default-icon\">\n <path\n d=\"M12 12C14.7614 12 17 9.76142 17 7C17 4.23858 14.7614 2 12 2C9.23858 2 7 4.23858 7 7C7 9.76142 9.23858 12 12 12Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M4 20C4.8 17.2 7.6 15 12 15C16.4 15 19.2 17.2 20 20\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-content>\n </span>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GvBadgeVariant = 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type GvBadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'gv-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.html',\n styleUrl: './badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Badge {\n @Input() variant: GvBadgeVariant = 'neutral';\n @Input() size: GvBadgeSize = 'md';\n @Input({ transform: booleanAttribute }) pill = false;\n @Input({ transform: booleanAttribute }) dot = false;\n\n @HostBinding('class.gv-badge')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-badge--neutral')\n get neutralClass(): boolean {\n return this.variant === 'neutral';\n }\n\n @HostBinding('class.gv-badge--primary')\n get primaryClass(): boolean {\n return this.variant === 'primary';\n }\n\n @HostBinding('class.gv-badge--success')\n get successClass(): boolean {\n return this.variant === 'success';\n }\n\n @HostBinding('class.gv-badge--warning')\n get warningClass(): boolean {\n return this.variant === 'warning';\n }\n\n @HostBinding('class.gv-badge--danger')\n get dangerClass(): boolean {\n return this.variant === 'danger';\n }\n\n @HostBinding('class.gv-badge--info')\n get infoClass(): boolean {\n return this.variant === 'info';\n }\n\n @HostBinding('class.gv-badge--sm')\n get smClass(): boolean {\n return this.size === 'sm';\n }\n\n @HostBinding('class.gv-badge--md')\n get mdClass(): boolean {\n return this.size === 'md';\n }\n\n @HostBinding('class.gv-badge--pill')\n get pillClass(): boolean {\n return this.pill;\n }\n\n @HostBinding('class.gv-badge--dot')\n get dotClass(): boolean {\n return this.dot;\n }\n}\n","<span class=\"gv-badge__content\">\n @if (dot) {\n <span class=\"gv-badge__dot\" aria-hidden=\"true\"></span>\n }\n\n <span class=\"gv-badge__label\">\n <ng-content></ng-content>\n </span>\n</span>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GvAlertVariant = 'neutral' | 'info' | 'success' | 'warning' | 'danger';\n\n@Component({\n selector: 'gv-alert',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Alert {\n @Input() variant: GvAlertVariant = 'info';\n @Input() title?: string;\n @Input({ transform: booleanAttribute }) dismissible = false;\n\n @Output() dismissed = new EventEmitter<void>();\n\n protected visible = true;\n\n @HostBinding('class.gv-alert')\n protected readonly baseClass = true;\n\n @HostBinding('class.gv-alert--neutral')\n get neutralClass(): boolean {\n return this.variant === 'neutral';\n }\n\n @HostBinding('class.gv-alert--info')\n get infoClass(): boolean {\n return this.variant === 'info';\n }\n\n @HostBinding('class.gv-alert--success')\n get successClass(): boolean {\n return this.variant === 'success';\n }\n\n @HostBinding('class.gv-alert--warning')\n get warningClass(): boolean {\n return this.variant === 'warning';\n }\n\n @HostBinding('class.gv-alert--danger')\n get dangerClass(): boolean {\n return this.variant === 'danger';\n }\n\n @HostBinding('attr.role')\n get role(): string {\n return this.variant === 'danger' || this.variant === 'warning' ? 'alert' : 'status';\n }\n\n onDismiss(): void {\n this.visible = false;\n this.dismissed.emit();\n }\n}\n","@if (visible) {\n <div class=\"gv-alert__surface\">\n <div class=\"gv-alert__body\">\n <div class=\"gv-alert__content\">\n @if (title?.trim()) {\n <div class=\"gv-alert__title\">{{ title }}</div>\n }\n\n <div class=\"gv-alert__message\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (dismissible) {\n <button\n type=\"button\"\n class=\"gv-alert__close\"\n aria-label=\"Dismiss alert\"\n (click)=\"onDismiss()\"\n >\n ×\n </button>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nexport type GvTooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n selector: 'gv-tooltip-panel',\n standalone: true,\n template: `\n <div class=\"gv-tooltip-panel__inner\">\n {{ text }}\n <span class=\"gv-tooltip-panel__arrow\" aria-hidden=\"true\"></span>\n </div>\n `,\n styleUrls: ['./tooltip.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GvTooltipPanelComponent {\n @Input() text = '';\n @Input() placement: GvTooltipPlacement = 'top';\n @Input() maxWidth = 240;\n\n @HostBinding('class')\n get hostClasses(): string {\n return `gv-tooltip-panel gv-tooltip-panel--${this.placement}`;\n }\n\n @HostBinding('style.max-width.px')\n get hostMaxWidth(): number {\n return this.maxWidth;\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n createComponent,\n effect,\n signal,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { GvTooltipPanelComponent, GvTooltipPlacement } from './tooltip-panel';\n\nexport type GvTooltipTrigger = 'hover' | 'focus' | 'click' | 'manual';\n\nlet nextTooltipId = 0;\n\n@Directive({\n selector: '[gvTooltip]',\n standalone: true,\n exportAs: 'gvTooltip',\n})\nexport class GvTooltipDirective implements OnDestroy {\n @Input('gvTooltip') text = '';\n @Input() gvTooltipPlacement: GvTooltipPlacement = 'top';\n @Input() gvTooltipTrigger: GvTooltipTrigger = 'hover';\n @Input({ transform: booleanAttribute }) gvTooltipDisabled = false;\n @Input() gvTooltipOffset = 10;\n @Input() gvTooltipMaxWidth = 240;\n\n private tooltipRef: ComponentRef<GvTooltipPanelComponent> | null = null;\n private removeScrollListener: (() => void) | null = null;\n private removeResizeListener: (() => void) | null = null;\n private removeDocumentClickListener: (() => void) | null = null;\n private readonly isOpen = signal(false);\n private readonly tooltipId = `gv-tooltip-${++nextTooltipId}`;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly appRef: ApplicationRef,\n private readonly renderer: Renderer2,\n private readonly ngZone: NgZone,\n @Inject(DOCUMENT) private readonly document: Document,\n ) {\n effect(() => {\n const host = this.elementRef.nativeElement;\n if (this.isOpen()) {\n this.renderer.setAttribute(host, 'aria-describedby', this.tooltipId);\n } else {\n this.renderer.removeAttribute(host, 'aria-describedby');\n }\n });\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.gvTooltipTrigger === 'hover') {\n this.show();\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n if (this.gvTooltipTrigger === 'hover') {\n this.hide();\n }\n }\n\n @HostListener('focusin')\n onFocusIn(): void {\n if (this.gvTooltipTrigger === 'focus' || this.gvTooltipTrigger === 'hover') {\n this.show();\n }\n }\n\n @HostListener('focusout')\n onFocusOut(): void {\n if (this.gvTooltipTrigger === 'focus' || this.gvTooltipTrigger === 'hover') {\n this.hide();\n }\n }\n\n @HostListener('click', ['$event'])\n onHostClick(event: MouseEvent): void {\n if (this.gvTooltipTrigger !== 'click') {\n return;\n }\n\n event.stopPropagation();\n this.toggle();\n }\n\n @HostListener('keydown.escape')\n onEscape(): void {\n this.hide();\n }\n\n show(): void {\n if (this.gvTooltipDisabled || !this.text?.trim() || this.tooltipRef) {\n return;\n }\n\n this.tooltipRef = createComponent(GvTooltipPanelComponent, {\n environmentInjector: this.appRef.injector,\n });\n\n this.tooltipRef.instance.text = this.text;\n this.tooltipRef.instance.placement = this.gvTooltipPlacement;\n this.tooltipRef.instance.maxWidth = this.gvTooltipMaxWidth;\n\n this.appRef.attachView(this.tooltipRef.hostView);\n\n const tooltipEl = this.tooltipRef.location.nativeElement as HTMLElement;\n tooltipEl.id = this.tooltipId;\n tooltipEl.setAttribute('role', 'tooltip');\n\n this.document.body.appendChild(tooltipEl);\n\n this.positionTooltip();\n this.bindGlobalListeners();\n this.isOpen.set(true);\n }\n\n hide(): void {\n if (!this.tooltipRef) {\n return;\n }\n\n this.unbindGlobalListeners();\n this.appRef.detachView(this.tooltipRef.hostView);\n this.tooltipRef.destroy();\n this.tooltipRef = null;\n this.isOpen.set(false);\n }\n\n toggle(): void {\n if (this.tooltipRef) {\n this.hide();\n return;\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n private bindGlobalListeners(): void {\n this.ngZone.runOutsideAngular(() => {\n this.removeScrollListener = this.renderer.listen('window', 'scroll', () =>\n this.positionTooltip(),\n );\n\n this.removeResizeListener = this.renderer.listen('window', 'resize', () =>\n this.positionTooltip(),\n );\n\n if (this.gvTooltipTrigger === 'click') {\n this.removeDocumentClickListener = this.renderer.listen(\n this.document,\n 'click',\n (event: MouseEvent) => {\n const host = this.elementRef.nativeElement;\n const tooltipEl = this.tooltipRef?.location.nativeElement as HTMLElement | undefined;\n const target = event.target as Node | null;\n\n if (!target) {\n return;\n }\n\n const clickedHost = host.contains(target);\n const clickedTooltip = tooltipEl?.contains(target);\n\n if (!clickedHost && !clickedTooltip) {\n this.hide();\n }\n },\n );\n }\n });\n }\n\n private unbindGlobalListeners(): void {\n this.removeScrollListener?.();\n this.removeResizeListener?.();\n this.removeDocumentClickListener?.();\n\n this.removeScrollListener = null;\n this.removeResizeListener = null;\n this.removeDocumentClickListener = null;\n }\n\n private positionTooltip(): void {\n if (!this.tooltipRef) {\n return;\n }\n\n const host = this.elementRef.nativeElement;\n const tooltipEl = this.tooltipRef.location.nativeElement as HTMLElement;\n\n const hostRect = host.getBoundingClientRect();\n\n tooltipEl.style.top = '0px';\n tooltipEl.style.left = '0px';\n\n const tooltipRect = tooltipEl.getBoundingClientRect();\n const offset = this.gvTooltipOffset;\n\n let top = 0;\n let left = 0;\n\n switch (this.gvTooltipPlacement) {\n case 'bottom':\n top = hostRect.bottom + offset;\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n break;\n\n case 'left':\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.left - tooltipRect.width - offset;\n break;\n\n case 'right':\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.right + offset;\n break;\n\n case 'top':\n default:\n top = hostRect.top - tooltipRect.height - offset;\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n break;\n }\n\n const viewportPadding = 8;\n\n left = Math.max(\n viewportPadding,\n Math.min(left, window.innerWidth - tooltipRect.width - viewportPadding),\n );\n\n top = Math.max(\n viewportPadding,\n Math.min(top, window.innerHeight - tooltipRect.height - viewportPadding),\n );\n\n tooltipEl.style.top = `${Math.round(top)}px`;\n tooltipEl.style.left = `${Math.round(left)}px`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\n\nexport type GvIconButtonVariant = 'default' | 'ghost' | 'primary' | 'danger';\nexport type GvIconButtonSize = 'sm' | 'md' | 'lg';\nexport type GvIconButtonShape = 'rounded' | 'circle' | 'square';\nexport type GvIconButtonType = 'button' | 'submit' | 'reset';\nexport type GvIconButtonAppearance = 'solid' | 'soft' | 'outline' | 'ghost';\n\n@Component({\n selector: 'gv-icon-button',\n standalone: true,\n templateUrl: './icon-button.html',\n styleUrls: ['./icon-button.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButton {\n @Input() ariaLabel = '';\n @Input() variant: GvIconButtonVariant = 'default';\n @Input() appearance: GvIconButtonAppearance = 'soft';\n @Input() size: GvIconButtonSize = 'md';\n @Input() shape: GvIconButtonShape = 'rounded';\n @Input() type: GvIconButtonType = 'button';\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) active = false;\n\n @Output() buttonClick = new EventEmitter<MouseEvent>();\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-icon-button-host',\n `gv-icon-button-host--${this.size}`,\n `gv-icon-button-host--${this.variant}`,\n `gv-icon-button-host--appearance-${this.appearance}`,\n `gv-icon-button-host--${this.shape}`,\n this.active ? 'gv-icon-button-host--active' : '',\n this.disabled ? 'gv-icon-button-host--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n onClick(event: MouseEvent): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.buttonClick.emit(event);\n }\n}\n","<button\n class=\"gv-icon-button\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.title]=\"ariaLabel || null\"\n [attr.type]=\"type\"\n [disabled]=\"disabled\"\n (click)=\"onClick($event)\"\n>\n <span class=\"gv-icon-button__content\">\n <ng-content></ng-content>\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\n\nexport type GvDividerOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'gv-divider',\n standalone: true,\n templateUrl: './divider.html',\n styleUrls: ['./divider.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Divider {\n @Input() orientation: GvDividerOrientation = 'horizontal';\n @Input() label?: string;\n @Input({ transform: booleanAttribute }) inset = false;\n\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'gv-divider-host',\n `gv-divider-host--${this.orientation}`,\n this.inset ? 'gv-divider-host--inset' : '',\n this.label ? 'gv-divider-host--with-label' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","@if (orientation === 'horizontal') {\n <div class=\"gv-divider gv-divider--horizontal\" role=\"separator\" aria-orientation=\"horizontal\">\n @if (label) {\n <span class=\"gv-divider__line\"></span>\n <span class=\"gv-divider__label\">{{ label }}</span>\n <span class=\"gv-divider__line\"></span>\n } @else {\n <span class=\"gv-divider__line gv-divider__line--full\"></span>\n }\n </div>\n} @else {\n <div class=\"gv-divider gv-divider--vertical\" role=\"separator\" aria-orientation=\"vertical\"></div>\n}\n","/*\n * Public API Surface of gravitas-ui\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","i1.Tabs"],"mappings":"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"}