@guildofgleks/ui 0.0.1
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.
- package/README.md +64 -0
- package/fesm2022/guildofgleks-ui.mjs +2159 -0
- package/fesm2022/guildofgleks-ui.mjs.map +1 -0
- package/package.json +24 -0
- package/src/styles/fonts.css +17 -0
- package/src/styles/index.css +3 -0
- package/src/styles/tokens.scss +82 -0
- package/src/styles/typography.css +15 -0
- package/src/styles/utilities.css +27 -0
- package/types/guildofgleks-ui.d.ts +723 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guildofgleks-ui.mjs","sources":["../../../../projects/gleks/ui/src/lib/components/spinner/spinner.component.ts","../../../../projects/gleks/ui/src/lib/components/spinner/spinner.component.html","../../../../projects/gleks/ui/src/lib/components/button/button.component.ts","../../../../projects/gleks/ui/src/lib/components/button/button.component.html","../../../../projects/gleks/ui/src/lib/components/accordion/accordion.component.ts","../../../../projects/gleks/ui/src/lib/components/accordion/accordion.component.html","../../../../projects/gleks/ui/src/lib/components/icon/icon.component.ts","../../../../projects/gleks/ui/src/lib/shared/checkable-control.config.ts","../../../../projects/gleks/ui/src/lib/components/checkbox/checkbox.component.ts","../../../../projects/gleks/ui/src/lib/components/checkbox/checkbox.component.html","../../../../projects/gleks/ui/src/lib/components/dialog/dialog.tokens.ts","../../../../projects/gleks/ui/src/lib/components/dialog/confirmation-dialog/confirmation-dialog.component.ts","../../../../projects/gleks/ui/src/lib/components/dialog/confirmation-dialog/confirmation-dialog.component.html","../../../../projects/gleks/ui/src/lib/services/dialog-service/dialog.service.ts","../../../../projects/gleks/ui/src/lib/components/dialog/dialog.component.ts","../../../../projects/gleks/ui/src/lib/components/dialog/dialog.component.html","../../../../projects/gleks/ui/src/lib/components/toast/toast.component.ts","../../../../projects/gleks/ui/src/lib/components/toast/toast.component.html","../../../../projects/gleks/ui/src/lib/services/toast-service/toast-service.ts","../../../../projects/gleks/ui/src/lib/components/toast/toast-container/toast-container.component.ts","../../../../projects/gleks/ui/src/lib/components/toast/toast-container/toast-container.component.html","../../../../projects/gleks/ui/src/lib/components/inputfield/inputfield.component.ts","../../../../projects/gleks/ui/src/lib/components/inputfield/inputfield.component.html","../../../../projects/gleks/ui/src/lib/components/chip/chip.component.ts","../../../../projects/gleks/ui/src/lib/components/chip/chip.component.html","../../../../projects/gleks/ui/src/lib/components/tag/tag.component.ts","../../../../projects/gleks/ui/src/lib/components/tag/tag.component.html","../../../../projects/gleks/ui/src/lib/shared/dropdown-position.ts","../../../../projects/gleks/ui/src/lib/components/select/select.component.ts","../../../../projects/gleks/ui/src/lib/components/select/select.component.html","../../../../projects/gleks/ui/src/lib/components/multiselect/multiselect.component.ts","../../../../projects/gleks/ui/src/lib/components/multiselect/multiselect.component.html","../../../../projects/gleks/ui/src/lib/components/slider/slider.component.ts","../../../../projects/gleks/ui/src/lib/components/slider/slider.component.html","../../../../projects/gleks/ui/src/lib/components/spinner/spinner-overlay/spinner-overlay.component.ts","../../../../projects/gleks/ui/src/lib/components/spinner/spinner-overlay/spinner-overlay.component.html","../../../../projects/gleks/ui/src/lib/components/table/column.ts","../../../../projects/gleks/ui/src/lib/components/table/template.directive.ts","../../../../projects/gleks/ui/src/lib/components/table/table.component.ts","../../../../projects/gleks/ui/src/lib/components/table/table.component.html","../../../../projects/gleks/ui/src/lib/services/theme-service/theme.service.ts","../../../../projects/gleks/ui/src/public-api.ts","../../../../projects/gleks/ui/src/guildofgleks-ui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GogSize } from '../../shared/types';\n\n@Component({\n selector: 'gog-spinner',\n imports: [NgTemplateOutlet],\n templateUrl: './spinner.component.html',\n styleUrl: './spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gog-inline-center',\n },\n})\nexport class SpinnerComponent {\n readonly size = input<GogSize>('md');\n readonly overlay = input(false);\n readonly ariaLabel = input('Loading');\n}\n","@if (overlay()) {\n <div class=\"gog-spinner__overlay gog-flex-center\">\n <div class=\"gog-spinner__wrap gog-contained-layout gog-spinner__wrap--{{ size() }}\">\n <ng-container *ngTemplateOutlet=\"spinnerTpl\" />\n </div>\n </div>\n} @else {\n <div class=\"gog-spinner__wrap gog-contained-layout gog-spinner__wrap--{{ size() }}\">\n <ng-container *ngTemplateOutlet=\"spinnerTpl\" />\n </div>\n}\n\n<ng-template #spinnerTpl>\n <svg class=\"gog-spinner__svg\" viewBox=\"0 0 64 64\" fill=\"none\" aria-hidden=\"true\">\n <!-- Static dim track -->\n <circle class=\"gog-spinner__track\" cx=\"32\" cy=\"32\" r=\"26\" stroke-width=\"1.5\" />\n\n <!-- Outer arc — rotates clockwise, long segment -->\n <circle\n class=\"gog-spinner__arc-outer\"\n cx=\"32\"\n cy=\"32\"\n r=\"26\"\n stroke-width=\"2.5\"\n stroke-linecap=\"butt\"\n />\n\n <!-- Inner arc — rotates counter-clockwise, short segment -->\n <circle\n class=\"gog-spinner__arc-inner\"\n cx=\"32\"\n cy=\"32\"\n r=\"18\"\n stroke-width=\"1.5\"\n stroke-linecap=\"butt\"\n />\n\n <!-- Rotating diamond ticks group — single transform on <g> works correctly -->\n <g class=\"gog-spinner__ticks\">\n <polygon points=\"32,3 34,6 32,9 30,6\" class=\"gog-spinner__diamond\" />\n <polygon points=\"32,55 34,58 32,61 30,58\" class=\"gog-spinner__diamond\" />\n <polygon points=\"3,32 6,30 9,32 6,34\" class=\"gog-spinner__diamond\" />\n <polygon points=\"55,32 58,30 61,32 58,34\" class=\"gog-spinner__diamond\" />\n </g>\n\n <!-- Inner rune — glow pulse only, no transform -->\n <text\n class=\"gog-spinner__rune-wrap gog-spinner__rune\"\n x=\"32\"\n y=\"32\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n >\n ✦\n </text>\n </svg>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n output,\n} from '@angular/core';\n\nimport { Subject, timer } from 'rxjs';\nimport { throttle } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { GogSize, GogVariant } from '../../shared/types';\nimport { SpinnerComponent } from '../spinner/spinner.component';\n\n@Component({\n selector: 'gog-button',\n imports: [SpinnerComponent],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n variant = input<GogVariant>('primary');\n size = input<GogSize>('md');\n disabled = input<boolean>(false);\n fullWidth = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n debounce = input<number>(300);\n loading = input<boolean>(false);\n\n gogClick = output<MouseEvent>();\n\n protected isDisabled = computed(() => this.disabled() || this.loading());\n protected spinnerSize = computed<GogSize>(() => (this.size() === 'lg' ? 'md' : 'sm'));\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly click$ = new Subject<MouseEvent>();\n\n constructor() {\n this.click$\n .pipe(\n throttle(() => timer(this.debounce()), { leading: true, trailing: false }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((event) => this.gogClick.emit(event));\n }\n\n protected onClick(event: MouseEvent): void {\n if (this.isDisabled()) return;\n this.click$.next(event);\n }\n}\n","<button\n (click)=\"onClick($event)\"\n [attr.disabled]=\"isDisabled() ? true : null\"\n [class.gog-cursor-not-allowed]=\"isDisabled()\"\n [class.gog-cursor-pointer]=\"!isDisabled()\"\n [class.gog-cursor-wait]=\"loading()\"\n [class.gog-btn--ghost]=\"variant() === 'ghost'\"\n [class.gog-btn--lg]=\"size() === 'lg'\"\n [class.gog-btn--loading]=\"loading()\"\n [class.gog-btn--md]=\"size() === 'md'\"\n [class.gog-btn--outline]=\"variant() === 'outline'\"\n [class.gog-btn--primary]=\"variant() === 'primary'\"\n [class.gog-btn--secondary]=\"variant() === 'secondary'\"\n [class.gog-btn--sm]=\"size() === 'sm'\"\n [type]=\"type()\"\n class=\"gog-btn gog-inline-center gog-contained-layout fw-black font-heading\"\n>\n @if (loading()) {\n <gog-spinner [size]=\"spinnerSize()\" aria-hidden=\"true\" class=\"gog-btn__spinner\" />\n }\n\n <span [class.gog-btn__content--hidden]=\"loading()\" class=\"gog-btn__content\">\n <ng-content></ng-content>\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n effect,\n Component,\n contentChild,\n ElementRef,\n Directive,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GogSize } from '../../shared/types';\n\nexport interface GogAccordionItem {\n id: string | number;\n title: string;\n [key: string]: unknown;\n}\n\nexport interface GogAccordionHeaderContext {\n $implicit: GogAccordionItem;\n open: boolean;\n}\n\nexport interface GogAccordionToggleEvent {\n item: GogAccordionItem;\n open: boolean;\n}\n\nexport interface GogAccordionChevronContext {\n $implicit: GogAccordionItem;\n open: boolean;\n}\n\n@Directive({\n selector: '[gogAccordionContent]',\n})\nexport class GogAccordionContentDirective {\n readonly templateRef = inject<TemplateRef<{ $implicit: GogAccordionItem }>>(TemplateRef);\n}\n\n@Directive({\n selector: '[gogAccordionHeader]',\n})\nexport class GogAccordionHeaderDirective {\n readonly templateRef = inject<TemplateRef<GogAccordionHeaderContext>>(TemplateRef);\n}\n\n@Directive({\n selector: '[gogAccordionChevron]',\n})\nexport class GogAccordionChevronDirective {\n readonly templateRef = inject<TemplateRef<GogAccordionChevronContext>>(TemplateRef);\n}\n\n@Component({\n selector: 'gog-accordion',\n imports: [NgTemplateOutlet],\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gog-accordion-host',\n },\n})\nexport class AccordionComponent {\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly items = input<GogAccordionItem[]>([]);\n readonly size = input<GogSize>('lg');\n readonly expandFirst = input(false);\n readonly multi = input(false);\n readonly loading = input(false);\n readonly showChevron = input(true);\n\n readonly gogToggle = output<GogAccordionToggleEvent>();\n\n readonly headerTpl = contentChild(GogAccordionHeaderDirective);\n readonly chevronTpl = contentChild(GogAccordionChevronDirective);\n readonly contentTpl = contentChild(GogAccordionContentDirective);\n\n protected readonly openIds = signal<Set<string | number>>(new Set());\n\n constructor() {\n effect(() => {\n const items = this.items();\n\n if (!this.expandFirst() || items.length === 0 || this.openIds().size > 0) {\n return;\n }\n\n this.openIds.set(new Set([items[0].id]));\n });\n }\n\n protected isOpen(id: string | number): boolean {\n return this.openIds().has(id);\n }\n\n protected toggle(item: GogAccordionItem): void {\n const id = item.id;\n const current = this.openIds();\n const next = new Set(current);\n\n if (next.has(id)) {\n next.delete(id);\n } else {\n if (!this.multi()) next.clear();\n next.add(id);\n }\n\n this.openIds.set(next);\n this.gogToggle.emit({ item, open: next.has(id) });\n }\n\n protected onHeaderKeydown(event: KeyboardEvent, index: number): void {\n const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];\n if (!keys.includes(event.key)) {\n return;\n }\n\n const host = this.host.nativeElement as HTMLElement;\n const headers = Array.from(host.querySelectorAll('.gog-accordion__header')) as HTMLButtonElement[];\n\n if (headers.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n const lastIndex = headers.length - 1;\n const nextIndex =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? lastIndex\n : event.key === 'ArrowDown'\n ? (index + 1) % headers.length\n : (index - 1 + headers.length) % headers.length;\n\n headers[nextIndex]?.focus();\n }\n}\n","<div\r\n class=\"gog-accordion gog-contained-layout\"\r\n [class.gog-accordion--md]=\"size() === 'md'\"\r\n [class.gog-accordion--sm]=\"size() === 'sm'\"\r\n [class.gog-accordion--loading]=\"loading()\"\r\n>\r\n @if (loading()) {\r\n @for (item of items(); track item.id) {\r\n <div class=\"gog-accordion__item gog-accordion__item--skeleton\">\r\n <div class=\"gog-accordion__header gog-accordion__header--skeleton\">\r\n <span class=\"gog-accordion__skeleton-line\"></span>\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n @for (item of items(); track item.id) {\r\n <div class=\"gog-accordion__item\" [class.gog-accordion__item--open]=\"isOpen(item.id)\">\r\n <button\r\n [id]=\"'gog-acc-btn-' + item.id\"\r\n class=\"gog-accordion__header font-heading\"\r\n [class.gog-accordion__header--chevronless]=\"!showChevron()\"\r\n [class.gog-accordion__header--open]=\"isOpen(item.id)\"\r\n [attr.aria-expanded]=\"isOpen(item.id)\"\r\n [attr.aria-controls]=\"'gog-acc-body-' + item.id\"\r\n (click)=\"toggle(item)\"\r\n (keydown)=\"onHeaderKeydown($event, $index)\"\r\n type=\"button\"\r\n >\r\n <span class=\"gog-accordion__header-content\">\r\n @if (headerTpl(); as tpl) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: item, open: isOpen(item.id) }\"\r\n />\r\n } @else {\r\n <span class=\"gog-accordion__title\">{{ item.title }}</span>\r\n }\r\n </span>\r\n @if (showChevron()) {\r\n <span class=\"gog-accordion__chevron\" aria-hidden=\"true\">\r\n @if (chevronTpl(); as tpl) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: item, open: isOpen(item.id) }\"\r\n />\r\n } @else {\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\"></polyline>\r\n </svg>\r\n }\r\n </span>\r\n }\r\n </button>\r\n\r\n <div\r\n [id]=\"'gog-acc-body-' + item.id\"\r\n class=\"gog-accordion__body font-body\"\r\n [class.gog-accordion__body--open]=\"isOpen(item.id)\"\r\n role=\"region\"\r\n [attr.aria-labelledby]=\"'gog-acc-btn-' + item.id\"\r\n [attr.aria-hidden]=\"!isOpen(item.id)\"\r\n [attr.inert]=\"!isOpen(item.id) ? '' : null\"\r\n >\r\n <div class=\"gog-accordion__body-inner\">\r\n @if (contentTpl(); as tpl) {\r\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: item }\" />\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, TemplateRef, computed, input } from '@angular/core';\r\n\r\nexport type GogIconName =\r\n | 'check'\r\n | 'close'\r\n | 'chevron-down'\r\n | 'chevron-up'\r\n | 'sort'\r\n | 'sort-up'\r\n | 'sort-down'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info';\r\n\r\n@Component({\r\n selector: 'gog-icon',\r\n imports: [NgTemplateOutlet],\r\n template: `\r\n @if (template(); as iconTpl) {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\" />\r\n } @else {\r\n <svg\r\n class=\"gog-icon__svg\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n @switch (name()) {\r\n @case ('check') {\r\n <path\r\n d=\"M3 8.5L6.5 12L13 4\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n }\r\n @case ('close') {\r\n <path\r\n d=\"M4 4L12 12M12 4L4 12\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n />\r\n }\r\n @case ('chevron-up') {\r\n <path\r\n d=\"M4 10L8 6L12 10\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n }\r\n @case ('chevron-down') {\r\n <path\r\n d=\"M4 6L8 10L12 6\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n }\r\n @case ('sort-up') {\r\n <path d=\"M8 3L4.5 6.5H11.5L8 3Z\" fill=\"currentColor\" />\r\n }\r\n @case ('sort-down') {\r\n <path d=\"M8 13L11.5 9.5H4.5L8 13Z\" fill=\"currentColor\" />\r\n }\r\n @case ('sort') {\r\n <path d=\"M5 5.5H11M5 8H11M5 10.5H11\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\r\n }\r\n @case ('success') {\r\n <path\r\n d=\"M3 8.5L6.2 11.7L13 4.9\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1.8\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n }\r\n @case ('error') {\r\n <path d=\"M4 4L12 12M12 4L4 12\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" />\r\n }\r\n @case ('warning') {\r\n <path d=\"M8 3L14 13H2L8 3Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 6V9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"11.5\" r=\"0.75\" fill=\"currentColor\" />\r\n }\r\n @case ('info') {\r\n <circle cx=\"8\" cy=\"8\" r=\"5.5\" stroke=\"currentColor\" stroke-width=\"1.5\" />\r\n <path d=\"M8 7V11\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"5.25\" r=\"0.75\" fill=\"currentColor\" />\r\n }\r\n }\r\n </svg>\r\n }\r\n `,\r\n styleUrl: './icon.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'gog-icon',\r\n '[attr.aria-hidden]': 'ariaHidden() ? \"true\" : null',\r\n '[attr.aria-label]': 'ariaHidden() ? null : ariaLabel()',\r\n },\r\n})\r\nexport class IconComponent {\r\n readonly name = input<GogIconName>('close');\r\n readonly template = input<TemplateRef<unknown> | null>(null);\r\n readonly title = input('');\r\n readonly ariaHidden = input(true);\r\n\r\n protected readonly ariaLabel = computed(() => (this.ariaHidden() ? null : this.title() || this.name()));\r\n}\r\n","import { GogSize } from './types';\r\n\r\nexport interface GogCheckableControlSizeConfig {\r\n readonly boxSize: string;\r\n readonly labelSize: string;\r\n readonly indicatorSize: string;\r\n}\r\n\r\nexport const GOG_CHECKABLE_CONTROL_PADDING = 'var(--control-checkbox-padding, 6px)';\r\n\r\nexport const GOG_CHECKABLE_CONTROL_SIZE_MAP = {\r\n sm: {\r\n boxSize: 'var(--control-checkbox-box-size-sm, 18px)',\r\n labelSize: 'var(--control-checkbox-label-size-sm, 0.8125rem)',\r\n indicatorSize: 'var(--control-checkbox-icon-size-sm, 12px)',\r\n },\r\n md: {\r\n boxSize: 'var(--control-checkbox-box-size-md, 24px)',\r\n labelSize: 'var(--control-checkbox-label-size-md, 0.9375rem)',\r\n indicatorSize: 'var(--control-checkbox-icon-size-md, 14px)',\r\n },\r\n lg: {\r\n boxSize: 'var(--control-checkbox-box-size-lg, 32px)',\r\n labelSize: 'var(--control-checkbox-label-size-lg, 1.0625rem)',\r\n indicatorSize: 'var(--control-checkbox-icon-size-lg, 18px)',\r\n },\r\n} as const satisfies Record<GogSize, GogCheckableControlSizeConfig>;\r\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n TemplateRef,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon/icon.component';\nimport { GogSize } from '../../shared/types';\nimport {\n GOG_CHECKABLE_CONTROL_PADDING,\n GOG_CHECKABLE_CONTROL_SIZE_MAP,\n} from '../../shared/checkable-control.config';\n\n@Component({\n selector: 'gog-checkbox',\n imports: [IconComponent],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--gog-checkbox-box-size]': 'boxSize()',\n '[style.--gog-checkbox-label-size]': 'labelSize()',\n '[style.--gog-checkbox-icon-size]': 'iconSize()',\n '[style.--gog-checkbox-padding]': 'checkboxPadding',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly label = input('');\n readonly ariaLabel = input('');\n readonly size = input<GogSize>('md');\n readonly indeterminate = input(false);\n readonly disabled = input(false);\n readonly checkIconTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Two-way bindable checked state: `[(checked)]=\"signal\"`. */\n readonly checked = model<boolean>(false);\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly controlSize = computed(() => GOG_CHECKABLE_CONTROL_SIZE_MAP[this.size()]);\n protected readonly boxSize = computed(() => this.controlSize().boxSize);\n protected readonly checkboxPadding = GOG_CHECKABLE_CONTROL_PADDING;\n protected readonly labelSize = computed(() => this.controlSize().labelSize);\n protected readonly iconSize = computed(() => this.controlSize().indicatorSize);\n\n private onCheckedChange: (val: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: boolean): void {\n this.checked.set(val ?? false);\n }\n\n registerOnChange(fn: (val: boolean) => void): void {\n this.onCheckedChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n onInputChange(event: Event): void {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n const next = input.checked;\n this.checked.set(next);\n this.onCheckedChange(next);\n this.onTouched();\n }\n\n onBlur(): void {\n if (this.isDisabled()) return;\n this.onTouched();\n }\n}\n","<label class=\"gog-checkbox gog-contained-layout\" [class.gog-checkbox--disabled]=\"isDisabled()\">\n <input\n class=\"gog-checkbox__input\"\n type=\"checkbox\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : null\"\n [attr.aria-label]=\"label() ? null : ariaLabel() || null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span\n class=\"gog-checkbox__box\"\n [class.gog-checkbox__box--checked]=\"checked()\"\n [class.gog-checkbox__box--indeterminate]=\"indeterminate()\"\n >\n @if (checked()) {\n <gog-icon [template]=\"checkIconTemplate()\" name=\"check\" />\n } @else if (indeterminate()) {\n <span class=\"gog-checkbox__dash\" aria-hidden=\"true\"></span>\n }\n </span>\n\n @if (label()) {\n <span class=\"gog-checkbox__label font-body\">{{ label() }}</span>\n }\n</label>\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const DIALOG_DATA = new InjectionToken<unknown>('DIALOG_DATA');\r\nexport interface DialogRef<TResult = unknown> {\r\n close(result?: TResult): void;\r\n}\r\n\r\nexport const DIALOG_REF = new InjectionToken<DialogRef<unknown>>('DIALOG_REF');\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { ButtonComponent } from '../../button/button.component';\nimport { DIALOG_DATA, DIALOG_REF } from '../dialog.tokens';\n\nexport interface ConfirmDialogData {\n title: string;\n description: string;\n confirmText: string;\n cancelText: string;\n}\n\n@Component({\n selector: 'gog-confirmation-dialog',\n imports: [ButtonComponent],\n templateUrl: './confirmation-dialog.component.html',\n styleUrl: './confirmation-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmationDialogComponent {\n private static count = 0;\n\n protected readonly instanceId = ++ConfirmationDialogComponent.count;\n protected readonly data = inject<ConfirmDialogData>(DIALOG_DATA);\n private readonly ref = inject(DIALOG_REF);\n\n protected confirm(): void {\n this.ref.close(true);\n }\n\n protected cancel(): void {\n this.ref.close(false);\n }\n}\n","<div\n class=\"confirm-dialog\"\n [attr.aria-labelledby]=\"'confirm-title-' + instanceId\"\n [attr.aria-describedby]=\"'confirm-desc-' + instanceId\"\n>\n <h3 [id]=\"'confirm-title-' + instanceId\" class=\"confirm-dialog__title heading-md\">\n {{ data.title }}\n </h3>\n <p [id]=\"'confirm-desc-' + instanceId\" class=\"confirm-dialog__description body-sm\">\n {{ data.description }}\n </p>\n <div class=\"confirm-dialog__actions\">\n <gog-button variant=\"ghost\" type=\"button\" (gogClick)=\"cancel()\">{{ data.cancelText }}</gog-button>\n <gog-button variant=\"primary\" type=\"button\" (gogClick)=\"confirm()\">{{ data.confirmText }}</gog-button>\n </div>\n</div>\n","import { DOCUMENT } from '@angular/common';\r\nimport { Injectable, TemplateRef, inject, signal, Type } from '@angular/core';\r\nimport { GogIconName } from '../../components/icon/icon.component';\r\n\r\nexport interface DialogConfig {\r\n title?: string;\r\n component: Type<unknown>;\r\n data?: unknown;\r\n modal?: boolean;\r\n closable?: boolean;\r\n draggable?: boolean;\r\n closeIconName?: GogIconName;\r\n closeIconTemplate?: TemplateRef<unknown> | null;\r\n width?: string;\r\n maxWidth?: string;\r\n /** ARIA role for the dialog panel. Use 'alertdialog' for confirmation prompts. Default: 'dialog' */\r\n role?: 'dialog' | 'alertdialog';\r\n /** z-index of the dialog backdrop. Dropdowns inside get zIndex+10. Default: 1000 */\r\n zIndex?: number;\r\n}\r\n\r\nexport interface DialogHandle<TResult = unknown> {\r\n close(result?: TResult): void;\r\n readonly afterClosed: Promise<TResult | undefined>;\r\n}\r\n\r\nexport interface OpenDialog {\r\n id: number;\r\n zIndex: number;\r\n offsetX: number;\r\n offsetY: number;\r\n config: DialogConfig;\r\n resolve: (result: unknown) => void;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n private readonly document = inject(DOCUMENT);\r\n readonly dialogs = signal<OpenDialog[]>([]);\r\n private nextId = 0;\r\n private nextZIndex = 1000;\r\n private modalDialogCount = 0;\r\n private bodyOverflowBeforeLock: string | null = null;\r\n private focusedBeforeOpen: HTMLElement | null = null;\r\n\r\n open<TResult = unknown>(config: DialogConfig): DialogHandle<TResult> {\r\n const id = ++this.nextId;\r\n const zIndex = config.zIndex ?? this.nextZIndex++;\r\n this.nextZIndex = Math.max(this.nextZIndex, zIndex + 1);\r\n\r\n let resolveAfterClosed!: (result: TResult | undefined) => void;\r\n\r\n const afterClosed = new Promise<TResult | undefined>((resolve) => {\r\n resolveAfterClosed = resolve;\r\n });\r\n\r\n const dialog: OpenDialog = {\r\n id,\r\n zIndex,\r\n offsetX: 0,\r\n offsetY: 0,\r\n config,\r\n resolve: (result) => resolveAfterClosed(result as TResult | undefined),\r\n };\r\n\r\n if (config.modal !== false && this.modalDialogCount === 0) {\r\n this.focusedBeforeOpen = this.document.activeElement instanceof HTMLElement ? this.document.activeElement : null;\r\n this.lockBodyScroll();\r\n }\r\n\r\n if (config.modal !== false) {\r\n this.modalDialogCount += 1;\r\n }\r\n\r\n this.dialogs.update((list) => [...list, dialog]);\r\n\r\n return {\r\n close: (result?: TResult) => this.close(dialog, result),\r\n afterClosed,\r\n };\r\n }\r\n\r\n close(dialog: OpenDialog, result?: unknown): void {\r\n if (!this.dialogs().some((entry) => entry.id === dialog.id)) return;\r\n\r\n dialog.resolve(result);\r\n this.dialogs.update((list) => list.filter((entry) => entry.id !== dialog.id));\r\n\r\n if (dialog.config.modal !== false) {\r\n this.modalDialogCount = Math.max(0, this.modalDialogCount - 1);\r\n }\r\n\r\n if (this.modalDialogCount === 0) {\r\n this.unlockBodyScroll();\r\n }\r\n\r\n if (this.dialogs().length === 0) {\r\n this.restoreFocus();\r\n }\r\n }\r\n\r\n closeAll(result?: unknown): void {\r\n const dialogs = this.dialogs();\r\n dialogs.forEach((dialog) => dialog.resolve(result));\r\n this.dialogs.set([]);\r\n this.modalDialogCount = 0;\r\n this.unlockBodyScroll();\r\n this.restoreFocus();\r\n }\r\n\r\n updatePosition(dialogId: number, offsetX: number, offsetY: number): void {\r\n this.dialogs.update((list) =>\r\n list.map((dialog) => (dialog.id === dialogId ? { ...dialog, offsetX, offsetY } : dialog)),\r\n );\r\n }\r\n\r\n private lockBodyScroll(): void {\r\n if (this.bodyOverflowBeforeLock !== null) return;\r\n this.bodyOverflowBeforeLock = this.document.body.style.overflow;\r\n this.document.body.style.overflow = 'hidden';\r\n }\r\n\r\n private unlockBodyScroll(): void {\r\n if (this.bodyOverflowBeforeLock === null) return;\r\n this.document.body.style.overflow = this.bodyOverflowBeforeLock;\r\n this.bodyOverflowBeforeLock = null;\r\n }\r\n\r\n private restoreFocus(): void {\r\n const element = this.focusedBeforeOpen;\r\n this.focusedBeforeOpen = null;\r\n if (!element || !this.document.contains(element)) return;\r\n element.focus({ preventScroll: true });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, effect, inject, Injector } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { DIALOG_DATA, DIALOG_REF } from './dialog.tokens';\nimport { DialogService, OpenDialog } from '../../services/dialog-service/dialog.service';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'gog-dialog',\n imports: [NgComponentOutlet, IconComponent],\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n protected readonly dialogService = inject(DialogService);\n private readonly parentInjector = inject(Injector);\n private readonly host = inject(ElementRef<HTMLElement>);\n\n private readonly injectorCache = new WeakMap<OpenDialog, Injector>();\n private readonly backdropPress = new Set<number>();\n private readonly focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable=\"true\"]',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',');\n\n constructor() {\n effect(() => {\n const dialogs = this.dialogService.dialogs();\n const openIds = new Set(dialogs.map((dialog) => dialog.id));\n for (const dialogId of this.backdropPress) {\n if (!openIds.has(dialogId)) {\n this.backdropPress.delete(dialogId);\n }\n }\n if (dialogs.length === 0) return;\n queueMicrotask(() => this.focusTopDialog());\n });\n }\n\n protected getInjector(dialog: OpenDialog): Injector {\n if (!this.injectorCache.has(dialog)) {\n this.injectorCache.set(\n dialog,\n Injector.create({\n parent: this.parentInjector,\n providers: [\n { provide: DIALOG_DATA, useValue: dialog.config.data },\n {\n provide: DIALOG_REF,\n useValue: {\n close: (result?: unknown) => this.dialogService.close(dialog, result),\n },\n },\n ],\n }),\n );\n }\n return this.injectorCache.get(dialog)!;\n }\n\n protected getTitleId(dialog: OpenDialog): string {\n return `gog-dialog-title-${dialog.id}`;\n }\n\n protected close(dialog: OpenDialog): void {\n this.backdropPress.delete(dialog.id);\n this.dialogService.close(dialog, undefined);\n }\n\n protected closeIfClosable(dialog: OpenDialog): void {\n if (dialog.config.closable !== false) this.close(dialog);\n }\n\n protected panelZ(dialog: OpenDialog): number {\n return dialog.zIndex;\n }\n\n protected onBackdropPointerDown(event: PointerEvent, dialog: OpenDialog): void {\n if (!dialog.config.closable) return;\n if (event.target === event.currentTarget) {\n this.backdropPress.add(dialog.id);\n }\n }\n\n protected onBackdropPointerUp(event: PointerEvent, dialog: OpenDialog): void {\n if (!dialog.config.closable) return;\n const shouldClose = this.backdropPress.has(dialog.id) && event.target === event.currentTarget;\n this.backdropPress.delete(dialog.id);\n if (shouldClose) {\n this.close(dialog);\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent, dialog: OpenDialog, panel: HTMLElement): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeIfClosable(dialog);\n return;\n }\n\n if (dialog.config.modal === false || event.key !== 'Tab') return;\n\n const focusables = this.getFocusableElements(panel);\n if (focusables.length === 0) {\n event.preventDefault();\n panel.focus({ preventScroll: true });\n return;\n }\n\n const currentIndex = focusables.indexOf(this.dialogDocument.activeElement as HTMLElement);\n const lastIndex = focusables.length - 1;\n const nextIndex = event.shiftKey\n ? currentIndex <= 0\n ? lastIndex\n : currentIndex - 1\n : currentIndex === -1 || currentIndex === lastIndex\n ? 0\n : currentIndex + 1;\n\n event.preventDefault();\n focusables[nextIndex].focus({ preventScroll: true });\n }\n\n protected startDrag(event: PointerEvent, dialog: OpenDialog): void {\n if (dialog.config.draggable === false) return;\n if (event.button !== 0) return;\n if ((event.target as HTMLElement | null)?.closest('button')) return;\n\n const startX = event.clientX;\n const startY = event.clientY;\n const initialX = dialog.offsetX;\n const initialY = dialog.offsetY;\n\n const move = (moveEvent: PointerEvent) => {\n this.dialogService.updatePosition(\n dialog.id,\n initialX + (moveEvent.clientX - startX),\n initialY + (moveEvent.clientY - startY),\n );\n };\n\n const stop = () => {\n this.dialogDocument.removeEventListener('pointermove', move);\n this.dialogDocument.removeEventListener('pointerup', stop);\n this.dialogDocument.removeEventListener('pointercancel', stop);\n };\n\n this.dialogDocument.addEventListener('pointermove', move);\n this.dialogDocument.addEventListener('pointerup', stop);\n this.dialogDocument.addEventListener('pointercancel', stop);\n event.preventDefault();\n }\n\n protected trackDialog(_: number, entry: OpenDialog): number {\n return entry.id;\n }\n\n protected isDraggable(dialog: OpenDialog): boolean {\n return dialog.config.draggable !== false && (dialog.config.title !== undefined || dialog.config.closable !== false);\n }\n\n private get dialogDocument(): Document {\n return this.host.nativeElement.ownerDocument;\n }\n\n private focusTopDialog(): void {\n const dialogs = this.dialogService.dialogs();\n const topDialog = dialogs[dialogs.length - 1];\n if (!topDialog) return;\n\n const panel = (this.host.nativeElement as HTMLElement).querySelector(`[data-dialog-id=\"${topDialog.id}\"]`) as HTMLElement | null;\n if (!panel) return;\n\n const focusables = this.getFocusableElements(panel);\n (focusables[0] ?? panel).focus({ preventScroll: true });\n }\n\n private getFocusableElements(panel: HTMLElement): HTMLElement[] {\n return Array.from(panel.querySelectorAll<HTMLElement>(this.focusableSelector)).filter(\n (element) => !element.hasAttribute('disabled') && element.tabIndex !== -1 && this.isVisible(element),\n );\n }\n\n private isVisible(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n return rect.width > 0 && rect.height > 0;\n }\n}\n","@for (dialog of dialogService.dialogs(); track trackDialog($index, dialog)) {\n <div\n class=\"gog-dialog__backdrop\"\n [class.gog-dialog__backdrop--modal]=\"dialog.config.modal !== false\"\n [style.z-index]=\"panelZ(dialog)\"\n (pointerdown)=\"onBackdropPointerDown($event, dialog)\"\n (pointerup)=\"onBackdropPointerUp($event, dialog)\"\n (pointercancel)=\"onBackdropPointerUp($event, dialog)\"\n >\n <div\n #panel\n class=\"gog-dialog__panel\"\n [attr.data-dialog-id]=\"dialog.id\"\n [style.--dropdown-z]=\"panelZ(dialog) + 10\"\n [style.--gog-dialog-offset-x]=\"dialog.offsetX + 'px'\"\n [style.--gog-dialog-offset-y]=\"dialog.offsetY + 'px'\"\n [style.width]=\"dialog.config.width ?? 'auto'\"\n [style.max-width]=\"dialog.config.maxWidth ?? '90vw'\"\n [attr.role]=\"dialog.config.role ?? 'dialog'\"\n [attr.aria-modal]=\"dialog.config.modal === false ? null : 'true'\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"dialog.config.title ? getTitleId(dialog) : null\"\n (keydown)=\"onPanelKeydown($event, dialog, panel)\"\n >\n @if (dialog.config.title || dialog.config.closable !== false) {\n <div\n class=\"gog-dialog__header\"\n [class.gog-dialog__header--draggable]=\"isDraggable(dialog)\"\n (pointerdown)=\"startDrag($event, dialog)\"\n >\n @if (dialog.config.title) {\n <h2 [id]=\"getTitleId(dialog)\" class=\"gog-dialog__title font-heading\">\n {{ dialog.config.title }}\n </h2>\n }\n @if (dialog.config.closable !== false) {\n <button type=\"button\" class=\"gog-dialog__close gog-inline-center\" aria-label=\"Close dialog\" (click)=\"close(dialog)\">\n <gog-icon\n [template]=\"dialog.config.closeIconTemplate ?? null\"\n [name]=\"dialog.config.closeIconName ?? 'close'\"\n />\n </button>\n }\n </div>\n }\n\n <div class=\"gog-dialog__body\">\n <ng-container *ngComponentOutlet=\"dialog.config.component; injector: getInjector(dialog)\" />\n </div>\n </div>\n </div>\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { Toast, ToastAction } from '../../services/toast-service/toast-service';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'gog-toast',\n imports: [ButtonComponent, IconComponent],\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.role]': 'ariaRole()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-atomic]': 'true',\n },\n})\nexport class ToastComponent implements OnDestroy {\n readonly toast = input.required<Toast>();\n /** Whether this toast is the active, front-of-queue toast — only the front toast counts down. */\n readonly isFront = input<boolean>(true);\n readonly dismissed = output<string>();\n\n readonly visible = signal(false);\n readonly isPaused = signal(false);\n private autoDismissTimer: ReturnType<typeof setTimeout> | null = null;\n private startedAt = 0;\n private remainingMs = 0;\n private isClosing = signal(false);\n\n private readonly progressEl = viewChild<ElementRef<HTMLElement>>('progress');\n\n protected readonly hasActions = computed(() => this.toast().actions.length > 0);\n\n protected readonly ariaRole = computed(() =>\n ['error', 'warning'].includes(this.toast().type) ? 'alert' : 'status',\n );\n\n protected readonly ariaLive = computed(() =>\n ['error', 'warning'].includes(this.toast().type) ? 'assertive' : 'polite',\n );\n\n constructor() {\n afterNextRender(() => this.visible.set(true));\n effect((onCleanup) => {\n const toast = this.toast();\n const isFront = this.isFront();\n this.isPaused.set(false);\n this.isClosing.set(false);\n this.clearAutoDismissTimer();\n this.remainingMs = toast.duration;\n\n // Toasts queued behind the front one keep a full, frozen progress bar and don't count\n // down — they only start ticking once they become the front toast.\n if (!toast.isSticky && isFront) {\n this.restartProgressAnimation();\n this.startAutoDismiss(this.remainingMs);\n }\n\n onCleanup(() => this.clearAutoDismissTimer());\n });\n }\n\n ngOnDestroy(): void {\n this.clearAutoDismissTimer();\n }\n\n close(): void {\n if (!this.visible() || this.isClosing()) return;\n this.clearAutoDismissTimer();\n this.isPaused.set(false);\n this.isClosing.set(true);\n this.visible.set(false);\n const id = this.toast().id;\n\n if (this.prefersReducedMotion()) {\n this.isClosing.set(false);\n queueMicrotask(() => this.dismissed.emit(id));\n }\n }\n\n protected pauseAutoDismiss(): void {\n const toast = this.toast();\n if (toast.isSticky || !this.isFront() || this.isPaused() || this.isClosing()) return;\n if (this.autoDismissTimer === null) return;\n\n const elapsed = Date.now() - this.startedAt;\n this.remainingMs = Math.max(0, this.remainingMs - elapsed);\n this.clearAutoDismissTimer();\n this.isPaused.set(true);\n }\n\n protected resumeAutoDismiss(): void {\n const toast = this.toast();\n if (toast.isSticky || !this.isFront() || !this.isPaused() || this.isClosing()) return;\n\n this.isPaused.set(false);\n if (this.remainingMs <= 0) {\n this.close();\n return;\n }\n\n this.startAutoDismiss(this.remainingMs);\n }\n\n protected onTransitionEnd(event: TransitionEvent): void {\n if (!this.isClosing() || event.target !== event.currentTarget) return;\n if (event.propertyName !== 'opacity' && event.propertyName !== 'transform') return;\n\n this.isClosing.set(false);\n this.dismissed.emit(this.toast().id);\n }\n\n protected runAction(action: ToastAction): void {\n action.onClick(this.toast());\n }\n\n private startAutoDismiss(duration: number): void {\n this.clearAutoDismissTimer();\n this.remainingMs = duration;\n this.startedAt = Date.now();\n this.autoDismissTimer = setTimeout(() => {\n this.autoDismissTimer = null;\n this.remainingMs = 0;\n this.close();\n }, duration);\n }\n\n /**\n * Forces the CSS progress-bar animation to restart from full width. Simply updating the\n * `--toast-duration` custom property doesn't retrigger a running `animation`, so the element\n * is briefly detached from the animation and reflowed before being reattached.\n */\n private restartProgressAnimation(): void {\n const el = this.progressEl()?.nativeElement;\n if (!el) return;\n\n el.style.animation = 'none';\n void el.offsetWidth;\n el.style.animation = '';\n }\n\n private clearAutoDismissTimer(): void {\n if (this.autoDismissTimer !== null) {\n clearTimeout(this.autoDismissTimer);\n this.autoDismissTimer = null;\n }\n }\n\n private prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n}\n","<div\n class=\"gog-toast\"\n [class.gog-toast--paused]=\"isPaused()\"\n [class.gog-toast--queued]=\"!isFront()\"\n [class.gog-toast--success]=\"toast().type === 'success'\"\n [class.gog-toast--error]=\"toast().type === 'error'\"\n [class.gog-toast--warning]=\"toast().type === 'warning'\"\n [class.gog-toast--info]=\"toast().type === 'info'\"\n [class.gog-toast--visible]=\"visible()\"\n [style.--toast-duration]=\"toast().duration + 'ms'\"\n (mouseenter)=\"pauseAutoDismiss()\"\n (mouseleave)=\"resumeAutoDismiss()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <div class=\"gog-toast__content\">\n <span class=\"gog-toast__icon\" aria-hidden=\"true\">\n <gog-icon [template]=\"toast().iconTemplate ?? null\" [name]=\"toast().iconName\" />\n </span>\n <div class=\"gog-toast__main\">\n <span class=\"gog-toast__message font-body\">{{ toast().message }}</span>\n @if (hasActions()) {\n <div class=\"gog-toast__actions\">\n @for (action of toast().actions; track action.label) {\n <gog-button\n class=\"gog-toast__action\"\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n (gogClick)=\"runAction(action)\"\n >\n @if (action.iconName || action.iconTemplate) {\n <gog-icon [template]=\"action.iconTemplate ?? null\" [name]=\"action.iconName ?? 'check'\" />\n }\n {{ action.label }}\n </gog-button>\n }\n </div>\n }\n </div>\n <gog-button\n class=\"gog-toast__close\"\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n aria-label=\"Close toast\"\n (gogClick)=\"close()\"\n >\n <gog-icon name=\"close\" />\n </gog-button>\n </div>\n @if (!toast().isSticky) {\n <span #progress class=\"gog-toast__progress\" aria-hidden=\"true\"></span>\n }\n</div>\n","import { Injectable, TemplateRef, signal } from '@angular/core';\r\nimport { GogIconName } from '../../components/icon/icon.component';\r\n\r\nexport type ToastType = 'success' | 'error' | 'warning' | 'info';\r\nexport type ToastPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\r\n\r\nexport interface Toast {\r\n id: string;\r\n message: string;\r\n type: ToastType;\r\n iconName: GogIconName;\r\n iconTemplate?: TemplateRef<unknown> | null;\r\n actions: ToastAction[];\r\n isSticky: boolean;\r\n duration: number;\r\n position: ToastPosition;\r\n dedupeKey: string;\r\n revision: number;\r\n}\r\n\r\nexport interface ToastAction {\r\n label: string;\r\n onClick: (toast: Toast) => void;\r\n iconName?: GogIconName;\r\n iconTemplate?: TemplateRef<unknown> | null;\r\n}\r\n\r\nexport interface ToastConfig {\r\n message: string;\r\n type?: ToastType;\r\n iconName?: GogIconName;\r\n iconTemplate?: TemplateRef<unknown> | null;\r\n actions?: ToastAction[];\r\n dedupeKey?: string;\r\n isSticky?: boolean;\r\n duration?: number;\r\n position?: ToastPosition;\r\n}\r\n\r\nconst DEFAULT_DURATION = 4000;\r\nconst DEFAULT_POSITION: ToastPosition = 'bottom-right';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n readonly toasts = signal<Toast[]>([]);\r\n\r\n private generateId(): string {\r\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\r\n return crypto.randomUUID();\r\n }\r\n return Date.now().toString(36) + Math.random().toString(36).slice(2);\r\n }\r\n\r\n show(config: ToastConfig): string {\r\n const type = config.type ?? 'info';\r\n const iconName = config.iconName ?? this.defaultIconName(type);\r\n const actions = config.actions ?? [];\r\n const dedupeKey =\r\n config.dedupeKey ??\r\n this.buildDedupeKey(\r\n config.message,\r\n type,\r\n iconName,\r\n config.position ?? DEFAULT_POSITION,\r\n actions,\r\n config.iconTemplate ?? null,\r\n );\r\n\r\n let createdId = this.generateId();\r\n\r\n this.toasts.update((list) => {\r\n let existingIndex = -1;\r\n if (dedupeKey) {\r\n for (let index = list.length - 1; index >= 0; index -= 1) {\r\n if (list[index].dedupeKey === dedupeKey) {\r\n existingIndex = index;\r\n break;\r\n }\r\n }\r\n }\r\n const nextToast: Toast = {\r\n id: existingIndex >= 0 ? list[existingIndex].id : createdId,\r\n message: config.message,\r\n type,\r\n iconName,\r\n iconTemplate: config.iconTemplate ?? null,\r\n actions,\r\n isSticky: config.isSticky ?? false,\r\n duration: config.duration ?? DEFAULT_DURATION,\r\n position: config.position ?? DEFAULT_POSITION,\r\n dedupeKey,\r\n revision: existingIndex >= 0 ? list[existingIndex].revision + 1 : 0,\r\n };\r\n\r\n if (existingIndex >= 0) {\r\n const next = [...list];\r\n next[existingIndex] = nextToast;\r\n createdId = nextToast.id;\r\n return next;\r\n }\r\n\r\n createdId = nextToast.id;\r\n return [...list, nextToast];\r\n });\r\n\r\n return createdId;\r\n }\r\n\r\n dismiss(id: string): void {\r\n this.toasts.update((list) => list.filter((t) => t.id !== id));\r\n }\r\n\r\n dismissAll(): void {\r\n this.toasts.set([]);\r\n }\r\n\r\n success(message: string, config?: Partial<ToastConfig>): string {\r\n return this.show({ ...config, message, type: 'success' });\r\n }\r\n\r\n error(message: string, config?: Partial<ToastConfig>): string {\r\n return this.show({ ...config, message, type: 'error' });\r\n }\r\n\r\n warning(message: string, config?: Partial<ToastConfig>): string {\r\n return this.show({ ...config, message, type: 'warning' });\r\n }\r\n\r\n info(message: string, config?: Partial<ToastConfig>): string {\r\n return this.show({ ...config, message, type: 'info' });\r\n }\r\n\r\n private defaultIconName(type: ToastType): GogIconName {\r\n switch (type) {\r\n case 'success':\r\n return 'success';\r\n case 'error':\r\n return 'error';\r\n case 'warning':\r\n return 'warning';\r\n default:\r\n return 'info';\r\n }\r\n }\r\n\r\n private buildDedupeKey(\r\n message: string,\r\n type: ToastType,\r\n iconName: GogIconName,\r\n position: ToastPosition,\r\n actions: ToastAction[],\r\n iconTemplate: TemplateRef<unknown> | null,\r\n ): string {\r\n // Actions carry closures that can't be compared by value, so only their\r\n // label/icon \"shape\" is used — this lets repeated calls with equivalent\r\n // actions (e.g. a fresh \"Undo\" callback each time) still dedupe correctly.\r\n const actionsSignature = actions.map((action) => `${action.label}:${action.iconName ?? ''}`).join(',');\r\n return [message, type, iconName, position, iconTemplate ? 'template' : 'default', actionsSignature].join('|');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport { ToastComponent } from '../toast.component';\r\nimport { ToastPosition, ToastService } from '../../../services/toast-service/toast-service';\r\n\r\nconst POSITIONS: ToastPosition[] = ['top-left', 'top-right', 'bottom-left', 'bottom-right'];\r\n\r\n@Component({\r\n selector: 'gog-toast-container',\r\n imports: [ToastComponent],\r\n templateUrl: './toast-container.component.html',\r\n styleUrl: './toast-container.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ToastContainerComponent {\r\n private readonly toastService = inject(ToastService);\r\n readonly maxVisiblePerPosition = input(5);\r\n\r\n readonly groups = computed(() =>\r\n POSITIONS.map((position) => ({\r\n position,\r\n // Keep the oldest toasts first: they're at the front of the queue (actively ticking),\r\n // while newer arrivals wait their turn at the back of the visible stack.\r\n toasts: this.toastService\r\n .toasts()\r\n .filter((toast) => toast.position === position)\r\n .slice(0, Math.max(0, this.maxVisiblePerPosition())),\r\n })).filter((group) => group.toasts.length > 0),\r\n );\r\n\r\n protected trackGroup(_: number, group: { position: ToastPosition }): ToastPosition {\r\n return group.position;\r\n }\r\n\r\n protected isLeft(position: ToastPosition): boolean {\r\n return position.includes('left');\r\n }\r\n\r\n protected trackToast(_: number, toast: { id: string }): string {\r\n return toast.id;\r\n }\r\n\r\n protected dismiss(id: string): void {\r\n this.toastService.dismiss(id);\r\n }\r\n}\r\n","@for (group of groups(); track trackGroup($index, group)) {\n <div class=\"gog-toast-container gog-toast-container--{{ group.position }}\">\n @for (toast of group.toasts; track trackToast($index, toast); let toastIndex = $index) {\n <gog-toast\n [toast]=\"toast\"\n [isFront]=\"toastIndex === 0\"\n [class.slide-left]=\"isLeft(group.position)\"\n [style.--toast-stack-index]=\"toastIndex\"\n (dismissed)=\"dismiss($event)\"\n />\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n TemplateRef,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { GogSize } from '../../shared/types';\nimport { IconComponent, type GogIconName } from '../icon/icon.component';\n\n@Component({\n selector: 'gog-inputfield',\n imports: [IconComponent],\n templateUrl: './inputfield.component.html',\n styleUrl: './inputfield.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputfieldComponent),\n multi: true,\n },\n ],\n})\nexport class InputfieldComponent implements ControlValueAccessor {\n readonly label = input('');\n readonly placeholder = input('');\n readonly type = input<'text' | 'password' | 'email'>('text');\n /** Defaults to 'current-password' for password fields, 'off' otherwise */\n readonly autocomplete = input('');\n readonly errorMessage = input('');\n readonly name = input('');\n readonly inputId = input('');\n readonly disabled = input(false);\n readonly size = input<GogSize>('md');\n /** Default icon name for the leading icon. */\n readonly iconStart = input<GogIconName | ''>('');\n /** Default icon name for the trailing icon. */\n readonly iconEnd = input<GogIconName | ''>('');\n /** Custom leading icon template. */\n readonly iconStartTemplate = input<TemplateRef<unknown> | null>(null);\n /** Custom trailing icon template. */\n readonly iconEndTemplate = input<TemplateRef<unknown> | null>(null);\n /** When provided, the start icon becomes a clickable button invoking this fn */\n readonly iconStartFn = input<(() => void) | null>(null);\n /** When provided, the end icon becomes a clickable button invoking this fn */\n readonly iconEndFn = input<(() => void) | null>(null);\n /** aria-label for the start icon button (required when iconStartFn is set) */\n readonly iconStartLabel = input('');\n /** aria-label for the end icon button (required when iconEndFn is set) */\n readonly iconEndLabel = input('');\n\n /** Two-way bindable value: `[(value)]=\"signal\"` or `[value]` / `(valueChange)`. */\n readonly value = model<string>('');\n\n private readonly cvaDisabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly effectiveAutocomplete = computed(\n () => this.autocomplete() || (this.type() === 'password' ? 'current-password' : 'off'),\n );\n protected readonly hasError = computed(() => !!this.errorMessage() && !this.value());\n protected readonly hasIconStart = computed(() => !!this.iconStartTemplate() || !!this.iconStart());\n protected readonly hasIconEnd = computed(() => !!this.iconEndTemplate() || !!this.iconEnd());\n protected readonly hasIconStartAction = computed(() => !!this.iconStartFn());\n protected readonly hasIconEndAction = computed(() => !!this.iconEndFn());\n\n private _onChange: (val: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(val: string): void {\n this.value.set(val ?? '');\n }\n\n registerOnChange(fn: (val: 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.cvaDisabled.set(isDisabled);\n }\n\n protected onIconStartClick(): void {\n this.iconStartFn()?.();\n }\n\n protected onIconEndClick(): void {\n this.iconEndFn()?.();\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value.set(input.value);\n this._onChange(input.value);\n }\n\n onBlur(): void {\n this._onTouched();\n }\n}\n","<div\n class=\"gog-input-wrapper gog-contained-layout\"\n [class.gog-input-wrapper--sm]=\"size() === 'sm'\"\n [class.gog-input-wrapper--lg]=\"size() === 'lg'\"\n [class.gog-input-wrapper--icon-start]=\"hasIconStart()\"\n [class.gog-input-wrapper--icon-end]=\"hasIconEnd()\"\n>\n @if (label()) {\n <label class=\"gog-input__label font-heading\" [attr.for]=\"inputId() || null\">{{\n label()\n }}</label>\n }\n <div class=\"gog-input__field-container\">\n @if (hasIconStart()) {\n @if (hasIconStartAction()) {\n <button\n type=\"button\"\n class=\"gog-input__icon gog-inline-center gog-input__icon--start gog-input__icon--action\"\n [attr.aria-label]=\"iconStartLabel() || null\"\n (click)=\"onIconStartClick()\"\n >\n <gog-icon [template]=\"iconStartTemplate()\" [name]=\"iconStart() || 'check'\" />\n </button>\n } @else {\n <span class=\"gog-input__icon gog-inline-center gog-input__icon--start\" aria-hidden=\"true\">\n <gog-icon [template]=\"iconStartTemplate()\" [name]=\"iconStart() || 'check'\" />\n </span>\n }\n }\n <input\n class=\"gog-input__field font-body\"\n [class.gog-input__field--error]=\"hasError()\"\n [attr.id]=\"inputId() || null\"\n [type]=\"type()\"\n [attr.name]=\"name() || null\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"isDisabled()\"\n [autocomplete]=\"effectiveAutocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-describedby]=\"hasError() && inputId() ? inputId() + '-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (hasIconEnd()) {\n @if (hasIconEndAction()) {\n <button\n type=\"button\"\n class=\"gog-input__icon gog-inline-center gog-input__icon--end gog-input__icon--action\"\n [attr.aria-label]=\"iconEndLabel() || null\"\n (click)=\"onIconEndClick()\"\n >\n <gog-icon [template]=\"iconEndTemplate()\" [name]=\"iconEnd() || 'check'\" />\n </button>\n } @else {\n <span class=\"gog-input__icon gog-inline-center gog-input__icon--end\" aria-hidden=\"true\">\n <gog-icon [template]=\"iconEndTemplate()\" [name]=\"iconEnd() || 'check'\" />\n </span>\n }\n }\n </div>\n @if (hasError() && errorMessage()) {\n <span\n class=\"gog-input__error font-body\"\n [attr.id]=\"inputId() ? inputId() + '-error' : null\"\n role=\"alert\"\n >{{ errorMessage() }}</span\n >\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { type GogIconName, IconComponent } from '../icon/icon.component';\nimport { GogSize, GogTagShape } from '../../shared/types';\n\n@Component({\n selector: 'gog-chip',\n imports: [IconComponent],\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ChipComponent {\n readonly size = input<GogSize>('md');\n readonly shape = input<GogTagShape>('rounded');\n readonly disabled = input(false);\n readonly clickable = input(true);\n readonly removable = input(false);\n readonly ariaLabel = input('');\n readonly removeAriaLabel = input('Remove chip');\n readonly avatarUrl = input<string | null>(null);\n readonly avatarAlt = input('');\n readonly iconName = input<GogIconName | null>(null);\n\n readonly gogClick = output<MouseEvent | KeyboardEvent>();\n readonly gogRemove = output<void>();\n\n protected readonly hostClasses = computed(() =>\n [\n 'gog-chip',\n `gog-chip--${this.size()}`,\n `gog-chip--${this.shape()}`,\n this.removable() ? 'gog-chip--removable' : null,\n this.disabled() ? 'gog-chip--disabled' : 'gog-chip--interactive',\n this.avatarUrl() ? 'gog-chip--has-avatar' : null,\n this.iconName() ? 'gog-chip--has-icon' : null,\n ]\n .filter((className): className is string => className !== null)\n .join(' '),\n );\n protected readonly isInteractive = computed(() => this.clickable() && !this.disabled());\n\n protected onChipClick(event: MouseEvent): void {\n if (this.disabled()) return;\n this.gogClick.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n\n event.preventDefault();\n this.gogClick.emit(event);\n }\n\n protected onRemoveClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled()) return;\n this.gogRemove.emit();\n }\n}\n","<div\n class=\"gog-chip__surface\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.role]=\"isInteractive() ? 'button' : null\"\n [attr.tabindex]=\"isInteractive() ? 0 : null\"\n [style.cursor]=\"isInteractive() ? 'pointer' : 'default'\"\n (click)=\"onChipClick($event)\"\n (keydown)=\"onKeydown($event)\"\n>\n @if (avatarUrl()) {\n <img class=\"gog-chip__avatar\" [src]=\"avatarUrl()\" [alt]=\"avatarAlt()\" />\n }\n\n @if (iconName()) {\n <gog-icon class=\"gog-chip__icon\" [ariaHidden]=\"true\" [name]=\"iconName() ?? 'check'\" />\n }\n\n <span class=\"gog-chip__content\">\n <ng-content></ng-content>\n </span>\n\n @if (removable()) {\n <button\n class=\"gog-chip__remove\"\n type=\"button\"\n [attr.aria-label]=\"removeAriaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"onRemoveClick($event)\"\n >\n <gog-icon name=\"close\" />\n </button>\n }\n</div>\n","import { TemplateRef, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { IconComponent, type GogIconName } from '../icon/icon.component';\nimport { GogSize, GogTagVariant } from '../../shared/types';\nimport { GogTagShape } from '../../shared/types';\n\n@Component({\n selector: 'gog-tag',\n imports: [IconComponent],\n templateUrl: './tag.component.html',\n styleUrl: './tag.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '\"gog-tag gog-tag--\" + variant() + \" gog-tag--\" + size() + \" gog-tag--\" + shape() + (hasIcon() ? \" gog-tag--has-icon\" : \"\")',\n },\n})\nexport class TagComponent {\n readonly variant = input<GogTagVariant>('info');\n readonly size = input<GogSize>('md');\n readonly shape = input<GogTagShape>('rounded');\n readonly iconName = input<GogIconName | null>(null);\n readonly iconTemplate = input<TemplateRef<unknown> | null>(null);\n\n protected readonly hasIcon = computed(() => this.iconTemplate() !== null || this.iconName() !== null);\n}\n","@if (hasIcon()) {\n <gog-icon\n class=\"gog-tag__icon\"\n [ariaHidden]=\"true\"\n [name]=\"iconName() ?? 'info'\"\n [template]=\"iconTemplate()\"\n />\n}\n\n<span class=\"gog-tag__content\">\n <ng-content></ng-content>\n</span>\n","export type GogDropdownDirection = 'auto' | 'up' | 'down';\r\n\r\nexport interface GogDropdownTriggerRect {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n width: number;\r\n}\r\n\r\nexport interface GogDropdownPlacement {\r\n direction: 'up' | 'down';\r\n top: number;\r\n left: number;\r\n width: number;\r\n maxHeight: number;\r\n}\r\n\r\nconst DEFAULT_GAP = 8;\r\nconst DEFAULT_VIEWPORT_PADDING = 8;\r\n\r\nexport function resolveDropdownDirection(\r\n direction: GogDropdownDirection,\r\n triggerRect: GogDropdownTriggerRect,\r\n panelHeight: number,\r\n viewportHeight: number,\r\n gap = DEFAULT_GAP,\r\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\r\n): 'up' | 'down' {\r\n if (direction !== 'auto') {\r\n return direction;\r\n }\r\n\r\n const spaceAbove = Math.max(0, triggerRect.top - gap - viewportPadding);\r\n const spaceBelow = Math.max(0, viewportHeight - triggerRect.bottom - gap - viewportPadding);\r\n\r\n if (spaceBelow >= panelHeight && spaceAbove < panelHeight) {\r\n return 'down';\r\n }\r\n\r\n if (spaceAbove >= panelHeight && spaceBelow < panelHeight) {\r\n return 'up';\r\n }\r\n\r\n return spaceBelow >= spaceAbove ? 'down' : 'up';\r\n}\r\n\r\nexport function resolveDropdownPlacement(\r\n direction: GogDropdownDirection,\r\n triggerRect: GogDropdownTriggerRect,\r\n panelHeight: number,\r\n viewportHeight: number,\r\n gap = DEFAULT_GAP,\r\n viewportPadding = DEFAULT_VIEWPORT_PADDING,\r\n): GogDropdownPlacement {\r\n const resolvedDirection = resolveDropdownDirection(direction, triggerRect, panelHeight, viewportHeight, gap, viewportPadding);\r\n\r\n if (resolvedDirection === 'up') {\r\n const maxHeight = Math.max(0, triggerRect.top - gap - viewportPadding);\r\n const actualHeight = Math.min(panelHeight, maxHeight || panelHeight);\r\n return {\r\n direction: resolvedDirection,\r\n top: Math.max(viewportPadding, triggerRect.top - gap - actualHeight),\r\n left: triggerRect.left,\r\n width: triggerRect.width,\r\n maxHeight,\r\n };\r\n }\r\n\r\n const maxHeight = Math.max(0, viewportHeight - triggerRect.bottom - gap - viewportPadding);\r\n return {\r\n direction: resolvedDirection,\r\n top: triggerRect.bottom + gap,\r\n left: triggerRect.left,\r\n width: triggerRect.width,\r\n maxHeight,\r\n };\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EnvironmentInjector,\r\n PLATFORM_ID,\r\n TemplateRef,\r\n computed,\r\n createComponent,\r\n inject,\r\n input,\r\n model,\r\n forwardRef,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { resolveDropdownPlacement, type GogDropdownDirection } from '../../shared/dropdown-position';\r\n\r\nexport interface GogSelectOption {\r\n id: string | number;\r\n name: string;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'gog-select-dropdown-portal',\r\n imports: [IconComponent],\r\n template: `\r\n <div\r\n [id]=\"listboxId\"\r\n class=\"gog-select__dropdown gog-select__dropdown--portal\"\r\n [style.top.px]=\"top\"\r\n [style.left.px]=\"left\"\r\n [style.width.px]=\"width\"\r\n [style.max-height.px]=\"maxHeight\"\r\n [style.z-index]=\"zIndex\"\r\n role=\"listbox\"\r\n >\r\n @for (option of options; track option.id) {\r\n <button\r\n type=\"button\"\r\n class=\"gog-select__option font-body\"\r\n role=\"option\"\r\n [attr.aria-selected]=\"isSelected(option.id)\"\r\n [attr.aria-disabled]=\"option.disabled ?? false\"\r\n [class.gog-select__option--selected]=\"isSelected(option.id)\"\r\n [class.gog-select__option--disabled]=\"option.disabled ?? false\"\r\n (click)=\"onSelect(option, $event)\"\r\n >\r\n <span class=\"gog-select__option-mark\" aria-hidden=\"true\">\r\n @if (isSelected(option.id)) {\r\n <gog-icon name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"gog-select__option-label\">{{ option.name }}</span>\r\n </button>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nclass GogSelectDropdownPortal {\r\n top = 0;\r\n left = 0;\r\n width = 200;\r\n maxHeight = 260;\r\n zIndex = 300;\r\n listboxId = '';\r\n direction: 'up' | 'down' = 'down';\r\n options: GogSelectOption[] = [];\r\n selectedValue: string | number | null = null;\r\n onSelect: (option: GogSelectOption, event: MouseEvent) => void = () => {};\r\n\r\n isSelected(id: string | number): boolean {\r\n return this.selectedValue === id;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'gog-select',\r\n imports: [IconComponent],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '(document:click)': 'onDocumentClick($event)',\r\n '(window:scroll)': 'onScrollOrResize()',\r\n '(window:resize)': 'onScrollOrResize()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements ControlValueAccessor {\r\n private static nextId = 0;\r\n\r\n private readonly generatedId = `gog-select-${++SelectComponent.nextId}`;\r\n private readonly generatedListboxId = `gog-select-listbox-${SelectComponent.nextId}`;\r\n\r\n readonly inputId = input('');\r\n readonly label = input('');\r\n readonly ariaLabel = input('');\r\n readonly placeholder = input('Select...');\r\n readonly options = input<GogSelectOption[]>([]);\r\n readonly errorMessage = input('');\r\n readonly dropdownDirection = input<GogDropdownDirection>('auto');\r\n readonly dropdownZIndex = input<number | null>(null);\r\n readonly appendToBody = input(false);\r\n readonly disabled = input(false);\r\n readonly chevronTemplate = input<TemplateRef<unknown> | null>(null);\r\n\r\n /** Two-way bindable selected value: `[(value)]=\"signal\"`. */\r\n readonly value = model<string | number | null>(null);\r\n readonly isOpen = signal(false);\r\n\r\n private readonly cvaDisabled = signal(false);\r\n protected readonly dropdownDirectionState = signal<'up' | 'down'>('down');\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly envInjector = inject(EnvironmentInjector);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\r\n\r\n protected readonly triggerId = computed(() => this.inputId() || this.generatedId);\r\n protected readonly listboxId = computed(() => this.inputId() ? `${this.inputId()}-listbox` : this.generatedListboxId);\r\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\r\n protected readonly selectedOption = computed(\r\n () => this.options().find((option) => String(option.id) === String(this.value())) ?? null,\r\n );\r\n protected readonly hasError = computed(() => !!this.errorMessage() && this.value() === null);\r\n protected readonly errorId = computed(() => (this.hasError() ? `${this.triggerId()}-error` : null));\r\n\r\n private portalHost: HTMLElement | null = null;\r\n private portalRef: ReturnType<typeof createComponent<GogSelectDropdownPortal>> | null = null;\r\n\r\n private onChange: (val: string | number | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n this.destroyRef.onDestroy(() => this.destroyPortal());\r\n }\r\n\r\n writeValue(val: string | number | null): void {\r\n this.value.set(val ?? null);\r\n }\r\n\r\n registerOnChange(fn: (val: string | number | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n if (isDisabled) {\r\n this.close();\r\n }\r\n }\r\n\r\n protected toggle(): void {\r\n if (this.isDisabled()) return;\r\n const next = !this.isOpen();\r\n this.isOpen.set(next);\r\n if (next) {\r\n this.openDropdown();\r\n } else {\r\n this.destroyPortal();\r\n }\r\n }\r\n\r\n protected close(): void {\r\n if (!this.isOpen()) return;\r\n this.isOpen.set(false);\r\n this.destroyPortal();\r\n }\r\n\r\n protected onDocumentClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as Node | null;\r\n const insideTrigger = target ? this.elRef.nativeElement.contains(target) : false;\r\n const insidePortal = target ? this.portalHost?.contains(target) ?? false : false;\r\n\r\n if (!insideTrigger && !insidePortal) {\r\n this.close();\r\n }\r\n }\r\n\r\n protected onScrollOrResize(): void {\r\n if (!this.isOpen()) return;\r\n if (this.appendToBody()) {\r\n this.updatePortalPosition();\r\n return;\r\n }\r\n this.updateInlineDirection();\r\n }\r\n\r\n protected selectOption(option: GogSelectOption, event: MouseEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (option.disabled) {\r\n return;\r\n }\r\n\r\n this.value.set(option.id);\r\n this.onChange(option.id);\r\n this.onTouched();\r\n this.close();\r\n }\r\n\r\n private openDropdown(): void {\r\n this.onTouched();\r\n if (this.appendToBody()) {\r\n this.openPortal();\r\n return;\r\n }\r\n this.updateInlineDirection();\r\n }\r\n\r\n private estimatePanelHeight(): number {\r\n return Math.min(Math.max(this.options().length, 1) * 40, 260);\r\n }\r\n\r\n private updateInlineDirection(): void {\r\n if (!this.isBrowser) return;\r\n\r\n const placement = resolveDropdownPlacement(\r\n this.dropdownDirection(),\r\n this.elRef.nativeElement.getBoundingClientRect(),\r\n this.estimatePanelHeight(),\r\n window.innerHeight,\r\n 2,\r\n 8,\r\n );\r\n\r\n this.dropdownDirectionState.set(placement.direction);\r\n }\r\n\r\n private openPortal(): void {\r\n if (!this.isBrowser) return;\r\n this.destroyPortal();\r\n\r\n this.portalHost = document.createElement('div');\r\n document.body.appendChild(this.portalHost);\r\n\r\n this.portalRef = createComponent(GogSelectDropdownPortal, {\r\n environmentInjector: this.envInjector,\r\n hostElement: this.portalHost,\r\n });\r\n\r\n const inst = this.portalRef.instance;\r\n inst.options = this.options();\r\n inst.selectedValue = this.value();\r\n inst.listboxId = this.listboxId();\r\n inst.zIndex = this.dropdownZIndex() ?? 300;\r\n inst.onSelect = (option, event) => this.selectOption(option, event);\r\n\r\n this.updatePortalPosition();\r\n this.appRef.attachView(this.portalRef.hostView);\r\n this.portalRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private updatePortalPosition(): void {\r\n if (!this.portalRef || !this.isBrowser) return;\r\n\r\n const placement = resolveDropdownPlacement(\r\n this.dropdownDirection(),\r\n this.elRef.nativeElement.getBoundingClientRect(),\r\n this.estimatePanelHeight(),\r\n window.innerHeight,\r\n 2,\r\n 8,\r\n );\r\n\r\n const inst = this.portalRef.instance;\r\n inst.direction = placement.direction;\r\n inst.top = placement.top;\r\n inst.left = placement.left;\r\n inst.width = placement.width;\r\n inst.maxHeight = placement.maxHeight;\r\n inst.zIndex = this.dropdownZIndex() ?? 300;\r\n this.portalRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private destroyPortal(): void {\r\n if (this.portalRef) {\r\n this.appRef.detachView(this.portalRef.hostView);\r\n this.portalRef.destroy();\r\n this.portalRef = null;\r\n }\r\n\r\n if (this.portalHost) {\r\n this.portalHost.remove();\r\n this.portalHost = null;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"gog-select gog-contained-layout\"\r\n [class.gog-select--disabled]=\"isDisabled()\"\r\n [class.gog-select--open]=\"isOpen()\"\r\n>\r\n @if (label()) {\r\n <label class=\"gog-select__label font-heading\" [attr.for]=\"triggerId()\">{{ label() }}</label>\r\n }\r\n\r\n <div class=\"gog-select__field\">\r\n <button\r\n type=\"button\"\r\n class=\"gog-select__control font-body\"\r\n [id]=\"triggerId()\"\r\n [disabled]=\"isDisabled()\"\r\n [attr.aria-label]=\"label() ? null : ariaLabel() || placeholder() || 'Select'\"\r\n [attr.aria-controls]=\"listboxId()\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-invalid]=\"hasError()\"\r\n [attr.aria-describedby]=\"errorId()\"\r\n (click)=\"toggle()\"\r\n (keydown.enter)=\"toggle(); $event.preventDefault()\"\r\n (keydown.space)=\"toggle(); $event.preventDefault()\"\r\n (keydown.escape)=\"close()\"\r\n >\r\n <span class=\"gog-select__value\" [class.gog-select__value--placeholder]=\"!selectedOption()\">\r\n {{ selectedOption()?.name || placeholder() }}\r\n </span>\r\n\r\n <span class=\"gog-select__chevron\" aria-hidden=\"true\">\r\n <gog-icon [template]=\"chevronTemplate()\" name=\"chevron-down\" />\r\n </span>\r\n </button>\r\n\r\n @if (isOpen() && !appendToBody()) {\r\n <div\r\n [id]=\"listboxId()\"\r\n class=\"gog-select__dropdown\"\r\n [class.gog-select__dropdown--up]=\"dropdownDirectionState() === 'up'\"\r\n [style.z-index]=\"dropdownZIndex() ?? null\"\r\n role=\"listbox\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @for (option of options(); track option.id) {\r\n <button\r\n type=\"button\"\r\n class=\"gog-select__option font-body\"\r\n role=\"option\"\r\n [attr.aria-selected]=\"selectedOption()?.id === option.id\"\r\n [attr.aria-disabled]=\"option.disabled ?? false\"\r\n [class.gog-select__option--selected]=\"selectedOption()?.id === option.id\"\r\n [class.gog-select__option--disabled]=\"option.disabled ?? false\"\r\n (click)=\"selectOption(option, $event)\"\r\n >\r\n <span class=\"gog-select__option-mark\" aria-hidden=\"true\">\r\n @if (selectedOption()?.id === option.id) {\r\n <gog-icon name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"gog-select__option-label\">{{ option.name }}</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (hasError()) {\r\n <span class=\"gog-select__error font-body\" [attr.id]=\"errorId()\" role=\"alert\">\r\n {{ errorMessage() }}\r\n </span>\r\n }\r\n</div>\r\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EnvironmentInjector,\n PLATFORM_ID,\n Signal,\n computed,\n inject,\n input,\n model,\n TemplateRef,\n signal,\n createComponent,\n} from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '../icon/icon.component';\nimport { resolveDropdownPlacement, type GogDropdownDirection } from '../../shared/dropdown-position';\n\nexport interface GogMultiselectOption {\n id: string | number;\n name: string;\n}\n\n@Component({\n selector: 'gog-multiselect-dropdown-portal',\n imports: [ButtonComponent],\n template: `\n <div\n [id]=\"listboxId\"\n class=\"gog-ms__dropdown gog-ms__dropdown--portal\"\n [style.top.px]=\"top\"\n [style.left.px]=\"left\"\n [style.width.px]=\"width\"\n [style.max-height.px]=\"maxHeight\"\n [style.z-index]=\"zIndex\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n @if (showControls) {\n <div class=\"gog-ms__controls\">\n <gog-button variant=\"ghost\" size=\"sm\" (click)=\"onSelectAll($event)\">Select all</gog-button>\n <gog-button variant=\"ghost\" size=\"sm\" (click)=\"onClearAll($event)\">Clear</gog-button>\n </div>\n }\n <div class=\"gog-ms__options\">\n @for (option of options; track option.id) {\n <button\n type=\"button\"\n class=\"gog-ms__option font-body\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option.id)\"\n [class.gog-ms__option--selected]=\"isSelected(option.id)\"\n (click)=\"onToggle(option, $event)\"\n >\n <span class=\"gog-ms__option-mark\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\">\n <rect\n x=\"2.5\"\n y=\"2.5\"\n width=\"11\"\n height=\"11\"\n rx=\"2\"\n [attr.fill]=\"isSelected(option.id) ? 'currentColor' : 'none'\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n @if (isSelected(option.id)) {\n <path\n d=\"M4 8L6.75 10.75L12 5.5\"\n stroke=\"var(--gog-ms-checkbox-checked-color)\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n }\n </svg>\n </span>\n {{ option.name }}\n </button>\n }\n </div>\n </div>\n `,\n styleUrl: './multiselect.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GogMultiselectDropdownPortal {\n top = 0;\n left = 0;\n width = 200;\n maxHeight = 260;\n zIndex = 9999;\n listboxId = '';\n direction: 'up' | 'down' = 'down';\n options: GogMultiselectOption[] = [];\n selectedIds: (string | number)[] = [];\n showControls = false;\n onToggle: (o: GogMultiselectOption, e: MouseEvent) => void = () => {};\n onSelectAll: (e: MouseEvent) => void = () => {};\n onClearAll: (e: MouseEvent) => void = () => {};\n\n isSelected(id: string | number): boolean {\n return this.selectedIds.includes(id);\n }\n}\n\n@Component({\n selector: 'gog-multiselect',\n imports: [ButtonComponent, IconComponent],\n templateUrl: './multiselect.component.html',\n styleUrl: './multiselect.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(window:scroll)': 'onScrollOrResize()',\n '(window:resize)': 'onScrollOrResize()',\n },\n})\nexport class MultiselectComponent implements ControlValueAccessor {\n private static nextId = 0;\n protected readonly instanceId = ++MultiselectComponent.nextId;\n readonly label = input('');\n readonly ariaLabel = input('');\n readonly placeholder = input('Select...');\n readonly options = input<GogMultiselectOption[]>([]);\n readonly errorMessage = input('');\n readonly showControls = input(false);\n readonly dropdownDirection = input<GogDropdownDirection>('auto');\n readonly dropdownZIndex = input<number | null>(null);\n readonly appendToBody = input(false);\n readonly disabled = input(false);\n readonly chevronTemplate = input<TemplateRef<unknown> | null>(null);\n readonly clearIconTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Two-way bindable selected ids: `[(value)]=\"signal\"`. */\n readonly value = model<(string | number)[]>([]);\n readonly isOpen = signal(false);\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly dropdownDirectionState = signal<'up' | 'down'>('down');\n\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly appRef = inject(ApplicationRef);\n private readonly envInjector = inject(EnvironmentInjector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n private readonly _touched = signal(false);\n private readonly formStatus: Signal<string> = this.ngControl?.statusChanges\n ? toSignal(this.ngControl.statusChanges, { initialValue: this.ngControl.status ?? 'VALID' })\n : signal('VALID');\n\n protected readonly hasError = computed(() => {\n if (this.ngControl) {\n return this._touched() && this.formStatus() === 'INVALID';\n }\n return !!this.errorMessage() && this.value().length === 0;\n });\n\n protected readonly visibleError = computed(() => (this.hasError() ? this.errorMessage() : ''));\n\n private portalHost: HTMLElement | null = null;\n private portalRef: ReturnType<typeof createComponent<GogMultiselectDropdownPortal>> | null = null;\n\n readonly selectedNames = computed(() =>\n this.value()\n .map((id) => this.options().find((o) => o.id === id)?.name)\n .filter(Boolean)\n .join(', '),\n );\n\n private _onChange: (val: (string | number)[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n this.destroyRef.onDestroy(() => this.destroyPortal());\n }\n\n onDocumentClick(e: MouseEvent): void {\n const inside =\n this.elRef.nativeElement.contains(e.target as Node) ||\n (this.portalHost?.contains(e.target as Node) ?? false);\n if (!inside) {\n this.isOpen.set(false);\n if (this.appendToBody()) this.destroyPortal();\n }\n }\n\n onScrollOrResize(): void {\n if (!this.isOpen()) return;\n if (this.appendToBody()) {\n this.updatePortalPosition();\n return;\n }\n this.updateInlineDirection();\n }\n\n writeValue(val: (string | number)[] | null): void {\n this.value.set(val ?? []);\n }\n registerOnChange(fn: (val: (string | number)[]) => void): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n protected isSelected(id: string | number): boolean {\n return this.value().includes(id);\n }\n\n protected toggle(): void {\n if (this.isDisabled()) return;\n const next = !this.isOpen();\n this.isOpen.set(next);\n if (this.appendToBody()) {\n if (next) this.openPortal();\n else this.destroyPortal();\n } else if (next) {\n this.updateInlineDirection();\n }\n }\n\n protected toggleOption(option: GogMultiselectOption, e: MouseEvent): void {\n e.stopPropagation();\n this.applyToggle(option.id);\n if (this.appendToBody() && this.portalRef) {\n this.portalRef.instance.selectedIds = [...this.value()];\n this.portalRef.changeDetectorRef.detectChanges();\n }\n }\n\n private applyToggle(id: string | number): void {\n const current = this.value();\n const next = this.isSelected(id) ? current.filter((x) => x !== id) : [...current, id];\n this.value.set(next);\n this._onChange(next);\n this._onTouched();\n this._touched.set(true);\n }\n\n protected selectAll(e: MouseEvent): void {\n e.stopPropagation();\n const all = this.options().map((o) => o.id);\n this.value.set(all);\n this._onChange(all);\n this._onTouched();\n this._touched.set(true);\n if (this.appendToBody() && this.portalRef) {\n this.portalRef.instance.selectedIds = [...all];\n this.portalRef.changeDetectorRef.detectChanges();\n }\n }\n\n protected clearAll(e: MouseEvent): void {\n e.stopPropagation();\n this.value.set([]);\n this._onChange([]);\n this._onTouched();\n this._touched.set(true);\n if (this.appendToBody() && this.portalRef) {\n this.portalRef.instance.selectedIds = [];\n this.portalRef.changeDetectorRef.detectChanges();\n }\n }\n\n protected clearTrigger(e: Event): void {\n e.stopPropagation();\n this.value.set([]);\n this._onChange([]);\n this._onTouched();\n this._touched.set(true);\n }\n\n protected close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n if (this.appendToBody()) this.destroyPortal();\n }\n\n private estimatePanelHeight(): number {\n const controlsHeight = this.showControls() ? 38 : 0;\n const optionsCount = Math.max(this.options().length, 1);\n const optionsPadding = this.getOptionPadding() * 2;\n const optionGap = this.getOptionGap();\n const optionsHeight = optionsCount * 40 + Math.max(optionsCount - 1, 0) * optionGap + optionsPadding;\n return Math.min(optionsHeight + controlsHeight, 260);\n }\n\n private getOptionGap(): number {\n if (!this.isBrowser) {\n return 4;\n }\n\n const gap = getComputedStyle(this.elRef.nativeElement).getPropertyValue('--gog-ms-option-gap').trim();\n const parsedGap = Number.parseFloat(gap);\n return Number.isFinite(parsedGap) ? parsedGap : 4;\n }\n\n private getOptionPadding(): number {\n if (!this.isBrowser) {\n return 4;\n }\n\n const padding = getComputedStyle(this.elRef.nativeElement)\n .getPropertyValue('--gog-ms-options-padding')\n .trim();\n const parsedPadding = Number.parseFloat(padding);\n return Number.isFinite(parsedPadding) ? parsedPadding : 4;\n }\n\n private updateInlineDirection(): void {\n if (!this.isBrowser) return;\n\n const placement = resolveDropdownPlacement(\n this.dropdownDirection(),\n this.elRef.nativeElement.getBoundingClientRect(),\n this.estimatePanelHeight(),\n window.innerHeight,\n 2,\n 8,\n );\n\n this.dropdownDirectionState.set(placement.direction);\n }\n\n private openPortal(): void {\n if (!this.isBrowser) return;\n this.destroyPortal();\n\n this.portalHost = document.createElement('div');\n document.body.appendChild(this.portalHost);\n\n this.portalRef = createComponent(GogMultiselectDropdownPortal, {\n environmentInjector: this.envInjector,\n hostElement: this.portalHost,\n });\n\n const inst = this.portalRef.instance;\n inst.options = this.options();\n inst.selectedIds = [...this.value()];\n inst.showControls = this.showControls();\n inst.listboxId = `gog-ms-listbox-${this.instanceId}`;\n inst.zIndex = this.dropdownZIndex() ?? 9999;\n inst.direction = this.dropdownDirectionState();\n inst.maxHeight = this.estimatePanelHeight();\n inst.onToggle = (o, e) => this.toggleOption(o, e);\n inst.onSelectAll = (e) => this.selectAll(e);\n inst.onClearAll = (e) => this.clearAll(e);\n\n this.updatePortalPosition();\n this.appRef.attachView(this.portalRef.hostView);\n this.portalRef.changeDetectorRef.detectChanges();\n }\n\n private updatePortalPosition(): void {\n if (!this.portalRef || !this.isBrowser) return;\n\n const placement = resolveDropdownPlacement(\n this.dropdownDirection(),\n this.elRef.nativeElement.getBoundingClientRect(),\n this.estimatePanelHeight(),\n window.innerHeight,\n 2,\n 8,\n );\n\n this.portalRef.instance.direction = placement.direction;\n this.portalRef.instance.top = placement.top;\n this.portalRef.instance.left = placement.left;\n this.portalRef.instance.width = placement.width;\n this.portalRef.instance.maxHeight = placement.maxHeight;\n this.dropdownDirectionState.set(placement.direction);\n this.portalRef.changeDetectorRef.detectChanges();\n }\n\n private destroyPortal(): void {\n if (this.portalRef) {\n this.appRef.detachView(this.portalRef.hostView);\n this.portalRef.destroy();\n this.portalRef = null;\n }\n if (this.portalHost) {\n this.portalHost.remove();\n this.portalHost = null;\n }\n }\n}\n","<div class=\"gog-ms-wrapper gog-contained-layout\">\n @if (label()) {\n <label class=\"gog-ms__label font-heading\">{{ label() }}</label>\n }\n\n <div\n class=\"gog-ms\"\n role=\"combobox\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"'gog-ms-listbox-' + instanceId\"\n [attr.aria-disabled]=\"isDisabled()\"\n [attr.aria-label]=\"label() ? null : ariaLabel() || placeholder() || 'Select'\"\n [class.gog-ms--open]=\"isOpen()\"\n [class.gog-ms--disabled]=\"isDisabled()\"\n [class.gog-ms--error]=\"hasError()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle(); $event.preventDefault()\"\n (keydown.escape)=\"close()\"\n >\n <span class=\"gog-ms__value font-body\" [class.gog-ms__value--placeholder]=\"!selectedNames()\">\n {{ selectedNames() || placeholder() }}\n </span>\n\n <span class=\"gog-ms__actions\">\n @if (selectedNames()) {\n <button\n type=\"button\"\n type=\"button\"\n class=\"gog-ms__clear gog-inline-center\"\n (click)=\"clearTrigger($event)\"\n aria-label=\"Clear selection\"\n >\n <gog-icon [template]=\"clearIconTemplate()\" name=\"close\" />\n </button>\n }\n <span class=\"gog-ms__arrow\" [class.gog-ms__arrow--up]=\"isOpen()\" aria-hidden=\"true\">\n <gog-icon [template]=\"chevronTemplate()\" [name]=\"isOpen() ? 'chevron-up' : 'chevron-down'\" />\n </span>\n </span>\n </div>\n\n @if (isOpen()) {\n <div\n [id]=\"'gog-ms-listbox-' + instanceId\"\n class=\"gog-ms__dropdown\"\n [class.gog-ms__dropdown--up]=\"dropdownDirectionState() === 'up'\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [style.z-index]=\"dropdownZIndex() ?? null\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (showControls()) {\n <div class=\"gog-ms__controls\">\n <gog-button variant=\"ghost\" size=\"sm\" (click)=\"selectAll($event)\">Select all</gog-button>\n <gog-button variant=\"ghost\" size=\"sm\" (click)=\"clearAll($event)\">Clear</gog-button>\n </div>\n }\n <div class=\"gog-ms__options\">\n @for (option of options(); track option.id) {\n <button\n type=\"button\"\n class=\"gog-ms__option font-body\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option.id)\"\n [class.gog-ms__option--selected]=\"isSelected(option.id)\"\n (click)=\"toggleOption(option, $event)\"\n >\n <span class=\"gog-ms__option-mark\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" focusable=\"false\" aria-hidden=\"true\">\n <rect\n x=\"2.5\"\n y=\"2.5\"\n width=\"11\"\n height=\"11\"\n rx=\"2\"\n [attr.fill]=\"isSelected(option.id) ? 'currentColor' : 'none'\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n @if (isSelected(option.id)) {\n <path\n d=\"M4 8L6.75 10.75L12 5.5\"\n stroke=\"var(--gog-ms-checkbox-checked-color)\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n }\n </svg>\n </span>\n {{ option.name }}\n </button>\n }\n </div>\n </div>\n }\n\n @if (visibleError()) {\n <span class=\"gog-ms__error font-body\" role=\"alert\">{{ visibleError() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'gog-slider',\n imports: [],\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n ],\n host: {\n '[style.--thumb-pos]': 'thumbPos()',\n '[style.--fill-scale]': 'fillScale()',\n },\n})\nexport class SliderComponent implements ControlValueAccessor {\n private static nextId = 0;\n protected readonly inputId = `gog-slider-${++SliderComponent.nextId}`;\n\n readonly label = input('');\n readonly min = input(0);\n readonly max = input(100);\n readonly step = input(1);\n readonly showValue = input(true);\n readonly showThumb = input(true);\n readonly errorMessage = input('');\n readonly ariaLabel = input('');\n readonly disabled = input(false);\n\n /** Two-way bindable value: `[(value)]=\"signal\"`. */\n readonly value = model<number>(0);\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly clampedValue = computed(() => {\n const value = this.value();\n return Math.min(this.max(), Math.max(this.min(), value));\n });\n\n protected readonly fillPercent = computed(() => {\n const range = this.max() - this.min();\n if (range === 0) return 0;\n return ((this.clampedValue() - this.min()) / range) * 100;\n });\n\n protected readonly thumbPos = computed(() => `${this.fillPercent()}%`);\n protected readonly fillScale = computed(() => this.fillPercent() / 100);\n protected readonly errorId = computed(() => (this.errorMessage() ? `${this.inputId}-error` : null));\n\n private onChange: (val: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: number): void {\n const next = val ?? this.min();\n this.value.set(Math.min(this.max(), Math.max(this.min(), next)));\n }\n\n registerOnChange(fn: (val: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const next = Number(input.value);\n const value = Math.min(this.max(), Math.max(this.min(), next));\n\n this.value.set(value);\n this.onChange(value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div\n class=\"gog-slider gog-contained-layout\"\n [class.gog-slider--disabled]=\"isDisabled()\"\n [class.gog-slider--thumb-hidden]=\"!showThumb()\"\n>\n <div class=\"gog-slider__header\">\n @if (label()) {\n <label [attr.for]=\"inputId\" class=\"gog-slider__label font-heading\">{{ label() }}</label>\n }\n\n @if (showValue()) {\n <span class=\"gog-slider__value font-mono\">{{ clampedValue() }}</span>\n }\n </div>\n\n <div class=\"gog-slider__track-container\">\n <div class=\"gog-slider__track\">\n <div class=\"gog-slider__fill\"></div>\n </div>\n\n @if (showThumb()) {\n <div class=\"gog-slider__thumb\" aria-hidden=\"true\"></div>\n }\n\n <input\n [id]=\"inputId\"\n class=\"gog-slider__input\"\n type=\"range\"\n [attr.aria-label]=\"label() ? null : ariaLabel() || 'Slider'\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-invalid]=\"!!errorMessage()\"\n [attr.aria-describedby]=\"errorId()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"clampedValue()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n <div class=\"gog-slider__range-labels font-mono\">\n <span>{{ min() }}</span>\n <span>{{ max() }}</span>\n </div>\n\n @if (errorMessage()) {\n <span class=\"gog-slider__error font-body\" [attr.id]=\"errorId()\" role=\"alert\">\n {{ errorMessage() }}\n </span>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { GogSize } from '../../../shared/types';\r\nimport { SpinnerComponent } from '../spinner.component';\r\n\r\n@Component({\r\n selector: 'gog-spinner-overlay',\r\n imports: [SpinnerComponent],\r\n templateUrl: './spinner-overlay.component.html',\r\n styleUrl: './spinner-overlay.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'gog-spinner-overlay-host',\r\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n },\r\n})\r\nexport class SpinnerOverlayComponent {\r\n readonly loading = input(false);\r\n readonly size = input<GogSize>('md');\r\n readonly ariaLabel = input('Loading');\r\n}\r\n","<div class=\"gog-spinner-overlay\">\r\n <div class=\"gog-spinner-overlay__content\">\r\n <ng-content />\r\n </div>\r\n\r\n @if (loading()) {\r\n <div class=\"gog-spinner-overlay__scrim\">\r\n <gog-spinner [size]=\"size()\" [ariaLabel]=\"ariaLabel()\" />\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'column',\r\n})\r\nexport class Column<T = unknown> {\r\n readonly field = input.required<keyof T & string>();\r\n readonly header = input<string>('');\r\n readonly sortable = input<boolean>(false);\r\n /** Fixed width, e.g. \"120px\" or \"20%\" */\r\n readonly width = input<string>('');\r\n /** Min width, e.g. \"80px\" */\r\n readonly minWidth = input<string>('');\r\n /** Max width, e.g. \"300px\" */\r\n readonly maxWidth = input<string>('');\r\n}\r\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\r\n\r\nexport interface GogTableBodyContext<T> {\r\n $implicit: T;\r\n index: number;\r\n}\r\n\r\nexport interface GogTableHeaderContext {\r\n $implicit: never;\r\n}\r\n\r\n/**\r\n * Marks a <ng-template> inside <gog-table> with a field name and optional type.\r\n *\r\n * Usage:\r\n * <ng-template template=\"status\" type=\"body\" let-row>...</ng-template>\r\n * <ng-template template=\"status\" type=\"header\">...</ng-template>\r\n */\r\n@Directive({\r\n selector: '[template]',\r\n})\r\nexport class TemplateDirective {\r\n readonly template = input.required<string>();\r\n readonly type = input<'body' | 'header'>('body');\r\n\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: TemplateDirective,\r\n ctx: unknown,\r\n ): ctx is GogTableBodyContext<T> | GogTableHeaderContext {\r\n return true;\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '../button/button.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { SpinnerComponent } from '../spinner/spinner.component';\n\nimport { GogSize } from '../../shared/types';\nimport { Column } from './column';\nimport { TemplateDirective } from './template.directive';\n\nexport type SortDirection = 'asc' | 'desc' | null;\n\ninterface SortState {\n field: string;\n direction: SortDirection;\n}\n\n@Component({\n selector: 'gog-table',\n imports: [SpinnerComponent, ButtonComponent, NgTemplateOutlet, IconComponent],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'gog-table-host',\n '[style.display]': '\"block\"',\n '[style.width]': '\"100%\"',\n },\n})\nexport class TableComponent<T extends object> {\n readonly value = input<T[]>([]);\n /** 0 = no pagination */\n readonly pageSize = input<number>(0);\n readonly showRowNumbers = input<boolean>(true);\n readonly showTotal = input<boolean>(false);\n readonly emptyPlaceholder = input<string>('-');\n /** Alignment of pagination controls */\n readonly paginatorPosition = input<'left' | 'center' | 'right'>('center');\n /** Alignment of total count label (only when showTotal=true) */\n readonly totalPosition = input<'left' | 'right' | 'opposite'>('opposite');\n /** Show loading spinner instead of rows */\n readonly loading = input<boolean>(false);\n /** Show vertical borders between columns */\n readonly showColumnBorders = input<boolean>(false);\n /** Stick header row to the top of the viewport while scrolling */\n readonly stickyHeader = input<boolean>(false);\n /** Row density: lg (default) / md (compact) / sm (dense) */\n readonly size = input<GogSize>('lg');\n\n readonly columns = contentChildren(Column);\n readonly templates = contentChildren(TemplateDirective);\n\n readonly currentPage = signal(1);\n readonly sortState = signal<SortState>({ field: '', direction: null });\n\n constructor() {\n effect(() => {\n this.value();\n this.pageSize();\n this.currentPage();\n const total = this.totalPages();\n if (this.currentPage() > total) {\n this.currentPage.set(total);\n }\n });\n }\n\n readonly sortedData = computed(() => {\n const { field, direction } = this.sortState();\n const rows = [...this.value()];\n if (!field || !direction) return rows;\n return rows.sort((a, b) => {\n const av = (a as Record<string, unknown>)[field];\n const bv = (b as Record<string, unknown>)[field];\n if (av == null && bv == null) return 0;\n if (av == null) return 1;\n if (bv == null) return -1;\n const cmp = av < bv ? -1 : av > bv ? 1 : 0;\n return direction === 'asc' ? cmp : -cmp;\n });\n });\n\n readonly totalPages = computed(() => {\n const size = this.pageSize();\n if (!size) return 1;\n return Math.max(1, Math.ceil(this.sortedData().length / size));\n });\n\n readonly visibleRows = computed(() => {\n const size = this.pageSize();\n if (!size) return this.sortedData();\n const page = this.currentPage();\n const start = (page - 1) * size;\n return this.sortedData().slice(start, start + size);\n });\n\n readonly pageNumbers = computed(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n const delta = 2;\n const range: (number | '...')[] = [];\n for (let i = 1; i <= total; i++) {\n if (i === 1 || i === total || (i >= current - delta && i <= current + delta)) {\n range.push(i);\n } else if (range[range.length - 1] !== '...') {\n range.push('...');\n }\n }\n return range;\n });\n\n readonly hasPagination = computed(\n () => !this.loading() && this.pageSize() > 0 && this.totalPages() > 1,\n );\n\n readonly emptyColspan = computed(() => this.columns().length + (this.showRowNumbers() ? 1 : 0));\n\n getBodyTemplate(field: string): TemplateRef<unknown> | null {\n return this.bodyTemplateMap().get(field) ?? null;\n }\n\n getHeaderTemplate(field: string): TemplateRef<unknown> | null {\n return this.headerTemplateMap().get(field) ?? null;\n }\n\n toggleSort(col: Column<T>): void {\n if (!col.sortable()) return;\n const cur = this.sortState();\n const field = col.field();\n if (cur.field !== field) {\n this.sortState.set({ field, direction: 'asc' });\n } else if (cur.direction === 'asc') {\n this.sortState.set({ field, direction: 'desc' });\n } else {\n this.sortState.set({ field: '', direction: null });\n }\n this.currentPage.set(1);\n }\n\n getSortDirection(field: string): SortDirection {\n const s = this.sortState();\n return s.field === field ? s.direction : null;\n }\n\n getAriaSort(field: string): 'ascending' | 'descending' | null {\n const direction = this.getSortDirection(field);\n if (direction === 'asc') return 'ascending';\n if (direction === 'desc') return 'descending';\n return null;\n }\n\n goTo(page: number): void {\n if (page < 1 || page > this.totalPages()) return;\n this.currentPage.set(page);\n }\n\n prev(): void {\n this.goTo(this.currentPage() - 1);\n }\n next(): void {\n this.goTo(this.currentPage() + 1);\n }\n\n handleSortClick(col: Column<T>): void {\n if (!this.loading()) this.toggleSort(col);\n }\n\n isNumber(val: number | '...'): val is number {\n return typeof val === 'number';\n }\n\n getCellValue(row: T, field: string): unknown {\n return (row as Record<string, unknown>)[field];\n }\n\n formatCellValue(row: T, field: string): string {\n const value = this.getCellValue(row, field);\n return value == null ? this.emptyPlaceholder() : String(value);\n }\n\n globalRowIndex(localIndex: number): number {\n const size = this.pageSize();\n if (!size) return localIndex + 1;\n return (this.currentPage() - 1) * size + localIndex + 1;\n }\n\n /** CSS grid-area for the total label: left slot or right slot */\n readonly totalGridArea = computed(() => {\n const totalPos = this.totalPosition();\n const paginatorPos = this.paginatorPosition();\n if (totalPos === 'opposite') return paginatorPos === 'right' ? 'left' : 'right';\n return totalPos;\n });\n\n /** CSS grid-area for the pagination block */\n readonly paginatorGridArea = computed(() => this.paginatorPosition());\n\n private readonly bodyTemplateMap = computed(() => {\n const map = new Map<string, TemplateRef<unknown>>();\n for (const t of this.templates()) {\n if (t.type() === 'body') map.set(t.template(), t.templateRef);\n }\n return map;\n });\n\n private readonly headerTemplateMap = computed(() => {\n const map = new Map<string, TemplateRef<unknown>>();\n for (const t of this.templates()) {\n if (t.type() === 'header') map.set(t.template(), t.templateRef);\n }\n return map;\n });\n}\n","<div class=\"gog-table-wrapper gog-contained-layout\">\n <div class=\"gog-table-scroll\">\n <table\n class=\"gog-table font-body\"\n [class.gog-table--col-borders]=\"showColumnBorders()\"\n [class.gog-table--loading]=\"loading()\"\n [class.gog-table--md]=\"size() === 'md'\"\n [class.gog-table--sticky-header]=\"stickyHeader()\"\n [class.gog-table--sm]=\"size() === 'sm'\"\n >\n <colgroup>\n @if (showRowNumbers()) {\n <col class=\"gog-table__col--num\" />\n }\n @for (col of columns(); track col.field()) {\n <col\n [style.width]=\"col.width() || null\"\n [style.min-width]=\"col.minWidth() || null\"\n [style.max-width]=\"col.maxWidth() || null\"\n />\n }\n </colgroup>\n <thead>\n <tr>\n @if (showRowNumbers()) {\n <th class=\"gog-table__th gog-table__th--num font-heading\" scope=\"col\">#</th>\n }\n @for (col of columns(); track col.field()) {\n <th\n class=\"gog-table__th font-heading\"\n scope=\"col\"\n [class.gog-table__th--sortable]=\"col.sortable() && !loading()\"\n [class.gog-table__th--sorted]=\"getSortDirection(col.field())\"\n [attr.aria-sort]=\"getAriaSort(col.field())\"\n [attr.tabindex]=\"col.sortable() && !loading() ? 0 : null\"\n (click)=\"handleSortClick(col)\"\n (keydown.enter)=\"handleSortClick(col)\"\n (keydown.space)=\"handleSortClick(col); $event.preventDefault()\"\n >\n @if (getHeaderTemplate(col.field()); as headerTpl) {\n <ng-container *ngTemplateOutlet=\"headerTpl\" />\n } @else {\n <span class=\"gog-table__th-inner\">\n {{ col.header() || col.field() }}\n @if (col.sortable() && !loading()) {\n <span class=\"gog-table__sort-icon\" aria-hidden=\"true\">\n @if (getSortDirection(col.field()) === 'asc') {\n <gog-icon name=\"sort-up\" />\n } @else if (getSortDirection(col.field()) === 'desc') {\n <gog-icon name=\"sort-down\" />\n } @else {\n <gog-icon name=\"sort\" />\n }\n </span>\n }\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading()) {\n <tr>\n <td class=\"gog-table__loading-cell\" [attr.colspan]=\"emptyColspan()\">\n <gog-spinner size=\"md\" />\n </td>\n </tr>\n } @else if (visibleRows().length === 0) {\n <tr>\n <td class=\"gog-table__empty\" [attr.colspan]=\"emptyColspan()\">—</td>\n </tr>\n } @else {\n @for (row of visibleRows(); track $index; let i = $index) {\n <tr class=\"gog-table__row\">\n @if (showRowNumbers()) {\n <td class=\"gog-table__td gog-table__td--num\">{{ globalRowIndex(i) }}</td>\n }\n @for (col of columns(); track col.field()) {\n <td class=\"gog-table__td\">\n @if (getBodyTemplate(col.field()); as bodyTpl) {\n <ng-container\n *ngTemplateOutlet=\"bodyTpl; context: { $implicit: row, index: i }\"\n />\n } @else {\n {{ formatCellValue(row, col.field()) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (hasPagination() || showTotal()) {\n <div class=\"gog-table__footer\">\n @if (showTotal()) {\n <span class=\"gog-table__total font-body\" [style.grid-area]=\"totalGridArea()\">\n Total: {{ value().length }}\n </span>\n }\n\n @if (hasPagination()) {\n <nav\n class=\"gog-table__pagination\"\n [style.grid-area]=\"paginatorGridArea()\"\n aria-label=\"Table pagination\"\n >\n <gog-button variant=\"ghost\" size=\"sm\" [disabled]=\"currentPage() === 1\" (gogClick)=\"prev()\"\n >‹</gog-button\n >\n @for (page of pageNumbers(); track $index) {\n @if (isNumber(page)) {\n <gog-button\n size=\"sm\"\n [variant]=\"page === currentPage() ? 'primary' : 'ghost'\"\n (gogClick)=\"goTo(page)\"\n >{{ page }}</gog-button\n >\n } @else {\n <span class=\"gog-table__pagination-ellipsis\">…</span>\n }\n }\n <gog-button\n variant=\"ghost\"\n size=\"sm\"\n [disabled]=\"currentPage() === totalPages()\"\n (gogClick)=\"next()\"\n >›</gog-button\n >\n </nav>\n }\n </div>\n }\n</div>\n","import { DOCUMENT } from '@angular/common';\r\nimport { Injectable, inject, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ThemeService {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly root = this.document.documentElement;\r\n readonly theme = signal(this.readTheme());\r\n\r\n constructor() {\r\n this.applyTheme(this.theme());\r\n }\r\n\r\n setTheme(theme: string): void {\r\n this.theme.set(theme);\r\n this.applyTheme(theme);\r\n }\r\n\r\n toggleTheme(): void {\r\n this.setTheme(this.theme() === 'dark' ? 'light' : 'dark');\r\n }\r\n\r\n private readTheme(): string {\r\n return this.root.getAttribute('data-theme') ?? 'light';\r\n }\r\n\r\n private applyTheme(theme: string): void {\r\n this.root.setAttribute('data-theme', theme);\r\n }\r\n}\r\n","/*\n * Public API Surface of ui\n */\n\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/accordion/accordion.component';\nexport * from './lib/components/checkbox/checkbox.component';\nexport * from './lib/components/dialog/confirmation-dialog/confirmation-dialog.component';\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/dialog/dialog.tokens';\nexport * from './lib/components/icon/icon.component';\nexport * from './lib/components/toast/toast.component';\nexport * from './lib/components/toast/toast-container/toast-container.component';\nexport * from './lib/components/inputfield/inputfield.component';\nexport * from './lib/components/chip/chip.component';\nexport * from './lib/components/tag/tag.component';\nexport * from './lib/components/select/select.component';\nexport * from './lib/components/multiselect/multiselect.component';\nexport * from './lib/components/slider/slider.component';\nexport * from './lib/components/spinner/spinner-overlay/spinner-overlay.component';\nexport * from './lib/components/table/column';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/template.directive';\nexport * from './lib/components/spinner/spinner.component';\nexport * from './lib/services/dialog-service/dialog.service';\nexport * from './lib/services/toast-service/toast-service';\nexport * from './lib/services/theme-service/theme.service';\nexport * from './lib/shared/types';\nexport type { GogDropdownDirection } from './lib/shared/dropdown-position';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@guildofgleks/ui",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^21.2.0",
|
|
6
|
+
"@angular/core": "^21.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/guildofgleks-ui.mjs",
|
|
13
|
+
"typings": "types/guildofgleks-ui.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/guildofgleks-ui.d.ts",
|
|
20
|
+
"default": "./fesm2022/guildofgleks-ui.mjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"type": "module"
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700;900&display=swap');
|
|
2
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap');
|
|
3
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap');
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--font-heading: 'Cinzel', serif;
|
|
7
|
+
--font-body: 'Inter', sans-serif;
|
|
8
|
+
--font-mono: 'JetBrains Mono', monospace;
|
|
9
|
+
|
|
10
|
+
--text-xs: 0.75rem;
|
|
11
|
+
--text-sm: 0.875rem;
|
|
12
|
+
--text-md: 1rem;
|
|
13
|
+
--text-lg: 1.125rem;
|
|
14
|
+
--text-xl: 1.5rem;
|
|
15
|
+
--text-2xl: 2rem;
|
|
16
|
+
--text-3xl: 3rem;
|
|
17
|
+
}
|