@tedi-design-system/angular 6.1.0 → 6.2.0-rc.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.
@@ -1 +1 @@
1
- {"version":3,"file":"tedi-design-system-angular-tedi.mjs","sources":["../../tedi/components/base/icon/icon.component.ts","../../tedi/components/base/icon/icon.component.html","../../tedi/components/base/text/text.component.ts","../../tedi/components/base/text/text.component.html","../../tedi/components/buttons/button/base-button.directive.ts","../../tedi/components/buttons/button/button.component.ts","../../tedi/services/breakpoint/breakpoint.service.ts","../../tedi/services/translation/translations.ts","../../tedi/tokens/translation.token.ts","../../tedi/utils/cookies.util.ts","../../tedi/services/translation/translation.service.ts","../../tedi/tokens/theme.token.ts","../../tedi/services/theme/theme.service.ts","../../tedi/services/translation/translation.pipe.ts","../../tedi/components/buttons/closing-button/closing-button.component.ts","../../tedi/components/buttons/closing-button/closing-button.component.html","../../tedi/components/notifications/alert/alert.component.ts","../../tedi/components/notifications/alert/alert.component.html","../../tedi/components/notifications/toast/toast.component.ts","../../tedi/components/notifications/toast/toast.component.html","../../tedi/components/notifications/toast/toast-container.component.ts","../../tedi/services/toast/toast-announcer.service.ts","../../tedi/services/toast/toast.service.ts","../../tedi/components/buttons/info-button/info-button.component.ts","../../tedi/helpers/generate-uuid.ts","../../tedi/components/buttons/collapse/collapse.component.ts","../../tedi/components/buttons/collapse/collapse.component.html","../../tedi/components/content/list/list.component.ts","../../tedi/components/content/list/list.component.html","../../tedi/components/form/checkbox/checkbox.component.ts","../../tedi/components/helpers/separator/separator.component.ts","../../tedi/components/overlay/popover/popover-trigger/popover-trigger.directive.ts","../../tedi/utils/elements.util.ts","../../tedi/components/overlay/popover/popover-content/popover-content.component.ts","../../tedi/components/overlay/popover/popover-content/popover-content.component.html","../../tedi/components/overlay/popover/popover.component.ts","../../tedi/components/overlay/popover/popover.component.html","../../tedi/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.ts","../../tedi/components/overlay/dropdown/dropdown-content/dropdown-content.component.ts","../../tedi/components/overlay/dropdown/dropdown-content/dropdown-content.component.html","../../tedi/components/overlay/dropdown/dropdown.component.ts","../../tedi/components/overlay/dropdown/dropdown.component.html","../../tedi/components/form/date-picker/date-picker-header/date-picker-header.component.ts","../../tedi/components/form/date-picker/date-picker-header/date-picker-header.component.html","../../tedi/components/form/date-picker/date-picker-calendar-grid/date-picker-calendar-grid.component.ts","../../tedi/components/form/date-picker/date-picker-calendar-grid/date-picker-calendar-grid.component.html","../../tedi/components/form/date-picker/date-picker-month-grid/date-picker-month-grid.component.ts","../../tedi/components/form/date-picker/date-picker-month-grid/date-picker-month-grid.component.html","../../tedi/components/form/date-picker/date-picker-year-grid/date-picker-year-grid.component.ts","../../tedi/components/form/date-picker/date-picker-year-grid/date-picker-year-grid.component.html","../../tedi/utils/date.util.ts","../../tedi/components/form/date-picker/date-picker.component.ts","../../tedi/components/form/date-picker/date-picker.component.html","../../tedi/components/form/feedback-text/feedback-text.component.ts","../../tedi/components/form/feedback-text/feedback-text.component.html","../../tedi/components/form/label/label.component.ts","../../tedi/components/form/label/label.component.html","../../tedi/components/form/number-field/number-field.component.ts","../../tedi/components/form/number-field/number-field.component.html","../../tedi/components/form/toggle/toggle.component.ts","../../tedi/components/form/toggle/toggle.component.html","../../tedi/components/content/text-group/text-group-label.component.ts","../../tedi/components/content/text-group/text-group.component.ts","../../tedi/components/content/text-group/text-group.component.html","../../tedi/components/content/text-group/text-group-value.component.ts","../../tedi/components/content/carousel/carousel-slide.directive.ts","../../tedi/components/content/carousel/carousel-content/carousel-content.component.ts","../../tedi/components/content/carousel/carousel-content/carousel-content.component.html","../../tedi/components/content/carousel/carousel.component.ts","../../tedi/components/content/carousel/carousel.component.html","../../tedi/components/content/carousel/carousel-footer/carousel-footer.component.ts","../../tedi/components/content/carousel/carousel-header/carousel-header.component.ts","../../tedi/components/content/carousel/carousel-indicators/carousel-indicators.component.ts","../../tedi/components/content/carousel/carousel-indicators/carousel-indicators.component.html","../../tedi/components/content/carousel/carousel-navigation/carousel-navigation.component.ts","../../tedi/components/content/carousel/carousel-navigation/carousel-navigation.component.html","../../tedi/components/helpers/grid/col/col.component.ts","../../tedi/components/helpers/grid/col/col.component.html","../../tedi/components/helpers/grid/row/row.component.ts","../../tedi/components/helpers/grid/row/row.component.html","../../tedi/components/helpers/timeline/timeline.component.ts","../../tedi/components/helpers/timeline/timeline-item/timeline-item.component.ts","../../tedi/components/helpers/timeline/timeline-item/timeline-item.component.html","../../tedi/components/helpers/timeline/timeline-description/timeline-description.component.ts","../../tedi/components/helpers/timeline/timeline-title/timeline-title.component.ts","../../tedi/components/layout/footer/footer.component.ts","../../tedi/components/layout/footer/footer.component.html","../../tedi/components/layout/footer/footer-body/footer-body.component.ts","../../tedi/components/layout/footer/footer-section/footer-section.component.ts","../../tedi/components/layout/footer/footer-section/footer-section.component.html","../../tedi/components/layout/footer/footer-side/footer-side.component.ts","../../tedi/components/navigation/link/link.component.ts","../../tedi/components/navigation/link/link.component.html","../../tedi/components/layout/footer/footer-bottom/footer-bottom.component.ts","../../tedi/components/layout/footer/footer-bottom/footer-bottom.component.html","../../tedi/components/layout/header/header.component.ts","../../tedi/components/layout/header/header.component.html","../../tedi/components/layout/header/header-actions/header-actions.component.ts","../../tedi/components/layout/header/header-content/header-content.component.ts","../../tedi/components/layout/header/header-language/header-language.component.ts","../../tedi/components/layout/header/header-language/header-language.component.html","../../tedi/components/layout/header/header-login/header-login.component.ts","../../tedi/components/layout/header/header-login/header-login.component.html","../../tedi/components/layout/header/header-logout/header-logout.component.ts","../../tedi/components/layout/header/header-logout/header-logout.component.html","../../tedi/directives/show-at/show-at.directive.ts","../../tedi/directives/hide-at/hide-at.directive.ts","../../tedi/components/layout/header/header-profile/header-profile.component.ts","../../tedi/components/layout/header/header-profile/header-profile.component.html","../../tedi/components/layout/header/header-role/header-role.component.ts","../../tedi/components/layout/header/header-role/header-role.component.html","../../tedi/services/sidenav/sidenav.service.ts","../../tedi/components/layout/sidenav/sidenav.component.ts","../../tedi/components/layout/sidenav/sidenav.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.html","../../tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.ts","../../tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.html","../../tedi/components/overlay/tooltip/tooltip-trigger/tooltip-trigger.component.ts","../../tedi/components/overlay/tooltip/tooltip-content/tooltip-content.component.ts","../../tedi/components/overlay/tooltip/tooltip.component.ts","../../tedi/components/overlay/tooltip/tooltip.component.html","../../tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.ts","../../tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.html","../../tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.ts","../../tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.ts","../../tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.html","../../tedi/components/loader/spinner/spinner.component.ts","../../tedi/components/loader/spinner/spinner.component.html","../../tedi/components/overlay/modal/modal.component.ts","../../tedi/components/overlay/modal/modal.component.html","../../tedi/components/overlay/modal/modal-content/modal-content.component.ts","../../tedi/components/overlay/modal/modal-content/modal-content.component.html","../../tedi/components/overlay/modal/modal-footer/modal-footer.component.ts","../../tedi/components/overlay/modal/modal-header/modal-header.component.ts","../../tedi/components/overlay/modal/modal-header/modal-header.component.html","../../tedi/directives/vertical-spacing/vertical-spacing-item.directive.ts","../../tedi/directives/vertical-spacing/vertical-spacing.directive.ts","../../tedi/providers/tedi.provider.ts","../../tedi/tedi-design-system-angular-tedi.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nconst ICON_WITH_BACKGROUND = [16, 24];\n\nexport type IconSize = 8 | 12 | 16 | 18 | 24 | 36 | 48 | \"inherit\";\nexport type IconVariant = \"filled\" | \"outlined\";\nexport type IconType = \"outlined\" | \"sharp\" | \"rounded\";\nexport type IconColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"brand\"\n | \"brand-dark\"\n | \"success\"\n | \"warning\"\n | \"warning-dark\"\n | \"danger\"\n | \"white\";\nexport type IconBackgroundColor =\n | \"primary\"\n | \"secondary\"\n | \"brand-primary\"\n | \"brand-secondary\";\n\n@Component({\n selector: \"tedi-icon\",\n standalone: true,\n templateUrl: \"./icon.component.html\",\n styleUrl: \"./icon.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"img\",\n \"[attr.aria-label]\": \"label()\",\n \"[attr.aria-hidden]\": \"!label()\"\n }\n})\nexport class IconComponent {\n /**\n * Name of the Material Icon\n * https://fonts.google.com/icons\n */\n name = input.required<string>();\n /**\n * Size of the icon in pixels.\n * @default 24\n */\n size = input<IconSize>(24);\n /**\n * Color of the icon.\n * @default primary\n */\n color = input<IconColor>(\"primary\");\n /**\n * Background color for the icon (adds a circular background).\n */\n background = input<IconBackgroundColor>();\n /**\n * Whether the icon should be filled or outlined.\n * @default outlined\n */\n variant = input<IconVariant>(\"outlined\");\n /**\n * Type of Material Symbols icon style.\n * It is recommended to only use one type throughout your app.\n * @default outlined\n */\n type = input<IconType>(\"outlined\");\n /**\n * Accessible label for screen readers.\n * If omitted then the icon is hidden for screen-readers.\n */\n label = input<string>();\n\n classes = computed(() => {\n let size = this.size();\n\n if (this.background()) {\n if (size === \"inherit\") {\n size = 24;\n } else {\n size = ICON_WITH_BACKGROUND.includes(size) ? size : 24;\n }\n }\n\n const classes: string[] = [\n \"notranslate\",\n \"material-symbols\",\n `material-symbols--${this.type()}`,\n \"tedi-icon\",\n `tedi-icon--color-${this.color()}`,\n `tedi-icon--size-${size}`,\n ];\n\n if (this.background()) {\n classes.push(\"tedi-icon--bg\", `tedi-icon--bg-${this.background()}`);\n }\n\n if (this.variant() === \"filled\") {\n classes.push(\"tedi-icon--filled\");\n }\n\n return classes.join(\" \");\n });\n}\n","{{ name() }}","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from \"@angular/core\";\n\nexport type TextModifiers =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"normal\"\n | \"small\"\n | \"bold\"\n | \"thin\"\n | \"italic\"\n | \"center\"\n | \"left\"\n | \"right\"\n | \"nowrap\"\n | \"break-all\"\n | \"break-word\"\n | \"break-spaces\"\n | \"uppercase\"\n | \"lowercase\"\n | \"capitalize\"\n | \"capitalize-first\"\n | \"inline-block\"\n | \"inline\"\n | \"line-normal\"\n | \"line-condensed\"\n | \"subtitle\";\n\nexport type TextColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"white\"\n | \"disabled\"\n | \"brand\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\"\n | \"neutral\";\n\n@Component({\n selector: \"[tedi-text]\",\n standalone: true,\n templateUrl: \"./text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\"\n },\n})\nexport class TextComponent {\n /**\n * Single or multiple modifiers to change the text behavior\n */\n modifiers = input<TextModifiers[] | TextModifiers>();\n /**\n * Color of the text\n * Use 'success', 'important' or 'warning' with caution, usually they should not be in application UI\n * @default primary\n */\n color = input<TextColor>(\"primary\");\n\n private isHeadingModifier(modifier: string) {\n return /^h[1-6]$/.test(modifier);\n }\n\n classes = computed(() => {\n const classList = [`tedi-text--${this.color()}`];\n\n const modifiersValue = this.modifiers();\n const modifierClasses = Array.isArray(modifiersValue)\n ? modifiersValue\n : modifiersValue\n ? [modifiersValue]\n : [];\n \n\n modifierClasses.forEach((modifier) => {\n if (this.isHeadingModifier(modifier)) {\n classList.push(`tedi-text--${modifier}`);\n } else {\n classList.push(`text-${modifier}`);\n }\n });\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n Directive,\n AfterContentChecked,\n signal,\n inject,\n ElementRef,\n computed,\n} from \"@angular/core\";\n\n@Directive({\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class BaseButtonDirective implements AfterContentChecked {\n /**\n * CSS class name affix the directive should provide\n */\n classNamePrefix = signal(\"tedi-button\");\n\n private host = inject(ElementRef);\n iconOnly = signal(false);\n iconFirst = signal(false);\n iconLast = signal(false);\n\n ngAfterContentChecked(): void {\n const hostElement = this.host.nativeElement as HTMLElement;\n const nodes = Array.from(hostElement.childNodes).filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE ||\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim())\n );\n const nodeCount = nodes.length;\n const iconIndexes = nodes\n .map((node, index) => ({ node, index }))\n .filter(\n (x) =>\n x.node.nodeType === Node.ELEMENT_NODE &&\n x.node.nodeName === \"TEDI-ICON\"\n )\n .map((x) => x.index);\n\n const iconCount = iconIndexes.length;\n this.iconOnly.set(nodeCount === 1 && iconCount === 1);\n this.iconFirst.set(iconIndexes.includes(0));\n this.iconLast.set(iconIndexes.includes(nodes.length - 1));\n }\n\n classes = computed(() => {\n const classList = [this.classNamePrefix()];\n\n if (this.iconOnly()) {\n classList.push(`${this.classNamePrefix()}--icon-only`);\n }\n\n if (!this.iconFirst()) {\n classList.push(`${this.classNamePrefix()}--pl`);\n }\n\n if (!this.iconLast()) {\n classList.push(`${this.classNamePrefix()}--pr`);\n }\n\n return classList.join(\" \");\n });\n}\n","import { Component, computed, input, ViewEncapsulation } from \"@angular/core\";\nimport { BaseButtonDirective } from \"./base-button.directive\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"success\"\n | \"danger\"\n | \"danger-neutral\"\n | \"primary-inverted\"\n | \"secondary-inverted\"\n | \"neutral-inverted\";\n\nexport type ButtonSize = \"default\" | \"small\";\n\n@Component({\n selector: \"[tedi-button]\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./button.component.scss\",\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: BaseButtonDirective,\n },\n ],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ButtonComponent {\n /**\n * Specifies the color theme of the button. The color should meet accessibility standards for color contrast.\n * @default primary\n */\n variant = input<ButtonVariant>(\"primary\");\n /**\n * Defines the size of the button.\n * @default default\n */\n size = input<ButtonSize>(\"default\");\n\n classes = computed(() => {\n const classList = [\n \"tedi-button\",\n `tedi-button--${this.variant()}`,\n `tedi-button--${this.size()}`,\n ];\n return classList.join(\" \");\n });\n}\n","import {\n computed,\n Injectable,\n InputSignal,\n Signal,\n signal,\n} from \"@angular/core\";\nimport { BreakpointObserver } from \"@angular/cdk/layout\";\n\nexport const BREAKPOINTS = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400,\n} as const;\n\nconst breakpointsOrder: Breakpoint[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\"];\n\nexport type Breakpoint = keyof typeof BREAKPOINTS;\n\nexport type BreakpointInputs<TInputs> = {\n [K in keyof TInputs]: InputSignal<TInputs[K]>;\n} & Partial<Record<Breakpoint, InputSignal<TInputs | undefined>>>;\n\nexport type BreakpointInputsWithoutSignals<TInputs> = TInputs &\n Partial<Record<Breakpoint, TInputs>>;\n\nexport type BreakpointObject<T> = { xs: T } & Partial<\n Record<Exclude<Breakpoint, \"xs\">, T>\n>;\nexport type BreakpointInput<T> = T | BreakpointObject<T>;\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class BreakpointService {\n private readonly _currentBreakpoint = signal<Breakpoint | undefined>(\n undefined,\n );\n constructor(private breakpointObserver: BreakpointObserver) {\n this.breakpointObserver\n .observe(\n Object.values(BREAKPOINTS).map((value) => `(min-width: ${value}px)`),\n )\n .subscribe((state) => {\n if (state.breakpoints[`(min-width: ${BREAKPOINTS.xxl}px)`]) {\n this._currentBreakpoint.set(\"xxl\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.xl}px)`]) {\n this._currentBreakpoint.set(\"xl\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.lg}px)`]) {\n this._currentBreakpoint.set(\"lg\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.md}px)`]) {\n this._currentBreakpoint.set(\"md\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.sm}px)`]) {\n this._currentBreakpoint.set(\"sm\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.xs}px)`]) {\n this._currentBreakpoint.set(\"xs\");\n } else {\n this._currentBreakpoint.set(undefined);\n }\n });\n }\n\n currentBreakpoint() {\n return computed(() => {\n return this._currentBreakpoint();\n });\n }\n\n getBreakpointInputs<TInputs>(\n inputs: BreakpointInputsWithoutSignals<TInputs>,\n ): TInputs {\n let resolvedInputs: Partial<TInputs> = {};\n\n Object.keys(inputs).forEach((key) => {\n if (!breakpointsOrder.includes(key as Breakpoint)) {\n const baseInput = inputs[key as keyof TInputs];\n resolvedInputs[key as keyof TInputs] = baseInput;\n }\n });\n\n const currentBreakpoint = this._currentBreakpoint();\n\n if (!currentBreakpoint) {\n return resolvedInputs as TInputs;\n }\n\n for (let i = 0; i <= breakpointsOrder.indexOf(currentBreakpoint); i++) {\n const breakpoint = breakpointsOrder[i];\n const breakpointInputs = inputs[breakpoint];\n\n if (breakpointInputs) {\n resolvedInputs = { ...resolvedInputs, ...breakpointInputs };\n }\n }\n\n return resolvedInputs as TInputs;\n }\n\n isBelowBreakpoint(breakpoint: Breakpoint | Signal<Breakpoint>) {\n return computed(() => {\n const current = this._currentBreakpoint();\n\n if (!current) return false;\n\n const bp = typeof breakpoint === \"function\" ? breakpoint() : breakpoint;\n\n const currentIndex = breakpointsOrder.indexOf(current);\n const targetIndex = breakpointsOrder.indexOf(bp);\n\n return currentIndex < targetIndex;\n });\n }\n\n isAboveBreakpoint(breakpoint: Breakpoint | Signal<Breakpoint>) {\n return computed(() => {\n const current = this._currentBreakpoint();\n\n if (!current) return false;\n\n const bp = typeof breakpoint === \"function\" ? breakpoint() : breakpoint;\n\n const currentIndex = breakpointsOrder.indexOf(current);\n const targetIndex = breakpointsOrder.indexOf(bp);\n\n return currentIndex >= targetIndex;\n });\n }\n}\n\nexport function breakpointInput<T>(\n input: BreakpointInput<T>,\n): BreakpointObject<T> {\n if (typeof input === \"object\" && input !== null && \"xs\" in input) {\n return input;\n }\n\n return { xs: input };\n}\n","import { Language } from \"./translation.service\";\n\nexport const translationsMap = {\n close: {\n description: \"Used for closing\",\n components: [\n \"CloseButton\",\n \"Collapse\",\n \"Notification\",\n \"FileUpload\",\n \"Dropdown\",\n \"Tooltip\",\n \"HeaderRole\",\n ],\n et: \"Sulge\",\n en: \"Close\",\n ru: \"Закрыть\",\n },\n open: {\n description: \"Used for opening\",\n components: [\"Collapse\", \"TableOfContents\"],\n et: \"Ava\",\n en: \"Open\",\n ru: \"Открыть\",\n },\n remove: {\n description: \"Used for removing\",\n components: [\"FileUpload\", \"Tag\"],\n et: \"Eemalda\",\n en: \"Remove\",\n ru: \"Удалить\",\n },\n cancel: {\n description: \"For canceling an action\",\n components: [\"TableFilter\"],\n et: \"Tühista\",\n en: \"Cancel\",\n ru: \"Отмена\",\n },\n clear: {\n description: \"For clearing a value\",\n components: [\"TableFilter\", \"TextField\"],\n et: \"Tühjenda\",\n en: \"Clear\",\n ru: \"Очистить\",\n },\n search: {\n description: \"For searching\",\n components: [\"TableFilter\"],\n et: \"Otsi\",\n en: \"Search\",\n ru: \"Поиск\",\n },\n required: {\n description: \"Required field\",\n components: [\"TableFilter\"],\n et: \"Kohustuslik väli\",\n en: \"Required field\",\n ru: \"Обязательное поле\",\n },\n breadcrumbs: {\n description: \"Breadcrumbs navigation label\",\n components: [\"Breadcrumbs\"],\n et: \"Jäljerida\",\n en: \"Breadcrumbs\",\n ru: \"Навигационная цепочка\",\n },\n more: {\n components: [\"Tabs\"],\n et: \"Veel\",\n en: \"More\",\n ru: \"Более\",\n },\n \"anchor.new-tab\": {\n description: \"Label for when anchor opens in new tab\",\n components: [\"Anchor\"],\n et: \"Avaneb uuel vahelehel\",\n en: \"Opens in new tab\",\n ru: \"Открывается в новой вкладке\",\n },\n \"header.toggle\": {\n description: \"Label for header toggle on mobile\",\n components: [\"Header\"],\n et: (isOpen: boolean) => (isOpen ? \"Sulge menüü\" : \"Ava menüü\"),\n en: (isOpen: boolean) => (isOpen ? \"Close menu\" : \"Open menu\"),\n ru: (isOpen: boolean) => (isOpen ? \"Закрыть меню\" : \"Открыть меню\"),\n },\n \"header.settings\": {\n description: \"Label for HeaderSettings Button\",\n components: [\"HeaderSettings\"],\n et: \"Seaded\",\n en: \"Settings\",\n ru: \"Настройки\",\n },\n \"header.select-lang\": {\n description: \"Label for HeaderLanguage label and Modal Heading\",\n components: [\"HeaderLanguage\"],\n et: \"Keel:\",\n en: \"Language:\",\n ru: \"Язык:\",\n },\n \"header.role-label\": {\n description: \"Label for Role selection\",\n components: [\"HeaderRole\"],\n et: \"Mina esindan:\",\n en: \"I represent:\",\n ru: \"я представляю:\",\n },\n \"header.role-switch\": {\n description: \"Label for role switch button\",\n components: [\"HeaderRole\"],\n et: \"Vaheta rolli\",\n en: \"Switch role\",\n ru: \"Сменить роль\",\n },\n \"header.role-search\": {\n description: \"Label for role search input\",\n components: [\"HeaderRole\"],\n et: \"Otsi esindatavat\",\n en: \"Search representative\",\n ru: \"Найти представителя\",\n },\n \"header.role-no-representatives\": {\n description: \"Label for empty representatives search result\",\n components: [\"HeaderRole\"],\n et: \"Esindatavaid ei leitud!\",\n en: \"No representatives found!\",\n ru: \"Представители не найдены!\",\n },\n \"header.login\": {\n description: \"Label for login button\",\n components: [\"HeaderLogin\"],\n et: \"Sisene portaali\",\n en: \"Log in\",\n ru: \"авторизоваться\",\n },\n \"header.login-mobile\": {\n description: \"Label for login button in mobile view\",\n components: [\"HeaderLogin\"],\n et: \"Sisene\",\n en: \"Log in\",\n ru: \"авторизоваться\",\n },\n \"header.logout\": {\n description: \"Label for logout button\",\n components: [\"HeaderLogout\"],\n et: \"Logi välja\",\n en: \"Log out\",\n ru: \"Выйти\",\n },\n \"header.logo\": {\n description: \"Alt Label for logo\",\n components: [\"Header\"],\n et: \"Logo\",\n en: \"Logo\",\n ru: \"Логотип\",\n },\n \"header.profile\": {\n description: \"Label for profile button\",\n components: [\"HeaderProfile\"],\n et: \"Profiil\",\n en: \"Profile\",\n ru: \"Профиль\",\n },\n \"file-upload.add\": {\n description: \"Label for add file button\",\n components: [\"FileUpload\"],\n et: \"Lisa manus\",\n en: \"Add attachment\",\n ru: \"Загрузить файл\",\n },\n \"file-upload.accept\": {\n description: \"Default label for file extensions\",\n components: [\"FileUpload\"],\n et: \"Lubatud faililaiendid:\",\n en: \"Allowed file extensions:\",\n ru: \"Разрешенные расширения файлов:\",\n },\n \"file-upload.max-size\": {\n description: \"Default label for file size restriction\",\n components: [\"FileUpload\"],\n et: \"Maksimaalne suurus:\",\n en: \"Maximum size:\",\n ru: \"Максимальный размер:\",\n },\n \"file-upload.size-rejected\": {\n description: \"Error label for rejected size\",\n components: [\"FileUpload\"],\n et: (files: string) => `Fail(id) ${files} on liiga suured`,\n en: (files: string) => `File(s) ${files} are too large`,\n ru: (files: string) => `Файл(ы) ${files} слишком велики`,\n },\n \"file-upload.size-rejected-extended\": {\n description: \"Error label for rejected size\",\n components: [\"FileUpload\"],\n et: (files: string, maxSize: string) =>\n `Fail ${files} on liiga suur. Maksimaalne suurus: ${maxSize}`,\n en: (files: string, maxSize: string) =>\n `File ${files} is too large. Maximum size: ${maxSize}`,\n ru: (files: string, maxSize: string) =>\n `Файл ${files} слишком велик. Максимальный размер: ${maxSize}`,\n },\n \"file-upload.drag-and-drop\": {\n description: \"Text shown when dragging files over the dropzone\",\n components: [\"FileUpload\"],\n et: \"Fail(id) tuvastatud, lohista üleslaadimiseks\",\n en: \"File detected, drop to upload\",\n ru: \"Файл обнаружен, отпустите для загрузки\",\n },\n \"file-upload.extension-rejected\": {\n description: \"Error label for rejected extension\",\n components: [\"FileUpload\"],\n et: (files: string) => `Fail(id) ${files} on vale laiendiga`,\n en: (files: string) => `File(s) ${files} have the wrong extension`,\n ru: (files: string) => `Файл(ы) ${files} имеют неправильное расширение`,\n },\n \"file-upload.extension-rejected-extended\": {\n description: \"Error label for rejected extension\",\n components: [\"FileUpload\"],\n et: (files: string, validTypes: string) =>\n `Fail(id) ${files} on vale laiendiga. Lubatud laiendid: ${validTypes}`,\n en: (files: string, validTypes: string) =>\n `File(s) ${files} have the wrong extension. Allowed extensions: ${validTypes}`,\n ru: (files: string, validTypes: string) =>\n `Файл(ы) ${files} имеют неправильное расширение. Разрешенные расширения: ${validTypes}`,\n },\n \"file-dropzone.label\": {\n description: \"Default label for dropzone\",\n components: [\"FileDropzone\"],\n et: \"Lohista failid siia või klõpsa, et sirvida\",\n en: \"Drop files here, or click to browse\",\n ru: \"Перетащите файлы сюда или нажмите, чтобы выбрать\",\n },\n \"file-dropzone.error\": {\n description: \"Error label for dropzone\",\n components: [\"FileDropzone\"],\n et: \"Faili üleslaadimisel tekkis viga\",\n en: \"An error occurred while uploading the file\",\n ru: \"Произошла ошибка при загрузке файла\",\n },\n \"modal.close\": {\n description: \"Label for modals close button\",\n components: [\"Modal\"],\n et: \"Sulge modaal\",\n en: \"Close modal\",\n ru: \"Закрыть модальное окно\",\n },\n \"select.loading\": {\n description: \"Text when select options are loading\",\n components: [\"select\"],\n et: \"Laadimine...\",\n en: \"Loading...\",\n ru: \"Загрузка...\",\n },\n \"select.no-options\": {\n description: \"Text when select has no options\",\n components: [\"select\"],\n et: \"Valikud puuduvad\",\n en: \"No options\",\n ru: \"Нет вариантов\",\n },\n \"select.select-all\": {\n description: \"Text when select has 'select all' option\",\n components: [\"select\"],\n et: \"Vali kõik\",\n en: \"Select all\",\n ru: \"Выбрать все\",\n },\n \"stepper.completed\": {\n description:\n \"Label for screen-reader that this step is completed (visually hidden)\",\n components: [\"StepperNav\"],\n et: \"Lõpetatud\",\n en: \"Completed\",\n ru: \"Завершено\",\n },\n \"stepper.not-completed\": {\n description:\n \"Label for screen-reader that this step is not completed (visually hidden)\",\n components: [\"StepperNav\"],\n et: \"Lõpetamata\",\n en: \"Not completed\",\n ru: \"Не завершено\",\n },\n \"skeleton.loading\": {\n description: \"Announced by screen-readers when skeleton is loading\",\n components: [\"Skeleton\"],\n et: \"Laadimine\",\n en: \"Loading\",\n ru: \"Загрузка\",\n },\n \"skeleton.loading-completed\": {\n description:\n \"Announced by screen-readers when skeleton has completed loading\",\n components: [\"Skeleton\"],\n et: \"Laadimine lõpetatud\",\n en: \"Loading completed\",\n ru: \"Загрузка завершена\",\n },\n \"spinner.loading\": {\n description: \"Announced by screen-readers when spinner is loading\",\n components: [\"Spinner\"],\n et: \"Laadimine\",\n en: \"Loading\",\n ru: \"Загрузка\",\n },\n \"table.loading\": {\n description: \"Shown when table is loading\",\n components: [\"Table\"],\n et: \"Tabel laeb\",\n en: \"Table is loading\",\n ru: \"Таблица загружается\",\n },\n \"table.empty\": {\n description: \"Shown when table is empty\",\n components: [\"Table\"],\n et: \"Tulemused puuduvad\",\n en: \"No results\",\n ru: \"Нет результатов\",\n },\n \"table.error\": {\n description: \"Shown when table is in error state\",\n components: [\"Table\"],\n et: \"Tabeli andmete pärimisel tekkis viga\",\n en: \"An error occurred while retrieving table data\",\n ru: \"Произошла ошибка при получении данных таблицы\",\n },\n \"table.filter\": {\n description: \"Label for filter toggle\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Filtreeri\",\n en: \"Filter\",\n ru: \"Фильтровать\",\n },\n \"table.filter.select-all\": {\n description: \"Label for selecting all\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Vali kõik\",\n en: \"Select all\",\n ru: \"Выбрать все\",\n },\n \"table.filter.remove-all\": {\n description: \"Label for removing all\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Eemalda kõik\",\n en: \"Remove all\",\n ru: \"Удалить все\",\n },\n \"table.filter.no-options\": {\n description: \"When select filter has no options\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Valikud puuduvad\",\n en: \"No options\",\n ru: \"Нет вариантов\",\n },\n \"table.filter.validation.no-spaces\": {\n description: \"Filter validation error - Text can not start with spaces\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Tekst ei tohi alata tühikutega\",\n en: \"Filter text cant start with spaces\",\n ru: \"Текст фильтра не может начинаться с пробелов\",\n },\n \"table.filter.validation.min-length\": {\n description: \"Filter validation error - Text is too short\",\n components: [\"Table\", \"TableFilter\"],\n et: (count: number) =>\n count === 1\n ? `Sisesta vähemalt ${count} tähemärk`\n : `Sisesta vähemalt ${count} tähemärki`,\n en: (count: number) =>\n count === 1\n ? `Min length is ${count} char`\n : `Min length is ${count} chars`,\n ru: (count: number) =>\n count === 1\n ? `Минимальная длина ${count} знак`\n : `Минимальная длина ${count} знаков`,\n },\n \"table.filter.validation.to-before-from\": {\n description: \"Filter validation error - End date is before start date\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Lõppkuupäev on enne alguskuupäeva\",\n en: \"End date must be after start date\",\n ru: \"Дата окончания предшествует дате начала\",\n },\n \"table.filter.from\": {\n description: \"Label for date filter from\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Kuupäev alates\",\n en: \"Date from\",\n ru: \"Дата с\",\n },\n \"table.filter.to\": {\n description: \"Label for date filter until\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Kuupäev kuni\",\n en: \"Date until\",\n ru: \"Дата до\",\n },\n \"table.toggle-sub-row\": {\n description: \"Toggle sub row button (Visually hidden)\",\n components: [\"Table\"],\n et: (isExpaned: boolean) => (isExpaned ? \"Sulge alamrida\" : \"Ava alamrida\"),\n en: (isExpaned: boolean) => (isExpaned ? \"Close subrow\" : \"Open subrow\"),\n ru: (isExpaned: boolean) =>\n isExpaned ? \"Закрыть подстроку\" : \"Открыть подстроку\",\n },\n \"table.select-all\": {\n description: \"Row selection - Label for check in table header\",\n components: [\"Table\"],\n et: (isSelected: boolean) => (isSelected ? \"Eemalda kõik\" : \"Vali kõik\"),\n en: (isSelected: boolean) => (isSelected ? \"Deselect all\" : \"Select all\"),\n ru: (isSelected: boolean) =>\n isSelected ? \"Убрать выделение со всего\" : \"Выбрать все\",\n },\n \"table.select-row\": {\n description: \"Row selection - Label for check in table row\",\n components: [\"Table\"],\n et: (isSelected: boolean) => (isSelected ? \"Eemalda rida\" : \"Vali rida\"),\n en: (isSelected: boolean) => (isSelected ? \"Deselect row\" : \"Select row\"),\n ru: (isSelected: boolean) =>\n isSelected ? \"Отменить выбор строки\" : \"Выбрать ряд\",\n },\n \"table.sort\": {\n description: \"Label for sort button\",\n components: [\"Table\"],\n et: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Sorteeri kahanevalt\"\n : direction === \"desc\"\n ? \"Eemalda sorteerimine\"\n : \"Sorteeri kasvavalt\",\n en: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Sort decending\"\n : direction === \"desc\"\n ? \"Remove sorting\"\n : \"Sort ascending\",\n ru: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Сортировать по убыванию\"\n : direction === \"desc\"\n ? \"Отменить сортировку\"\n : \"Сортировать по возрастанию\",\n },\n \"tooltip.icon-trigger\": {\n description: \"Label we use for icons that are tooltip triggers\",\n components: [\"TooltipTrigger\"],\n et: \"Kuva tööriistavihje\",\n en: \"Show tooltip\",\n ru: \"Показать подсказку\",\n },\n \"info-button.label\": {\n description: \"Info button default label\",\n components: [\"InfoButton\"],\n et: \"Lisainfo\",\n en: \"More information\",\n ru: \"Дополнительная информация\",\n },\n \"pagination.title\": {\n description: \"Label of the pagination\",\n components: [\"Table\", \"Pagination\"],\n et: \"Pagineerimine\",\n en: \"Pagination\",\n ru: \"Страницы\",\n },\n \"pagination.page\": {\n description: \"Label of individual page numbers\",\n components: [\"Table\", \"Pagination\"],\n et: (page: number, isCurrent?: boolean) =>\n isCurrent ? `Aktiivne leht, leht ${page}` : `Mine lehele ${page}`,\n en: (page: number, isCurrent?: boolean) =>\n isCurrent ? `Current page, page ${page}` : `Go to page ${page}`,\n ru: (page: number, isCurrent?: boolean) =>\n isCurrent\n ? `Текущая страница, страница ${page}`\n : `Перейти на страницу ${page}`,\n },\n \"pagination.prev-page\": {\n description: \"Previous page button label\",\n components: [\"Table\", \"Pagination\"],\n et: \"Eelmine leht\",\n en: \"Previous page\",\n ru: \"Предыдущая страница\",\n },\n \"pagination.next-page\": {\n description: \"Next page button label\",\n components: [\"Table\", \"Pagination\"],\n et: \"Järgmine leht\",\n en: \"Next page\",\n ru: \"Следущая страница\",\n },\n \"pagination.results\": {\n description: \"Total results text\",\n components: [\"Table\", \"Pagination\"],\n et: (count?: number) => (count === 1 ? \"tulemus\" : \"tulemust\"),\n en: (count?: number) => (count === 1 ? \"result\" : \"results\"),\n ru: (count?: number) => (count === 1 ? \"результат\" : \"результа\"),\n },\n \"pagination.page-size\": {\n description: \"Label of page size select\",\n components: [\"Table\", \"Pagination\"],\n et: \"Kuva korraga\",\n en: \"Page size\",\n ru: \"Размер страницы\",\n },\n \"table-of-contents.title\": {\n description: \"Title of the table of contents\",\n components: [\"TableOfContents\"],\n et: \"Sisukord\",\n en: \"Table of contents\",\n ru: \"Содержание\",\n },\n \"table-of-contents.valid\": {\n description: \"Number of valid steps\",\n components: [\"TableOfContents\"],\n et: (count: string | number) => `${count} valiidsed`,\n en: (count: string | number) => `${count} valid`,\n ru: (count: string | number) => `${count} действительны`,\n },\n \"table-of-contents.invalid\": {\n description: \"Number of invalid steps\",\n components: [\"TableOfContents\"],\n et: (count: string | number) => `${count} mitte valiidne`,\n en: (count: string | number) => `${count} invalid`,\n ru: (count: string | number) => `${count} неверный`,\n },\n \"truncate.see-more\": {\n description: \"See more button label\",\n components: [\"Truncate\"],\n et: \"Näita rohkem\",\n en: \"Show more\",\n ru: \"Показать больше\",\n },\n \"truncate.see-less\": {\n description: \"See less button label\",\n components: [\"Truncate\"],\n et: \"Näita vähem\",\n en: \"Show less\",\n ru: \"Скрыть\",\n },\n \"vertical-progress.edit\": {\n description: \"Edit button label\",\n components: [\"VerticalProgressItem\"],\n et: \"Muuda\",\n en: \"Edit\",\n ru: \"редактировать\",\n },\n \"numberField.decrement\": {\n description: \"Label for screen-reader for number field decrease button\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Vähenda ${count} võrra`,\n en: (count: string | number) => `Decrease by ${count}`,\n ru: (count: string | number) => `Уменьшить на ${count}`,\n },\n \"numberField.increment\": {\n description: \"Label for screen-reader for number field increase button\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Suurenda ${count} võrra`,\n en: (count: string | number) => `Increase by ${count}`,\n ru: (count: string | number) => `Увеличить на ${count}`,\n },\n \"numberField.quantityUpdated\": {\n description:\n \"Label for screen-reader when quantity get updated by button click\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Uuendatud. Uus väärtus ${count}`,\n en: (count: string | number) => `Updated. New value ${count}`,\n ru: (count: string | number) => `Ууэндатуд. Уус вяэртус ${count}`,\n },\n \"sidenav.backToMainMenu\": {\n description: \"Side navigation label\",\n components: [\"Sidenav\"],\n et: \"Tagasi peamenüüsse\",\n en: \"Back to main menu\",\n ru: \"Назад в главное меню\",\n },\n \"sidenav.toggle\": {\n description: \"Label for sidenav toggle on mobile\",\n components: [\"Sidenav\"],\n et: (isOpen: boolean) => (isOpen ? \"Sulge menüü\" : \"Ava menüü\"),\n en: (isOpen: boolean) => (isOpen ? \"Close menu\" : \"Open menu\"),\n ru: (isOpen: boolean) => (isOpen ? \"Закрыть меню\" : \"Открыть меню\"),\n },\n \"sidenav.toggleSubmenu\": {\n description: \"Label for sidenav submenu toggle\",\n components: [\"Sidenav\"],\n et: (value: string, isOpen: boolean) => (`${isOpen ? 'Sulge' : 'Ava'} ${value} alammenüü`),\n en: (value: string, isOpen: boolean) => (`${isOpen ? 'Close' : 'Open'} ${value} submenu`),\n ru: (value: string, isOpen: boolean) => (`${isOpen ? 'Закрыть' : 'Открыть'} ${value} подменю`),\n },\n carousel: {\n description: \"Label for carousel\",\n components: [\"CarouselContent\"],\n et: \"Karussell\",\n en: \"Carousel\",\n ru: \"Карусель\",\n },\n \"carousel.slide\": {\n description: \"Label for carousel slide\",\n components: [\"CarouselContent\"],\n et: (slideNumber: number, totalNumber: number) =>\n `Slaid ${slideNumber} / ${totalNumber}`,\n en: (slideNumber: number, totalNumber: number) =>\n `Slide ${slideNumber} of ${totalNumber}`,\n ru: (slideNumber: number, totalNumber: number) =>\n `Слайд ${slideNumber} из ${totalNumber}`,\n },\n \"carousel.moveForward\": {\n description: \"Label for carousel next button\",\n components: [\"CarouselIndicators\", \"CarouselNavigation\"],\n et: \"Liigu edasi\",\n en: \"Move forward\",\n ru: \"Двигаться вперед\",\n },\n \"carousel.moveBack\": {\n description: \"Label for carousel previous button\",\n components: [\"CarouselIndicators\", \"CarouselNavigation\"],\n et: \"Liigu tagasi\",\n en: \"Move back\",\n ru: \"Двигаться назад\",\n },\n \"carousel.showSlide\": {\n description: \"Label for carousel slide indicator\",\n components: [\"CarouselIndicators\"],\n et: (slideNumber: number) => `Vaata slaidi ${slideNumber}`,\n en: (slideNumber: number) => `Show slide ${slideNumber}`,\n ru: (slideNumber: number) => `Показать слайд ${slideNumber}`,\n },\n \"date-picker.january\": {\n description: \"Label for january month\",\n components: [\"DatePicker\"],\n et: \"Jaanuar\",\n en: \"January\",\n ru: \"Январь\",\n },\n \"date-picker.february\": {\n description: \"Label for february month\",\n components: [\"DatePicker\"],\n et: \"Veebruar\",\n en: \"February\",\n ru: \"Февраль\",\n },\n \"date-picker.march\": {\n description: \"Label for march month\",\n components: [\"DatePicker\"],\n et: \"Märts\",\n en: \"March\",\n ru: \"Март\",\n },\n \"date-picker.april\": {\n description: \"Label for april month\",\n components: [\"DatePicker\"],\n et: \"Aprill\",\n en: \"April\",\n ru: \"Апрель\",\n },\n \"date-picker.may\": {\n description: \"Label for may month\",\n components: [\"DatePicker\"],\n et: \"Mai\",\n en: \"May\",\n ru: \"Май\",\n },\n \"date-picker.june\": {\n description: \"Label for june month\",\n components: [\"DatePicker\"],\n et: \"Juuni\",\n en: \"June\",\n ru: \"Июнь\",\n },\n \"date-picker.july\": {\n description: \"Label for july month\",\n components: [\"DatePicker\"],\n et: \"Juuli\",\n en: \"July\",\n ru: \"Июль\",\n },\n \"date-picker.august\": {\n description: \"Label for august month\",\n components: [\"DatePicker\"],\n et: \"August\",\n en: \"August\",\n ru: \"Август\",\n },\n \"date-picker.september\": {\n description: \"Label for september month\",\n components: [\"DatePicker\"],\n et: \"September\",\n en: \"September\",\n ru: \"Сентябрь\",\n },\n \"date-picker.october\": {\n description: \"Label for october month\",\n components: [\"DatePicker\"],\n et: \"Oktoober\",\n en: \"October\",\n ru: \"Октябрь\",\n },\n \"date-picker.november\": {\n description: \"Label for november month\",\n components: [\"DatePicker\"],\n et: \"November\",\n en: \"November\",\n ru: \"Ноябрь\",\n },\n \"date-picker.december\": {\n description: \"Label for december month\",\n components: [\"DatePicker\"],\n et: \"Detsember\",\n en: \"December\",\n ru: \"Декабрь\",\n },\n \"date-picker.january-short\": {\n description: \"Short label for january month\",\n components: [\"DatePicker\"],\n et: \"Jaan\",\n en: \"Jan\",\n ru: \"Янв\",\n },\n \"date-picker.february-short\": {\n description: \"Short label for february month\",\n components: [\"DatePicker\"],\n et: \"Veebr\",\n en: \"Feb\",\n ru: \"Фев\",\n },\n \"date-picker.march-short\": {\n description: \"Short label for march month\",\n components: [\"DatePicker\"],\n et: \"Märts\",\n en: \"Mar\",\n ru: \"Мар\",\n },\n \"date-picker.april-short\": {\n description: \"Short label for april month\",\n components: [\"DatePicker\"],\n et: \"Apr\",\n en: \"Apr\",\n ru: \"Апр\",\n },\n \"date-picker.may-short\": {\n description: \"Short label for may month\",\n components: [\"DatePicker\"],\n et: \"Mai\",\n en: \"May\",\n ru: \"Май\",\n },\n \"date-picker.june-short\": {\n description: \"Short label for june month\",\n components: [\"DatePicker\"],\n et: \"Juuni\",\n en: \"Jun\",\n ru: \"Июн\",\n },\n \"date-picker.july-short\": {\n description: \"Short label for july month\",\n components: [\"DatePicker\"],\n et: \"Juuli\",\n en: \"Jul\",\n ru: \"Июл\",\n },\n \"date-picker.august-short\": {\n description: \"Short label for august month\",\n components: [\"DatePicker\"],\n et: \"Aug\",\n en: \"Aug\",\n ru: \"Авг\",\n },\n \"date-picker.september-short\": {\n description: \"Short label for september month\",\n components: [\"DatePicker\"],\n et: \"Sept\",\n en: \"Sep\",\n ru: \"Сен\",\n },\n \"date-picker.october-short\": {\n description: \"Short label for october month\",\n components: [\"DatePicker\"],\n et: \"Okt\",\n en: \"Oct\",\n ru: \"Окт\",\n },\n \"date-picker.november-short\": {\n description: \"Short label for november month\",\n components: [\"DatePicker\"],\n et: \"Nov\",\n en: \"Nov\",\n ru: \"Ноя\",\n },\n \"date-picker.december-short\": {\n description: \"Short label for december month\",\n components: [\"DatePicker\"],\n et: \"Dets\",\n en: \"Dec\",\n ru: \"Дек\",\n },\n \"date-picker.monday\": {\n description: \"Label for Monday\",\n components: [\"DatePicker\"],\n et: \"Esmaspäev\",\n en: \"Monday\",\n ru: \"Понедельник\",\n },\n \"date-picker.tuesday\": {\n description: \"Label for Tuesday\",\n components: [\"DatePicker\"],\n et: \"Teisipäev\",\n en: \"Tuesday\",\n ru: \"Вторник\",\n },\n \"date-picker.wednesday\": {\n description: \"Label for Wednesday\",\n components: [\"DatePicker\"],\n et: \"Kolmapäev\",\n en: \"Wednesday\",\n ru: \"Среда\",\n },\n \"date-picker.thursday\": {\n description: \"Label for Thursday\",\n components: [\"DatePicker\"],\n et: \"Neljapäev\",\n en: \"Thursday\",\n ru: \"Четверг\",\n },\n \"date-picker.friday\": {\n description: \"Label for Friday\",\n components: [\"DatePicker\"],\n et: \"Reede\",\n en: \"Friday\",\n ru: \"Пятница\",\n },\n \"date-picker.saturday\": {\n description: \"Label for Saturday\",\n components: [\"DatePicker\"],\n et: \"Laupäev\",\n en: \"Saturday\",\n ru: \"Суббота\",\n },\n \"date-picker.sunday\": {\n description: \"Label for Sunday\",\n components: [\"DatePicker\"],\n et: \"Pühapäev\",\n en: \"Sunday\",\n ru: \"Воскресенье\",\n },\n \"date-picker.monday-short\": {\n description: \"Short label for Monday\",\n components: [\"DatePicker\"],\n et: \"E\",\n en: \"Mon\",\n ru: \"Пн\",\n },\n \"date-picker.tuesday-short\": {\n description: \"Short label for Tuesday\",\n components: [\"DatePicker\"],\n et: \"T\",\n en: \"Tue\",\n ru: \"Вт\",\n },\n \"date-picker.wednesday-short\": {\n description: \"Short label for Wednesday\",\n components: [\"DatePicker\"],\n et: \"K\",\n en: \"Wed\",\n ru: \"Ср\",\n },\n \"date-picker.thursday-short\": {\n description: \"Short label for Thursday\",\n components: [\"DatePicker\"],\n et: \"N\",\n en: \"Thu\",\n ru: \"Чт\",\n },\n \"date-picker.friday-short\": {\n description: \"Short label for Friday\",\n components: [\"DatePicker\"],\n et: \"R\",\n en: \"Fri\",\n ru: \"Пт\",\n },\n \"date-picker.saturday-short\": {\n description: \"Short label for Saturday\",\n components: [\"DatePicker\"],\n et: \"L\",\n en: \"Sat\",\n ru: \"Сб\",\n },\n \"date-picker.sunday-short\": {\n description: \"Short label for Sunday\",\n components: [\"DatePicker\"],\n et: \"P\",\n en: \"Sun\",\n ru: \"Вс\",\n },\n \"date-picker.go-next-month\": {\n description: \"Label for next month navigation\",\n components: [\"DatePicker\"],\n et: \"Järgmine kuu\",\n en: \"Next month\",\n ru: \"Следующий месяц\",\n },\n \"date-picker.go-prev-month\": {\n description: \"Label for previous month navigation\",\n components: [\"DatePicker\"],\n et: \"Eelmine kuu\",\n en: \"Previous month\",\n ru: \"Предыдущий месяц\",\n },\n \"date-picker.select-month\": {\n description: \"Label for month selection dropdown\",\n components: [\"DatePicker\"],\n et: \"Vali kuu\",\n en: \"Select month\",\n ru: \"Выберите месяц\",\n },\n \"date-picker.select-year\": {\n description: \"Label for year selection dropdown\",\n components: [\"DatePicker\"],\n et: \"Vali aasta\",\n en: \"Select year\",\n ru: \"Выберите год\",\n },\n \"date-picker.clear-date\": {\n description:\n \"Label for the button that clears the selected date from the input field.\",\n components: [\"DatePicker\"],\n et: \"Tühjenda kuupäev\",\n en: \"Clear date\",\n ru: \"Очистить дату\",\n },\n \"date-picker.open-calendar\": {\n description: \"Label for the button that opens the date picker calendar.\",\n components: [\"DatePicker\"],\n et: \"Ava kalender\",\n en: \"Open calendar\",\n ru: \"Открыть календарь\",\n },\n \"date-picker.previous-years\": {\n description: \"Label for showing previous years in year-grid.\",\n components: [\"DatePicker\"],\n et: \"Eelnevad aastad\",\n en: \"Previous years\",\n ru: \"Предыдущие годы\",\n },\n \"date-picker.next-years\": {\n description: \"Label for showing next years in year-grid.\",\n components: [\"DatePicker\"],\n et: \"Järgmised aastad\",\n en: \"Next years\",\n ru: \"Следующие годы\",\n },\n \"vertical-stepper.completed\": {\n description:\n \"Label for screen-reader that this step is completed (visually hidden)\",\n components: [\"VerticalStepper\"],\n et: \"Lõpetatud\",\n en: \"Completed\",\n ru: \"Завершено\",\n },\n \"vertical-stepper.error\": {\n description:\n \"Label for screen-reader that this step has error (visually hidden)\",\n components: [\"VerticalStepper\"],\n et: \"Puudulik\",\n en: \"Error\",\n ru: \"Oшибка\",\n },\n};\n\nexport type TediTranslationsMap<L extends Language> = {\n [K in keyof typeof translationsMap]: (typeof translationsMap)[K][L];\n};\n\nexport type TranslationEntry = {\n description?: string;\n components?: string[];\n} & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [L in Language]: string | ((...args: any[]) => string);\n};\n\nexport type TranslationMap = Record<string, TranslationEntry>;\n","import { InjectionToken } from \"@angular/core\";\nimport { Language } from \"../services/translation/translation.service\";\n\nexport const TEDI_TRANSLATION_DEFAULT_TOKEN = new InjectionToken<Language>(\n \"TEDI_TRANSLATION_DEFAULT_TOKEN\",\n);\n","import { DOCUMENT, isPlatformBrowser, isPlatformServer } from \"@angular/common\";\nimport { effect, inject, PLATFORM_ID, REQUEST, signal } from \"@angular/core\";\n\nfunction parseCookies(header: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n if (!header) return result;\n\n for (const c of header.split(\";\")) {\n const [rawKey, ...rest] = c.split(\"=\");\n const key = (rawKey ?? \"\").trim();\n const rawVal = rest.join(\"=\");\n\n try {\n result[key] = decodeURIComponent(rawVal).trim();\n } catch {\n result[key] = rawVal.trim();\n }\n }\n\n return result;\n}\n\nfunction readServerCookie(key: string): string | undefined {\n try {\n const req = inject(REQUEST, { optional: true });\n const cookieHeader = req?.headers.get(\"cookie\");\n\n if (!cookieHeader) return undefined;\n\n return parseCookies(cookieHeader)[key];\n } catch {\n return undefined;\n }\n}\n\nfunction readBrowserCookie(key: string): string | undefined {\n const document = inject(DOCUMENT);\n const cookies = parseCookies(document.cookie);\n return cookies[key];\n}\n\nfunction parseCookieValue<T>(raw: string | undefined, initialValue: T): T {\n if (!raw) return initialValue;\n\n try {\n const parsed =\n typeof initialValue === \"string\" ? raw : (JSON.parse(raw) as T);\n return parsed as T;\n } catch {\n return initialValue;\n }\n}\n\nexport function cookieSignal<T>(key: string, initialValue: T) {\n const platformId = inject(PLATFORM_ID);\n const document = inject(DOCUMENT);\n const isBrowser = isPlatformBrowser(platformId);\n const isServer = isPlatformServer(platformId);\n\n let startValue = initialValue;\n\n if (isServer) {\n const raw = readServerCookie(key);\n startValue = parseCookieValue(raw, initialValue);\n }\n\n if (isBrowser) {\n const raw = readBrowserCookie(key);\n startValue = parseCookieValue(raw, initialValue);\n }\n\n const state = signal<T>(startValue);\n const options = {\n path: \"/\",\n sameSite: \"Lax\",\n secure: false,\n maxAge: 60 * 60 * 24 * 30,\n };\n\n if (isBrowser) {\n effect(() => {\n const value = state();\n\n if (value === null || value === undefined || value === \"\") {\n document.cookie = `${key}=; path=${options.path}; max-age=0`;\n return;\n }\n\n const stored = typeof value === \"string\" ? value : JSON.stringify(value);\n document.cookie = `${key}=${encodeURIComponent(stored)}; path=${options.path}; max-age=${options.maxAge}; samesite=${options.sameSite};`;\n });\n }\n\n return state;\n}\n","import {\n computed,\n inject,\n Injectable,\n isSignal,\n signal,\n Signal,\n} from \"@angular/core\";\nimport {\n translationsMap,\n TranslationMap,\n TediTranslationsMap,\n} from \"./translations\";\nimport { TEDI_TRANSLATION_DEFAULT_TOKEN } from \"../../tokens/translation.token\";\nimport { cookieSignal } from \"../../utils/cookies.util\";\n\nexport type Language = \"en\" | \"et\" | \"ru\";\nexport const LANGUAGE_COOKIE_NAME = \"tedi-lang\";\nexport const AVAILABLE_LANGUAGES: Language[] = [\"et\", \"en\", \"ru\"];\nexport const LANGUAGE_FALLBACK_VALUE: Language = \"et\";\n\n@Injectable({ providedIn: \"root\" })\nexport class TediTranslationService {\n private readonly defaultLang = inject(TEDI_TRANSLATION_DEFAULT_TOKEN);\n\n private readonly currentLang = cookieSignal(\n LANGUAGE_COOKIE_NAME,\n this.defaultLang,\n );\n private translations = signal<TranslationMap>(translationsMap);\n\n getLanguage = this.currentLang.asReadonly();\n\n setLanguage(lang: Language) {\n this.currentLang.set(lang);\n }\n\n translate<\n TLang extends Language,\n TKey extends keyof TediTranslationsMap<TLang> | (string & {}),\n TArgs extends TKey extends keyof TediTranslationsMap<TLang>\n ? TediTranslationsMap<TLang>[TKey] extends (...args: infer P) => string\n ? P\n : []\n : unknown[],\n >(key: TKey, ...args: TArgs): string {\n const lang = this.currentLang();\n const entry = this.translations()[key];\n\n if (!entry || !(lang in entry)) {\n return key;\n }\n\n const value = entry[lang];\n\n if (typeof value === \"function\") {\n return value(...args);\n }\n\n return value;\n }\n\n track<\n TLang extends Language,\n TKey extends keyof TediTranslationsMap<TLang> | (string & {}),\n TArgs extends TKey extends keyof TediTranslationsMap<TLang>\n ? TediTranslationsMap<TLang>[TKey] extends (...args: infer P) => string\n ? P\n : []\n : unknown[],\n >(key: TKey, ...args: (TArgs[number] | Signal<TArgs[number]>)[]) {\n return computed(() => {\n const resolvedArgs = args.map((arg) =>\n isSignal(arg) ? arg() : arg,\n ) as TArgs;\n\n return this.translate(key, ...resolvedArgs);\n });\n }\n\n addTranslations(newTranslations: TranslationMap) {\n this.translations.update((prev) => ({ ...prev, ...newTranslations }));\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport type { Theme } from \"../services/theme/theme.service\";\n\nexport const TEDI_THEME_DEFAULT_TOKEN = new InjectionToken<Theme>(\n \"TEDI_THEME_DEFAULT_TOKEN\",\n);\n","import { Injectable, inject, effect } from \"@angular/core\";\nimport { DOCUMENT } from \"@angular/common\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../../tokens/theme.token\";\nimport { cookieSignal } from \"../../utils/cookies.util\";\n\nexport type Theme = \"default\" | \"dark\" | \"rit\";\nexport const AVAILABLE_THEMES: Theme[] = [\"default\", \"dark\", \"rit\"];\nexport const THEME_CLASS_PREFIX = \"tedi-theme--\";\nexport const THEME_COOKIE_NAME = \"tedi-theme\";\nexport const THEME_FALLBACK_VALUE: Theme = \"default\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ThemeService {\n private readonly document = inject(DOCUMENT);\n private readonly defaultTheme = inject(TEDI_THEME_DEFAULT_TOKEN);\n\n readonly theme = cookieSignal<Theme>(THEME_COOKIE_NAME, this.defaultTheme);\n\n constructor() {\n effect(() => {\n const html = this.document.documentElement;\n\n for (const t of AVAILABLE_THEMES) {\n html.classList.remove(`${THEME_CLASS_PREFIX}${t}`);\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${this.theme()}`);\n });\n }\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { TediTranslationService } from \"./translation.service\";\n\n@Pipe({\n name: \"tediTranslate\",\n standalone: true,\n pure: false\n})\nexport class TediTranslationPipe implements PipeTransform {\n translationService = inject(TediTranslationService);\n\n transform(key: string, ...args: unknown[]): string {\n return this.translationService.translate(key, ...args);\n }\n}","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\n\nexport type ClosingButtonSize = \"default\" | \"small\";\nexport type ClosingButtonIconSize = 18 | 24;\n@Component({\n selector: \"button[tedi-closing-button]\",\n imports: [IconComponent],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: \"./closing-button.component.html\",\n styleUrl: \"./closing-button.component.scss\",\n host: {\n \"[title]\": \"title()\",\n \"[attr.aria-label]\": \"title()\",\n \"[class.tedi-closing-button]\": \"true\",\n \"[class.tedi-closing-button--small]\": \"size() === 'small'\",\n },\n})\nexport class ClosingButtonComponent {\n /**\n * Overall button size.\n * - `default` - The default size, typically larger.\n * - `small` - A smaller version of the button, often used in compact layouts.\n * @default default\n */\n size = input<ClosingButtonSize>(\"default\");\n /**\n * The size of the icon inside the button in pixels.\n * - `24` - A standard icon size, commonly used in most interfaces.\n * - `18` - A smaller icon size, suitable for compact designs.\n * @default 24\n */\n iconSize = input<ClosingButtonIconSize>(24);\n\n private translationService = inject(TediTranslationService);\n title = this.translationService.track(\"close\");\n}\n","<tedi-icon name=\"close\" [size]=\"iconSize()\" aria-hidden=\"true\" />\n","import {\n Component,\n computed,\n input,\n model,\n output,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { NgTemplateOutlet } from \"@angular/common\";\n\nexport type AlertRole = \"alert\" | \"status\" | \"none\";\nexport type AlertType = \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type AlertTitleType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\";\nexport type AlertVariant = \"default\" | \"global\" | \"noSideBorders\";\n\n@Component({\n standalone: true,\n selector: \"tedi-alert\",\n imports: [IconComponent, ClosingButtonComponent, NgTemplateOutlet],\n templateUrl: \"./alert.component.html\",\n styleUrls: [\"./alert.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[style.display]\": \"open() ? 'flex' : 'none'\",\n \"[attr.aria-live]\": \"getAriaLive()\",\n \"[attr.aria-label]\": \"getAriaLabel()\",\n \"[class]\": \"classes()\",\n \"[attr.role]\": \"role() === 'none' ? null : role()\",\n },\n})\nexport class AlertComponent {\n /**\n * An optional title for the alert, typically used to summarize the message's purpose.\n * If provided, it appears prominently at the top of the alert.\n */\n title = input<string>();\n /**\n * Defines the visual and contextual type of the alert. This determines the icon, color, and\n * overall style, making it clear whether the alert is informational, a success message,\n * a warning, or an error.\n * @default info\n */\n type = input<AlertType>(\"info\");\n /**\n * Specifies an optional icon to display in the alert, providing quick visual context.\n */\n icon = input<string>(\"\");\n /**\n * If true, a close button will be displayed.\n * @default false\n */\n showClose = input<boolean>(false);\n /**\n * The ARIA role of the alert, informing screen readers about the alert's purpose.\n * Options:\n * - 'alert': For high-priority messages that demand immediate attention.\n * - 'status': For less urgent messages providing feedback or updates.\n * - 'none': Used when no ARIA role is needed.\n * @default alert\n */\n role = input<AlertRole>(\"alert\");\n /**\n * Variant for the alert, which can be used to apply specific styles.\n * For example, 'global' for full-width alerts or 'noSideBorders' for alerts without side borders.\n */\n variant = input<AlertVariant>(\"default\");\n /**\n * The HTML tag to be used for the alert title.\n * @default h2\n */\n titleElement = input<AlertTitleType>(\"h2\");\n /**\n * Is alert open?\n * @default true\n */\n open = model(true);\n\n /**\n * Delay in milliseconds before setting \"open\" to false when close is triggered.\n * @default 0\n */\n closeDelay = input(0);\n\n /**\n * Close click output\n */\n readonly closeClick = output<void>();\n\n getAriaLive = computed(() => {\n switch (this.role()) {\n case \"alert\":\n return \"assertive\";\n case \"status\":\n return \"polite\";\n case \"none\":\n return \"off\";\n }\n });\n\n getAriaLabel = computed(() => {\n if (this.title()) {\n return `${this.type()} alert: ${this.title()}`;\n }\n return `${this.type()} alert`;\n });\n\n classes = computed(() => {\n return {\n \"tedi-alert\": true,\n [`tedi-alert--${this.type()}`]: !!this.type(),\n \"tedi-alert--global\": this.variant() === \"global\",\n \"tedi-alert--no-side-borders\": this.variant() === \"noSideBorders\",\n };\n });\n\n handleClose() {\n this.closeClick.emit();\n const delay = this.closeDelay();\n if (delay > 0) {\n setTimeout(() => this.open.set(false), delay);\n } else {\n this.open.set(false);\n }\n }\n}\n","@if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" class=\"tedi-alert__content-icon\" />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n input,\n output,\n} from \"@angular/core\";\nimport { AlertComponent, AlertType, AlertRole } from \"../alert/alert.component\";\n\nexport const TOAST_DEFAULT_DURATION = 6000;\n\nexport type ToastType = AlertType;\nexport type ToastRole = AlertRole;\nexport type ToastPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface ToastConfig {\n /**\n * Title of the toast notification.\n */\n title: string;\n /**\n * Toast text content.\n */\n content?: string;\n /**\n * Type of the toast notification determining its color scheme.\n * @default info\n */\n type?: ToastType;\n /**\n * Specifies an optional icon to display in the toast notification, providing quick visual context.\n */\n icon?: string;\n /**\n * Toast duration in milliseconds. Set to 0 for persistent toast.\n */\n duration?: number;\n /**\n * Whether to show the progress bar for timed toasts.\n * @default false\n */\n showProgressBar?: boolean;\n /**\n * Whether to pause the auto-close timer when hovering over the toast.\n * @default true\n */\n pauseOnHover?: boolean;\n /**\n * The ARIA role of the toast, informing screen readers about the notification's priority.\n * - 'status': For non-critical notifications.\n * - 'alert': For critical errors.\n * - 'none': Used when no ARIA role is needed.\n * @default status\n */\n role?: ToastRole;\n /**\n * The position of toast container.\n * Possible values:\n * - 'top-left'\n * - 'top-right'\n * - 'bottom-left'\n * - 'bottom-right'\n * @default bottom-right\n */\n position?: ToastPosition;\n /**\n * Unique identifier of given toast. Id is automatically generated if not provided by client\n */\n id?: string;\n}\n\n@Component({\n selector: \"tedi-toast\",\n standalone: true,\n imports: [AlertComponent],\n templateUrl: \"./toast.component.html\",\n styleUrl: \"./toast.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n /**\n * Title of the toast notification.\n */\n readonly title = input<string>();\n\n /**\n * Type of the toast notification determining its color scheme.\n * @default info\n */\n readonly type = input<ToastType>(\"info\");\n\n /**\n * Icon name. Only shown when provided.\n */\n readonly icon = input<string>(\"\");\n\n /**\n * The ARIA role of the toast, informing screen readers about the notification's priority.\n * - 'status': For non-critical notifications (screen readers announce politely).\n * - 'alert': For critical errors (screen readers announce immediately).\n * - 'none': Used when no ARIA role is needed.\n * @default status\n */\n readonly role = input<ToastRole>(\"status\");\n\n /**\n * Duration in milliseconds for auto-close.\n * @default 6000\n */\n readonly duration = input<number>(TOAST_DEFAULT_DURATION);\n\n /**\n * Whether to show the progress bar.\n * @default false\n */\n readonly showProgressBar = input<boolean>(false);\n\n /**\n * Whether the toast timer is currently paused.\n * @default false\n */\n readonly paused = input<boolean>(false);\n\n /**\n * Emits when the toast is closed by the user.\n */\n readonly closed = output<void>();\n\n readonly mouseEnter = output<void>();\n readonly mouseLeave = output<void>();\n\n handleClose(): void {\n this.closed.emit();\n }\n\n onMouseEnter(): void {\n this.mouseEnter.emit();\n }\n\n onMouseLeave(): void {\n this.mouseLeave.emit();\n }\n}\n","<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeDelay]=\"300\"\n [role]=\"role()\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n computed,\n} from \"@angular/core\";\nimport { ToastComponent, ToastPosition, ToastRole } from \"./toast.component\";\nimport { ToastService } from \"../../../services/toast/toast.service\";\n\nexport interface ToastItem {\n id: string;\n title: string;\n content?: string;\n type?: \"info\" | \"success\" | \"warning\" | \"danger\";\n icon?: string;\n role?: ToastRole;\n duration?: number;\n showProgressBar?: boolean;\n pauseOnHover?: boolean;\n paused?: boolean;\n exiting?: boolean;\n position: ToastPosition;\n}\n\nconst POSITIONS: ToastPosition[] = [\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n];\n\n/**\n * Internal toast container component that renders toast notifications.\n * This component is automatically created by ToastService using CDK Overlay.\n *\n * @internal\n */\n@Component({\n selector: \"tedi-toast-container\",\n standalone: true,\n imports: [ToastComponent],\n template: `\n @for (position of positions; track position) {\n @if (toastsByPosition()[position].length > 0) {\n <div class=\"tedi-toast-container__position tedi-toast-container__position--{{ position }}\">\n @for (toast of toastsByPosition()[position]; track toast.id) {\n <tedi-toast\n [title]=\"toast.title\"\n [type]=\"toast.type ?? 'info'\"\n [icon]=\"toast.icon ?? ''\"\n [role]=\"toast.role ?? 'status'\"\n [duration]=\"toast.duration ?? 0\"\n [showProgressBar]=\"toast.showProgressBar ?? false\"\n [paused]=\"toast.paused ?? false\"\n [class.tedi-toast--exiting]=\"toast.exiting\"\n (closed)=\"onClosed(toast.id)\"\n (mouseEnter)=\"onMouseEnter(toast.id)\"\n (mouseLeave)=\"onMouseLeave(toast.id)\"\n >\n @if (toast.content) {\n {{ toast.content }}\n }\n </tedi-toast>\n }\n </div>\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-toast-container\",\n },\n})\nexport class ToastContainerComponent {\n private readonly toastService = inject(ToastService);\n\n readonly positions = POSITIONS;\n\n readonly toastsByPosition = computed(() => {\n const toasts = this.toastService.toasts$();\n const grouped: Record<ToastPosition, ToastItem[]> = {\n \"top-left\": [],\n \"top-right\": [],\n \"bottom-left\": [],\n \"bottom-right\": [],\n };\n\n for (const toast of toasts) {\n grouped[toast.position].push(toast);\n }\n\n return grouped;\n });\n\n hasToastsForPosition(position: ToastPosition): boolean {\n return this.toastService.getToasts().some((t) => t.position === position);\n }\n\n getToastsForPosition(position: ToastPosition): ToastItem[] {\n return this.toastService.getToasts().filter((t) => t.position === position);\n }\n\n onClosed(id: string): void {\n this.toastService.close(id);\n }\n\n onMouseEnter(id: string): void {\n this.toastService.pause(id);\n }\n\n onMouseLeave(id: string): void {\n this.toastService.resume(id);\n }\n}\n","import { Injectable, inject, OnDestroy } from \"@angular/core\";\nimport { DOCUMENT } from \"@angular/common\";\n\n/**\n * Custom announcer service for toast notifications that uses the `sr-only` class\n * instead of CDK's LiveAnnouncer which requires CDK styles.\n *\n * Creates a visually hidden element that screen readers can access to announce\n * toast messages with appropriate politeness levels.\n *\n * @internal\n */\n@Injectable({ providedIn: \"root\" })\nexport class ToastAnnouncerService implements OnDestroy {\n private readonly document = inject(DOCUMENT);\n\n private politeElement: HTMLElement | null = null;\n private assertiveElement: HTMLElement | null = null;\n\n /**\n * Announce a message to screen readers.\n * @param message The message to announce\n * @param politeness The politeness level: 'polite' (default) or 'assertive'\n * @param clearAfterMs Time in ms after which to clear the message (default: 1000ms)\n */\n announce(message: string, politeness: \"polite\" | \"assertive\" = \"polite\", clearAfterMs: number = 1000): void {\n const element = this.getOrCreateElement(politeness);\n element.textContent = \"\";\n\n // Use a small timeout to ensure screen readers detect the change\n setTimeout(() => {\n element.textContent = message;\n setTimeout(() => {\n element.textContent = \"\";\n }, clearAfterMs);\n }, 100);\n }\n\n /**\n * Clear all announcements text content.\n */\n clear(): void {\n if (this.politeElement) {\n this.politeElement.textContent = \"\";\n }\n if (this.assertiveElement) {\n this.assertiveElement.textContent = \"\";\n }\n }\n\n destroy(): void {\n this.politeElement?.remove();\n this.assertiveElement?.remove();\n this.politeElement = null;\n this.assertiveElement = null;\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n private getOrCreateElement(politeness: \"polite\" | \"assertive\"): HTMLElement {\n if (politeness === \"assertive\") {\n if (!this.assertiveElement) {\n this.assertiveElement = this.createAnnouncerElement(\"assertive\");\n }\n return this.assertiveElement;\n } else {\n if (!this.politeElement) {\n this.politeElement = this.createAnnouncerElement(\"polite\");\n }\n return this.politeElement;\n }\n }\n\n private createAnnouncerElement(politeness: \"polite\" | \"assertive\"): HTMLElement {\n const element = this.document.createElement(\"span\");\n element.setAttribute(\"aria-live\", politeness);\n element.setAttribute(\"aria-atomic\", \"true\");\n element.setAttribute(\"role\", politeness === \"assertive\" ? \"alert\" : \"status\");\n element.classList.add(\"sr-only\");\n element.id = `tedi-toast-announcer-${politeness}`;\n this.document.body.appendChild(element);\n return element;\n }\n}\n","import {\n Injectable,\n Injector,\n inject,\n signal,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef, OverlayConfig } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToastContainerComponent, ToastItem } from \"../../components/notifications/toast/toast-container.component\";\nimport { ToastConfig, ToastRole, TOAST_DEFAULT_DURATION } from \"../../components/notifications/toast/toast.component\";\nimport { ToastAnnouncerService } from \"./toast-announcer.service\";\n\ntype ToastMethodOptions = Partial<Omit<ToastConfig, \"title\" | \"content\" | \"type\">>;\n\nconst ANIMATION_DURATION = 300;\n\nlet toastId = 0;\n\ninterface ToastTimerState {\n timeout: ReturnType<typeof setTimeout> | null;\n startTime: number;\n remainingTime: number;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ToastService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly announcer = inject(ToastAnnouncerService);\n\n // Static shared state across all service instances\n private static readonly sharedToasts = signal<ToastItem[]>([]);\n private static readonly sharedTimerMap = new Map<string, ToastTimerState>();\n private static sharedOverlayRef: OverlayRef | null = null;\n\n // Instance accessors for static state\n private get toasts() {\n return ToastService.sharedToasts;\n }\n\n private get timerMap() {\n return ToastService.sharedTimerMap;\n }\n\n private get overlayRef() {\n return ToastService.sharedOverlayRef;\n }\n\n private set overlayRef(value: OverlayRef | null) {\n ToastService.sharedOverlayRef = value;\n }\n\n /**\n * Readonly signal of all current toasts.\n * @internal\n */\n readonly toasts$ = ToastService.sharedToasts.asReadonly();\n\n /**\n * Get all current toasts\n * @internal\n */\n getToasts(): ToastItem[] {\n return this.toasts();\n }\n\n /**\n * Show an info toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n info(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"info\" });\n }\n\n /**\n * Show a success toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n success(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"success\" });\n }\n\n /**\n * Show a warning toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n warning(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"warning\" });\n }\n\n /**\n * Show a danger toast notification.\n * Defaults to role=\"alert\" for immediate screen reader announcement.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n danger(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ role: \"alert\", ...options, title, content, type: \"danger\" });\n }\n\n /**\n * Show a toast notification with full configuration.\n */\n show(options: ToastConfig): string {\n this.assertContainerExists();\n\n const id = options.id || this.generateId();\n const position = options.position || \"bottom-right\";\n const duration = options.duration ?? TOAST_DEFAULT_DURATION;\n const role = options.role ?? \"status\";\n const showProgressBar = options.showProgressBar ?? false;\n const pauseOnHover = options.pauseOnHover ?? true;\n\n const toast: ToastItem = {\n id,\n title: options.title,\n content: options.content,\n type: options.type ?? \"info\",\n icon: options.icon ?? \"\",\n role,\n duration,\n showProgressBar,\n pauseOnHover,\n position,\n };\n\n this.toasts.update((toasts) => [...toasts, toast]);\n\n this.announceToScreenReader(toast, role);\n\n if (duration > 0) {\n this.startTimer(id, duration);\n }\n\n return id;\n }\n\n /**\n * Close a specific toast by ID.\n */\n close(id: string): void {\n this.clearTimer(id);\n\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || toast.exiting) return;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, exiting: true } : t))\n );\n\n setTimeout(() => {\n this.toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n this.cleanupIfEmpty();\n }, ANIMATION_DURATION);\n }\n\n /**\n * Pause a toast's auto-close timer.\n * @internal\n */\n pause(id: string): void {\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.pauseOnHover || toast.exiting) return;\n\n const timerState = this.timerMap.get(id);\n if (!timerState || !timerState.timeout) return;\n\n const elapsed = Date.now() - timerState.startTime;\n const remainingTime = Math.max(0, timerState.remainingTime - elapsed);\n\n clearTimeout(timerState.timeout);\n timerState.timeout = null;\n timerState.remainingTime = remainingTime;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, paused: true } : t))\n );\n }\n\n /**\n * Resume a toast's auto-close timer.\n * @internal\n */\n resume(id: string): void {\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.pauseOnHover || toast.exiting) return;\n\n const timerState = this.timerMap.get(id);\n if (!timerState || timerState.timeout) return;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, paused: false } : t))\n );\n\n if (timerState.remainingTime > 0) {\n timerState.startTime = Date.now();\n timerState.timeout = setTimeout(() => this.close(id), timerState.remainingTime);\n }\n }\n\n private startTimer(id: string, duration: number): void {\n const timeout = setTimeout(() => this.close(id), duration);\n this.timerMap.set(id, {\n timeout,\n startTime: Date.now(),\n remainingTime: duration,\n });\n }\n\n private clearTimer(id: string): void {\n const timerState = this.timerMap.get(id);\n if (timerState?.timeout) {\n clearTimeout(timerState.timeout);\n }\n this.timerMap.delete(id);\n }\n\n private assertContainerExists(): void {\n if (this.overlayRef) {\n // Check if the portal is attached and the overlay element is in the DOM\n const isAttached = this.overlayRef.hasAttached();\n const isInDom = this.overlayRef.overlayElement?.isConnected ?? false;\n\n if (isAttached && isInDom) {\n return;\n }\n\n // Portal detached or element removed from DOM, clean up stale overlay\n try {\n this.overlayRef.dispose();\n } catch {\n // Ignore disposal errors\n }\n this.overlayRef = null;\n this.toasts.set([]);\n this.timerMap.forEach((state) => {\n if (state.timeout) clearTimeout(state.timeout);\n });\n this.timerMap.clear();\n }\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay.position().global(),\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n\n const portal = new ComponentPortal(\n ToastContainerComponent,\n null,\n this.injector\n );\n\n this.overlayRef.attach(portal);\n }\n\n private cleanupIfEmpty(): void {\n if (!this.toasts().length && this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.announcer.destroy();\n }\n }\n\n private announceToScreenReader(toast: ToastItem, role: ToastRole): void {\n if (role === \"none\") return;\n\n const message = toast.content\n ? `${toast.title}: ${toast.content}`\n : toast.title;\n\n const politeness = role === \"alert\" ? \"assertive\" : \"polite\";\n this.announcer.announce(message, politeness);\n }\n\n private generateId(): string {\n return `toast-${++toastId}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services\";\n\n@Component({\n standalone: true,\n selector: \"button[tedi-info-button]\",\n imports: [IconComponent],\n template: `<tedi-icon name=\"info\" [size]=\"18\" />`,\n styleUrl: \"./info-button.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-info-button\",\n \"[attr.aria-label]\": \"ariaLabel() || _defaultLabel()\"\n }\n})\nexport class InfoButtonComponent {\n readonly translationService = inject(TediTranslationService);\n\n /**\n * InfoButton ARIA label\n */\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' });\n\n private readonly _defaultLabel = this.translationService.track('info-button.label');\n}\n","/**\n * Generates a random UUID (Universally Unique Identifier).\n * This function uses the `crypto` API if available, otherwise falls back to a custom implementation.\n *\n * @returns {string} A randomly generated UUID.\n */\nexport function generateUUID(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const r = (Math.random() * 16) | 0;\n const v = char === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import {\n Component,\n input,\n signal,\n AfterViewInit,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n Renderer2,\n} from \"@angular/core\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport { generateUUID } from \"../../../helpers/generate-uuid\";\n\nexport type ArrowType = \"default\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"tedi-collapse\",\n imports: [IconComponent, TextComponent, TediTranslationPipe],\n templateUrl: \"./collapse.component.html\",\n styleUrls: [\"./collapse.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CollapseComponent implements AfterViewInit {\n /**\n * The title/header element for the collapsible section.\n * Rendered inside the toggle button.\n */\n openText = input<string>();\n /**\n * Text shown on the toggle button when the content is expanded.\n */\n closeText = input<string>();\n /**\n * Whether the collapse should be initially open.\n * @default false\n */\n defaultOpen = input<boolean>(false);\n /**\n * To show or hide the openText and closeText.\n * @default \"false\"\n */\n hideCollapseText = input<boolean>(false);\n /**\n * Option for toggling different arrow styles.\n * @default \"default\"\n */\n arrowType = input<ArrowType>(\"default\");\n\n renderer = inject(Renderer2);\n collapseContentId: string = `collapse-content-${generateUUID()}`;\n isOpen = signal<boolean>(false);\n\n toggleCollapse() {\n this.isOpen.update((prev) => !prev);\n }\n\n ngAfterViewInit() {\n if (this.defaultOpen()) {\n this.isOpen.set(true);\n }\n }\n}\n","<div class=\"tedi-collapse\" [class.tedi-collapse--open]=\"isOpen() === true\">\n <button\n class=\"tedi-collapse__button\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"isOpen() ? true : false\"\n [attr.aria-controls]=\"collapseContentId\"\n >\n @if (hideCollapseText() === false) {\n <p tedi-text color=\"brand\" class=\"tedi-collapse__button--text\">\n {{\n isOpen()\n ? (closeText() ?? (\"close\" | tediTranslate))\n : (openText() ?? (\"open\" | tediTranslate))\n }}\n </p>\n }\n @if (arrowType() === \"default\") {\n <tedi-icon class=\"tedi-collapse__icon\" name=\"expand_more\" color=\"brand\" />\n } @else if (arrowType() === \"secondary\") {\n <div class=\"tedi-collapse__icon--wrapper\">\n <tedi-icon class=\"tedi-collapse__icon\" name=\"expand_more\" color=\"brand\" />\n </div>\n }\n </button>\n <div class=\"tedi-collapse__content\" [id]=\"collapseContentId\">\n <div class=\"tedi-collapse__extender\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type BulletColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"brand\"\n | \"brand-dark\"\n | \"success\"\n | \"warning\"\n | \"warning-dark\"\n | \"danger\"\n | \"white\";\n\n@Component({\n selector: \"ul[tedi-list], ol[tedi-list]\",\n standalone: true,\n templateUrl: \"./list.component.html\",\n styleUrl: \"./list.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ListComponent {\n /**\n * Is list styled?\n * @default true\n */\n styled = input<boolean>(true);\n /**\n * Color of the list bullet.\n * @default brand\n */\n color = input<BulletColor>(\"brand\");\n\n classes = computed(() => {\n const classList = [\"tedi-list\", `tedi-list--bullet-color-${this.color()}`];\n\n if (!this.styled()) {\n classList.push(\"tedi-list--unstyled\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type CheckboxSize = \"default\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"input[type=checkbox][tedi-checkbox]\",\n template: \"\",\n styleUrl: \"./checkbox.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-checkbox--large]\": \"size() === 'large'\",\n \"[class.tedi-checkbox--invalid]\": \"invalid()\",\n },\n})\nexport class CheckboxComponent {\n /**\n * Size of the checkbox.\n * @default default\n */\n readonly size = input<CheckboxSize>(\"default\");\n /**\n * Is checkbox invalid?\n * @default false\n */\n readonly invalid = input(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type SeparatorAxis = \"horizontal\" | \"vertical\";\nexport type SeparatorColor = \"primary\" | \"secondary\" | \"accent\";\nexport type SeparatorVariant = \"dotted\" | \"dotted-small\" | \"dot-only\";\nexport type SeparatorDotSize = \"large\" | \"medium\" | \"small\" | \"extra-small\";\nexport type SeparatorThickness = 1 | 2;\nexport type SeparatorSpacingValue =\n | 0\n | 0.25\n | 0.5\n | 0.75\n | 1\n | 1.25\n | 1.5\n | 1.75\n | 2\n | 2.5\n | 5;\nexport type SeparatorSpacing = {\n top?: SeparatorSpacingValue;\n bottom?: SeparatorSpacingValue;\n left?: SeparatorSpacingValue;\n right?: SeparatorSpacingValue;\n};\n\n@Component({\n selector: \"tedi-separator\",\n template: \"\",\n styleUrl: \"./separator.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n \"[style.width]\":\n \"variant() === 'dot-only' ? null : axis() === 'horizontal' ? size() : '0px'\",\n \"[style.height]\":\n \"variant() === 'dot-only' ? null : axis() === 'vertical' ? size() : '0px'\",\n },\n})\nexport class SeparatorComponent {\n /**\n * Axis of separator.\n */\n axis = input<SeparatorAxis>(\"horizontal\");\n /**\n * Color of separator\n */\n color = input<SeparatorColor>(\"primary\");\n /**\n * Separator style variant.\n */\n variant = input<SeparatorVariant>();\n /**\n * Dot size. Only used when variant is \"dot-only\".\n */\n dotSize = input<SeparatorDotSize>();\n /**\n * Is dot filled? Only used when variant is \"dot-only\".\n */\n dotFilled = input(true);\n /**\n * Thickness in pixels (ignored if variant is used).\n * @default 1\n */\n thickness = input<SeparatorThickness>(1);\n /**\n * Spacing applied based on the axis:\n * - For horizontal axis, spacing is applied to top and bottom of the separator.\n * - For vertical axis, spacing is applied to left and right of the separator.\n */\n spacing = input<SeparatorSpacingValue | SeparatorSpacing>();\n /**\n * Size of separator based on the axis:\n * - For horizontal axis, size defines width.\n * - For vertical axis, size defines height (when using percentages, then parent container must have height set).\n * @default 100%\n */\n size = input(\"100%\");\n\n // eslint-disable-next-line complexity\n classes = computed(() => {\n const classList = [\n \"tedi-separator\",\n `tedi-separator--${this.color()}`,\n `tedi-separator--${this.axis()}`,\n ];\n\n if (this.variant()) {\n classList.push(`tedi-separator--${this.variant()}`);\n }\n\n if (this.variant() && this.dotSize()) {\n classList.push(`tedi-separator--${this.variant()}-${this.dotSize()}`);\n }\n\n if (this.variant() === \"dot-only\" && this.dotFilled()) {\n classList.push(`tedi-separator--${this.variant()}-filled`);\n } else {\n classList.push(`tedi-separator--${this.variant()}-outlined`);\n }\n\n if (this.thickness()) {\n classList.push(`tedi-separator--thickness-${this.thickness()}`);\n }\n\n const spacing = this.spacing();\n\n if (spacing && typeof spacing === \"number\") {\n classList.push(`tedi-separator--spacing-${spacing}`.replace(\".\", \"-\"));\n } else if (spacing) {\n if (this.axis() === \"horizontal\") {\n if (spacing.top) {\n classList.push(\n `tedi-separator--top-${spacing.top}`.replace(\".\", \"-\"),\n );\n }\n\n if (spacing.bottom) {\n classList.push(\n `tedi-separator--bottom-${spacing.bottom}`.replace(\".\", \"-\"),\n );\n }\n } else {\n if (spacing.left) {\n classList.push(\n `tedi-separator--left-${spacing.left}`.replace(\".\", \"-\"),\n );\n }\n\n if (spacing.right) {\n classList.push(\n `tedi-separator--right-${spacing.right}`.replace(\".\", \"-\"),\n );\n }\n }\n }\n\n return classList.join(\" \");\n });\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from \"@angular/core\";\nimport { PopoverComponent } from \"../popover.component\";\n\n@Directive({\n standalone: true,\n selector: \"[tedi-popover-trigger]\",\n host: {\n tabindex: \"0\",\n role: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"[id]\": \"popover.containerId() + '_trigger'\",\n \"[attr.aria-expanded]\": \"popover.floatUiComponent().state\",\n \"[attr.aria-controls]\": \"popover.containerId()\",\n \"[class.tedi-popover-trigger__text]\": \"underline()\",\n },\n})\nexport class PopoverTriggerDirective {\n /**\n * Should add underline class to trigger element?\n * @default false\n */\n readonly underline = input(false);\n\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly popover = inject(PopoverComponent);\n\n @HostListener(\"click\")\n onClick() {\n this.popover.togglePopover();\n }\n}\n","export function getFocusableElements(container: HTMLElement): HTMLElement[] {\n const selectors = [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"summary\",\n \"iframe\",\n \"audio[controls]\",\n \"video[controls]\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[tabindex]:not([tabindex='-1'])\",\n ];\n const elements = Array.from(container.querySelectorAll(selectors.join(\",\")));\n\n if (typeof window === \"undefined\") {\n return elements.filter(\n (el): el is HTMLElement => el instanceof HTMLElement,\n );\n }\n\n return elements.filter((el): el is HTMLElement => {\n if (!(el instanceof HTMLElement)) return false;\n\n const style = window.getComputedStyle(el);\n\n if (style.display === \"none\" || style.visibility === \"hidden\") return false;\n if (el.hasAttribute(\"hidden\")) return false;\n if (el.closest(\"[inert]\")) return false;\n\n const fieldset = el.closest(\"fieldset[disabled]\");\n\n if (fieldset) {\n const firstLegend = fieldset.querySelector(\"legend\");\n if (!firstLegend || !firstLegend.contains(el)) return false;\n }\n\n if (el.tagName !== \"SUMMARY\") {\n const closedDetails = el.closest(\"details:not([open])\");\n if (closedDetails) return false;\n }\n\n return true;\n });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ClosingButtonComponent } from \"../../../buttons/closing-button/closing-button.component\";\nimport { PopoverComponent } from \"../popover.component\";\n\nexport type PopoverWidth = \"none\" | \"small\" | \"medium\" | \"large\";\n\nlet popoverTitleId = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-popover-content\",\n templateUrl: \"./popover-content.component.html\",\n styleUrl: \"../popover.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, ClosingButtonComponent],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class PopoverContentComponent {\n /**\n * The width of the popover. Can be 'none', 'small', 'medium', or 'large'.\n * @default small\n */\n maxWidth = input<PopoverWidth>(\"small\");\n /**\n * Heading title of the content\n */\n title = input(\"\");\n /**\n * Should content show close button?\n * @default false\n */\n showClose = input(false);\n\n private readonly popover = inject(PopoverComponent);\n titleId = `popover-title-${popoverTitleId++}`;\n\n classes = computed(() => {\n const classList = [\n \"tedi-popover-content\",\n `tedi-popover-content--${this.maxWidth()}`,\n ];\n return classList.join(\" \");\n });\n\n handleClose() {\n this.popover.hidePopover(true);\n }\n}\n","@if (title() && showClose()) {\n <div class=\"tedi-popover-content__head\">\n <h4 class=\"tedi-popover-content__title\" [id]=\"titleId\">{{ title() }}</h4>\n <button tedi-closing-button (click)=\"handleClose()\"></button>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else if (showClose()) {\n <div class=\"tedi-popover-content__head\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <button tedi-closing-button size=\"small\" (click)=\"handleClose()\"></button>\n </div>\n} @else if (title()) {\n <h4 [id]=\"titleId\">{{ title() }}</h4>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { DOCUMENT } from \"@angular/common\";\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n inject,\n Renderer2,\n computed,\n viewChild,\n signal,\n contentChild,\n AfterContentChecked,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { PopoverTriggerDirective } from \"./popover-trigger/popover-trigger.directive\";\nimport { getFocusableElements } from \"../../../utils/elements.util\";\nimport { PopoverContentComponent } from \"./popover-content/popover-content.component\";\n\nexport type PopoverPosition = `${NgxFloatUiPlacements}`;\n\n@Component({\n standalone: true,\n selector: \"tedi-popover\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./popover.component.html\",\n styleUrl: \"./popover.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverComponent implements AfterContentChecked {\n /**\n * The position of the popover relative to the trigger element.\n * @default top\n */\n position = input<PopoverPosition>(\"top\");\n /**\n * Is dismissible by clicking outside of content?\n * @default true\n */\n dismissible = input(true);\n /**\n * Does popover content hide on scroll?\n * @default false\n */\n hideOnScroll = input(false);\n /**\n * Does popover have illustrative border on the arrow side?\n * @default false\n */\n withBorder = input(false);\n /**\n * Should show arrow?\n */\n withArrow = input(true);\n /**\n * Lock scrolling on rest of the page?\n * @default false\n */\n lockScroll = input(false);\n /** Delay time (in ms) for closing popover when not hovering trigger or content.\n * @default 100\n */\n readonly timeoutDelay = input(100);\n\n private readonly document = inject(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n\n readonly floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n readonly popoverTrigger = contentChild.required(PopoverTriggerDirective);\n private readonly popoverContent = contentChild.required(\n PopoverContentComponent,\n );\n\n readonly containerId = signal(\"\");\n readonly isContentHovered = signal(false);\n\n hideTimeout?: ReturnType<typeof setTimeout>;\n private keydownListener?: () => void;\n private scrollListener?: () => void;\n private focusinListener?: () => void;\n private mousedownListener?: () => void;\n\n ngAfterContentChecked() {\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container-popover\",\n );\n\n if (container) {\n const labelledBy = this.popoverContent().title()\n ? this.popoverContent().titleId\n : container.id + \"_trigger\";\n container.setAttribute(\"tabindex\", \"-1\");\n container.setAttribute(\"aria-labelledby\", labelledBy);\n this.containerId.set(container.id);\n }\n }\n\n showPopover() {\n if (this.floatUiComponent().state) return;\n\n clearTimeout(this.hideTimeout);\n this.floatUiComponent().show();\n\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container-popover\",\n );\n\n if (this.lockScroll()) {\n this.renderer.setStyle(this.document.body, \"overflow\", \"hidden\");\n }\n\n if (container) {\n setTimeout(() => container.focus({ preventScroll: true }));\n this.setupKeyboardNavigation(container);\n }\n\n if (this.hideOnScroll()) {\n this.setupScrollListener();\n }\n\n if (this.dismissible()) {\n this.setupDismissListeners();\n }\n }\n\n hidePopover(focusTrigger?: boolean) {\n if (!this.floatUiComponent().state) return;\n\n this.cleanupKeyboardNavigation();\n this.cleanupScrollListener();\n this.cleanupDismissListeners();\n this.floatUiComponent().hide();\n\n if (this.lockScroll()) {\n this.renderer.removeStyle(this.document.body, \"overflow\");\n }\n\n if (focusTrigger) {\n this.popoverTrigger().host.nativeElement.focus({ preventScroll: true });\n }\n }\n\n togglePopover() {\n if (this.floatUiComponent().state) {\n this.hidePopover(true);\n } else {\n this.showPopover();\n }\n }\n\n readonly floatUiContainerClass = computed(() => {\n const classList = [\"float-ui-container-popover\"];\n\n if (this.withBorder()) {\n classList.push(\"float-ui-container-popover--border\");\n }\n\n if (this.withArrow()) {\n classList.push(\"float-ui-container-popover--arrow\");\n }\n\n return classList.join(\",\");\n });\n\n private setupKeyboardNavigation(container: HTMLElement) {\n this.cleanupKeyboardNavigation();\n\n this.keydownListener = this.renderer.listen(\n container,\n \"keydown\",\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && this.floatUiComponent().state) {\n e.preventDefault();\n this.hidePopover(true);\n }\n\n if (e.key === \"Tab\") {\n const focusableElements = getFocusableElements(container);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n const activeElement = this.document.activeElement as HTMLElement;\n\n if (\n !e.shiftKey &&\n (activeElement === lastElement ||\n (activeElement === container && !focusableElements.length))\n ) {\n e.preventDefault();\n this.focusElementAfterTrigger();\n } else if (\n e.shiftKey &&\n (activeElement === firstElement || activeElement === container)\n ) {\n e.preventDefault();\n this.focusElementBeforeTrigger();\n }\n }\n },\n );\n }\n\n private cleanupKeyboardNavigation() {\n if (this.keydownListener) {\n this.keydownListener();\n this.keydownListener = undefined;\n }\n }\n\n private setupScrollListener() {\n this.cleanupScrollListener();\n\n this.scrollListener = this.renderer.listen(\n this.document,\n \"scroll\",\n () => {\n if (this.floatUiComponent().state) {\n this.hidePopover(false);\n }\n },\n { capture: true, passive: true },\n );\n }\n\n private cleanupScrollListener() {\n if (this.scrollListener) {\n this.scrollListener();\n this.scrollListener = undefined;\n }\n }\n\n private setupDismissListeners() {\n this.cleanupDismissListeners();\n\n this.focusinListener = this.renderer.listen(\n this.document,\n \"focusin\",\n (e: FocusEvent) => this.handleClosePopoverEvent(e),\n );\n\n this.mousedownListener = this.renderer.listen(\n this.document,\n \"mousedown\",\n (e: MouseEvent) => this.handleClosePopoverEvent(e),\n );\n }\n\n private cleanupDismissListeners() {\n if (this.focusinListener) {\n this.focusinListener();\n this.focusinListener = undefined;\n }\n\n if (this.mousedownListener) {\n this.mousedownListener();\n this.mousedownListener = undefined;\n }\n }\n\n private focusElementAfterTrigger() {\n const focusableElements = getFocusableElements(this.document.body);\n const triggerIndex = focusableElements.indexOf(\n this.popoverTrigger().host.nativeElement,\n );\n\n if (triggerIndex !== -1 && triggerIndex < focusableElements.length - 1) {\n const nextElement = focusableElements[triggerIndex + 1];\n this.hidePopover();\n setTimeout(() => nextElement.focus());\n }\n }\n\n private focusElementBeforeTrigger() {\n const focusableElements = getFocusableElements(this.document.body);\n const triggerIndex = focusableElements.indexOf(\n this.popoverTrigger().host.nativeElement,\n );\n\n if (triggerIndex > 0) {\n const previousElement = focusableElements[triggerIndex - 1];\n this.hidePopover();\n setTimeout(() => previousElement.focus());\n }\n }\n\n private handleClosePopoverEvent(e: Event) {\n const triggerEl = this.popoverTrigger().host.nativeElement;\n const containerEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const target = e.target as HTMLElement | null;\n\n if (!target || triggerEl.contains(target) || containerEl.contains(target)) {\n return;\n }\n\n this.hidePopover(true);\n }\n}\n","<ng-content select=\"[tedi-popover-trigger]\" />\n<float-ui-content\n #floatUiComponent\n looseTrigger=\"none\"\n ariaRole=\"dialog\"\n appendTo=\"body\"\n [floatUiLoose]=\"floatUiComponent\"\n [targetElement]=\"popoverTrigger().host.nativeElement\"\n [loosePlacement]=\"position()\"\n [applyClass]=\"floatUiContainerClass()\"\n [disableAnimation]=\"true\"\n>\n <ng-content select=\"tedi-popover-content\" />\n</float-ui-content>\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from \"@angular/core\";\nimport { DropdownComponent } from \"../dropdown.component\";\n\nexport type DropdownTriggerAriaHasPopup = \"menu\" | \"listbox\" | \"true\";\n\n@Directive({\n standalone: true,\n selector: \"[tedi-dropdown-trigger]\",\n host: {\n \"[attr.id]\": \"dropdown.containerId() + '_trigger'\",\n \"[attr.aria-controls]\": \"dropdown.containerId()\",\n \"[attr.aria-expanded]\": \"dropdown.floatUiComponent().state\",\n \"[attr.aria-haspopup]\": \"'menu'\",\n \"[attr.role]\": \"isButton ? null : 'button'\",\n \"[attr.tabindex]\": \"isButton ? null : '0'\",\n },\n})\nexport class DropdownTriggerDirective {\n /** Defines the aria-haspopup attribute for the trigger, informing assistive technologies whether it opens a menu or listbox. Improves accessibility by describing the type of popup. */\n readonly ariaHaspopup = input<DropdownTriggerAriaHasPopup>(\"menu\");\n\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly dropdown = inject(DropdownComponent);\n\n get isButton(): boolean {\n return this.host.nativeElement.tagName === \"BUTTON\";\n }\n\n @HostListener(\"click\")\n onClick() {\n this.dropdown.toggleDropdown();\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeydown(event: KeyboardEvent) {\n const key = event.key;\n\n switch (key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.openAndFocusFirst();\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n this.openAndFocusLast();\n break;\n\n case \"Escape\":\n event.preventDefault();\n this.dropdown.hideDropdown();\n this.host.nativeElement.focus();\n break;\n }\n }\n\n private openAndFocusFirst() {\n if (!this.dropdown.floatUiComponent().state) {\n this.dropdown.showDropdown();\n }\n this.dropdown.focusFirstItem?.();\n }\n\n private openAndFocusLast() {\n if (!this.dropdown.floatUiComponent().state) {\n this.dropdown.showDropdown();\n }\n this.dropdown.focusLastItem?.();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownComponent } from \"../dropdown.component\";\nimport { DropdownContentComponent } from \"../dropdown-content/dropdown-content.component\";\n\n@Component({\n selector: \"li[tedi-dropdown-item]\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./dropdown-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[attr.role]\":\n \"dropdownContent.dropdownRole() === 'menu' ? 'menuitem' : 'option'\",\n \"[attr.aria-selected]\":\n \"dropdownContent.dropdownRole() === 'listbox' ? isSelected() : null\",\n \"[attr.aria-disabled]\": \"disabled() ? 'true' : null\",\n \"[tabindex]\":\n \"dropdownContent.dropdownRole() === 'menu' ? '-1' : (disabled() ? null : '-1')\",\n },\n})\nexport class DropdownItemComponent {\n /** Item value */\n readonly value = input<string>();\n\n /** Is item disabled? */\n readonly disabled = input(false);\n\n readonly host = inject<ElementRef<HTMLLIElement>>(ElementRef);\n readonly dropdown = inject(DropdownComponent);\n readonly dropdownContent = inject(DropdownContentComponent);\n\n isSelected() {\n return this.dropdown.value() === this.value();\n }\n\n focus() {\n this.host.nativeElement.focus();\n }\n\n @HostListener(\"click\")\n onClick() {\n if (this.disabled()) return;\n\n this.onItemSelect();\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeydown(event: KeyboardEvent) {\n const key = event.key;\n\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n\n switch (key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.dropdown.focusNextItem(this.host.nativeElement);\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n this.dropdown.focusPrevItem(this.host.nativeElement);\n break;\n\n case \"Home\":\n event.preventDefault();\n this.dropdown.focusFirstItem();\n break;\n\n case \"End\":\n event.preventDefault();\n this.dropdown.focusLastItem();\n break;\n\n case \"Enter\":\n case \" \":\n event.preventDefault();\n this.onItemSelect();\n break;\n\n case \"Escape\":\n event.preventDefault();\n this.dropdown.hideDropdown();\n this.dropdown.dropdownTrigger()?.host.nativeElement.focus();\n break;\n }\n }\n\n private onItemSelect() {\n if (this.dropdownContent.dropdownRole() === \"listbox\") {\n this.dropdown.value.set(this.value());\n }\n\n this.dropdown.hideDropdown();\n this.dropdown.dropdownTrigger()?.host.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownItemComponent } from \"../dropdown-item/dropdown-item.component\";\nimport { DropdownComponent } from \"../dropdown.component\";\n\nexport type DropdownRole = \"menu\" | \"listbox\";\n\n@Component({\n selector: \"tedi-dropdown-content\",\n standalone: true,\n templateUrl: \"./dropdown-content.component.html\",\n styleUrl: \"./dropdown-content.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: \"presentation\",\n \"[attr.aria-labelledby]\": \"dropdown.containerId() + '_trigger'\",\n },\n})\nexport class DropdownContentComponent {\n /**\n * Role for content, use listbox for list and menu for actions\n * @default menu\n */\n readonly dropdownRole = input<DropdownRole>(\"menu\");\n\n readonly dropdown = inject(DropdownComponent);\n readonly items = contentChildren(DropdownItemComponent);\n}\n","<ng-content />\n<ul [attr.role]=\"dropdownRole()\">\n <ng-content select=\"li[tedi-dropdown-item]\" />\n</ul>\n","import {\n Component,\n input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n viewChild,\n contentChild,\n signal,\n AfterContentChecked,\n OnDestroy,\n inject,\n PLATFORM_ID,\n model,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { DropdownTriggerDirective } from \"./dropdown-trigger/dropdown-trigger.directive\";\nimport { DropdownContentComponent } from \"./dropdown-content/dropdown-content.component\";\nimport { isPlatformBrowser } from \"@angular/common\";\n\nexport type DropdownPosition = `${NgxFloatUiPlacements}`;\n\n@Component({\n standalone: true,\n selector: \"tedi-dropdown\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent implements AfterContentChecked, OnDestroy {\n /** Current value of dropdown (used with listbox) */\n readonly value = model<string>();\n\n /**\n * The position of the dropdown relative to the trigger element.\n * @default bottom-start\n */\n readonly position = input<DropdownPosition>(\"bottom-start\");\n\n /**\n * Should position to opposite direction when overflowing screen?\n * @default true\n */\n readonly preventOverflow = input(true);\n\n /**\n * Append floating element to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger element.\n * @default \"\"\n */\n readonly appendTo = input(\"\");\n\n readonly dropdownTrigger = contentChild.required(DropdownTriggerDirective);\n readonly dropdownContent = contentChild.required(DropdownContentComponent);\n readonly floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n\n private readonly activeIndex = signal<number | null>(null);\n readonly containerId = signal(\"\");\n readonly isContentHovered = signal(false);\n readonly floatUiDisplay = signal<\"inline\" | \"block\">(\"inline\");\n\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n document.addEventListener(\"pointerdown\", this.handleOutsideClick, true);\n }\n }\n\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener(\n \"pointerdown\",\n this.handleOutsideClick,\n true,\n );\n }\n }\n\n ngAfterContentChecked(): void {\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container\",\n );\n\n if (container) {\n container.setAttribute(\"tabindex\", \"-1\");\n container.setAttribute(\"aria-labelledby\", container.id + \"_trigger\");\n this.containerId.set(container.id);\n }\n }\n\n showDropdown() {\n if (this.floatUiComponent().state) return;\n\n this.floatUiComponent().show();\n this.floatUiDisplay.set(\"block\");\n this.setActiveToSelectedOrFirst();\n\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const triggerWidth = this.dropdownTrigger()?.host.nativeElement.offsetWidth;\n\n if (triggerWidth) {\n floatUiEl.style.setProperty(\n \"--_tedi-dropdown-trigger-width\",\n `${triggerWidth}px`,\n );\n }\n\n setTimeout(() => this.focusActiveItem());\n }\n\n hideDropdown() {\n if (this.floatUiComponent().state) {\n this.floatUiComponent().hide();\n this.floatUiDisplay.set(\"inline\");\n this.activeIndex.set(null);\n this.updateTabindexes();\n }\n }\n\n toggleDropdown() {\n if (this.floatUiComponent().state) {\n this.hideDropdown();\n } else {\n this.showDropdown();\n }\n }\n\n handleOutsideClick = (event: Event) => {\n if (!this.floatUiComponent().state) return;\n\n const target = event.target as HTMLElement;\n\n const triggerEl = this.dropdownTrigger().host.nativeElement;\n const contentEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n\n const clickedInside =\n triggerEl.contains(target) || contentEl.contains(target);\n\n if (!clickedInside) {\n this.hideDropdown();\n triggerEl.focus();\n }\n };\n\n focusFirstItem() {\n const items = this.dropdownContent().items();\n const index = items.findIndex((item) => !item.disabled());\n\n if (index !== -1) {\n this.activeIndex.set(index);\n this.updateTabindexes();\n items[index].focus();\n }\n }\n\n focusLastItem() {\n const items = this.dropdownContent().items();\n\n for (let i = items.length - 1; i >= 0; i--) {\n if (!items[i].disabled()) {\n this.activeIndex.set(i);\n this.updateTabindexes();\n items[i].focus();\n return;\n }\n }\n }\n\n setActiveToSelectedOrFirst() {\n const items = this.dropdownContent().items();\n const selectedIndex = items.findIndex(\n (item) => item.value() === this.value(),\n );\n\n if (selectedIndex !== -1 && !items[selectedIndex].disabled()) {\n this.activeIndex.set(selectedIndex);\n this.updateTabindexes();\n return;\n }\n\n const index = items.findIndex((item) => !item.disabled());\n\n if (index !== -1) {\n this.activeIndex.set(index);\n this.updateTabindexes();\n }\n }\n\n focusActiveItem() {\n const index = this.activeIndex();\n if (index == null) return;\n\n const items = this.dropdownContent().items();\n if (!items[index]) return;\n\n const el = items[index].host.nativeElement;\n el.focus();\n el.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n\n focusNextItem(fromEl: HTMLLIElement) {\n const fromIndex = this.findIndexByElement(fromEl);\n if (fromIndex === -1) return;\n\n const nextIndex = this.getNextEnabledIndex(fromIndex);\n if (nextIndex == null) return;\n\n const items = this.dropdownContent().items();\n this.activeIndex.set(nextIndex);\n this.updateTabindexes();\n items[nextIndex].focus();\n }\n\n focusPrevItem(fromEl: HTMLLIElement) {\n const fromIndex = this.findIndexByElement(fromEl);\n if (fromIndex === -1) return;\n\n const prevIndex = this.getPrevEnabledIndex(fromIndex);\n if (prevIndex == null) return;\n\n const items = this.dropdownContent().items();\n this.activeIndex.set(prevIndex);\n this.updateTabindexes();\n items[prevIndex].focus();\n }\n\n updateTabindexes() {\n const items = this.dropdownContent().items();\n const role = this.dropdownContent().dropdownRole();\n const active = this.activeIndex();\n\n items.forEach((item, i) => {\n const el = item.host.nativeElement;\n\n if (i === active && !item.disabled()) {\n el.setAttribute(\"tabindex\", \"0\");\n } else {\n if (role === \"listbox\" && item.disabled()) {\n el.removeAttribute(\"tabindex\");\n } else {\n el.setAttribute(\"tabindex\", \"-1\");\n }\n }\n });\n }\n\n private findIndexByElement(el: HTMLLIElement): number {\n return this.dropdownContent()\n .items()\n .findIndex((item) => item.host.nativeElement === el);\n }\n\n private getNextEnabledIndex(fromIndex: number): number | null {\n const items = this.dropdownContent().items();\n\n for (let i = fromIndex + 1; i < items.length; i++) {\n if (!items[i].disabled()) return i;\n }\n\n return null;\n }\n\n private getPrevEnabledIndex(fromIndex: number): number | null {\n const items = this.dropdownContent().items();\n\n for (let i = fromIndex - 1; i >= 0; i--) {\n if (!items[i].disabled()) return i;\n }\n\n return null;\n }\n}\n","<div\n applyClass=\"float-ui-container-dropdown\"\n style=\"display: contents\"\n looseTrigger=\"none\"\n ariaRole=\"presentation\"\n [hideOnClickOutside]=\"true\"\n [floatUiLoose]=\"floatUiComponent\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\n [disableAnimation]=\"true\"\n [targetElement]=\"dropdownTrigger().host.nativeElement\"\n [appendTo]=\"appendTo()\"\n>\n <ng-content select=\"[tedi-dropdown-trigger]\" />\n</div>\n<float-ui-content #floatUiComponent [style.display]=\"floatUiDisplay()\">\n <ng-content select=\"tedi-dropdown-content\" />\n</float-ui-content>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { DropdownComponent } from \"../../../overlay/dropdown/dropdown.component\";\nimport { DropdownTriggerDirective } from \"../../../overlay/dropdown/dropdown-trigger/dropdown-trigger.directive\";\nimport { DropdownContentComponent } from \"../../../overlay/dropdown/dropdown-content/dropdown-content.component\";\nimport { DropdownItemComponent } from \"../../../overlay/dropdown/dropdown-item/dropdown-item.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\nimport { DatePickerSelectorMode, DatePickerView } from \"../date-picker.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-header\",\n templateUrl: \"./date-picker-header.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n IconComponent,\n DropdownComponent,\n DropdownTriggerDirective,\n DropdownContentComponent,\n DropdownItemComponent,\n ],\n})\nexport class DatePickerHeaderComponent {\n /** Unique ID for ARIA controls */\n readonly uniqueId = input.required<string>();\n\n /** Current view mode */\n readonly currentView = input.required<DatePickerView>();\n\n /** Currently displayed month */\n readonly month = input.required<Date>();\n\n /** Month selector mode */\n readonly monthMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Year selector mode */\n readonly yearMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Whether to show navigation buttons */\n readonly showNavigation = input(true);\n\n /** Whether previous month navigation is enabled */\n readonly canGoPrev = input(true);\n\n /** Whether next month navigation is enabled */\n readonly canGoNext = input(true);\n\n /** Selected year for display */\n readonly selectedYear = input.required<number>();\n\n /** List of available years for dropdown */\n readonly years = input.required<number[]>();\n\n /** Paged years for year grid navigation */\n readonly pagedYears = input.required<number[]>();\n\n /** Whether there's a previous year page */\n readonly hasPrevYearPage = input(true);\n\n /** Whether there's a next year page */\n readonly hasNextYearPage = input(true);\n\n /** Set of disabled month indices (0-11) */\n readonly disabledMonths = input<Set<number>>(new Set());\n\n /** Set of disabled years */\n readonly disabledYears = input<Set<number>>(new Set());\n\n readonly prevMonth = output<void>();\n readonly nextMonth = output<void>();\n readonly monthSelect = output<string>();\n readonly yearSelect = output<string>();\n readonly monthClick = output<void>();\n readonly yearClick = output<void>();\n readonly prevYearPage = output<void>();\n readonly nextYearPage = output<void>();\n\n readonly translationService = inject(TediTranslationService);\n\n readonly monthNames = [\n this.translationService.track(\"date-picker.january\"),\n this.translationService.track(\"date-picker.february\"),\n this.translationService.track(\"date-picker.march\"),\n this.translationService.track(\"date-picker.april\"),\n this.translationService.track(\"date-picker.may\"),\n this.translationService.track(\"date-picker.june\"),\n this.translationService.track(\"date-picker.july\"),\n this.translationService.track(\"date-picker.august\"),\n this.translationService.track(\"date-picker.september\"),\n this.translationService.track(\"date-picker.october\"),\n this.translationService.track(\"date-picker.november\"),\n this.translationService.track(\"date-picker.december\"),\n ];\n\n onPrevMonth() {\n this.prevMonth.emit();\n }\n\n onNextMonth() {\n this.nextMonth.emit();\n }\n\n onMonthSelect(value?: string) {\n if (value) this.monthSelect.emit(value);\n }\n\n onYearSelect(value?: string) {\n if (value) this.yearSelect.emit(value);\n }\n\n onMonthClick() {\n this.monthClick.emit();\n }\n\n onYearClick() {\n this.yearClick.emit();\n }\n\n onPrevYearPage() {\n this.prevYearPage.emit();\n }\n\n onNextYearPage() {\n this.nextYearPage.emit();\n }\n}\n","<div class=\"tedi-date-picker__header\">\n @if (currentView() === \"calendar-grid\") {\n @if (showNavigation()) {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.go-prev-month')()\"\n [attr.aria-controls]=\"uniqueId()\"\n (click)=\"onPrevMonth()\"\n [disabled]=\"!canGoPrev()\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n }\n\n <div class=\"tedi-date-picker__controls\">\n @if (monthMode() === \"dropdown\") {\n <tedi-dropdown\n [value]=\"month().getMonth().toString()\"\n (valueChange)=\"onMonthSelect($event)\"\n >\n <button\n tedi-dropdown-trigger\n ariaHaspopup=\"listbox\"\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-month')()\"\n >\n {{ monthNames[month().getMonth()]() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n <tedi-dropdown-content\n dropdownRole=\"listbox\"\n class=\"tedi-date-picker__dropdown-content tedi-date-picker__dropdown-content--month\"\n >\n @for (monthName of monthNames; track i; let i = $index) {\n <li\n tedi-dropdown-item\n [value]=\"i.toString()\"\n [disabled]=\"disabledMonths().has(i)\"\n >\n {{ monthName() }}\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n } @else if (monthMode() === \"grid\") {\n <button\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-month')()\"\n (click)=\"onMonthClick()\"\n >\n {{ monthNames[month().getMonth()]() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n } @else if (monthMode() === \"label\") {\n <div class=\"tedi-date-picker__label\">\n {{ monthNames[month().getMonth()]() }}\n </div>\n }\n\n @if (yearMode() === \"dropdown\") {\n <tedi-dropdown\n position=\"bottom-end\"\n [value]=\"selectedYear().toString()\"\n (valueChange)=\"onYearSelect($event)\"\n >\n <button\n tedi-dropdown-trigger\n ariaHaspopup=\"listbox\"\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-year')()\"\n >\n {{ selectedYear() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n <tedi-dropdown-content\n dropdownRole=\"listbox\"\n class=\"tedi-date-picker__dropdown-content tedi-date-picker__dropdown-content--year\"\n >\n @for (year of years(); track year) {\n <li\n tedi-dropdown-item\n [value]=\"year.toString()\"\n [disabled]=\"disabledYears().has(year)\"\n >\n {{ year }}\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n } @else if (yearMode() === \"grid\") {\n <button\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-year')()\"\n (click)=\"onYearClick()\"\n >\n {{ selectedYear() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n } @else if (yearMode() === \"label\") {\n <div class=\"tedi-date-picker__label\">\n {{ selectedYear() }}\n </div>\n }\n </div>\n\n @if (showNavigation()) {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.go-next-month')()\"\n [attr.aria-controls]=\"uniqueId()\"\n (click)=\"onNextMonth()\"\n [disabled]=\"!canGoNext()\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n }\n } @else if (currentView() === \"month-grid\") {\n <div class=\"tedi-date-picker__controls\">\n {{ monthNames[month().getMonth()]() }}\n </div>\n } @else if (currentView() === \"year-grid\") {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.previous-years')()\"\n (click)=\"onPrevYearPage()\"\n [disabled]=\"!hasPrevYearPage()\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n <div class=\"tedi-date-picker__controls\">{{ selectedYear() }}</div>\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.next-years')()\"\n (click)=\"onNextYearPage()\"\n [disabled]=\"!hasNextYearPage()\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n viewChild,\n ElementRef,\n inject,\n} from \"@angular/core\";\nimport { DatePickerDay } from \"../date-picker.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-calendar-grid\",\n templateUrl: \"./date-picker-calendar-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerCalendarGridComponent {\n private readonly gridElement =\n viewChild<ElementRef<HTMLDivElement>>(\"gridElement\");\n /** Grid element unique ID for ARIA */\n readonly gridId = input.required<string>();\n\n /** Week rows containing day data */\n readonly weekRows = input.required<DatePickerDay[][]>();\n\n /** Week numbers for each row */\n readonly weekNumbers = input.required<number[]>();\n\n /** Whether to show week numbers */\n readonly showWeekNumbers = input(false);\n\n /** Currently active date for keyboard navigation */\n readonly activeDate = input.required<Date | null>();\n\n /** Currently selected date */\n readonly selected = input<Date | null>(null);\n\n /** Today's date */\n readonly today = input.required<Date>();\n\n /** Emits when a day is selected */\n readonly daySelect = output<DatePickerDay>();\n\n /** Emits on day keydown for keyboard navigation */\n readonly dayKeydown = output<{ event: KeyboardEvent; date: Date }>();\n\n private readonly translationService = inject(TediTranslationService);\n\n readonly weekDays = [\n this.translationService.track(\"date-picker.monday-short\"),\n this.translationService.track(\"date-picker.tuesday-short\"),\n this.translationService.track(\"date-picker.wednesday-short\"),\n this.translationService.track(\"date-picker.thursday-short\"),\n this.translationService.track(\"date-picker.friday-short\"),\n this.translationService.track(\"date-picker.saturday-short\"),\n this.translationService.track(\"date-picker.sunday-short\"),\n ];\n\n isSelected(date: Date): boolean {\n const sel = this.selected();\n return !!sel && date.toDateString() === sel.toDateString();\n }\n\n isToday(date: Date): boolean {\n return date.toDateString() === this.today().toDateString();\n }\n\n getTabIndex(date: Date): number {\n const active = this.activeDate();\n return active && date.toDateString() === active.toDateString() ? 0 : -1;\n }\n\n onDayClick(day: DatePickerDay) {\n this.daySelect.emit(day);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date) {\n this.dayKeydown.emit({ event, date });\n }\n\n /** Focus a specific date in the grid */\n focusDate(date: Date) {\n const container = this.gridElement()?.nativeElement;\n if (!container) return;\n\n const key = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n ).getTime();\n\n const btn = container.querySelector<HTMLButtonElement>(\n `[data-date-key=\"${key}\"]`,\n );\n\n if (btn && document.activeElement !== btn) {\n btn.focus({ preventScroll: true });\n }\n }\n}\n","<div\n class=\"tedi-date-picker__weekdays\"\n [class.tedi-date-picker__weekdays--numbered]=\"showWeekNumbers()\"\n role=\"row\"\n>\n @if (showWeekNumbers()) {\n <div role=\"columnheader\"></div>\n }\n @for (wd of weekDays; track $index) {\n <div class=\"tedi-date-picker__weekday\" role=\"columnheader\">\n {{ wd() }}\n </div>\n }\n</div>\n\n<div\n #gridElement\n class=\"tedi-date-picker__grid\"\n role=\"grid\"\n [attr.id]=\"gridId()\"\n aria-readonly=\"true\"\n>\n @for (week of weekRows(); track row; let row = $index) {\n <div\n class=\"tedi-date-picker__row\"\n [class.tedi-date-picker__row--numbered]=\"showWeekNumbers()\"\n role=\"row\"\n >\n @if (showWeekNumbers()) {\n <div\n class=\"tedi-date-picker__weeknumber\"\n role=\"gridcell\"\n aria-readonly=\"true\"\n >\n {{ weekNumbers()[row] }}\n </div>\n }\n @for (day of week; track day.date) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"tedi-date-picker__day\"\n [class.tedi-date-picker__day--other-month]=\"!day.inCurrentMonth\"\n [class.tedi-date-picker__day--selected]=\"isSelected(day.date)\"\n [disabled]=\"day.disabled\"\n [attr.aria-selected]=\"isSelected(day.date) ? 'true' : null\"\n [attr.aria-disabled]=\"day.disabled ? 'true' : null\"\n [attr.aria-current]=\"isToday(day.date) ? 'date' : null\"\n [attr.tabindex]=\"getTabIndex(day.date)\"\n [attr.data-date-key]=\"day.date.getTime()\"\n (keydown)=\"onDayKeydown($event, day.date)\"\n (click)=\"onDayClick(day)\"\n >\n @if (isToday(day.date)) {\n <div class=\"tedi-date-picker__today\">\n {{ day.date.getDate() }}\n </div>\n } @else {\n {{ day.date.getDate() }}\n }\n </button>\n }\n </div>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from \"@angular/core\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-month-grid\",\n templateUrl: \"./date-picker-month-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerMonthGridComponent {\n /** Currently displayed month (0-11) */\n readonly currentMonth = input.required<Date>();\n\n /** Emits selected month index (0-11) */\n readonly monthSelect = output<number>();\n\n private readonly translationService = inject(TediTranslationService);\n\n readonly monthShortNames = [\n this.translationService.track(\"date-picker.january-short\"),\n this.translationService.track(\"date-picker.february-short\"),\n this.translationService.track(\"date-picker.march-short\"),\n this.translationService.track(\"date-picker.april-short\"),\n this.translationService.track(\"date-picker.may-short\"),\n this.translationService.track(\"date-picker.june-short\"),\n this.translationService.track(\"date-picker.july-short\"),\n this.translationService.track(\"date-picker.august-short\"),\n this.translationService.track(\"date-picker.september-short\"),\n this.translationService.track(\"date-picker.october-short\"),\n this.translationService.track(\"date-picker.november-short\"),\n this.translationService.track(\"date-picker.december-short\"),\n ];\n\n onMonthClick(index: number) {\n this.monthSelect.emit(index);\n }\n}\n","<div class=\"tedi-date-picker__month-year-grid\" role=\"group\">\n @for (monthName of monthShortNames; track i; let i = $index) {\n <button\n type=\"button\"\n class=\"tedi-date-picker__month-year-button\"\n [class.tedi-date-picker__month-year-button--selected]=\"\n currentMonth().getMonth() === i\n \"\n (click)=\"onMonthClick(i)\"\n >\n {{ monthName() }}\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-year-grid\",\n templateUrl: \"./date-picker-year-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerYearGridComponent {\n /** Years to display in current page */\n readonly pagedYears = input.required<number[]>();\n\n /** Currently selected year */\n readonly selectedYear = input.required<number>();\n\n /** Emits selected year */\n readonly yearSelect = output<number>();\n\n onYearClick(year: number) {\n this.yearSelect.emit(year);\n }\n}\n","<div class=\"tedi-date-picker__month-year-grid\" role=\"group\">\n @for (year of pagedYears(); track year) {\n <button\n type=\"button\"\n class=\"tedi-date-picker__month-year-button\"\n [class.tedi-date-picker__month-year-button--selected]=\"selectedYear() === year\"\n (click)=\"onYearClick(year)\"\n >\n {{ year }}\n </button>\n }\n</div>\n","/**\n * Formats a Date object to dd.MM.yyyy string format.\n */\nexport function formatDate(date: Date): string {\n const d = String(date.getDate()).padStart(2, \"0\");\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const y = date.getFullYear();\n return `${d}.${m}.${y}`;\n}\n\n/**\n * Parses a dd.MM.yyyy string to a Date object.\n * Returns null if the string is invalid.\n */\nexport function parseDate(str: string): Date | null {\n const parts = str.trim().split(\".\");\n if (parts.length !== 3) return null;\n\n const [dd, mm, yyyy] = parts.map(Number);\n if (!dd || !mm || !yyyy) return null;\n\n const date = new Date(yyyy, mm - 1, dd);\n\n if (\n date.getFullYear() !== yyyy ||\n date.getMonth() !== mm - 1 ||\n date.getDate() !== dd\n ) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Checks if two dates represent the same calendar day.\n */\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear()\n );\n}\n\n/**\n * Checks if date a is before date b.\n */\nexport function isBeforeDay(a: Date, b: Date): boolean {\n if (a.getFullYear() !== b.getFullYear()) {\n return a.getFullYear() < b.getFullYear();\n }\n if (a.getMonth() !== b.getMonth()) {\n return a.getMonth() < b.getMonth();\n }\n return a.getDate() < b.getDate();\n}\n\n/**\n * Checks if date a is after date b.\n */\nexport function isAfterDay(a: Date, b: Date): boolean {\n if (a.getFullYear() !== b.getFullYear()) {\n return a.getFullYear() > b.getFullYear();\n }\n if (a.getMonth() !== b.getMonth()) {\n return a.getMonth() > b.getMonth();\n }\n return a.getDate() > b.getDate();\n}\n\n/**\n * Returns the ISO week number for a given date.\n */\nexport function getISOWeek(date: Date): number {\n const target = new Date(date);\n target.setHours(0, 0, 0, 0);\n\n const day = target.getDay();\n const isoDay = day === 0 ? 7 : day;\n\n target.setDate(target.getDate() + (4 - isoDay));\n const yearStart = new Date(target.getFullYear(), 0, 1);\n\n const diffInDays = Math.floor(\n (target.getTime() - yearStart.getTime()) / 86400000,\n );\n return Math.floor(diffInDays / 7) + 1;\n}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n computed,\n model,\n input,\n inject,\n signal,\n OnInit,\n viewChild,\n ElementRef,\n effect,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\nimport { SeparatorComponent } from \"../../helpers/separator/separator.component\";\nimport { PopoverComponent } from \"../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../overlay/popover/popover-content/popover-content.component\";\nimport { PopoverTriggerDirective } from \"../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { DatePickerHeaderComponent } from \"./date-picker-header/date-picker-header.component\";\nimport { DatePickerCalendarGridComponent } from \"./date-picker-calendar-grid/date-picker-calendar-grid.component\";\nimport { DatePickerMonthGridComponent } from \"./date-picker-month-grid/date-picker-month-grid.component\";\nimport { DatePickerYearGridComponent } from \"./date-picker-year-grid/date-picker-year-grid.component\";\nimport { formatDate, parseDate, isSameDay, isBeforeDay, isAfterDay, getISOWeek } from \"../../../utils/date.util\";\n\nexport interface DatePickerDay {\n date: Date;\n disabled: boolean;\n inCurrentMonth: boolean;\n}\n\nexport type DatePickerInputState = \"default\" | \"error\" | \"valid\";\nexport type DatePickerInputSize = \"default\" | \"small\";\nexport type DatePickerSelectorMode = \"none\" | \"label\" | \"grid\" | \"dropdown\";\nexport type DatePickerView = \"month-grid\" | \"year-grid\" | \"calendar-grid\";\n\nexport type DatePickerMatcher =\n | Date\n | Date[]\n | { before: Date }\n | { after: Date }\n | { from: Date; to?: Date }\n | ((date: Date) => boolean);\n\nlet datePickerId = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker\",\n templateUrl: \"./date-picker.component.html\",\n styleUrl: \"./date-picker.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n IconComponent,\n ClosingButtonComponent,\n SeparatorComponent,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n DatePickerHeaderComponent,\n DatePickerCalendarGridComponent,\n DatePickerMonthGridComponent,\n DatePickerYearGridComponent,\n ],\n})\nexport class DatePickerComponent implements OnInit {\n readonly today = new Date();\n readonly uniqueId = `tedi-date-picker-id-${datePickerId++}`;\n\n /** Selected date */\n readonly selected = model<Date | null>(null);\n\n /** Currently shown month */\n readonly month = model(this.today);\n\n /** Disabled dates that cannot be selected. */\n readonly disabled = input<DatePickerMatcher | DatePickerMatcher[] | null>(\n null,\n );\n\n /** Shows or hides the calendar navigation controls (previous/next month buttons). */\n readonly showNavigation = input(true);\n\n /** Month selector mode: none | label | grid | dropdown */\n readonly monthMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Year selector mode: none | label | grid | dropdown */\n readonly yearMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Explicit starting year for the year dropdown list. If null, a dynamic fallback range (current year - 100) is used. */\n readonly startYear = input<number | null>(null);\n\n /** Explicit ending year for the year dropdown list. If null, a dynamic fallback range (current year + 20) is used. */\n readonly endYear = input<number | null>(null);\n\n /** Input id */\n readonly inputId = input<string>();\n\n /** Input placeholder */\n readonly inputPlaceholder = input<string>();\n\n /** Input state */\n readonly inputState = input<DatePickerInputState>(\"default\");\n\n /** Input size */\n readonly inputSize = input<DatePickerInputSize>(\"default\");\n\n /** Is input disabled? */\n readonly inputDisabled = input(false);\n\n /** Is manual typing into input allowed? */\n readonly allowManualInput = input(true);\n\n /** Should show week numbers before calendar grid? */\n readonly showWeekNumbers = input(false);\n\n /** Close calendar popover after date selection, default true */\n readonly closeOnSelect = input(true);\n\n /** Current view of datepicker (months grid, years grid or calendar grid) */\n readonly currentView = signal<DatePickerView>(\"calendar-grid\");\n\n /** Shown input value */\n readonly inputValue = signal(\"\");\n\n /** Keyboard active date (what receives keyboard focus) */\n readonly activeDate = signal<Date | null>(null);\n\n private readonly YEARS_PER_PAGE = 12;\n readonly yearPageIndex = signal(0);\n readonly selectedYear = computed(() => this.month().getFullYear());\n\n readonly years = computed(() => {\n const current = this.today.getFullYear();\n\n const start = this.startYear() ?? current - 100;\n const end = this.endYear() ?? current + 20;\n\n const safeStart = Math.min(start, end);\n const safeEnd = Math.max(start, end);\n\n return Array.from(\n { length: safeEnd - safeStart + 1 },\n (_, i) => safeStart + i,\n );\n });\n\n readonly pagedYears = computed(() => {\n const start = this.yearPageIndex() * this.YEARS_PER_PAGE;\n return this.years().slice(start, start + this.YEARS_PER_PAGE);\n });\n\n readonly hasPrevYearPage = computed(() => {\n return this.yearPageIndex() > 0;\n });\n\n readonly hasNextYearPage = computed(() => {\n const all = this.years().length;\n return (this.yearPageIndex() + 1) * this.YEARS_PER_PAGE < all;\n });\n\n readonly disabledMonths = computed(() => {\n const year = this.month().getFullYear();\n const disabled = new Set<number>();\n\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) === null) {\n disabled.add(month);\n }\n }\n\n return disabled;\n });\n\n readonly disabledYears = computed(() => {\n const disabled = new Set<number>();\n\n for (const year of this.years()) {\n if (this.isYearDisabled(year)) {\n disabled.add(year);\n }\n }\n\n return disabled;\n });\n\n readonly weekRows = computed(() => {\n const cells = this.days();\n const rows: DatePickerDay[][] = [];\n\n for (let i = 0; i < cells.length; i += 7) {\n rows.push(cells.slice(i, i + 7));\n }\n\n return rows;\n });\n\n readonly weekNumbers = computed(() => {\n return this.weekRows().map((week) => getISOWeek(week[0].date));\n });\n\n readonly canGoPrev = computed(() => {\n return this.findPrevEnabledMonth() !== null;\n });\n\n readonly canGoNext = computed(() => {\n return this.findNextEnabledMonth() !== null;\n });\n\n readonly days = computed<DatePickerDay[]>(() => {\n const month = this.month();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n const firstOfMonth = new Date(year, monthIndex, 1);\n const daysInMonth = new Date(year, monthIndex + 1, 0).getDate();\n const firstWeekday = (firstOfMonth.getDay() + 6) % 7;\n\n const trailing = (7 - ((firstWeekday + daysInMonth) % 7)) % 7;\n const cells: DatePickerDay[] = [];\n\n /** Previous month days */\n for (let i = 0; i < firstWeekday; i++) {\n const date = new Date(year, monthIndex, i - firstWeekday + 1);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: false,\n disabled,\n });\n }\n\n /** Current month days */\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, monthIndex, day);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: true,\n disabled,\n });\n }\n\n /** Next month days */\n const lastDate = new Date(year, monthIndex, daysInMonth);\n\n for (let i = 1; i <= trailing; i++) {\n const date = new Date(lastDate);\n date.setDate(lastDate.getDate() + i);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: false,\n disabled,\n });\n }\n\n return cells;\n });\n\n readonly inputElement =\n viewChild.required<ElementRef<HTMLInputElement>>(\"inputElement\");\n readonly calendarGrid = viewChild<DatePickerCalendarGridComponent>(\"gridElement\");\n readonly popover = viewChild.required(PopoverComponent);\n\n readonly translationService = inject(TediTranslationService);\n\n constructor() {\n effect(() => {\n const selected = this.selected();\n this.inputValue.set(selected ? formatDate(selected) : \"\");\n });\n }\n\n ngOnInit(): void {\n let active = this.selected() ?? this.today;\n\n // If the initial active date is disabled, find the first enabled date\n if (this.isDisabled(active)) {\n const firstEnabled = this.getFirstEnabledDayOfMonth(\n active.getFullYear(),\n active.getMonth(),\n );\n if (firstEnabled) {\n active = firstEnabled;\n }\n }\n\n this.activeDate.set(active);\n }\n\n getTabIndex(date: Date): number {\n const active = this.activeDate();\n return active && date.toDateString() === active.toDateString() ? 0 : -1;\n }\n\n prevMonth() {\n const prev = this.findPrevEnabledMonth();\n if (prev) {\n this.month.set(prev);\n this.updateActiveDateForMonth(prev.getFullYear(), prev.getMonth());\n }\n }\n\n nextMonth() {\n const next = this.findNextEnabledMonth();\n if (next) {\n this.month.set(next);\n this.updateActiveDateForMonth(next.getFullYear(), next.getMonth());\n }\n }\n\n prevYearPage() {\n if (this.hasPrevYearPage()) {\n this.yearPageIndex.set(this.yearPageIndex() - 1);\n }\n }\n\n nextYearPage() {\n if (this.hasNextYearPage()) {\n this.yearPageIndex.set(this.yearPageIndex() + 1);\n }\n }\n\n selectDay(day: DatePickerDay) {\n if (day.disabled) return;\n\n this.selected.set(day.date);\n this.inputValue.set(formatDate(day.date));\n\n if (this.closeOnSelect()) {\n this.closeCalendar();\n }\n }\n\n isSelected(date: Date): boolean {\n return (\n !!this.selected() &&\n date.toDateString() === this.selected()!.toDateString()\n );\n }\n\n isToday(date: Date): boolean {\n return date.toDateString() === this.today.toDateString();\n }\n\n isDisabled(date: Date): boolean {\n const rules = this.disabled();\n if (!rules) return false;\n\n const matchers = Array.isArray(rules) ? rules : [rules];\n return matchers.some((m) => this.matches(m, date));\n }\n\n onMonthClick() {\n this.currentView.set(\"month-grid\");\n }\n\n onMonthSelect(value?: string | number) {\n if (value === undefined || value === null) return;\n\n const monthIndex = typeof value === \"number\" ? value : Number(value);\n const year = this.month().getFullYear();\n\n if (this.getFirstEnabledDayOfMonth(year, monthIndex) === null) {\n return;\n }\n\n const updated = new Date(this.month());\n updated.setMonth(monthIndex);\n this.month.set(updated);\n this.updateActiveDateForMonth(year, monthIndex);\n\n if (this.currentView() === \"month-grid\") {\n this.currentView.set(\"calendar-grid\");\n }\n }\n\n onYearClick() {\n const selected = this.month().getFullYear();\n const index = this.years().indexOf(selected);\n this.yearPageIndex.set(Math.floor(index / this.YEARS_PER_PAGE));\n this.currentView.set(\"year-grid\");\n }\n\n onYearSelect(value?: string | number) {\n if (value === undefined || value === null) return;\n\n const year = typeof value === \"number\" ? value : Number(value);\n\n if (this.isYearDisabled(year)) {\n return;\n }\n\n const updated = new Date(this.month());\n updated.setFullYear(year);\n\n // If the current month is disabled in the new year, find the first enabled month\n let targetMonth = updated.getMonth();\n if (this.getFirstEnabledDayOfMonth(year, targetMonth) === null) {\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n targetMonth = month;\n updated.setMonth(month);\n break;\n }\n }\n }\n\n this.month.set(updated);\n this.updateActiveDateForMonth(year, targetMonth);\n\n if (this.currentView() === \"year-grid\") {\n this.currentView.set(\"calendar-grid\");\n }\n }\n\n onDayKeydown(event: KeyboardEvent, current: Date) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.selectDay({ date: current, disabled: false, inCurrentMonth: true });\n return;\n }\n\n if (event.key === \"Escape\") {\n this.closeCalendar();\n return;\n }\n\n const target = this.handleDayNavigation(event.key, current);\n if (target) {\n event.preventDefault();\n this.focusDate(target);\n }\n }\n\n private handleDayNavigation(key: string, current: Date): Date | null {\n const arrowSteps: Record<string, number> = {\n ArrowLeft: -1,\n ArrowRight: 1,\n ArrowUp: -7,\n ArrowDown: 7,\n };\n\n if (key in arrowSteps) {\n return this.findNextEnabledDate(current, arrowSteps[key]);\n }\n\n if (key === \"Home\") {\n const target = new Date(current);\n target.setDate(current.getDate() - ((current.getDay() + 6) % 7));\n return this.isDisabled(target)\n ? this.findNextEnabledDate(target, 1)\n : target;\n }\n\n if (key === \"End\") {\n const target = new Date(current);\n target.setDate(current.getDate() + (6 - ((current.getDay() + 6) % 7)));\n return this.isDisabled(target)\n ? this.findNextEnabledDate(target, -1)\n : target;\n }\n\n if (key === \"PageUp\") {\n const target = new Date(current);\n target.setMonth(current.getMonth() - 1);\n return this.isDisabled(target)\n ? (this.findNextEnabledDate(target, 1) ??\n this.findNextEnabledDate(target, -1))\n : target;\n }\n\n if (key === \"PageDown\") {\n const target = new Date(current);\n target.setMonth(current.getMonth() + 1);\n return this.isDisabled(target)\n ? (this.findNextEnabledDate(target, -1) ??\n this.findNextEnabledDate(target, 1))\n : target;\n }\n\n return null;\n }\n\n onCalendarKeyDown(event: KeyboardEvent) {\n if (this.currentView() !== \"calendar-grid\" && event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n\n this.currentView.set(\"calendar-grid\");\n const active = this.selected() ?? this.today;\n setTimeout(() => this.focusDate(active));\n return;\n }\n\n if (event.key === \"Tab\") {\n this.handleFocusTrap(event);\n }\n }\n\n private handleFocusTrap(event: KeyboardEvent) {\n const container = (event.target as HTMLElement).closest(\n \".tedi-date-picker__calendar\",\n );\n if (!container) return;\n\n const focusableSelector = 'button:not([disabled]):not([tabindex=\"-1\"]), [tabindex=\"0\"]:not([disabled])';\n const focusableElements = Array.from(\n container.querySelectorAll<HTMLElement>(focusableSelector),\n );\n\n if (!focusableElements.length) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n\n onInput(event: Event) {\n if (!this.allowManualInput()) return;\n\n const value = (event.target as HTMLInputElement).value;\n this.inputValue.set(value);\n\n if (value === \"\") {\n this.selected.set(null);\n }\n }\n\n onInputBlur() {\n if (!this.allowManualInput()) return;\n\n const selected = this.selected();\n const parsed = parseDate(this.inputValue());\n\n if (parsed) {\n this.selected.set(parsed);\n this.month.set(parsed);\n } else {\n this.inputValue.set(selected ? formatDate(selected) : \"\");\n }\n }\n\n onInputClick() {\n if (this.allowManualInput()) return;\n\n if (this.popover().floatUiComponent().state) {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n } else {\n this.popover().floatUiComponent().show();\n this.openCalendar();\n }\n }\n\n clearInput() {\n this.inputValue.set(\"\");\n this.selected.set(null);\n }\n\n closeCalendar() {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n }\n\n openCalendar() {\n let active = this.selected() ?? this.today;\n\n // If active date is disabled, find the first enabled date\n if (this.isDisabled(active)) {\n const currentMonth = this.month();\n const firstEnabled = this.getFirstEnabledDayOfMonth(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n );\n if (firstEnabled) {\n active = firstEnabled;\n }\n }\n\n this.activeDate.set(active);\n setTimeout(() => this.focusDate(active));\n }\n\n private focusDate(date: Date) {\n this.activeDate.set(date);\n const currentMonth = this.month();\n\n if (\n currentMonth.getFullYear() !== date.getFullYear() ||\n currentMonth.getMonth() !== date.getMonth()\n ) {\n this.month.set(new Date(date));\n }\n\n setTimeout(() => {\n this.calendarGrid()?.focusDate(date);\n });\n }\n\n private matches(m: DatePickerMatcher, date: Date): boolean {\n if (m instanceof Date) {\n return isSameDay(m, date);\n }\n\n if (Array.isArray(m)) {\n return m.some((d) => isSameDay(d, date));\n }\n\n if (typeof m === \"function\") {\n return m(date);\n }\n\n if (\"before\" in m) {\n return isBeforeDay(date, m.before);\n }\n\n if (\"after\" in m) {\n return isAfterDay(date, m.after);\n }\n\n if (\"from\" in m) {\n const { from, to } = m;\n if (to) {\n return (isSameDay(date, from) || isAfterDay(date, from)) &&\n (isSameDay(date, to) || isBeforeDay(date, to));\n }\n\n return isSameDay(date, from) || isAfterDay(date, from);\n }\n\n return false;\n }\n\n /**\n * Updates activeDate to the selected date if it's in the given month,\n * otherwise to the first enabled date in the month.\n * Needed for correct WCAG focus handling\n */\n private updateActiveDateForMonth(year: number, month: number) {\n const selected = this.selected();\n\n if (\n selected &&\n selected.getFullYear() === year &&\n selected.getMonth() === month &&\n !this.isDisabled(selected)\n ) {\n this.activeDate.set(selected);\n return;\n }\n\n const firstEnabled = this.getFirstEnabledDayOfMonth(year, month);\n if (firstEnabled) {\n this.activeDate.set(firstEnabled);\n }\n }\n\n private getFirstEnabledDayOfMonth(year: number, month: number): Date | null {\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n\n if (!this.isDisabled(date)) {\n return date;\n }\n }\n\n return null;\n }\n\n private isYearDisabled(year: number): boolean {\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return false;\n }\n }\n\n return true;\n }\n\n private findPrevEnabledMonth(): Date | null {\n const current = this.month();\n const years = this.years();\n const minYear = years.length > 0 ? years[0] : current.getFullYear() - 100;\n\n let year = current.getFullYear();\n let month = current.getMonth() - 1;\n\n while (year >= minYear) {\n if (month < 0) {\n month = 11;\n year--;\n }\n\n if (year < minYear) break;\n\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return new Date(year, month, 1);\n }\n\n month--;\n }\n\n return null;\n }\n\n private findNextEnabledMonth(): Date | null {\n const current = this.month();\n const years = this.years();\n const maxYear = years.length > 0 ? years[years.length - 1] : current.getFullYear() + 20;\n\n let year = current.getFullYear();\n let month = current.getMonth() + 1;\n\n while (year <= maxYear) {\n if (month > 11) {\n month = 0;\n year++;\n }\n\n if (year > maxYear) break;\n\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return new Date(year, month, 1);\n }\n\n month++;\n }\n\n return null;\n }\n\n /**\n * Finds the next enabled date starting from the given date, moving by the given step.\n * Returns null if no enabled date is found within a reasonable range.\n * Needed for correct WCAG arrow movement handling\n */\n private findNextEnabledDate(from: Date, step: number): Date | null {\n const maxIterations = 365;\n const target = new Date(from);\n\n for (let i = 0; i < maxIterations; i++) {\n target.setDate(target.getDate() + step);\n\n if (!this.isDisabled(target)) {\n return new Date(target);\n }\n }\n\n return null;\n }\n}\n","<input\n #inputElement\n type=\"text\"\n class=\"tedi-date-picker__input\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"dialog\"\n [class.tedi-date-picker__input--small]=\"inputSize() === 'small'\"\n [class.tedi-date-picker__input--valid]=\"inputState() === 'valid'\"\n [class.tedi-date-picker__input--error]=\"inputState() === 'error'\"\n [attr.id]=\"inputId()\"\n [attr.placeholder]=\"inputPlaceholder()\"\n [attr.aria-expanded]=\"!inputDisabled() && popover().floatUiComponent().state\"\n [attr.aria-controls]=\"uniqueId\"\n [attr.aria-readonly]=\"!allowManualInput()\"\n [readOnly]=\"!allowManualInput()\"\n [value]=\"inputValue()\"\n [disabled]=\"inputDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"onInputBlur()\"\n (click)=\"onInputClick()\"\n/>\n<div class=\"tedi-date-picker__input-buttons\">\n @if (selected()) {\n <button\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n class=\"tedi-date-picker__clear\"\n [iconSize]=\"18\"\n [attr.aria-label]=\"translationService.track('date-picker.clear-date')()\"\n [disabled]=\"inputDisabled()\"\n (click)=\"clearInput()\"\n ></button>\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n <tedi-popover\n style=\"display: flex; align-items: center\"\n position=\"bottom-end\"\n [withArrow]=\"false\"\n >\n <button\n tedi-button\n tedi-popover-trigger\n type=\"button\"\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__toggle\"\n [attr.aria-label]=\"\n translationService.track('date-picker.open-calendar')()\n \"\n [disabled]=\"inputDisabled()\"\n (click)=\"openCalendar()\"\n >\n <tedi-icon name=\"calendar_today\" size=\"inherit\" />\n </button>\n <tedi-popover-content maxWidth=\"none\" style=\"padding: 0\">\n <div\n class=\"tedi-date-picker__calendar\"\n (keydown)=\"onCalendarKeyDown($event)\"\n >\n <tedi-date-picker-header\n [uniqueId]=\"uniqueId\"\n [currentView]=\"currentView()\"\n [month]=\"month()\"\n [monthMode]=\"monthMode()\"\n [yearMode]=\"yearMode()\"\n [showNavigation]=\"showNavigation()\"\n [canGoPrev]=\"canGoPrev()\"\n [canGoNext]=\"canGoNext()\"\n [selectedYear]=\"selectedYear()\"\n [years]=\"years()\"\n [pagedYears]=\"pagedYears()\"\n [hasPrevYearPage]=\"hasPrevYearPage()\"\n [hasNextYearPage]=\"hasNextYearPage()\"\n [disabledMonths]=\"disabledMonths()\"\n [disabledYears]=\"disabledYears()\"\n (prevMonth)=\"prevMonth()\"\n (nextMonth)=\"nextMonth()\"\n (monthSelect)=\"onMonthSelect($event)\"\n (yearSelect)=\"onYearSelect($event)\"\n (monthClick)=\"onMonthClick()\"\n (yearClick)=\"onYearClick()\"\n (prevYearPage)=\"prevYearPage()\"\n (nextYearPage)=\"nextYearPage()\"\n />\n\n @if (currentView() === \"calendar-grid\") {\n <tedi-date-picker-calendar-grid\n #gridElement\n [gridId]=\"uniqueId\"\n [weekRows]=\"weekRows()\"\n [weekNumbers]=\"weekNumbers()\"\n [showWeekNumbers]=\"showWeekNumbers()\"\n [activeDate]=\"activeDate()\"\n [selected]=\"selected()\"\n [today]=\"today\"\n (daySelect)=\"selectDay($event)\"\n (dayKeydown)=\"onDayKeydown($event.event, $event.date)\"\n />\n } @else if (currentView() === \"month-grid\") {\n <tedi-date-picker-month-grid\n [currentMonth]=\"month()\"\n (monthSelect)=\"onMonthSelect($event)\"\n />\n } @else if (currentView() === \"year-grid\") {\n <tedi-date-picker-year-grid\n [pagedYears]=\"pagedYears()\"\n [selectedYear]=\"selectedYear()\"\n (yearSelect)=\"onYearSelect($event)\"\n />\n }\n </div>\n </tedi-popover-content>\n </tedi-popover>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type FeedbackTextType = \"hint\" | \"valid\" | \"error\";\nexport type FeedbackTextPosition = \"left\" | \"right\";\n\n@Component({\n selector: \"tedi-feedback-text\",\n standalone: true,\n templateUrl: \"./feedback-text.component.html\",\n styleUrl: \"./feedback-text.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"[attr.role]\": \"role()\",\n \"[attr.aria-live]\": \"ariaLive()\",\n },\n})\nexport class FeedbackTextComponent {\n /**\n * Helper text\n */\n text = input.required<string>();\n /**\n * Type of form-helper.\n * @default hint\n */\n type = input<FeedbackTextType>(\"hint\");\n /**\n * Position of the helper.\n * @default left\n */\n position = input<FeedbackTextPosition>(\"left\");\n\n role = computed(() => {\n if (this.type() === \"valid\" || this.type() === \"error\") {\n return \"alert\";\n }\n\n return undefined;\n });\n\n ariaLive = computed(() => {\n if (this.type() === \"error\" || this.type() === \"valid\") {\n return \"assertive\";\n }\n\n return \"polite\";\n });\n\n classes = computed(() => {\n return `tedi-feedback-text tedi-feedback-text--${this.type()} tedi-feedback-text--${this.position()}`;\n });\n}\n","{{ text() }}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TediTranslationPipe } from \"../../../services\";\n\nexport type LabelSize = \"small\" | \"default\";\nexport type LabelColor = \"primary\" | \"secondary\";\n\n@Component({\n selector: \"[tedi-label]\",\n templateUrl: \"./label.component.html\",\n styleUrl: \"./label.component.scss\",\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TediTranslationPipe\n ],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class LabelComponent {\n /**\n * Size of the label.\n * @default default\n */\n size = input<LabelSize>(\"default\");\n /**\n * Whether label is required.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Color of the label.\n * @default secondary\n */\n color = input<LabelColor>(\"secondary\");\n\n classes = computed(() => {\n const classList = [\"tedi-label\", `tedi-label--${this.color()}`];\n\n if (this.size() === \"small\") {\n classList.push(\"tedi-label--small\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content />\n@if (required()) {\n <span class=\"tedi-label--required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">, {{ 'required' | tediTranslate }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n ViewEncapsulation,\n forwardRef,\n ElementRef,\n signal,\n ViewChild,\n} from \"@angular/core\";\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\nimport { ComponentInputs } from \"../../../types/inputs.type\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nexport type NumberFieldSize = \"default\" | \"small\";\n\n@Component({\n selector: \"tedi-number-field\",\n standalone: true,\n templateUrl: \"./number-field.component.html\",\n styleUrl: \"./number-field.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n LabelComponent,\n ButtonComponent,\n IconComponent,\n TextComponent,\n FeedbackTextComponent,\n TediTranslationPipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFieldComponent),\n multi: true,\n },\n ],\n})\nexport class NumberFieldComponent implements ControlValueAccessor {\n /**\n * The unique identifier for the input element that this label is associated with. This ID should match the input element's id attribute to ensure accessibility.\n */\n inputId = input.required<string>();\n /**\n * The text content of the label that describes the input field.\n */\n label = input<string>();\n /**\n * Value of the input field. Supports two-way binding, use with form controls.\n */\n value = model<number>(0);\n /**\n * Is input disabled?\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Indicates whether the input field is required. If set to true, the required indicator will be displayed next to the label.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Minimum allowed value. Disables decrementing below this value and restricts manual input.\n */\n min = input<number>();\n /**\n * Maximum allowed value. Disables incrementing above this value and restricts manual input.\n */\n max = input<number>();\n /**\n * Step size for incrementing or decrementing the value.\n * @default 1\n */\n step = input<number>(1);\n /**\n * Size of the number field.\n * @default default\n */\n size = input<NumberFieldSize>(\"default\");\n /**\n * Marks the field as invalid for validation purposes.\n * @default false\n */\n invalid = input<boolean>(false);\n /**\n * Text displayed after the input value, typically a unit.\n */\n suffix = input<string>();\n /**\n * FeedbackText component inputs.\n */\n feedbackText = input<ComponentInputs<FeedbackTextComponent>>();\n /**\n * Is input full width?\n * @default false\n */\n fullWidth = input(false);\n\n @ViewChild(\"inputElement\") inputRef!: ElementRef<HTMLInputElement>;\n\n private formDisabled = signal(false);\n private onChange: (value: number) => void = () => { };\n private onTouched: () => void = () => { };\n private translationService = inject(TediTranslationService);\n private liveAnnouncer = inject(LiveAnnouncer);\n\n readonly isInvalid = computed(() => {\n const min = this.min();\n const max = this.max();\n\n return (\n this.invalid() ||\n Boolean(min !== undefined && this.value() < min) ||\n Boolean(max !== undefined && this.value() > max)\n );\n });\n\n readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n readonly decrementDisabled = computed(() => {\n const min = this.min();\n\n return this.isDisabled() || (min !== undefined && this.value() <= min);\n });\n\n readonly incrementDisabled = computed(() => {\n const max = this.max();\n\n return this.isDisabled() || (max !== undefined && this.value() >= max);\n });\n\n readonly feedbackId = computed(() =>\n this.feedbackText() ? `${this.inputId()}-feedback` : null\n );\n\n writeValue(value?: number): void {\n this.value.set(value ? (isNaN(value) ? 0 : value) : 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.formDisabled.set(disabled);\n }\n\n focus(): void {\n this.inputRef.nativeElement.focus();\n }\n\n blur(): void {\n this.inputRef.nativeElement.blur();\n this.onTouched();\n }\n\n handleButtonClick(action: \"decrement\" | \"increment\") {\n const delta = action === \"decrement\" ? -1 : 1;\n const nextValue = this.value() + this.step() * delta;\n this.value.set(nextValue);\n this.onChange(nextValue);\n this.onTouched();\n this.announceValue(nextValue);\n }\n\n announceValue(value: number) {\n this.liveAnnouncer.announce(\n this.translationService.translate(\"numberField.quantityUpdated\", value),\n \"polite\"\n );\n }\n\n handleInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const value = isNaN(input.valueAsNumber) ? 0 : input.valueAsNumber;\n if (value !== this.value()) {\n this.value.set(value);\n this.onChange(value);\n }\n }\n\n handleBlur() {\n this.onTouched();\n }\n}\n","@if (label()) {\n <label tedi-label [for]=\"inputId()\" [required]=\"required()\" [size]=\"size()\">\n {{ label() }}\n </label>\n}\n<div\n [class]=\"{\n 'tedi-number-field': true,\n 'tedi-number-field--invalid': isInvalid(),\n 'tedi-number-field--disabled': isDisabled(),\n }\"\n>\n <button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [class]=\"{\n 'tedi-number-field__button': true,\n 'tedi-number-field__button--decrement': true,\n 'tedi-number-field__button--small': size() === 'small',\n }\"\n [disabled]=\"decrementDisabled()\"\n [attr.aria-label]=\"'numberField.decrement' | tediTranslate: step()\"\n (click)=\"handleButtonClick('decrement')\"\n >\n <tedi-icon name=\"remove\" [size]=\"18\" />\n </button>\n <div\n [class]=\"{\n 'tedi-number-field__input-wrapper': true,\n 'tedi-number-field__input-wrapper--small': size() === 'small',\n 'tedi-number-field__input-wrapper--disabled': isDisabled(),\n 'tedi-number-field__input-wrapper--with-suffix': suffix(),\n 'tedi-number-field__input-wrapper--full-width': fullWidth(),\n }\"\n (click)=\"focus()\"\n >\n <input\n #inputElement\n [id]=\"inputId()\"\n type=\"number\"\n inputmode=\"numeric\"\n class=\"tedi-number-field__input\"\n [value]=\"value()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [attr.aria-describedby]=\"feedbackId()\"\n (input)=\"handleInputChange($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (suffix()) {\n <small tedi-text color=\"tertiary\" class=\"tedi-number-field__suffix\">\n {{ suffix() }}\n </small>\n }\n </div>\n <button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [class]=\"{\n 'tedi-number-field__button': true,\n 'tedi-number-field__button--increment': true,\n 'tedi-number-field__button--small': size() === 'small',\n }\"\n [disabled]=\"incrementDisabled()\"\n [attr.aria-label]=\"'numberField.increment' | tediTranslate: step()\"\n (click)=\"handleButtonClick('increment')\"\n >\n <tedi-icon name=\"add\" [size]=\"18\" />\n </button>\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [attr.id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n ViewChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { IconColor, IconComponent } from \"../../base/icon/icon.component\";\n\nexport type ToggleVariant = \"primary\" | \"colored\";\nexport type ToggleType = \"filled\" | \"outlined\";\nexport type ToggleSize = \"default\" | \"large\";\n\n@Component({\n selector: \"tedi-toggle\",\n standalone: true,\n templateUrl: \"./toggle.component.html\",\n styleUrl: \"./toggle.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true\n }\n ],\n host: {\n \"[class]\": \"classes()\"\n }\n})\nexport class ToggleComponent implements ControlValueAccessor {\n /**\n * The unique identifier for the input element that is associated with label.\n */\n inputId = input.required<string>();\n /**\n * Is toggle checked? Supports two-way binding, use with form controls.\n */\n checked = model<boolean>(false);\n /**\n * Is input disabled?\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Indicates whether the input field is required.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Color variant of the toggle\n * @default primary\n */\n variant = input<ToggleVariant>(\"primary\");\n /**\n * Type of the toggle\n * @default filled\n */\n type = input<ToggleType>(\"filled\");\n /**\n * Size of the toggle\n * @default default\n */\n size = input<ToggleSize>(\"default\");\n /**\n * Should the toggle show lock icon. Works only with large toggle.\n * @default false\n */\n icon = input<boolean>(false);\n\n @ViewChild('inputElement') inputRef!: ElementRef<HTMLInputElement>;\n private onChange: (checked: boolean) => void = () => { };\n private onTouched: () => void = () => { };\n\n writeValue(checked: boolean): void {\n this.checked.set(checked);\n }\n\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n focus(): void {\n this.inputRef.nativeElement.focus();\n }\n\n blur(): void {\n this.inputRef.nativeElement.blur();\n this.onTouched();\n }\n\n handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.onChange(target.checked);\n }\n\n classes = computed(() => {\n return [\n \"tedi-toggle\",\n `tedi-toggle--${this.variant()}-${this.type()}`,\n `tedi-toggle--size-${this.size()}`,\n ].join(\" \");\n });\n\n iconColor = computed<IconColor>(() => {\n if (this.type() === \"outlined\") {\n return 'white';\n }\n\n switch (this.variant()) {\n case \"primary\":\n return this.checked() ? \"brand\" : \"tertiary\";\n case \"colored\":\n return this.checked() ? \"success\" : \"danger\";\n }\n });\n}\n","<input\n #inputElement\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-checked]=\"checked()\"\n type=\"checkbox\"\n class=\"tedi-toggle__input\"\n role=\"switch\"\n (change)=\"handleChange($event)\"\n/>\n<span class=\"tedi-toggle__slider\" aria-hidden=\"true\">\n @if (icon() && size() === 'large') {\n <tedi-icon\n [name]=\"checked() ? 'lock_open_right' : 'lock'\"\n [color]=\"iconColor()\"\n [size]=\"16\"\n class=\"tedi-toggle__icon\"\n />\n }\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-text-group-label\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupLabelComponent {}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointInputs,\n BreakpointService,\n} from \"../../../services/breakpoint/breakpoint.service\";\nimport { LabelComponent } from \"../../../components/form\";\nimport { TextGroupLabelComponent } from \"./text-group-label.component\";\n\nexport type TextGroupType = \"vertical\" | \"horizontal\";\n\nexport type TextGroupInputs = {\n /**\n * Type of text group layout\n * @default horizontal\n */\n type: TextGroupType;\n /**\n * Width for the label (e.g., '200px', '30%', etc.)\n */\n labelWidth: string | undefined;\n};\n@Component({\n standalone: true,\n selector: \"tedi-text-group\",\n templateUrl: \"./text-group.component.html\",\n styleUrl: \"./text-group.component.scss\",\n imports: [\n LabelComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupComponent implements BreakpointInputs<TextGroupInputs>, AfterContentChecked {\n type = input<TextGroupType>(\"horizontal\");\n labelWidth = input<string>();\n breakpointService = inject(BreakpointService);\n\n readonly textGroupLabel = contentChild(TextGroupLabelComponent, { read: ElementRef });\n readonly labelText = signal<string | null>(null);\n\n xs = input<TextGroupInputs>();\n sm = input<TextGroupInputs>();\n md = input<TextGroupInputs>();\n lg = input<TextGroupInputs>();\n xl = input<TextGroupInputs>();\n xxl = input<TextGroupInputs>();\n\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<TextGroupInputs>({\n type: this.type(),\n labelWidth: this.labelWidth(),\n\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [`tedi-text-group--${this.breakpointInputs().type}`];\n return classList.join(\" \");\n });\n\n ngAfterContentChecked(): void {\n const labelEl = this.textGroupLabel()?.nativeElement as HTMLElement;\n if (labelEl) {\n const text = labelEl.textContent?.trim() || null;\n if (text !== this.labelText()) {\n this.labelText.set(text);\n }\n }\n }\n}\n","<dl [class]=\"classes()\" [style.--_label-width]=\"labelWidth()\">\n <dt [attr.aria-label]=\"labelText()\">\n <span tedi-label aria-hidden=\"true\">\n <ng-content select=\"tedi-text-group-label\"></ng-content>\n </span>\n </dt>\n <dd>\n <ng-content select=\"tedi-text-group-value\"></ng-content>\n </dd>\n</dl>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-text-group-value\",\n template: `<ng-content />`,\n styleUrl: \"./text-group.component.scss\",\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupValueComponent {}\n","import { Directive, inject, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediCarouselSlide]\",\n standalone: true,\n})\nexport class CarouselSlideDirective {\n template = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n signal,\n viewChild,\n AfterViewInit,\n OnDestroy,\n input,\n inject,\n HostListener,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { CarouselSlideDirective } from \"../carousel-slide.directive\";\nimport {\n breakpointInput,\n BreakpointInput,\n BreakpointService,\n} from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationService } from \"../../../../services\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-content\",\n templateUrl: \"./carousel-content.component.html\",\n styleUrls: [\"./carousel-content.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet],\n host: {\n tabindex: \"0\",\n role: \"region\",\n \"aria-roledescription\": \"carousel\",\n \"[attr.aria-label]\": \"translationService.track('carousel')()\",\n \"aria-live\": \"off\",\n \"[class]\": \"classes()\",\n },\n})\nexport class CarouselContentComponent implements AfterViewInit, OnDestroy {\n /** Slides per view (minimum 1, can be fractional, e.g. 1.25 for peeking) */\n readonly slidesPerView = input(\n { xs: 1 },\n { transform: (v: BreakpointInput<number>) => breakpointInput(v) },\n );\n\n /** Gap between slides in px */\n readonly gap = input(\n { xs: 16 },\n { transform: (v: BreakpointInput<number>) => breakpointInput(v) },\n );\n\n /** Should carousel have fade? In mobile both left and right, in desktop only right. */\n readonly fade = input(false);\n\n /** Transition duration in ms */\n readonly transitionMs = input(400);\n\n readonly translationService = inject(TediTranslationService);\n private readonly breakpointService = inject(BreakpointService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly track = viewChild.required<ElementRef<HTMLDivElement>>(\"track\");\n readonly slides = contentChildren(CarouselSlideDirective);\n\n readonly trackIndex = signal(0);\n readonly animate = signal(false);\n readonly viewportWidth = signal(0);\n private readonly windowBase = signal(0);\n\n readonly currentSlidesPerView = computed(() => {\n if (\n this.slidesPerView().xxl &&\n this.breakpointService.isAboveBreakpoint(\"xxl\")()\n ) {\n return this.slidesPerView().xxl as number;\n } else if (\n this.slidesPerView().xl &&\n this.breakpointService.isAboveBreakpoint(\"xl\")()\n ) {\n return this.slidesPerView().xl as number;\n } else if (\n this.slidesPerView().lg &&\n this.breakpointService.isAboveBreakpoint(\"lg\")()\n ) {\n return this.slidesPerView().lg as number;\n } else if (\n this.slidesPerView().md &&\n this.breakpointService.isAboveBreakpoint(\"md\")()\n ) {\n return this.slidesPerView().md as number;\n } else if (\n this.slidesPerView().sm &&\n this.breakpointService.isAboveBreakpoint(\"sm\")()\n ) {\n return this.slidesPerView().sm as number;\n } else {\n return this.slidesPerView().xs;\n }\n });\n\n readonly currentGap = computed(() => {\n if (this.gap().xxl && this.breakpointService.isAboveBreakpoint(\"xxl\")()) {\n return this.gap().xxl as number;\n } else if (\n this.gap().xl &&\n this.breakpointService.isAboveBreakpoint(\"xl\")()\n ) {\n return this.gap().xl as number;\n } else if (\n this.gap().lg &&\n this.breakpointService.isAboveBreakpoint(\"lg\")()\n ) {\n return this.gap().lg as number;\n } else if (\n this.gap().md &&\n this.breakpointService.isAboveBreakpoint(\"md\")()\n ) {\n return this.gap().md as number;\n } else if (\n this.gap().sm &&\n this.breakpointService.isAboveBreakpoint(\"sm\")()\n ) {\n return this.gap().sm as number;\n } else {\n return this.gap().xs;\n }\n });\n\n readonly buffer = computed(() => this.slides().length);\n\n readonly slideIndex = computed(() => {\n const slidesCount = this.slides().length;\n\n if (slidesCount === 0) {\n return 0;\n }\n\n const i = Math.floor(this.trackIndex());\n return ((i % slidesCount) + slidesCount) % slidesCount;\n });\n\n\n readonly renderedActiveIndex = computed(() => {\n return this.trackIndex() - this.windowBase() + this.buffer();\n });\n\n readonly renderedIndices = computed(() => {\n const slidesCount = this.slides().length;\n\n if (!slidesCount) {\n return [];\n }\n\n const total = 2 * this.buffer() + Math.ceil(this.currentSlidesPerView());\n const start = this.windowBase() - this.buffer();\n\n return Array.from(\n { length: total },\n (_, i) => (((start + i) % slidesCount) + slidesCount) % slidesCount,\n );\n });\n\n readonly slideFlex = computed(() => {\n const slidesPerView = this.currentSlidesPerView();\n const gap = this.currentGap();\n return `0 0 calc((100% - ${(slidesPerView - 1) * gap}px) / ${slidesPerView})`;\n });\n\n readonly classes = computed(() => {\n const classList = [\"tedi-carousel__content\"];\n\n if (this.fade() && this.currentSlidesPerView() > 1) {\n classList.push(\"tedi-carousel__content--fade-right\");\n } else if (this.fade() && this.currentSlidesPerView() <= 1) {\n classList.push(\"tedi-carousel__content--fade-x\");\n }\n\n return classList.join(\" \");\n });\n\n readonly trackStyle = computed(() => {\n const slidesPerView = this.currentSlidesPerView();\n const gap = this.currentGap();\n const viewportWidth = this.viewportWidth();\n\n if (!viewportWidth) {\n return {\n gap: `${gap}px`,\n transform: \"translate3d(0,0,0)\",\n transition: \"none\",\n };\n }\n\n const totalGapWidth = gap * (slidesPerView - 1);\n const slideWidth = (viewportWidth - totalGapWidth) / slidesPerView;\n\n const offsetSlides = this.trackIndex() - this.windowBase() + this.buffer();\n const translateX = -offsetSlides * (slideWidth + gap);\n\n return {\n gap: `${gap}px`,\n transform: `translate3d(${translateX}px, 0, 0)`,\n transition: this.animate()\n ? `transform ${this.transitionMs()}ms ease`\n : \"none\",\n };\n });\n\n locked = false;\n dragging = false;\n private startX = 0;\n private startIndex = 0;\n private ro?: ResizeObserver;\n private wheelTimeout?: ReturnType<typeof setTimeout>;\n private scrollDelta = 0;\n\n @HostListener(\"wheel\", [\"$event\"])\n onWheel(event: WheelEvent) {\n const slidesCount = this.slides().length;\n\n if (!slidesCount) {\n return;\n }\n\n const delta =\n Math.abs(event.deltaX) > Math.abs(event.deltaY)\n ? event.deltaX\n : event.shiftKey\n ? event.deltaY\n : 0;\n\n if (!delta) {\n return;\n }\n\n event.preventDefault();\n\n const cellWidth =\n (this.viewportWidth() -\n this.currentGap() * (this.currentSlidesPerView() - 1)) /\n this.currentSlidesPerView() +\n this.currentGap();\n\n if (!cellWidth) {\n return;\n }\n\n const deltaSlides = delta / cellWidth;\n this.scrollDelta += deltaSlides;\n\n const maxDelta = this.buffer() * 0.9;\n const min = this.windowBase() - maxDelta;\n const max = this.windowBase() + maxDelta;\n\n const unclamped = this.trackIndex() + deltaSlides;\n const clamped = Math.min(Math.max(unclamped, min), max);\n const wasClamped = clamped !== unclamped;\n\n this.animate.set(false);\n this.trackIndex.set(clamped);\n\n clearTimeout(this.wheelTimeout);\n\n this.wheelTimeout = setTimeout(() => {\n this.animate.set(true);\n\n const direction = Math.sign(this.scrollDelta);\n const current = this.trackIndex();\n\n let snapIndex = Math.round(current);\n\n if (Math.abs(this.scrollDelta) > 0.3) {\n snapIndex = direction > 0 ? Math.ceil(current) : Math.floor(current);\n }\n\n if (wasClamped) {\n if (current <= min) snapIndex = Math.ceil(min);\n if (current >= max) snapIndex = Math.floor(max);\n }\n\n const finalIndex = Math.min(Math.max(snapIndex, min), max);\n this.trackIndex.set(finalIndex);\n this.scrollDelta = 0;\n }, 120);\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case \"ArrowRight\":\n case \"PageDown\":\n event.preventDefault();\n this.next();\n break;\n\n case \"ArrowLeft\":\n case \"PageUp\":\n event.preventDefault();\n this.prev();\n break;\n\n case \"Home\":\n event.preventDefault();\n this.goToIndex(0);\n break;\n\n case \"End\": {\n event.preventDefault();\n this.goToIndex(this.slides().length - 1);\n break;\n }\n\n default:\n break;\n }\n }\n\n @HostListener(\"pointerdown\", [\"$event\"])\n onPointerDown(ev: PointerEvent) {\n if (!this.slides().length) {\n return;\n }\n\n this.host.nativeElement.setPointerCapture(ev.pointerId);\n this.dragging = true;\n this.animate.set(false);\n this.startX = ev.clientX;\n this.startIndex = this.trackIndex();\n this.windowBase.set(Math.floor(this.startIndex));\n }\n\n @HostListener(\"pointermove\", [\"$event\"])\n onPointerMove(ev: PointerEvent) {\n if (!this.dragging) {\n return;\n }\n\n const dx = ev.clientX - this.startX;\n const cellWidth =\n (this.viewportWidth() -\n this.currentGap() * (this.currentSlidesPerView() - 1)) /\n this.currentSlidesPerView() +\n this.currentGap();\n\n if (!cellWidth) {\n return;\n }\n\n const deltaSlides = dx / cellWidth;\n const targetIndex = this.startIndex - deltaSlides;\n\n const maxDelta = this.buffer() * 0.9;\n const min = this.windowBase() - maxDelta;\n const max = this.windowBase() + maxDelta;\n const clamped = Math.min(Math.max(targetIndex, min), max);\n this.trackIndex.set(clamped);\n }\n\n @HostListener(\"pointerup\")\n @HostListener(\"pointercancel\")\n @HostListener(\"lostpointercapture\")\n onPointerUp() {\n if (!this.dragging) {\n return;\n }\n\n this.dragging = false;\n this.animate.set(true);\n this.trackIndex.set(Math.round(this.trackIndex()));\n }\n\n ngAfterViewInit(): void {\n const viewport = this.host.nativeElement;\n this.viewportWidth.set(viewport.clientWidth);\n\n this.ro = new ResizeObserver(() => {\n this.viewportWidth.set(viewport.clientWidth);\n });\n\n this.ro.observe(viewport);\n }\n\n ngOnDestroy(): void {\n this.ro?.disconnect();\n }\n\n next(): void {\n if (!this.slides().length || this.locked) {\n return;\n }\n\n this.animate.set(true);\n this.trackIndex.update((i) => i + 1);\n this.lockNavigation();\n }\n\n prev(): void {\n if (!this.slides().length || this.locked) {\n return;\n }\n\n this.animate.set(true);\n this.trackIndex.update((i) => i - 1);\n this.lockNavigation();\n }\n\n goToIndex(index: number) {\n const slidesCount = this.slides().length;\n\n if (!slidesCount || this.locked) {\n return;\n }\n\n const current = this.slideIndex();\n const normalized = ((index % slidesCount) + slidesCount) % slidesCount;\n const delta = normalized - current;\n this.animate.set(true);\n this.trackIndex.update((i) => i + delta);\n }\n\n onTransitionEnd(e: TransitionEvent) {\n if (\n e.target !== this.track().nativeElement ||\n e.propertyName !== \"transform\" ||\n this.dragging\n ) {\n return;\n }\n\n this.animate.set(false);\n this.windowBase.set(Math.floor(this.trackIndex()));\n }\n\n lockNavigation() {\n this.locked = true;\n setTimeout(() => (this.locked = false), this.transitionMs());\n }\n}\n","<div\n #track\n class=\"tedi-carousel__track\"\n [style]=\"trackStyle()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n @for (idx of renderedIndices(); track $index) {\n <div\n class=\"tedi-carousel__slide\"\n [attr.role]=\"$index === renderedActiveIndex() ? 'group' : 'presentation'\"\n aria-roledescription=\"slide\"\n [attr.aria-label]=\"\n translationService.track('carousel.slide', idx + 1, slides().length)()\n \"\n [attr.aria-current]=\"$index === renderedActiveIndex() ? 'true' : null\"\n [attr.aria-hidden]=\"$index === renderedActiveIndex() ? null : 'true'\"\n [style.flex]=\"slideFlex()\"\n >\n <ng-container *ngTemplateOutlet=\"slides()[idx].template\"></ng-container>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CarouselContentComponent } from \"./carousel-content/carousel-content.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel\",\n templateUrl: \"./carousel.component.html\",\n styleUrl: \"./carousel.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CarouselComponent {\n carouselContent = contentChild.required(CarouselContentComponent);\n}\n","<ng-content select=\"tedi-carousel-header\" />\n<ng-content select=\"tedi-carousel-content\" />\n<ng-content select=\"tedi-carousel-footer\" />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-footer\",\n template: \"<ng-content />\",\n styleUrl: \"./carousel-footer.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselFooterComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-header\",\n template: \"<ng-content />\",\n styleUrl: \"./carousel-header.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselHeaderComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CarouselComponent } from \"../carousel.component\";\nimport { NgClass } from \"@angular/common\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { TediTranslationService } from \"../../../../services\";\n\nexport type CarouselIndicatorsVariant = \"dots\" | \"numbers\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-indicators\",\n templateUrl: \"./carousel-indicators.component.html\",\n styleUrl: \"./carousel-indicators.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgClass, ButtonComponent, IconComponent, TextComponent],\n})\nexport class CarouselIndicatorsComponent {\n /** Should show indicators with arrows? If yes, don't use carousel-navigation component */\n readonly withArrows = input(false);\n\n /** Variant of indicators (dots and numbers) */\n readonly variant = input<CarouselIndicatorsVariant>(\"dots\");\n\n readonly translationService = inject(TediTranslationService);\n readonly carousel = inject(CarouselComponent);\n\n readonly indicatorsArray = computed(() =>\n Array.from(\n { length: this.carousel.carouselContent().slides().length },\n (_, i) => ({\n index: i,\n active: this.carousel.carouselContent().slideIndex() === i,\n }),\n ),\n );\n\n readonly activeSlideNumber = computed(\n () => this.carousel.carouselContent().slideIndex() + 1,\n );\n\n handleNext() {\n this.carousel.carouselContent().next();\n }\n\n handlePrev() {\n this.carousel.carouselContent().prev();\n }\n\n handleIndicatorClick(index: number) {\n this.carousel.carouselContent().goToIndex(index);\n }\n}\n","@if (withArrows()) {\n <button\n tedi-button\n type=\"button\"\n variant=\"neutral\"\n [attr.aria-label]=\"translationService.track('carousel.moveBack')()\"\n (click)=\"handlePrev()\"\n >\n <tedi-icon name=\"arrow_back\" [size]=\"18\" />\n </button>\n}\n\n@if (variant() === \"dots\") {\n @for (indicator of indicatorsArray(); track indicator.index) {\n <button\n type=\"button\"\n class=\"tedi-carousel__indicator\"\n [attr.aria-label]=\"\n translationService.track('carousel.showSlide', indicator.index + 1)()\n \"\n [ngClass]=\"indicator.active ? 'tedi-carousel__indicator--active' : null\"\n (click)=\"handleIndicatorClick(indicator.index)\"\n ></button>\n }\n} @else if (activeSlideNumber()) {\n <div>\n <b tedi-text color=\"brand\">{{ activeSlideNumber() }}</b>\n <span tedi-text color=\"tertiary\"> / {{ indicatorsArray().length }}</span>\n </div>\n}\n\n@if (withArrows()) {\n <button\n tedi-button\n type=\"button\"\n variant=\"neutral\"\n [attr.aria-label]=\"translationService.track('carousel.moveForward')()\"\n (click)=\"handleNext()\"\n >\n <tedi-icon name=\"arrow_forward\" [size]=\"18\" />\n </button>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../../buttons\";\nimport { IconComponent } from \"../../../base\";\nimport { CarouselComponent } from \"../carousel.component\";\nimport { TediTranslationService } from \"../../../../services\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-navigation\",\n templateUrl: \"./carousel-navigation.component.html\",\n styleUrl: \"./carousel-navigation.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ButtonComponent, IconComponent],\n})\nexport class CarouselNavigationComponent {\n readonly translationService = inject(TediTranslationService);\n private readonly carousel = inject(CarouselComponent);\n\n handleNext() {\n this.carousel.carouselContent().next();\n }\n\n handlePrev() {\n this.carousel.carouselContent().prev();\n }\n}\n","<button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [attr.aria-label]=\"translationService.track('carousel.moveBack')()\"\n (click)=\"handlePrev()\"\n>\n <tedi-icon name=\"arrow_back\" [size]=\"18\" />\n</button>\n<button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [attr.aria-label]=\"translationService.track('carousel.moveForward')()\"\n (click)=\"handleNext()\"\n>\n <tedi-icon name=\"arrow_forward\" [size]=\"18\" />\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointService,\n BreakpointInputs,\n} from \"../../../../services/breakpoint/breakpoint.service\";\n\nexport type ColWidth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type JustifySelf = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type AlignSelf = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type ColInputs = {\n /**\n * Number of column width.\n * @default 1\n */\n width: ColWidth;\n /**\n * Aligns an item horizontally inside its own grid cell.\n */\n justifySelf?: JustifySelf;\n /**\n * Aligns an item vertically inside its own grid cell.\n */\n alignSelf?: AlignSelf;\n};\n\n@Component({\n selector: \"tedi-col\",\n standalone: true,\n templateUrl: \"./col.component.html\",\n styleUrl: \"./col.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"presentation\",\n }\n})\nexport class ColComponent implements BreakpointInputs<ColInputs> {\n width = input<ColWidth>(1);\n justifySelf = input<JustifySelf>();\n alignSelf = input<AlignSelf>();\n\n xs = input<ColInputs>();\n sm = input<ColInputs>();\n md = input<ColInputs>();\n lg = input<ColInputs>();\n xl = input<ColInputs>();\n xxl = input<ColInputs>();\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<ColInputs>({\n width: this.width(),\n justifySelf: this.justifySelf(),\n alignSelf: this.alignSelf(),\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [\"tedi-col\", `tedi-col--width-${this.breakpointInputs().width}`];\n\n if (this.breakpointInputs().justifySelf) {\n classList.push(\n `tedi-col--justify-self-${this.breakpointInputs().justifySelf}`,\n );\n }\n\n if (this.breakpointInputs().alignSelf) {\n classList.push(`tedi-col--align-self-${this.breakpointInputs().alignSelf}`);\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointService,\n BreakpointInputs,\n} from \"../../../../services/breakpoint/breakpoint.service\";\n\nconst GAP_MAP: Record<number, string> = {\n 0: \"0rem\",\n 1: \"0.25rem\",\n 2: \"0.5rem\",\n 3: \"1rem\",\n 4: \"1.5rem\",\n 5: \"3rem\",\n};\n\nexport type Cols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | \"auto\";\nexport type Gap = 0 | 1 | 2 | 3 | 4 | 5;\nexport type JustifyItems = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type AlignItems = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type RowInputs = {\n /**\n * The number of columns that will fit next to each other.\n * @default auto\n */\n cols: Cols;\n /**\n * Applies minimum width (px) to the column when using auto layout.\n * @default 200px\n */\n minColWidth: number;\n /**\n * Aligns items horizontally inside their grid cell.\n */\n justifyItems?: JustifyItems;\n /**\n * Aligns items vertically inside their grid cell.\n */\n alignItems?: AlignItems;\n /**\n * Add gap between items.\n */\n gap?: Gap;\n /**\n * Add horizontal gap between items.\n */\n gapX?: Gap;\n /**\n * Add vertical gap between items.\n */\n gapY?: Gap;\n};\n\n@Component({\n selector: \"tedi-row\",\n standalone: true,\n templateUrl: \"./row.component.html\",\n styleUrl: \"./row.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"[style.--_grid-gap]\": \"breakpointInputs().cols === 'auto' ? gridGap() : null\",\n \"[style.--_grid-col-width]\": \"breakpointInputs().cols === 'auto' ? breakpointInputs().minColWidth + 'px' : null\",\n \"role\": \"presentation\"\n }\n})\nexport class RowComponent implements BreakpointInputs<RowInputs> {\n cols = input<Cols>(\"auto\");\n minColWidth = input<number>(200);\n justifyItems = input<JustifyItems>();\n alignItems = input<AlignItems>();\n gap = input<Gap>();\n gapX = input<Gap>();\n gapY = input<Gap>();\n\n xs = input<RowInputs>();\n sm = input<RowInputs>();\n md = input<RowInputs>();\n lg = input<RowInputs>();\n xl = input<RowInputs>();\n xxl = input<RowInputs>();\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<RowInputs>({\n cols: this.cols(),\n minColWidth: this.minColWidth(),\n justifyItems: this.justifyItems(),\n alignItems: this.alignItems(),\n gap: this.gap(),\n gapX: this.gapX(),\n gapY: this.gapY(),\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n gridGap = computed(() => {\n const gap = this.breakpointInputs().gap;\n const gapX = this.breakpointInputs().gapX;\n const gapValue = gap ?? gapX;\n return GAP_MAP[gapValue ?? 0];\n });\n\n classes = computed(() => {\n const classList = [\"tedi-row\", `tedi-row--cols-${this.breakpointInputs().cols}`];\n\n if (this.breakpointInputs().justifyItems) {\n classList.push(\n `tedi-row--justify-items-${this.breakpointInputs().justifyItems}`,\n );\n }\n\n if (this.breakpointInputs().alignItems) {\n classList.push(`tedi-row--align-items-${this.breakpointInputs().alignItems}`);\n }\n\n if (this.breakpointInputs().gap !== undefined) {\n classList.push(`g-${this.breakpointInputs().gap}`);\n }\n\n if (this.breakpointInputs().gapX !== undefined) {\n classList.push(`gx-${this.breakpointInputs().gapX}`);\n }\n\n if (this.breakpointInputs().gapY !== undefined) {\n classList.push(`gy-${this.breakpointInputs().gapY}`);\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TimelineItemComponent } from \"./timeline-item/timeline-item.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineComponent {\n /** Index of active item */\n activeIndex = input<number>();\n\n items = signal<TimelineItemComponent[]>([]);\n\n registerItem(item: TimelineItemComponent) {\n this.items.update((list) => [...list, item]);\n }\n\n unregisterItem(item: TimelineItemComponent) {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n SeparatorComponent,\n SeparatorColor,\n} from \"../../separator/separator.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { TimelineComponent } from \"../timeline.component\";\nimport { NgClass } from \"@angular/common\";\n\ntype TimelineItemState = \"current\" | \"past\" | \"future\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-item\",\n imports: [SeparatorComponent, TextComponent, NgClass],\n templateUrl: \"./timeline-item.component.html\",\n styleUrl: \"./timeline-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineItemComponent implements OnInit, OnDestroy {\n /** Item timings */\n timings = input<string[]>([]);\n\n timeline = inject(TimelineComponent, { optional: true });\n\n ngOnInit() {\n if (!this.timeline) {\n return;\n }\n\n this.timeline.registerItem(this);\n }\n\n ngOnDestroy() {\n if (!this.timeline) {\n return;\n }\n\n this.timeline.unregisterItem(this);\n }\n\n isLast = computed(() => {\n const timeline = this.timeline;\n\n if (!timeline) {\n return false;\n }\n\n const currentIndex = timeline.items().findIndex((t) => t === this);\n\n if (currentIndex === timeline.items().length - 1) {\n return true;\n } else {\n return false;\n }\n });\n\n state = computed<TimelineItemState>(() => {\n const timeline = this.timeline;\n const activeItemIndex = timeline?.activeIndex();\n\n if (!timeline || activeItemIndex === undefined) {\n return \"future\";\n }\n\n const currentIndex = timeline.items().findIndex((t) => t === this);\n\n if (activeItemIndex === currentIndex) {\n return \"current\";\n } else if (activeItemIndex > currentIndex) {\n return \"past\";\n } else {\n return \"future\";\n }\n });\n\n color = computed<SeparatorColor>(() => {\n if (this.state() === \"current\" || this.state() === \"past\") {\n return \"accent\";\n }\n\n return \"secondary\";\n });\n}\n","<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-description\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline-description.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineDescriptionComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-title\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline-title.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineTitleComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer\",\n templateUrl: \"./footer.component.html\",\n styleUrl: \"./footer.component.scss\",\n})\nexport class FooterComponent {\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n}\n","<footer class=\"tedi-footer\">\n <div\n class=\"tedi-footer__container\"\n [class.tedi-footer--mobile]=\"mobileLayout()\"\n >\n <ng-content select=\"[tedi-footer-start]\" />\n <div class=\"tedi-footer__center\">\n <ng-content select=\"tedi-footer-body\" />\n </div>\n <ng-content select=\"[tedi-footer-end]\" />\n </div>\n <ng-content select=\"tedi-footer-bottom\" />\n</footer>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-body\",\n template: \"<ng-content />\",\n styleUrl: \"./footer-body.component.scss\",\n host: {\n class: \"tedi-footer-body\",\n \"[class.tedi-footer-body--mobile]\": \"this.mobileLayout()\",\n },\n})\nexport class FooterBodyComponent {\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n trigger,\n state,\n style,\n transition,\n animate,\n} from \"@angular/animations\";\n\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-section\",\n imports: [IconComponent, TextComponent],\n templateUrl: \"./footer-section.component.html\",\n styleUrl: \"./footer-section.component.scss\",\n host: {\n class: \"tedi-footer-section\",\n \"[class.tedi-footer-section--collapse]\": \"applyCollapse()\",\n },\n animations: [\n trigger(\"collapseContent\", [\n state(\n \"collapsed\",\n style({\n height: \"0\",\n opacity: 0,\n visibility: \"hidden\",\n }),\n ),\n state(\n \"expanded\",\n style({\n height: \"*\",\n opacity: 1,\n visibility: \"visible\",\n }),\n ),\n transition(\"collapsed <=> expanded\", [animate(\"300ms ease\")]),\n ]),\n ],\n})\nexport class FooterSectionComponent {\n /**\n * Specifies the icon to be displayed in the footer links.\n */\n icon = input<string>();\n /**\n * Specifies the heading text for the footer links.\n */\n heading = input<string>();\n /**\n * Enables the collapse functionality for the footer links.\n * When set to true, the footer links will be collapsible on mobile devices.\n * @default \"false\"\n */\n collapse = input<boolean>(false);\n collapseOpen = signal<boolean>(false);\n private breakpointService = inject(BreakpointService);\n\n applyCollapse = computed(() => {\n return this.collapse() && this.mobileLayout();\n });\n\n hideIcon = this.breakpointService.isBelowBreakpoint(\"lg\");\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n toggleCollapse() {\n if (this.collapse()) {\n this.collapseOpen.update((value) => !value);\n }\n }\n}\n","@if (icon() && !hideIcon()) {\n <tedi-icon class=\"tedi-footer-section__icon\" [name]=\"icon()!\" color=\"white\" />\n}\n\n<div\n class=\"tedi-footer-section__container\"\n [class.tedi-footer-section__container--mobile]=\"mobileLayout()\"\n>\n @if (applyCollapse()) {\n <button class=\"tedi-footer-section__button\" (click)=\"toggleCollapse()\">\n {{ heading() }}\n <tedi-icon\n class=\"collapse__icon\"\n color=\"white\"\n [name]=\"collapseOpen() ? 'expand_less' : 'expand_more'\"\n />\n </button>\n } @else {\n <strong tedi-text class=\"tedi-footer-section__heading\" color=\"white\">\n {{ heading() }}\n </strong>\n }\n <div\n [class.tedi-footer-section__content-hidden]=\"\n applyCollapse() && !collapseOpen()\n \"\n [@collapseContent]=\"\n applyCollapse() ? (collapseOpen() ? 'expanded' : 'collapsed') : 'expanded'\n \"\n class=\"tedi-footer-section__content\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n signal,\n ViewEncapsulation,\n HostBinding,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\nexport type FooterSidePlacement = \"start\" | \"end\";\nexport type FooterSidePosition = \"start\" | \"center\" | \"end\";\n\n@Component({\n standalone: true,\n selector: \"tedi-footer-side\",\n template: `<ng-content />`,\n styleUrl: \"./footer-side.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FooterSideComponent {\n /**\n * Specifies the position of the footer internal content.\n * @default center\n */\n position = input<FooterSidePosition>(\"center\");\n placement = signal<FooterSidePlacement | null>(null);\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n constructor(\n @Attribute(\"tedi-footer-start\") public isStart: string,\n @Attribute(\"tedi-footer-end\") public isEnd: string,\n ) {\n const side =\n this.isStart !== null ? \"start\" : this.isEnd !== null ? \"end\" : null;\n if (side) this.placement.set(side as FooterSidePlacement);\n else\n console.warn(\n '[TediFooterSide] No placement detected. Use \"tedi-footer-start\" or \"tedi-footer-end\" attribute to define where this component should be rendered.',\n );\n }\n\n @HostBinding(\"class\")\n get hostClasses(): string {\n const classes = [\"tedi-footer-side\"];\n\n if (this.mobileLayout()) classes.push(\"tedi-footer-side--mobile\");\n\n classes.push(`tedi-footer-side--${this.placement()}`);\n classes.push(`tedi-footer-side--vertical-${this.position()}`);\n\n return classes.join(\" \");\n }\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointInputs,\n BreakpointService,\n} from \"../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\n\nexport type LinkVariant = \"default\" | \"inverted\";\nexport type LinkSize = \"default\" | \"small\";\nexport type LinkInputs = {\n /**\n * Variant of the link.\n * @default default\n */\n variant: LinkVariant;\n /**\n * Size of the link.\n * @default default\n */\n size: LinkSize;\n /**\n * Does link have underline?\n * @default true\n */\n underline: boolean;\n /**\n * Target attribute for the link (e.g., \"_blank\", \"_self\", \"_parent\", \"_top\").\n */\n target?: string;\n};\n\n@Component({\n selector: \"[tedi-link]\",\n standalone: true,\n templateUrl: \"./link.component.html\",\n styleUrl: \"./link.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [TediTranslationPipe],\n host: {\n \"[class]\": \"classes()\",\n \"[attr.tabIndex]\": \"0\",\n },\n})\nexport class LinkComponent\n implements BreakpointInputs<LinkInputs>, AfterContentChecked\n{\n variant = input<LinkVariant>(\"default\");\n size = input<LinkSize>(\"default\");\n underline = input<boolean>(true);\n target = input<string | undefined>();\n\n xs = input<LinkInputs>();\n sm = input<LinkInputs>();\n md = input<LinkInputs>();\n lg = input<LinkInputs>();\n xl = input<LinkInputs>();\n xxl = input<LinkInputs>();\n\n private host = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngAfterContentChecked(): void {\n const childNodes: ChildNode[] = Array.from(\n this.host.nativeElement.childNodes,\n );\n\n for (const node of childNodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {\n if (node.parentNode !== this.host.nativeElement) {\n continue;\n }\n\n const span = this.renderer.createElement(\"span\") as HTMLSpanElement;\n this.renderer.insertBefore(this.host.nativeElement, span, node);\n this.renderer.appendChild(span, node);\n }\n }\n }\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<LinkInputs>({\n variant: this.variant(),\n size: this.size(),\n underline: this.underline(),\n\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [\"tedi-link\"];\n\n if (this.breakpointInputs().variant === \"inverted\") {\n classList.push(\"tedi-link--inverted\");\n }\n\n if (this.breakpointInputs().size === \"small\") {\n classList.push(\"tedi-link--small\");\n }\n\n if (!this.breakpointInputs().underline) {\n classList.push(\"tedi-link--no-underline\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n AfterContentInit,\n effect,\n Injector,\n runInInjectionContext,\n ViewContainerRef,\n EmbeddedViewRef,\n} from \"@angular/core\";\nimport { LinkComponent } from \"../../../navigation/link/link.component\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-bottom\",\n templateUrl: \"./footer-bottom.component.html\",\n styleUrl: \"./footer-bottom.component.scss\",\n host: {\n class: \"tedi-footer-bottom\",\n \"[class.tedi-footer-bottom--mobile]\": \"mobileLayout()\",\n },\n})\nexport class FooterBottomComponent implements AfterContentInit {\n private injector = inject(Injector);\n private renderer = inject(Renderer2);\n private breakpointService = inject(BreakpointService);\n private hostRef = inject(ElementRef<HTMLElement>);\n private viewContainerRef = inject(ViewContainerRef);\n private ellipsisViews: Array<EmbeddedViewRef<void>> = [];\n\n @ViewChild(\"ellipsis\", { static: true }) ellipsis!: TemplateRef<void>;\n @ContentChildren(LinkComponent, { descendants: true, read: ElementRef })\n links!: QueryList<ElementRef>;\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n ngAfterContentInit(): void {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n if (this.mobileLayout()) {\n this.addEllipsisElements();\n } else {\n this.removeEllipsisElements();\n }\n });\n });\n }\n\n private addEllipsisElements() {\n if (!this.links || this.links.length === 0) return;\n const linksArray = this.links.toArray();\n this.removeEllipsisElements();\n\n linksArray.forEach((link, index) => {\n const nativeElement = link.nativeElement;\n\n if (index < linksArray.length - 1) {\n const parent = nativeElement.parentNode;\n if (!parent) return;\n\n const embeddedView = this.viewContainerRef.createEmbeddedView(\n this.ellipsis,\n );\n embeddedView.detectChanges();\n this.ellipsisViews.push(embeddedView);\n const ellipsisElement = embeddedView.rootNodes[0];\n this.renderer.addClass(ellipsisElement, \"tedi-footer-bottom__ellipsis\");\n\n this.renderer.insertBefore(\n parent,\n ellipsisElement,\n nativeElement.nextSibling,\n );\n }\n });\n }\n\n private removeEllipsisElements(): void {\n const ellipsisEls = this.hostRef.nativeElement.querySelectorAll(\n \".tedi-footer-bottom__ellipsis\",\n );\n\n ellipsisEls.forEach((el: HTMLElement) => {\n const parent = el.parentNode;\n if (parent) {\n this.renderer.removeChild(parent, el);\n }\n });\n this.ellipsisViews.forEach((view) => view.destroy());\n this.ellipsisViews = [];\n }\n}\n","<ng-template #ellipsis>\n <svg\n class=\"tedi-footer-bottom__ellipsis\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"4\"\n height=\"5\"\n viewBox=\"0 0 4 5\"\n fill=\"none\"\n >\n <circle cx=\"2\" cy=\"2.41309\" r=\"2\" fill=\"#9293A4\" />\n </svg>\n</ng-template>\n\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"header[tedi-header]\",\n standalone: true,\n templateUrl: \"./header.component.html\",\n styleUrl: \"./header.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-header\"\n }\n})\nexport class HeaderComponent {}","<ng-content select=\"button[tedi-sidenav-toggle]\"></ng-content>\n<div class=\"tedi-header__main\">\n <ng-content></ng-content>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-header-actions\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./header-actions.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-header-actions\"\n }\n})\nexport class HeaderActionsComponent {}","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'tedi-header-content',\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: './header-content.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeaderContentComponent {}\n","import { NgFor } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n inject,\n input,\n output,\n ViewChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\nimport {\n TediTranslationService,\n Language,\n} from \"../../../../services/translation/translation.service\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\n\nexport type HeaderLanguage = {\n [L in Language]?: string;\n};\n\n@Component({\n selector: \"tedi-header-language\",\n standalone: true,\n imports: [\n NgFor,\n IconComponent,\n TextComponent,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n TediTranslationPipe,\n ],\n templateUrl: \"./header-language.component.html\",\n styleUrl: \"./header-language.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-header-language\",\n },\n})\nexport class HeaderLanguageComponent {\n /**\n * Languages object.\n * Key is value in 'Language' type.\n * Value should be text shown in the UI.\n */\n languages = input.required<HeaderLanguage>();\n /**\n * This is event emitter for changing language\n */\n languageChange = output<Language>();\n\n @ViewChild(forwardRef(() => PopoverComponent)) popover?: PopoverComponent;\n\n translationService = inject(TediTranslationService);\n\n languageKeys = computed(() => Object.keys(this.languages()) as Language[]);\n\n handleChangeLang(lang: Language) {\n this.languageChange.emit(lang);\n this.translationService.setLanguage(lang);\n this.popover?.floatUiComponent().hide();\n }\n}\n","<span\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-language__label\"\n >{{ \"header.select-lang\" | tediTranslate }}</span\n>\n<tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ languages()[translationService.getLanguage()] }}</span>\n <tedi-icon name=\"expand_more\" />\n </button>\n <tedi-popover-content maxWidth=\"none\">\n <button\n *ngFor=\"let language of languageKeys()\"\n class=\"tedi-link tedi-header__link-button\"\n (click)=\"handleChangeLang(language)\"\n >\n <span>{{ languages()[language] }}</span>\n </button>\n </tedi-popover-content>\n</tedi-popover>\n","import { ChangeDetectionStrategy, Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '../../../base/icon/icon.component';\nimport { ButtonComponent } from '../../../buttons/button/button.component';\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationService } from '../../../../services/translation/translation.service';\n\n@Component({\n selector: 'tedi-header-login',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n templateUrl: './header-login.component.html',\n styleUrl: './header-login.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderLoginComponent {\n breakpointService = inject(BreakpointService);\n translationService = inject(TediTranslationService);\n\n isMobile = this.breakpointService.isBelowBreakpoint(\"sm\");\n textDesktop = this.translationService.track(\"header.login\");\n textMobile = this.translationService.track(\"header.login-mobile\");\n\n text = computed(() => this.isMobile() ? this.textMobile() : this.textDesktop());\n}\n","<button \n tedi-button \n [variant]=\"isMobile() ? 'neutral' : 'primary'\" \n [class]=\"{ 'tedi-header-login__button': true, 'tedi-header-login__button--mobile': isMobile() }\"\n>\n @if (isMobile()) {\n <tedi-icon name=\"login\" />\n }\n {{ text() }}\n</button>","import { ChangeDetectionStrategy, Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '../../../base/icon/icon.component';\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n selector: 'button[tedi-header-logout]',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './header-logout.component.html',\n styleUrl: './header-logout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\"\n }\n})\nexport class HeaderLogoutComponent {\n breakpointService = inject(BreakpointService);\n isMobile = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n classes = computed(() => {\n const classList = [\"tedi-header-logout\", \"tedi-link\"];\n\n if (this.isMobile()) {\n classList.push(\"tedi-header-logout--mobile\");\n }\n\n return classList.join(\" \");\n })\n}\n","<tedi-icon name=\"logout\" />\n<span>\n <ng-content></ng-content>\n</span>","import { Directive, input, inject, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint/breakpoint.service';\n\n@Directive({\n selector: '[showAt]',\n standalone: true,\n})\nexport class ShowAtDirective {\n showAt = input.required<Breakpoint>();\n\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private breakpointService = inject(BreakpointService);\n\n constructor() {\n effect(() => {\n if (this.breakpointService.isAboveBreakpoint(this.showAt())()) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainerRef.clear();\n }\n })\n }\n}\n","import { Directive, input, inject, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint/breakpoint.service';\n\n@Directive({\n selector: '[hideAt]',\n standalone: true,\n})\nexport class HideAtDirective {\n hideAt = input.required<Breakpoint>();\n\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private breakpointService = inject(BreakpointService);\n\n constructor() {\n effect(() => {\n if (this.breakpointService.isBelowBreakpoint(this.hideAt())()) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainerRef.clear();\n }\n })\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DOCUMENT, NgTemplateOutlet } from \"@angular/common\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { ShowAtDirective } from \"../../../../directives/show-at/show-at.directive\";\nimport { HideAtDirective } from \"../../../../directives/hide-at/hide-at.directive\";\nimport {\n ButtonComponent,\n ButtonVariant,\n} from \"../../../buttons/button/button.component\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\nimport {\n Breakpoint,\n BreakpointService,\n} from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n selector: \"tedi-header-profile\",\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n IconComponent,\n ButtonComponent,\n ShowAtDirective,\n HideAtDirective,\n NgTemplateOutlet,\n TediTranslationPipe,\n ],\n templateUrl: \"./header-profile.component.html\",\n styleUrl: \"./header-profile.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderProfileComponent implements AfterContentInit {\n /** Name of representative */\n name = input(\"\");\n /** Breakpoint at which we show dropdown instead of modal */\n showDropdown = input<Breakpoint>();\n\n readonly breakpointService = inject(BreakpointService);\n readonly translationService = inject(TediTranslationService);\n private readonly document = inject(DOCUMENT);\n private readonly host = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly eventListeners: (() => void)[] = [];\n\n constructor() {\n effect(() => {\n if (this.modalOpen()) {\n this.renderer.setStyle(this.document.body, \"overflow\", \"hidden\");\n } else {\n this.renderer.removeStyle(this.document.body, \"overflow\");\n }\n });\n }\n\n modalOpen = signal(false);\n\n readonly buttonVariant = computed<ButtonVariant>(() => {\n if (this.breakpointService.isBelowBreakpoint(\"sm\")() || !this.name()) {\n return \"neutral\";\n }\n\n return \"secondary\";\n });\n\n readonly buttonClass = computed(() => {\n if (this.breakpointService.isBelowBreakpoint(\"sm\")()) {\n return \"tedi-header-profile--mobile\";\n }\n\n return null;\n });\n\n ngAfterContentInit(): void {\n const element = this.host.nativeElement as HTMLElement;\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"click\", (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const clickedInside = element.contains(target);\n\n if (this.modalOpen() && !clickedInside) {\n this.modalOpen.set(false);\n }\n }),\n );\n }\n\n handleModalOpen() {\n const dropdownBreakpoint = this.showDropdown();\n\n if (\n !(\n dropdownBreakpoint &&\n this.breakpointService.isAboveBreakpoint(dropdownBreakpoint)()\n )\n ) {\n this.modalOpen.update((prev) => !prev);\n }\n }\n}\n","@if (showDropdown(); as dropdown) {\n <ng-container *hideAt=\"dropdown\">\n <button\n tedi-button\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n [attr.aria-label]=\"\n breakpointService.isBelowBreakpoint('sm')() || !name()\n ? translationService.track('header.profile')()\n : null\n \"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <ng-container *ngTemplateOutlet=\"modal\"></ng-container>\n </ng-container>\n\n <ng-container *showAt=\"dropdown\">\n <tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n tedi-button\n tedi-popover-trigger\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <tedi-popover-content maxWidth=\"small\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-popover-content>\n </tedi-popover>\n </ng-container>\n} @else {\n <button\n tedi-button\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <ng-container *ngTemplateOutlet=\"modal\"></ng-container>\n}\n\n<ng-template #modal>\n @if (modalOpen()) {\n <div class=\"tedi-header-profile__overlay\" (click)=\"handleModalOpen()\"></div>\n <div class=\"tedi-header-profile__modal\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { ShowAtDirective } from \"../../../../directives/show-at/show-at.directive\";\nimport { HideAtDirective } from \"../../../../directives/hide-at/hide-at.directive\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\n\nexport type Representative = {\n name: string;\n icon?: string;\n description?: string;\n};\n\n@Component({\n selector: \"tedi-header-role\",\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n NgTemplateOutlet,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n IconComponent,\n ButtonComponent,\n TextComponent,\n ShowAtDirective,\n HideAtDirective,\n ],\n templateUrl: \"./header-role.component.html\",\n styleUrl: \"./header-role.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-header-role\",\n },\n})\nexport class HeaderRoleComponent {\n /**\n * Role text\n */\n role = input(\"\");\n /**\n * Description text\n */\n description = input(\"\");\n /** Should show input in representative list?\n * @default false\n */\n showInput = input(false);\n /** List of representatives */\n representatives = input.required<Representative[]>();\n /** Current representative */\n currentRepresentative = model.required<Representative>();\n\n mobileOpen = signal(false);\n inputValue = signal(\"\");\n\n translationService = inject(TediTranslationService);\n switchRoleText = this.translationService.track(\"header.role-switch\");\n closeText = this.translationService.track(\"close\");\n searchText = this.translationService.track(\"header.role-search\");\n noResultsText = this.translationService.track(\n \"header.role-no-representatives\",\n );\n collapseText = computed(() =>\n this.mobileOpen() ? this.closeText() : this.switchRoleText(),\n );\n\n filteredRepresentatives = computed(() => {\n return this.representatives().filter((r) => {\n if (!this.inputValue()) {\n return true;\n }\n\n const nameMatches = r.name\n .toLowerCase()\n .includes(this.inputValue().toLowerCase());\n const descriptionMatches =\n r.description\n ?.toLowerCase()\n .includes(this.inputValue().toLowerCase()) ?? false;\n\n return nameMatches || descriptionMatches;\n });\n });\n\n handleMobileOpen() {\n this.mobileOpen.update((prev) => !prev);\n }\n\n handleSelectRepresentative(r: Representative) {\n this.currentRepresentative.set(r);\n }\n\n handleInputChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.inputValue.set(value);\n }\n}\n","<ng-container *hideAt=\"'lg'\">\n <div class=\"tedi-header-role__head\">\n <div\n tedi-text\n color=\"secondary\"\n class=\"tedi-header-role__info\"\n [attr.data-multiple]=\"representatives().length > 1\"\n >\n <b>{{ role() }} {{ currentRepresentative().name }}</b>\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n @if (representatives().length > 1) {\n <button tedi-button variant=\"neutral\" (click)=\"handleMobileOpen()\">\n {{ collapseText() }}\n <tedi-icon name=\"expand_more\" [attr.data-open]=\"mobileOpen()\" />\n </button>\n }\n </div>\n @if (representatives().length > 1) {\n <div class=\"tedi-header-role__collapse\" [attr.data-open]=\"mobileOpen()\">\n <div class=\"tedi-header-role__collapse__items\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n }\n</ng-container>\n\n<ng-container *showAt=\"'lg'\">\n @if (role() || description()) {\n <div\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-role__head\"\n >\n @if (role()) {\n <b>{{ role() }}</b>\n }\n\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n }\n\n <ng-container *ngIf=\"representatives().length > 1; else normalText\">\n <tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ currentRepresentative().name }}</span>\n <tedi-icon name=\"expand_more\" />\n </button>\n <tedi-popover-content maxWidth=\"small\" class=\"tedi-header-role__dropdown\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-popover-content>\n </tedi-popover>\n </ng-container>\n</ng-container>\n\n<ng-template #content>\n @if (showInput()) {\n <div>\n <label for=\"representative-input\">{{ searchText() }}</label>\n <input\n id=\"representative-input\"\n class=\"tedi-header-role__input\"\n [value]=\"inputValue()\"\n (input)=\"handleInputChange($event)\"\n />\n </div>\n }\n @if (filteredRepresentatives().length === 0) {\n <span class=\"tedi-header-role__no-results\">{{ noResultsText() }}</span>\n }\n <button\n *ngFor=\"let r of filteredRepresentatives()\"\n class=\"tedi-header-role__representative\"\n [attr.data-selected]=\"\n r.name === currentRepresentative().name &&\n r.description === currentRepresentative().description\n \"\n (click)=\"handleSelectRepresentative(r)\"\n >\n @if (r.icon) {\n <tedi-icon [name]=\"r.icon\" />\n }\n <div>\n <div>{{ r.name }}</div>\n @if (r.description) {\n <div>\n {{ r.description }}\n </div>\n }\n </div>\n </button>\n</ng-template>\n\n<ng-template #normalText>\n <div>{{ currentRepresentative().name }}</div>\n</ng-template>\n","import { computed, effect, inject, Injectable, signal } from \"@angular/core\";\nimport { Breakpoint, BreakpointService } from \"../breakpoint/breakpoint.service\";\nimport { SideNavItemComponent } from \"../../components/layout/sidenav/sidenav-item/sidenav-item.component\";\n\n@Injectable({ providedIn: \"root\" })\nexport class SideNavService {\n private readonly breakpointService = inject(BreakpointService);\n\n items = signal<SideNavItemComponent[]>([]);\n desktopBreakpoint = signal<Breakpoint>(\"lg\");\n isMobile = this.breakpointService.isBelowBreakpoint(this.desktopBreakpoint);\n isMobileOpen = signal(false);\n isCollapsed = signal(false);\n\n constructor() {\n effect(() => {\n if (this.isMobile() && this.isCollapsed()) {\n this.isCollapsed.set(false);\n }\n });\n }\n\n registerItem(item: SideNavItemComponent) {\n this.items.update((list) => [...list, item]);\n }\n\n unregisterItem(item: SideNavItemComponent) {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n handleGoToMainMenu() {\n this.items().forEach((item) => item.dropdown?.open.set(false));\n }\n\n handleCollapse() {\n this.isCollapsed.update((prev) => !prev);\n }\n\n isMobileItemOpen = computed(() => {\n return (\n this.isMobile() && this.items().some((item) => item.dropdown?.open())\n );\n });\n\n tooltipEnabled = computed(() => {\n return this.isCollapsed() && !this.items().some(item => item.dropdown?.open());\n })\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { SideNavService } from \"../../../services/sidenav/sidenav.service\";\nimport { Breakpoint } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type SideNavItemSize = \"small\" | \"medium\" | \"large\";\n\n@Component({\n selector: \"nav[tedi-sidenav]\",\n standalone: true,\n templateUrl: \"./sidenav.component.html\",\n styleUrl: \"./sidenav.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent, TediTranslationPipe],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class SideNavComponent {\n /**\n * Show dividers between items\n * @default true\n */\n dividers = input<boolean>(true);\n /**\n * Size of navigation item\n * @default large\n */\n size = input<SideNavItemSize>(\"large\");\n /**\n * Is navigation collapsible in desktop?\n * @default false\n */\n collapsible = input<boolean>(false);\n /** Breakpoint when to show desktop navigation\n * @default lg\n */\n desktopBreakpoint = input<Breakpoint>(\"lg\");\n\n private readonly injector = inject(Injector);\n\n constructor(public sidenavService: SideNavService) {\n effect(() => {\n this.sidenavService.desktopBreakpoint.set(this.desktopBreakpoint())\n })\n }\n\n handleBackToMainMenu() {\n // Find the parent menu item to focus on\n const openItem = this.sidenavService.items().find(item => item.dropdown?.open());\n\n this.sidenavService.handleGoToMainMenu();\n\n afterNextRender(() => {\n if (openItem) {\n const itemEl = openItem['host']?.nativeElement as HTMLElement;\n const trigger = itemEl?.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }\n }, { injector: this.injector });\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav\", `tedi-sidenav--${this.size()}`];\n\n if (this.dividers()) {\n classList.push(\"tedi-sidenav--dividers\");\n }\n\n if (this.sidenavService.isCollapsed()) {\n classList.push(\"tedi-sidenav--collapsed\");\n }\n\n if (this.sidenavService.isMobile()) {\n classList.push(\"tedi-sidenav--mobile\");\n }\n\n if (this.sidenavService.isMobileItemOpen()) {\n classList.push(\"tedi-sidenav--mobile-item-open\");\n }\n\n if (this.sidenavService.isMobile() && !this.sidenavService.isMobileOpen()) {\n classList.push(\"tedi-sidenav--hidden\");\n }\n\n return classList.join(\" \");\n });\n}\n","@if (!sidenavService.isMobile() && collapsible()) {\n <button\n class=\"tedi-sidenav__collapse\"\n (click)=\"sidenavService.handleCollapse()\"\n [attr.aria-label]=\"'toggle' | tediTranslate: !sidenavService.isCollapsed()\"\n >\n <tedi-icon\n [name]=\"\n sidenavService.isCollapsed() ? 'left_panel_open' : 'right_panel_open'\n \"\n color=\"brand\"\n />\n </button>\n}\n@if (sidenavService.isMobileItemOpen()) {\n <button\n class=\"tedi-sidenav-back\"\n (click)=\"handleBackToMainMenu()\"\n >\n <tedi-icon name=\"arrow_back\" color=\"white\" />\n {{ \"sidenav.backToMainMenu\" | tediTranslate }}\n </button>\n}\n<ul class=\"tedi-sidenav__list\">\n <ng-content></ng-content>\n</ul>\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RouterLink } from \"@angular/router\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown-item\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown-item.component.html\",\n styleUrl: \"./sidenav-dropdown-item.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RouterLink, NgTemplateOutlet],\n host: {\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavDropdownItemComponent implements AfterViewInit {\n /**\n * Is navigation item selected\n * @default false\n */\n selected = input<boolean>(false);\n /**\n * External link\n */\n href = input<string>();\n /**\n * Router link\n */\n route = input<string>();\n\n textContent = signal(\"\");\n\n private readonly host = inject(ElementRef);\n\n ngAfterViewInit(): void {\n if (this.host.nativeElement) {\n const text = this.host.nativeElement.textContent?.trim();\n if (text) {\n this.textContent.set(text);\n }\n }\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-dropdown-item\"];\n\n if (this.selected()) {\n classList.push(\"tedi-sidenav-dropdown-item--selected\");\n }\n\n return classList.join(\" \");\n });\n}\n","<li [class]=\"classes()\">\n @if (href()) {\n <a [href]=\"href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else if (route()) {\n <a [routerLink]=\"route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <div class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</li>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-sidenav-group-title\",\n standalone: true,\n templateUrl: \"./sidenav-group-title.component.html\",\n styleUrl: \"./sidenav-group-title.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-sidenav-group-title\",\n },\n})\nexport class SideNavGroupTitleComponent {}\n","<div class=\"tedi-sidenav-group-title__text\">\n <ng-content></ng-content>\n</div>\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n HostListener,\n inject,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TooltipComponent } from \"../tooltip.component\";\n\n@Component({\n selector: \"tedi-tooltip-trigger\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"../tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TooltipTriggerComponent implements AfterContentChecked {\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n readonly tooltip = inject(TooltipComponent);\n private interactiveElement = signal<HTMLElement | null>(null);\n\n constructor() {\n effect(() => {\n const element = this.interactiveElement();\n if (!element) return;\n\n const descriptionId = this.tooltip.descriptionId;\n const isOpen = this.tooltip.isOpen();\n\n element.setAttribute(\"aria-describedby\", descriptionId);\n element.setAttribute(\"aria-expanded\", String(isOpen));\n });\n }\n\n @HostListener(\"click\")\n onClick() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"click\"\n ) {\n this.tooltip.toggleTooltip();\n }\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.showTooltip();\n }\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n clearTimeout(this.tooltip.hideTimeout);\n\n this.tooltip.hideTimeout = setTimeout(() => {\n this.tooltip.hideTooltip();\n }, this.tooltip.timeoutDelay());\n }\n }\n\n @HostListener(\"focusin\")\n onFocusIn() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.showTooltip();\n }\n }\n\n @HostListener(\"focusout\")\n onFocusOut() {\n if (this.tooltip.isContentHovered()) {\n return;\n }\n\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.hideTooltip();\n }\n }\n\n @HostListener(\"keydown.escape\")\n onEscape() {\n this.tooltip.hideTooltip();\n }\n\n ngAfterContentChecked(): void {\n const element = this.host.nativeElement as HTMLElement;\n const firstChild = element.firstChild as HTMLElement | null;\n\n if (!firstChild) {\n return;\n }\n\n if (\n firstChild.nodeType === Node.TEXT_NODE &&\n firstChild.textContent?.trim()\n ) {\n const span = this.renderer.createElement(\"span\") as HTMLSpanElement;\n this.renderer.addClass(span, \"tedi-tooltip-trigger__text\");\n this.renderer.addClass(span, \"tedi-tooltip-trigger--focus\");\n this.renderer.setAttribute(span, \"tabindex\", \"0\");\n this.renderer.insertBefore(element, span, firstChild);\n this.renderer.appendChild(span, firstChild);\n this.interactiveElement.set(span);\n return;\n }\n\n this.renderer.addClass(firstChild, \"tedi-tooltip-trigger--focus\");\n\n if (!firstChild.getAttribute(\"tabindex\")) {\n this.renderer.setAttribute(firstChild, \"tabindex\", \"0\");\n }\n\n this.interactiveElement.set(firstChild);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TooltipComponent } from \"../tooltip.component\";\n\nexport type TooltipWidth = \"none\" | \"small\" | \"medium\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"tedi-tooltip-content\",\n template: \"<ng-content />\",\n styleUrl: \"../tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n \"aria-hidden\": \"true\"\n },\n})\nexport class TooltipContentComponent {\n /**\n * The width of the tooltip. Can be 'none', 'small', 'medium', or 'large'.\n * @default medium\n */\n maxWidth = input<TooltipWidth>(\"medium\");\n\n private tooltip = inject(TooltipComponent);\n\n classes = computed(() => {\n return [\n \"tedi-tooltip-content\",\n `tedi-tooltip-content--${this.maxWidth()}`,\n ].join(\" \");\n });\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n clearTimeout(this.tooltip.hideTimeout);\n this.tooltip.isContentHovered.set(true);\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n this.tooltip.hideTooltip();\n this.tooltip.isContentHovered.set(false);\n }\n}\n","import {\n AfterContentChecked,\n Component,\n input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n viewChild,\n contentChild,\n signal,\n ElementRef,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { TooltipTriggerComponent } from \"./tooltip-trigger/tooltip-trigger.component\";\nimport { TooltipContentComponent } from \"./tooltip-content/tooltip-content.component\";\n\nexport type TooltipPosition = `${NgxFloatUiPlacements}`;\nexport type TooltipOpenWith = \"hover\" | \"click\" | \"both\";\n\nlet tooltipIdCounter = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-tooltip\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./tooltip.component.html\",\n styleUrl: \"./tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterContentChecked {\n /**\n * The position of the tooltip relative to the trigger element.\n * @default top\n */\n readonly position = input<TooltipPosition>(\"top\");\n\n /**\n * Should position to opposite direction when overflowing screen?\n * @default true\n */\n readonly preventOverflow = input(true);\n\n /**\n * How tooltip can opened?\n * @default both\n */\n readonly openWith = input<TooltipOpenWith>(\"both\");\n\n /**\n * Append floating element to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger element.\n * @default body\n */\n readonly appendTo = input(\"body\");\n\n /** Delay time (in ms) for closing tooltip when not hovering trigger or content.\n * @default 100\n */\n readonly timeoutDelay = input(100);\n\n /** Dropdown trigger button */\n readonly tooltipTrigger = contentChild.required(TooltipTriggerComponent);\n\n /** Tooltip content component */\n readonly tooltipContent = contentChild.required(TooltipContentComponent, {\n read: ElementRef,\n });\n\n readonly descriptionId = `tedi-tooltip-${++tooltipIdCounter}`;\n readonly contentText = signal(\"\");\n readonly isOpen = signal(false);\n\n isContentHovered = signal(false);\n floatUiDisplay = signal<\"inline\" | \"block\">(\"inline\");\n floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n hideTimeout?: ReturnType<typeof setTimeout>;\n\n showTooltip() {\n if (!this.floatUiComponent().state) {\n clearTimeout(this.hideTimeout);\n this.floatUiComponent().show();\n this.floatUiDisplay.set(\"block\");\n this.isOpen.set(true);\n }\n }\n\n hideTooltip() {\n if (this.floatUiComponent().state) {\n this.floatUiComponent().hide();\n this.floatUiDisplay.set(\"inline\");\n this.isOpen.set(false);\n }\n }\n\n toggleTooltip() {\n if (this.floatUiComponent().state) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n ngAfterContentChecked(): void {\n const contentEl = this.tooltipContent()?.nativeElement as HTMLElement;\n if (contentEl) {\n const text = contentEl.textContent?.trim() ?? \"\";\n if (text !== this.contentText()) {\n this.contentText.set(text);\n }\n }\n }\n}\n","<div\n applyClass=\"float-ui-container-tooltip\"\n ariaRole=\"tooltip\"\n ariaHidden=\"true\"\n style=\"display: contents\"\n looseTrigger=\"none\"\n [floatUiLoose]=\"floatUiComponent\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\n [disableAnimation]=\"true\"\n [targetElement]=\"tooltipTrigger().host.nativeElement\"\n [appendTo]=\"appendTo()\"\n>\n <ng-content select=\"tedi-tooltip-trigger\" />\n</div>\n@if (contentText()) {\n <span [id]=\"descriptionId\" class=\"sr-only\">{{ contentText() }}</span>\n}\n<float-ui-content #floatUiComponent [style.display]=\"floatUiDisplay()\" aria-hidden=\"true\">\n <ng-content select=\"tedi-tooltip-content\" />\n</float-ui-content>\n","import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { RouterLink } from \"@angular/router\";\nimport { NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport { SideNavDropdownComponent } from \"../sidenav-dropdown/sidenav-dropdown.component\";\nimport { SideNavGroupTitleComponent } from \"../sidenav-group-title/sidenav-group-title.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\nimport { TooltipComponent } from \"../../../overlay/tooltip/tooltip.component\";\nimport { TooltipContentComponent } from \"../../../overlay/tooltip/tooltip-content/tooltip-content.component\";\nimport { TooltipTriggerComponent } from \"../../../overlay/tooltip/tooltip-trigger/tooltip-trigger.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\n\n@Component({\n selector: \"tedi-sidenav-item\",\n standalone: true,\n templateUrl: \"./sidenav-item.component.html\",\n styleUrl: \"./sidenav-item.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n IconComponent,\n RouterLink,\n NgTemplateOutlet,\n NgIf,\n SideNavGroupTitleComponent,\n TooltipComponent,\n TooltipTriggerComponent,\n TooltipContentComponent,\n TediTranslationPipe,\n ],\n host: {\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavItemComponent implements AfterViewInit, OnInit, OnDestroy {\n /**\n * Is navigation item selected\n * @default false\n */\n selected = input<boolean>(false);\n /**\n * Name of the item icon\n */\n icon = input<string>();\n /**\n * External link\n */\n href = input<string>();\n /**\n * Router link\n */\n route = input<string>();\n\n @ContentChild(forwardRef(() => SideNavDropdownComponent))\n dropdown?: SideNavDropdownComponent;\n\n textContent = signal('');\n\n sidenavService = inject(SideNavService);\n private readonly host = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly eventListeners: (() => void)[] = [];\n\n ngOnInit() {\n this.sidenavService.registerItem(this);\n }\n\n ngOnDestroy() {\n this.sidenavService.unregisterItem(this);\n this.eventListeners.forEach((unlisten) => unlisten());\n }\n\n ngAfterViewInit(): void {\n const dropdown = this.dropdown;\n\n if (this.host.nativeElement) {\n const hostEl = this.host.nativeElement as Element;\n const titleElement = hostEl.querySelector(\".tedi-sidenav-item__text\");\n\n if (titleElement?.textContent) {\n this.textContent.set(titleElement.textContent);\n }\n }\n\n if (!dropdown) {\n return;\n }\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"click\", (event: MouseEvent) => {\n if (this.sidenavService.isCollapsed()) {\n const target = event.target as HTMLElement;\n const clickedInsideDropdown = dropdown.element()?.contains(target);\n const clickedInsideTrigger = this.host.nativeElement.contains(target);\n\n if (!clickedInsideTrigger && !clickedInsideDropdown) {\n dropdown.open.set(false);\n }\n }\n }),\n );\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && this.sidenavService.isCollapsed() && dropdown.open()) {\n dropdown.open.set(false);\n setTimeout(() => {\n const hostEl = this.host.nativeElement as HTMLElement;\n const trigger = hostEl.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }, 0);\n }\n }),\n );\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-item\"];\n\n if (this.selected()) {\n classList.push(\"tedi-sidenav-item--selected\");\n }\n\n if (this.sidenavService.isMobileItemOpen() && !this.dropdown?.open()) {\n classList.push(\"tedi-sidenav-item--hidden\");\n }\n\n return classList.join(\" \");\n });\n\n toggleDropdown() {\n if (!this.dropdown) {\n return;\n }\n\n const wasOpen = this.dropdown.open();\n const dropdown = this.dropdown;\n\n this.dropdown.open.update((prev) => !prev);\n\n if (this.sidenavService.isCollapsed() || this.sidenavService.isMobile()) {\n afterNextRender(() => {\n if (!wasOpen) {\n // Opening - focus first item in dropdown\n const dropdownEl = dropdown.element();\n const openDropdown = dropdownEl?.querySelector('ul.tedi-sidenav-dropdown');\n const allTriggers = openDropdown?.querySelectorAll('.tedi-sidenav-dropdown-item__trigger');\n const firstFocusable = Array.from(allTriggers ?? []).find(\n (el) => (el as HTMLElement).offsetParent !== null\n ) as HTMLElement | null;\n firstFocusable?.focus();\n } else {\n // Closing - focus on parent item\n const hostEl = this.host.nativeElement as HTMLElement;\n const trigger = hostEl.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }\n }, { injector: this.injector });\n }\n }\n}\n","<li [class]=\"classes()\">\n @if (sidenavService.isMobile()) {\n @if (sidenavService.isMobileItemOpen() && dropdown?.open()) {\n <ng-container *ngIf=\"!href() && !route(); else mobileLink\">\n <tedi-sidenav-group-title>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-sidenav-group-title>\n </ng-container>\n <ng-template #mobileLink>\n <ng-container *ngIf=\"route(); else mobileHref\">\n <a class=\"tedi-sidenav-item__link\" [routerLink]=\"route()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-container>\n <ng-template #mobileHref>\n <a class=\"tedi-sidenav-item__link\" [href]=\"href()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-template>\n </ng-template>\n } @else {\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n }\n } @else if (sidenavService.tooltipEnabled()) {\n <tedi-tooltip position=\"right\">\n <tedi-tooltip-trigger>\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n </tedi-tooltip-trigger>\n <tedi-tooltip-content position=\"right\">\n {{ textContent() }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n } @else {\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n }\n\n <ng-content select=\"tedi-sidenav-dropdown\"></ng-content>\n</li>\n\n<ng-template #buttonOrLink>\n <ng-container *ngIf=\"!href() && !route(); else hasLink\">\n <button class=\"tedi-sidenav-item__title\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"dropdown?.open()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if (dropdown) {\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n }\n </button>\n </ng-container>\n <ng-template #hasLink>\n <ng-container\n *ngIf=\"\n (dropdown && sidenavService.isCollapsed()) ||\n (dropdown && sidenavService.isMobile());\n else plainLink\n \"\n >\n <button class=\"tedi-sidenav-item__title\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"dropdown.open()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n </button>\n </ng-container>\n <ng-template #plainLink>\n @if (route()) {\n <a class=\"tedi-sidenav-item__title\" [routerLink]=\"route()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a class=\"tedi-sidenav-item__title\" [href]=\"href()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n @if (dropdown) {\n <button\n class=\"tedi-sidenav-item__caret-button\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"dropdown.open()\"\n >\n <span class=\"sr-only\">{{ 'sidenav.toggleSubmenu' | tediTranslate: textContent(): dropdown.open() }}</span>\n <div class=\"tedi-sidenav-item__caret-container\">\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n </div>\n </button>\n }\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n @if (icon(); as icon) {\n @if (!(sidenavService.isMobileItemOpen() && dropdown?.open())) {\n <tedi-icon [name]=\"icon\" color=\"white\" class=\"tedi-sidenav-item__icon\" />\n }\n }\n <span class=\"tedi-sidenav-item__text\">\n <ng-content></ng-content>\n </span>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { SideNavDropdownItemComponent } from \"../sidenav-dropdown-item/sidenav-dropdown-item.component\";\nimport { SideNavItemComponent } from \"../sidenav-item/sidenav-item.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown.component.html\",\n styleUrl: \"./sidenav-dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SideNavDropdownItemComponent],\n host: {\n \"class\": \"tedi-sidenav-dropdown-wrapper\",\n },\n})\nexport class SideNavDropdownComponent implements AfterViewInit {\n private readonly host = inject(ElementRef);\n\n open = signal(false);\n element = signal<HTMLElement | null>(null);\n sidenavService = inject(SideNavService);\n sidenavItem = inject(\n forwardRef(() => SideNavItemComponent),\n { host: true, optional: true },\n );\n\n ngAfterViewInit(): void {\n if (this.host.nativeElement) {\n this.element.set(this.host.nativeElement);\n }\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-dropdown\"];\n\n if (this.open()) {\n classList.push(\"tedi-sidenav-dropdown--open\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ul [class]=\"classes()\">\n @if (sidenavService.isCollapsed() && !!sidenavItem.href()) {\n <tedi-sidenav-dropdown-item\n class=\"tedi-sidenav-dropdown-item--parent\"\n [href]=\"sidenavItem.href()\"\n >\n {{ sidenavItem.textContent() }}\n </tedi-sidenav-dropdown-item>\n } @else if (sidenavService.isCollapsed() && !!sidenavItem.route()) {\n <tedi-sidenav-dropdown-item\n class=\"tedi-sidenav-dropdown-item--parent\"\n [route]=\"sidenavItem.route()\"\n >\n {{ sidenavItem.textContent() }}\n </tedi-sidenav-dropdown-item>\n }\n <ng-content></ng-content>\n</ul>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChildren,\n QueryList,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RouterLink } from \"@angular/router\";\nimport { SideNavDropdownItemComponent } from \"../sidenav-dropdown-item/sidenav-dropdown-item.component\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown-group\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown-group.component.html\",\n styleUrl: \"./sidenav-dropdown-group.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RouterLink],\n host: {\n \"class\": \"tedi-sidenav-dropdown-group\",\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavDropdownGroupComponent implements AfterContentInit {\n @ContentChildren(SideNavDropdownItemComponent)\n items!: QueryList<SideNavDropdownItemComponent>;\n\n private itemsArray = signal<SideNavDropdownItemComponent[]>([]);\n\n firstItem = computed(() => this.itemsArray()[0]);\n restItems = computed(() => this.itemsArray().slice(1));\n\n // to keep same component composition structure but rearrange dom elements inside the group for correct html semantics\n ngAfterContentInit(): void {\n this.itemsArray.set(this.items.toArray());\n\n this.items.changes.subscribe(() => {\n this.itemsArray.set(this.items.toArray());\n });\n }\n}\n","@if (firstItem(); as first) {\n <li class=\"tedi-sidenav-dropdown-group__parent-wrapper\">\n <div\n class=\"tedi-sidenav-dropdown-item tedi-sidenav-dropdown-group__parent\"\n [class.tedi-sidenav-dropdown-item--selected]=\"first.selected()\"\n >\n @if (first.href()) {\n <a [href]=\"first.href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </a>\n } @else if (first.route()) {\n <a [routerLink]=\"first.route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </a>\n } @else {\n <span class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </span>\n }\n </div>\n\n @if (restItems().length > 0) {\n <ul class=\"tedi-sidenav-dropdown-group__list\">\n @for (item of restItems(); track item) {\n <li\n class=\"tedi-sidenav-dropdown-item tedi-sidenav-dropdown-group__item\"\n [class.tedi-sidenav-dropdown-item--selected]=\"item.selected()\"\n >\n @if (item.href()) {\n <a [href]=\"item.href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </a>\n } @else if (item.route()) {\n <a [routerLink]=\"item.route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </a>\n } @else {\n <span class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </span>\n }\n </li>\n }\n </ul>\n }\n </li>\n}\n\n<!-- Hidden container for @ContentChildren query -->\n<div style=\"display: none\" aria-hidden=\"true\">\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\n\n@Component({\n selector: \"tedi-sidenav-overlay\",\n standalone: true,\n styleUrl: \"./sidenav-overlay.component.scss\",\n template: \"<ng-content />\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class SideNavOverlayComponent {\n sidenavService = inject(SideNavService);\n\n @HostListener(\"click\")\n onClick() {\n this.sidenavService.isMobileOpen.set(false);\n this.sidenavService.handleGoToMainMenu();\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-overlay\"];\n\n if (this.sidenavService.isMobile() && this.sidenavService.isMobileOpen()) {\n classList.push(\"tedi-sidenav-overlay--visible\");\n }\n\n return classList.join(\" \");\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n selector: \"button[tedi-sidenav-toggle]\",\n standalone: true,\n templateUrl: \"./sidenav-toggle.component.html\",\n styleUrl: \"./sidenav-toggle.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent],\n host: {\n \"[class]\": \"classes()\",\n \"[attr.aria-label]\": \"ariaLabel()\",\n },\n})\nexport class SideNavToggleComponent {\n sidenavService = inject(SideNavService);\n translationService = inject(TediTranslationService);\n\n @HostListener(\"click\")\n onClick() {\n this.sidenavService.isMobileOpen.update((prev) => !prev);\n this.sidenavService.handleGoToMainMenu();\n }\n\n ariaLabel = this.translationService.track(\"sidenav.toggle\");\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-toggle\"];\n\n if (!this.sidenavService.isMobile()) {\n classList.push(\"tedi-sidenav-toggle--hidden\");\n }\n\n return classList.join(\" \");\n })\n}\n","<tedi-icon\n [name]=\"sidenavService.isMobileOpen() ? 'close' : 'menu'\"\n color=\"white\"\n/>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type SpinnerSize = 10 | 16 | 48;\nexport type SpinnerColor = \"primary\" | \"secondary\";\n\n@Component({\n selector: \"tedi-spinner\",\n standalone: true,\n templateUrl: \"./spinner.component.html\",\n styleUrl: \"./spinner.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"status\",\n \"aria-live\": \"polite\",\n \"[attr.aria-label]\": \"label() ? label() : null\",\n \"[attr.aria-hidden]\": \"!label()\"\n }\n})\nexport class SpinnerComponent {\n /**\n * Size of the spinner in px.\n * @default 16\n */\n size = input<SpinnerSize>(16);\n /**\n * Specifies the color theme of the spinner.\n * The color should meet accessibility standards for color contrast.\n * @default primary\n */\n color = input<SpinnerColor>(\"primary\");\n /**\n * Provides a text label for screen readers to announce the spinner's purpose or status.\n */\n label = input<string>();\n\n classes = computed(() => {\n const classList = [\n \"tedi-spinner\",\n `tedi-spinner--size-${this.size()}`,\n `tedi-spinner--color-${this.color()}`,\n ];\n\n return classList.join(\" \");\n });\n}\n","<svg viewBox=\"22 22 44 44\" aria-hidden=\"true\">\n <circle\n class=\"tedi-spinner--inner\"\n cx=\"44\"\n cy=\"44\"\n r=\"20\"\n fill=\"none\"\n ></circle>\n</svg>","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n inject,\n AfterViewInit,\n ElementRef,\n OnDestroy,\n PLATFORM_ID,\n effect,\n} from \"@angular/core\";\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport { CdkTrapFocus } from \"@angular/cdk/a11y\";\n\nexport type ModalSize = \"default\" | \"small\";\nexport type ModalWidth = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ModalPosition = \"center\" | \"left\" | \"right\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal\",\n imports: [CdkTrapFocus],\n templateUrl: \"./modal.component.html\",\n styleUrl: \"./modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ModalComponent implements AfterViewInit, OnDestroy {\n /** Is modal open? */\n readonly open = model(false);\n\n /** Modal size */\n readonly size = input<ModalSize>(\"default\");\n\n /** Modal width */\n readonly width = input<ModalWidth>(\"sm\");\n\n /** Position of the modal */\n readonly position = input<ModalPosition>(\"center\");\n\n private readonly document = inject(DOCUMENT);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private prevBodyOverflow: string = \"\";\n private prevFocusedElement: HTMLElement | null = null;\n\n readonly classes = computed(() => {\n const classList = [\n \"tedi-modal\",\n `tedi-modal--${this.size()}`,\n `tedi-modal--${this.width()}`,\n `tedi-modal--${this.position()}`,\n ];\n\n if (this.open()) {\n classList.push(\"tedi-modal--open\");\n }\n\n return classList.join(\" \");\n });\n\n constructor() {\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.open()) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.document.body.appendChild(this.host.nativeElement);\n }\n\n ngOnDestroy() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const element = this.host.nativeElement;\n\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n\n this.document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n private onOpen() {\n this.prevFocusedElement = this.document.activeElement as HTMLElement;\n this.prevBodyOverflow = this.document.body.style.overflow;\n this.document.body.style.overflow = \"hidden\";\n this.document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n private onClose() {\n this.document.body.style.overflow = this.prevBodyOverflow;\n\n if (this.prevFocusedElement) {\n this.prevFocusedElement.focus({ preventScroll: true });\n }\n\n this.document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n private handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.open.set(false);\n }\n };\n}\n","@if (open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"open.set(false)\"></div>\n <div\n class=\"tedi-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"open()\"\n >\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-content\",\n imports: [],\n templateUrl: \"./modal-content.component.html\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalContentComponent {}\n","<ng-content />\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-footer\",\n template: \"<ng-content />\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent {}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n inject,\n} from \"@angular/core\";\nimport { ClosingButtonComponent } from \"../../../buttons/closing-button/closing-button.component\";\nimport { ModalComponent } from \"../modal.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-header\",\n imports: [ClosingButtonComponent],\n templateUrl: \"./modal-header.component.html\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeaderComponent {\n /** Should show closing button? */\n readonly showClose = input(true);\n\n private readonly modal = inject(ModalComponent);\n\n closeModal() {\n this.modal.open.set(false);\n }\n}\n","<div class=\"tedi-modal-header__head\">\n <ng-content select=\"h1,h2,h3,h4,h5,h6\" />\n @if (showClose()) {\n <button tedi-closing-button (click)=\"closeModal()\"></button>\n }\n</div>\n<ng-content />\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n Renderer2,\n} from \"@angular/core\";\nimport type { VerticalSpacingSize } from \"./vertical-spacing.directive\";\n\n@Directive({\n selector: \"[tediVerticalSpacingItem]\",\n standalone: true,\n})\nexport class VerticalSpacingItemDirective implements AfterViewInit {\n tediVerticalSpacingItem = input<VerticalSpacingSize>(0);\n\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.renderer.addClass(\n this.el.nativeElement,\n \"tedi-vertical-spacing__item\",\n );\n\n const spacingValue = `${this.tediVerticalSpacingItem()}em`;\n\n this.renderer.setAttribute(\n this.el.nativeElement,\n \"style\",\n `--vertical-spacing-internal: ${spacingValue}`,\n );\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n Renderer2,\n} from \"@angular/core\";\n\nexport type VerticalSpacingSize =\n | 0\n | 0.25\n | 0.5\n | 0.75\n | 1\n | 1.25\n | 1.5\n | 1.75\n | 2\n | 2.5\n | 3\n | 4\n | 5;\n\n@Directive({\n selector: \"[tediVerticalSpacing]\",\n standalone: true,\n})\nexport class VerticalSpacingDirective implements AfterViewInit {\n tediVerticalSpacing = input<VerticalSpacingSize>(0);\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.renderer.addClass(this.el.nativeElement, \"tedi-vertical-spacing\");\n const spacingValue = `${this.tediVerticalSpacing()}em`;\n this.renderer.setAttribute(\n this.el.nativeElement,\n \"style\",\n `--vertical-spacing-internal: ${spacingValue}`,\n );\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from \"@angular/core\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../tokens/theme.token\";\nimport {\n AVAILABLE_THEMES,\n Theme,\n THEME_CLASS_PREFIX,\n THEME_FALLBACK_VALUE,\n} from \"../services/theme/theme.service\";\nimport { TEDI_TRANSLATION_DEFAULT_TOKEN } from \"../tokens/translation.token\";\nimport { Language } from \"../services/translation/translation.service\";\nimport { DOCUMENT } from \"@angular/common\";\n\nexport interface TediConfig {\n theme?: Theme;\n language?: Language;\n}\n\nfunction applyInitialTheme() {\n return () => {\n const document = inject(DOCUMENT);\n const defaultTheme = inject(TEDI_THEME_DEFAULT_TOKEN);\n const html = document.documentElement;\n\n for (const t of AVAILABLE_THEMES) {\n html.classList.remove(`${THEME_CLASS_PREFIX}${t}`);\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${defaultTheme}`);\n };\n}\n\nexport function provideTedi(config: TediConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: TEDI_THEME_DEFAULT_TOKEN,\n useValue: config.theme ?? THEME_FALLBACK_VALUE,\n },\n {\n provide: TEDI_TRANSLATION_DEFAULT_TOKEN,\n useValue: config.language ?? \"et\",\n },\n provideAppInitializer(applyInitialTheme()),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.SideNavService"],"mappings":"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"}
1
+ {"version":3,"file":"tedi-design-system-angular-tedi.mjs","sources":["../../tedi/components/base/icon/icon.component.ts","../../tedi/components/base/icon/icon.component.html","../../tedi/components/base/text/text.component.ts","../../tedi/components/base/text/text.component.html","../../tedi/components/buttons/button/base-button.directive.ts","../../tedi/components/buttons/button/button.component.ts","../../tedi/services/breakpoint/breakpoint.service.ts","../../tedi/services/translation/translations.ts","../../tedi/tokens/translation.token.ts","../../tedi/utils/cookies.util.ts","../../tedi/services/translation/translation.service.ts","../../tedi/tokens/theme.token.ts","../../tedi/services/theme/theme.service.ts","../../tedi/services/translation/translation.pipe.ts","../../tedi/components/buttons/closing-button/closing-button.component.ts","../../tedi/components/buttons/closing-button/closing-button.component.html","../../tedi/components/notifications/alert/alert.component.ts","../../tedi/components/notifications/alert/alert.component.html","../../tedi/components/notifications/toast/toast.component.ts","../../tedi/components/notifications/toast/toast.component.html","../../tedi/components/notifications/toast/toast-container.component.ts","../../tedi/services/toast/toast-announcer.service.ts","../../tedi/services/toast/toast.service.ts","../../tedi/components/buttons/info-button/info-button.component.ts","../../tedi/helpers/generate-uuid.ts","../../tedi/components/buttons/collapse/collapse.component.ts","../../tedi/components/buttons/collapse/collapse.component.html","../../tedi/components/content/list/list.component.ts","../../tedi/components/content/list/list.component.html","../../tedi/components/form/checkbox/checkbox.component.ts","../../tedi/components/helpers/separator/separator.component.ts","../../tedi/components/overlay/popover/popover-trigger/popover-trigger.directive.ts","../../tedi/utils/elements.util.ts","../../tedi/components/overlay/popover/popover-content/popover-content.component.ts","../../tedi/components/overlay/popover/popover-content/popover-content.component.html","../../tedi/components/overlay/popover/popover.component.ts","../../tedi/components/overlay/popover/popover.component.html","../../tedi/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.ts","../../tedi/components/overlay/dropdown/dropdown-content/dropdown-content.component.ts","../../tedi/components/overlay/dropdown/dropdown-content/dropdown-content.component.html","../../tedi/components/overlay/dropdown/dropdown.component.ts","../../tedi/components/overlay/dropdown/dropdown.component.html","../../tedi/components/form/date-picker/date-picker-header/date-picker-header.component.ts","../../tedi/components/form/date-picker/date-picker-header/date-picker-header.component.html","../../tedi/components/form/date-picker/date-picker-calendar-grid/date-picker-calendar-grid.component.ts","../../tedi/components/form/date-picker/date-picker-calendar-grid/date-picker-calendar-grid.component.html","../../tedi/components/form/date-picker/date-picker-month-grid/date-picker-month-grid.component.ts","../../tedi/components/form/date-picker/date-picker-month-grid/date-picker-month-grid.component.html","../../tedi/components/form/date-picker/date-picker-year-grid/date-picker-year-grid.component.ts","../../tedi/components/form/date-picker/date-picker-year-grid/date-picker-year-grid.component.html","../../tedi/utils/date.util.ts","../../tedi/components/form/date-picker/date-picker.component.ts","../../tedi/components/form/date-picker/date-picker.component.html","../../tedi/components/form/feedback-text/feedback-text.component.ts","../../tedi/components/form/feedback-text/feedback-text.component.html","../../tedi/components/form/label/label.component.ts","../../tedi/components/form/label/label.component.html","../../tedi/components/form/number-field/number-field.component.ts","../../tedi/components/form/number-field/number-field.component.html","../../tedi/components/form/toggle/toggle.component.ts","../../tedi/components/form/toggle/toggle.component.html","../../tedi/components/content/text-group/text-group-label.component.ts","../../tedi/components/content/text-group/text-group.component.ts","../../tedi/components/content/text-group/text-group.component.html","../../tedi/components/content/text-group/text-group-value.component.ts","../../tedi/components/content/carousel/carousel-slide.directive.ts","../../tedi/components/content/carousel/carousel-content/carousel-content.component.ts","../../tedi/components/content/carousel/carousel-content/carousel-content.component.html","../../tedi/components/content/carousel/carousel.component.ts","../../tedi/components/content/carousel/carousel.component.html","../../tedi/components/content/carousel/carousel-footer/carousel-footer.component.ts","../../tedi/components/content/carousel/carousel-header/carousel-header.component.ts","../../tedi/components/content/carousel/carousel-indicators/carousel-indicators.component.ts","../../tedi/components/content/carousel/carousel-indicators/carousel-indicators.component.html","../../tedi/components/content/carousel/carousel-navigation/carousel-navigation.component.ts","../../tedi/components/content/carousel/carousel-navigation/carousel-navigation.component.html","../../tedi/components/helpers/grid/col/col.component.ts","../../tedi/components/helpers/grid/col/col.component.html","../../tedi/components/helpers/grid/row/row.component.ts","../../tedi/components/helpers/grid/row/row.component.html","../../tedi/components/helpers/timeline/timeline.component.ts","../../tedi/components/helpers/timeline/timeline-item/timeline-item.component.ts","../../tedi/components/helpers/timeline/timeline-item/timeline-item.component.html","../../tedi/components/helpers/timeline/timeline-description/timeline-description.component.ts","../../tedi/components/helpers/timeline/timeline-title/timeline-title.component.ts","../../tedi/components/layout/footer/footer.component.ts","../../tedi/components/layout/footer/footer.component.html","../../tedi/components/layout/footer/footer-body/footer-body.component.ts","../../tedi/components/layout/footer/footer-section/footer-section.component.ts","../../tedi/components/layout/footer/footer-section/footer-section.component.html","../../tedi/components/layout/footer/footer-side/footer-side.component.ts","../../tedi/components/navigation/link/link.component.ts","../../tedi/components/navigation/link/link.component.html","../../tedi/components/layout/footer/footer-bottom/footer-bottom.component.ts","../../tedi/components/layout/footer/footer-bottom/footer-bottom.component.html","../../tedi/components/layout/header/header.component.ts","../../tedi/components/layout/header/header.component.html","../../tedi/components/layout/header/header-actions/header-actions.component.ts","../../tedi/components/layout/header/header-content/header-content.component.ts","../../tedi/components/layout/header/header-language/header-language.component.ts","../../tedi/components/layout/header/header-language/header-language.component.html","../../tedi/components/layout/header/header-login/header-login.component.ts","../../tedi/components/layout/header/header-login/header-login.component.html","../../tedi/components/layout/header/header-logout/header-logout.component.ts","../../tedi/components/layout/header/header-logout/header-logout.component.html","../../tedi/directives/show-at/show-at.directive.ts","../../tedi/directives/hide-at/hide-at.directive.ts","../../tedi/components/layout/header/header-profile/header-profile.component.ts","../../tedi/components/layout/header/header-profile/header-profile.component.html","../../tedi/components/layout/header/header-role/header-role.component.ts","../../tedi/components/layout/header/header-role/header-role.component.html","../../tedi/services/sidenav/sidenav.service.ts","../../tedi/components/layout/sidenav/sidenav.component.ts","../../tedi/components/layout/sidenav/sidenav.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.html","../../tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.ts","../../tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.html","../../tedi/components/overlay/tooltip/tooltip-trigger/tooltip-trigger.component.ts","../../tedi/components/overlay/tooltip/tooltip-content/tooltip-content.component.ts","../../tedi/components/overlay/tooltip/tooltip.component.ts","../../tedi/components/overlay/tooltip/tooltip.component.html","../../tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.ts","../../tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.html","../../tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.ts","../../tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.html","../../tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.ts","../../tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.ts","../../tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.html","../../tedi/components/loader/spinner/spinner.component.ts","../../tedi/components/loader/spinner/spinner.component.html","../../tedi/components/overlay/modal/modal.component.ts","../../tedi/components/overlay/modal/modal.component.html","../../tedi/components/overlay/modal/modal-content/modal-content.component.ts","../../tedi/components/overlay/modal/modal-content/modal-content.component.html","../../tedi/components/overlay/modal/modal-footer/modal-footer.component.ts","../../tedi/components/overlay/modal/modal-header/modal-header.component.ts","../../tedi/components/overlay/modal/modal-header/modal-header.component.html","../../tedi/components/tags/tag/tag.component.ts","../../tedi/components/tags/tag/tag.component.html","../../tedi/directives/vertical-spacing/vertical-spacing-item.directive.ts","../../tedi/directives/vertical-spacing/vertical-spacing.directive.ts","../../tedi/providers/tedi.provider.ts","../../tedi/tedi-design-system-angular-tedi.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nconst ICON_WITH_BACKGROUND = [16, 24];\n\nexport type IconSize = 8 | 12 | 16 | 18 | 24 | 36 | 48 | \"inherit\";\nexport type IconVariant = \"filled\" | \"outlined\";\nexport type IconType = \"outlined\" | \"sharp\" | \"rounded\";\nexport type IconColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"brand\"\n | \"brand-dark\"\n | \"success\"\n | \"warning\"\n | \"warning-dark\"\n | \"danger\"\n | \"white\";\nexport type IconBackgroundColor =\n | \"primary\"\n | \"secondary\"\n | \"brand-primary\"\n | \"brand-secondary\";\n\n@Component({\n selector: \"tedi-icon\",\n standalone: true,\n templateUrl: \"./icon.component.html\",\n styleUrl: \"./icon.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"img\",\n \"[attr.aria-label]\": \"label()\",\n \"[attr.aria-hidden]\": \"!label()\"\n }\n})\nexport class IconComponent {\n /**\n * Name of the Material Icon\n * https://fonts.google.com/icons\n */\n name = input.required<string>();\n /**\n * Size of the icon in pixels.\n * @default 24\n */\n size = input<IconSize>(24);\n /**\n * Color of the icon.\n * @default primary\n */\n color = input<IconColor>(\"primary\");\n /**\n * Background color for the icon (adds a circular background).\n */\n background = input<IconBackgroundColor>();\n /**\n * Whether the icon should be filled or outlined.\n * @default outlined\n */\n variant = input<IconVariant>(\"outlined\");\n /**\n * Type of Material Symbols icon style.\n * It is recommended to only use one type throughout your app.\n * @default outlined\n */\n type = input<IconType>(\"outlined\");\n /**\n * Accessible label for screen readers.\n * If omitted then the icon is hidden for screen-readers.\n */\n label = input<string>();\n\n classes = computed(() => {\n let size = this.size();\n\n if (this.background()) {\n if (size === \"inherit\") {\n size = 24;\n } else {\n size = ICON_WITH_BACKGROUND.includes(size) ? size : 24;\n }\n }\n\n const classes: string[] = [\n \"notranslate\",\n \"material-symbols\",\n `material-symbols--${this.type()}`,\n \"tedi-icon\",\n `tedi-icon--color-${this.color()}`,\n `tedi-icon--size-${size}`,\n ];\n\n if (this.background()) {\n classes.push(\"tedi-icon--bg\", `tedi-icon--bg-${this.background()}`);\n }\n\n if (this.variant() === \"filled\") {\n classes.push(\"tedi-icon--filled\");\n }\n\n return classes.join(\" \");\n });\n}\n","{{ name() }}","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from \"@angular/core\";\n\nexport type TextModifiers =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"normal\"\n | \"small\"\n | \"bold\"\n | \"thin\"\n | \"italic\"\n | \"center\"\n | \"left\"\n | \"right\"\n | \"nowrap\"\n | \"break-all\"\n | \"break-word\"\n | \"break-spaces\"\n | \"uppercase\"\n | \"lowercase\"\n | \"capitalize\"\n | \"capitalize-first\"\n | \"inline-block\"\n | \"inline\"\n | \"line-normal\"\n | \"line-condensed\"\n | \"subtitle\";\n\nexport type TextColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"white\"\n | \"disabled\"\n | \"brand\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\"\n | \"neutral\";\n\n@Component({\n selector: \"[tedi-text]\",\n standalone: true,\n templateUrl: \"./text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\"\n },\n})\nexport class TextComponent {\n /**\n * Single or multiple modifiers to change the text behavior\n */\n modifiers = input<TextModifiers[] | TextModifiers>();\n /**\n * Color of the text\n * Use 'success', 'important' or 'warning' with caution, usually they should not be in application UI\n * @default primary\n */\n color = input<TextColor>(\"primary\");\n\n private isHeadingModifier(modifier: string) {\n return /^h[1-6]$/.test(modifier);\n }\n\n classes = computed(() => {\n const classList = [`tedi-text--${this.color()}`];\n\n const modifiersValue = this.modifiers();\n const modifierClasses = Array.isArray(modifiersValue)\n ? modifiersValue\n : modifiersValue\n ? [modifiersValue]\n : [];\n \n\n modifierClasses.forEach((modifier) => {\n if (this.isHeadingModifier(modifier)) {\n classList.push(`tedi-text--${modifier}`);\n } else {\n classList.push(`text-${modifier}`);\n }\n });\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n Directive,\n AfterContentChecked,\n signal,\n inject,\n ElementRef,\n computed,\n} from \"@angular/core\";\n\n@Directive({\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class BaseButtonDirective implements AfterContentChecked {\n /**\n * CSS class name affix the directive should provide\n */\n classNamePrefix = signal(\"tedi-button\");\n\n private host = inject(ElementRef);\n iconOnly = signal(false);\n iconFirst = signal(false);\n iconLast = signal(false);\n\n ngAfterContentChecked(): void {\n const hostElement = this.host.nativeElement as HTMLElement;\n const nodes = Array.from(hostElement.childNodes).filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE ||\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim())\n );\n const nodeCount = nodes.length;\n const iconIndexes = nodes\n .map((node, index) => ({ node, index }))\n .filter(\n (x) =>\n x.node.nodeType === Node.ELEMENT_NODE &&\n x.node.nodeName === \"TEDI-ICON\"\n )\n .map((x) => x.index);\n\n const iconCount = iconIndexes.length;\n this.iconOnly.set(nodeCount === 1 && iconCount === 1);\n this.iconFirst.set(iconIndexes.includes(0));\n this.iconLast.set(iconIndexes.includes(nodes.length - 1));\n }\n\n classes = computed(() => {\n const classList = [this.classNamePrefix()];\n\n if (this.iconOnly()) {\n classList.push(`${this.classNamePrefix()}--icon-only`);\n }\n\n if (!this.iconFirst()) {\n classList.push(`${this.classNamePrefix()}--pl`);\n }\n\n if (!this.iconLast()) {\n classList.push(`${this.classNamePrefix()}--pr`);\n }\n\n return classList.join(\" \");\n });\n}\n","import { Component, computed, input, ViewEncapsulation } from \"@angular/core\";\nimport { BaseButtonDirective } from \"./base-button.directive\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"success\"\n | \"danger\"\n | \"danger-neutral\"\n | \"primary-inverted\"\n | \"secondary-inverted\"\n | \"neutral-inverted\";\n\nexport type ButtonSize = \"default\" | \"small\";\n\n@Component({\n selector: \"[tedi-button]\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./button.component.scss\",\n encapsulation: ViewEncapsulation.None,\n hostDirectives: [\n {\n directive: BaseButtonDirective,\n },\n ],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ButtonComponent {\n /**\n * Specifies the color theme of the button. The color should meet accessibility standards for color contrast.\n * @default primary\n */\n variant = input<ButtonVariant>(\"primary\");\n /**\n * Defines the size of the button.\n * @default default\n */\n size = input<ButtonSize>(\"default\");\n\n classes = computed(() => {\n const classList = [\n \"tedi-button\",\n `tedi-button--${this.variant()}`,\n `tedi-button--${this.size()}`,\n ];\n return classList.join(\" \");\n });\n}\n","import {\n computed,\n Injectable,\n InputSignal,\n Signal,\n signal,\n} from \"@angular/core\";\nimport { BreakpointObserver } from \"@angular/cdk/layout\";\n\nexport const BREAKPOINTS = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400,\n} as const;\n\nconst breakpointsOrder: Breakpoint[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\"];\n\nexport type Breakpoint = keyof typeof BREAKPOINTS;\n\nexport type BreakpointInputs<TInputs> = {\n [K in keyof TInputs]: InputSignal<TInputs[K]>;\n} & Partial<Record<Breakpoint, InputSignal<TInputs | undefined>>>;\n\nexport type BreakpointInputsWithoutSignals<TInputs> = TInputs &\n Partial<Record<Breakpoint, TInputs>>;\n\nexport type BreakpointObject<T> = { xs: T } & Partial<\n Record<Exclude<Breakpoint, \"xs\">, T>\n>;\nexport type BreakpointInput<T> = T | BreakpointObject<T>;\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class BreakpointService {\n private readonly _currentBreakpoint = signal<Breakpoint | undefined>(\n undefined,\n );\n constructor(private breakpointObserver: BreakpointObserver) {\n this.breakpointObserver\n .observe(\n Object.values(BREAKPOINTS).map((value) => `(min-width: ${value}px)`),\n )\n .subscribe((state) => {\n if (state.breakpoints[`(min-width: ${BREAKPOINTS.xxl}px)`]) {\n this._currentBreakpoint.set(\"xxl\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.xl}px)`]) {\n this._currentBreakpoint.set(\"xl\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.lg}px)`]) {\n this._currentBreakpoint.set(\"lg\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.md}px)`]) {\n this._currentBreakpoint.set(\"md\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.sm}px)`]) {\n this._currentBreakpoint.set(\"sm\");\n } else if (state.breakpoints[`(min-width: ${BREAKPOINTS.xs}px)`]) {\n this._currentBreakpoint.set(\"xs\");\n } else {\n this._currentBreakpoint.set(undefined);\n }\n });\n }\n\n currentBreakpoint() {\n return computed(() => {\n return this._currentBreakpoint();\n });\n }\n\n getBreakpointInputs<TInputs>(\n inputs: BreakpointInputsWithoutSignals<TInputs>,\n ): TInputs {\n let resolvedInputs: Partial<TInputs> = {};\n\n Object.keys(inputs).forEach((key) => {\n if (!breakpointsOrder.includes(key as Breakpoint)) {\n const baseInput = inputs[key as keyof TInputs];\n resolvedInputs[key as keyof TInputs] = baseInput;\n }\n });\n\n const currentBreakpoint = this._currentBreakpoint();\n\n if (!currentBreakpoint) {\n return resolvedInputs as TInputs;\n }\n\n for (let i = 0; i <= breakpointsOrder.indexOf(currentBreakpoint); i++) {\n const breakpoint = breakpointsOrder[i];\n const breakpointInputs = inputs[breakpoint];\n\n if (breakpointInputs) {\n resolvedInputs = { ...resolvedInputs, ...breakpointInputs };\n }\n }\n\n return resolvedInputs as TInputs;\n }\n\n isBelowBreakpoint(breakpoint: Breakpoint | Signal<Breakpoint>) {\n return computed(() => {\n const current = this._currentBreakpoint();\n\n if (!current) return false;\n\n const bp = typeof breakpoint === \"function\" ? breakpoint() : breakpoint;\n\n const currentIndex = breakpointsOrder.indexOf(current);\n const targetIndex = breakpointsOrder.indexOf(bp);\n\n return currentIndex < targetIndex;\n });\n }\n\n isAboveBreakpoint(breakpoint: Breakpoint | Signal<Breakpoint>) {\n return computed(() => {\n const current = this._currentBreakpoint();\n\n if (!current) return false;\n\n const bp = typeof breakpoint === \"function\" ? breakpoint() : breakpoint;\n\n const currentIndex = breakpointsOrder.indexOf(current);\n const targetIndex = breakpointsOrder.indexOf(bp);\n\n return currentIndex >= targetIndex;\n });\n }\n}\n\nexport function breakpointInput<T>(\n input: BreakpointInput<T>,\n): BreakpointObject<T> {\n if (typeof input === \"object\" && input !== null && \"xs\" in input) {\n return input;\n }\n\n return { xs: input };\n}\n","import { Language } from \"./translation.service\";\n\nexport const translationsMap = {\n close: {\n description: \"Used for closing\",\n components: [\n \"CloseButton\",\n \"Collapse\",\n \"Notification\",\n \"FileUpload\",\n \"Dropdown\",\n \"Tooltip\",\n \"HeaderRole\",\n ],\n et: \"Sulge\",\n en: \"Close\",\n ru: \"Закрыть\",\n },\n open: {\n description: \"Used for opening\",\n components: [\"Collapse\", \"TableOfContents\"],\n et: \"Ava\",\n en: \"Open\",\n ru: \"Открыть\",\n },\n remove: {\n description: \"Used for removing\",\n components: [\"FileUpload\", \"Tag\"],\n et: \"Eemalda\",\n en: \"Remove\",\n ru: \"Удалить\",\n },\n cancel: {\n description: \"For canceling an action\",\n components: [\"TableFilter\"],\n et: \"Tühista\",\n en: \"Cancel\",\n ru: \"Отмена\",\n },\n clear: {\n description: \"For clearing a value\",\n components: [\"TableFilter\", \"TextField\"],\n et: \"Tühjenda\",\n en: \"Clear\",\n ru: \"Очистить\",\n },\n search: {\n description: \"For searching\",\n components: [\"TableFilter\"],\n et: \"Otsi\",\n en: \"Search\",\n ru: \"Поиск\",\n },\n required: {\n description: \"Required field\",\n components: [\"TableFilter\"],\n et: \"Kohustuslik väli\",\n en: \"Required field\",\n ru: \"Обязательное поле\",\n },\n breadcrumbs: {\n description: \"Breadcrumbs navigation label\",\n components: [\"Breadcrumbs\"],\n et: \"Jäljerida\",\n en: \"Breadcrumbs\",\n ru: \"Навигационная цепочка\",\n },\n more: {\n components: [\"Tabs\"],\n et: \"Veel\",\n en: \"More\",\n ru: \"Более\",\n },\n \"anchor.new-tab\": {\n description: \"Label for when anchor opens in new tab\",\n components: [\"Anchor\"],\n et: \"Avaneb uuel vahelehel\",\n en: \"Opens in new tab\",\n ru: \"Открывается в новой вкладке\",\n },\n \"header.toggle\": {\n description: \"Label for header toggle on mobile\",\n components: [\"Header\"],\n et: (isOpen: boolean) => (isOpen ? \"Sulge menüü\" : \"Ava menüü\"),\n en: (isOpen: boolean) => (isOpen ? \"Close menu\" : \"Open menu\"),\n ru: (isOpen: boolean) => (isOpen ? \"Закрыть меню\" : \"Открыть меню\"),\n },\n \"header.settings\": {\n description: \"Label for HeaderSettings Button\",\n components: [\"HeaderSettings\"],\n et: \"Seaded\",\n en: \"Settings\",\n ru: \"Настройки\",\n },\n \"header.select-lang\": {\n description: \"Label for HeaderLanguage label and Modal Heading\",\n components: [\"HeaderLanguage\"],\n et: \"Keel:\",\n en: \"Language:\",\n ru: \"Язык:\",\n },\n \"header.role-label\": {\n description: \"Label for Role selection\",\n components: [\"HeaderRole\"],\n et: \"Mina esindan:\",\n en: \"I represent:\",\n ru: \"я представляю:\",\n },\n \"header.role-switch\": {\n description: \"Label for role switch button\",\n components: [\"HeaderRole\"],\n et: \"Vaheta rolli\",\n en: \"Switch role\",\n ru: \"Сменить роль\",\n },\n \"header.role-search\": {\n description: \"Label for role search input\",\n components: [\"HeaderRole\"],\n et: \"Otsi esindatavat\",\n en: \"Search representative\",\n ru: \"Найти представителя\",\n },\n \"header.role-no-representatives\": {\n description: \"Label for empty representatives search result\",\n components: [\"HeaderRole\"],\n et: \"Esindatavaid ei leitud!\",\n en: \"No representatives found!\",\n ru: \"Представители не найдены!\",\n },\n \"header.login\": {\n description: \"Label for login button\",\n components: [\"HeaderLogin\"],\n et: \"Sisene portaali\",\n en: \"Log in\",\n ru: \"авторизоваться\",\n },\n \"header.login-mobile\": {\n description: \"Label for login button in mobile view\",\n components: [\"HeaderLogin\"],\n et: \"Sisene\",\n en: \"Log in\",\n ru: \"авторизоваться\",\n },\n \"header.logout\": {\n description: \"Label for logout button\",\n components: [\"HeaderLogout\"],\n et: \"Logi välja\",\n en: \"Log out\",\n ru: \"Выйти\",\n },\n \"header.logo\": {\n description: \"Alt Label for logo\",\n components: [\"Header\"],\n et: \"Logo\",\n en: \"Logo\",\n ru: \"Логотип\",\n },\n \"header.profile\": {\n description: \"Label for profile button\",\n components: [\"HeaderProfile\"],\n et: \"Profiil\",\n en: \"Profile\",\n ru: \"Профиль\",\n },\n \"file-upload.add\": {\n description: \"Label for add file button\",\n components: [\"FileUpload\"],\n et: \"Lisa manus\",\n en: \"Add attachment\",\n ru: \"Загрузить файл\",\n },\n \"file-upload.accept\": {\n description: \"Default label for file extensions\",\n components: [\"FileUpload\"],\n et: \"Lubatud faililaiendid:\",\n en: \"Allowed file extensions:\",\n ru: \"Разрешенные расширения файлов:\",\n },\n \"file-upload.max-size\": {\n description: \"Default label for file size restriction\",\n components: [\"FileUpload\"],\n et: \"Maksimaalne suurus:\",\n en: \"Maximum size:\",\n ru: \"Максимальный размер:\",\n },\n \"file-upload.size-rejected\": {\n description: \"Error label for rejected size\",\n components: [\"FileUpload\"],\n et: (files: string) => `Fail(id) ${files} on liiga suured`,\n en: (files: string) => `File(s) ${files} are too large`,\n ru: (files: string) => `Файл(ы) ${files} слишком велики`,\n },\n \"file-upload.size-rejected-extended\": {\n description: \"Error label for rejected size\",\n components: [\"FileUpload\"],\n et: (files: string, maxSize: string) =>\n `Fail ${files} on liiga suur. Maksimaalne suurus: ${maxSize}`,\n en: (files: string, maxSize: string) =>\n `File ${files} is too large. Maximum size: ${maxSize}`,\n ru: (files: string, maxSize: string) =>\n `Файл ${files} слишком велик. Максимальный размер: ${maxSize}`,\n },\n \"file-upload.drag-and-drop\": {\n description: \"Text shown when dragging files over the dropzone\",\n components: [\"FileUpload\"],\n et: \"Fail(id) tuvastatud, lohista üleslaadimiseks\",\n en: \"File detected, drop to upload\",\n ru: \"Файл обнаружен, отпустите для загрузки\",\n },\n \"file-upload.extension-rejected\": {\n description: \"Error label for rejected extension\",\n components: [\"FileUpload\"],\n et: (files: string) => `Fail(id) ${files} on vale laiendiga`,\n en: (files: string) => `File(s) ${files} have the wrong extension`,\n ru: (files: string) => `Файл(ы) ${files} имеют неправильное расширение`,\n },\n \"file-upload.extension-rejected-extended\": {\n description: \"Error label for rejected extension\",\n components: [\"FileUpload\"],\n et: (files: string, validTypes: string) =>\n `Fail(id) ${files} on vale laiendiga. Lubatud laiendid: ${validTypes}`,\n en: (files: string, validTypes: string) =>\n `File(s) ${files} have the wrong extension. Allowed extensions: ${validTypes}`,\n ru: (files: string, validTypes: string) =>\n `Файл(ы) ${files} имеют неправильное расширение. Разрешенные расширения: ${validTypes}`,\n },\n \"file-dropzone.label\": {\n description: \"Default label for dropzone\",\n components: [\"FileDropzone\"],\n et: \"Lohista failid siia või klõpsa, et sirvida\",\n en: \"Drop files here, or click to browse\",\n ru: \"Перетащите файлы сюда или нажмите, чтобы выбрать\",\n },\n \"file-dropzone.error\": {\n description: \"Error label for dropzone\",\n components: [\"FileDropzone\"],\n et: \"Faili üleslaadimisel tekkis viga\",\n en: \"An error occurred while uploading the file\",\n ru: \"Произошла ошибка при загрузке файла\",\n },\n \"modal.close\": {\n description: \"Label for modals close button\",\n components: [\"Modal\"],\n et: \"Sulge modaal\",\n en: \"Close modal\",\n ru: \"Закрыть модальное окно\",\n },\n \"select.loading\": {\n description: \"Text when select options are loading\",\n components: [\"select\"],\n et: \"Laadimine...\",\n en: \"Loading...\",\n ru: \"Загрузка...\",\n },\n \"select.no-options\": {\n description: \"Text when select has no options\",\n components: [\"select\"],\n et: \"Valikud puuduvad\",\n en: \"No options\",\n ru: \"Нет вариантов\",\n },\n \"select.select-all\": {\n description: \"Text when select has 'select all' option\",\n components: [\"select\"],\n et: \"Vali kõik\",\n en: \"Select all\",\n ru: \"Выбрать все\",\n },\n \"stepper.completed\": {\n description:\n \"Label for screen-reader that this step is completed (visually hidden)\",\n components: [\"StepperNav\"],\n et: \"Lõpetatud\",\n en: \"Completed\",\n ru: \"Завершено\",\n },\n \"stepper.not-completed\": {\n description:\n \"Label for screen-reader that this step is not completed (visually hidden)\",\n components: [\"StepperNav\"],\n et: \"Lõpetamata\",\n en: \"Not completed\",\n ru: \"Не завершено\",\n },\n \"skeleton.loading\": {\n description: \"Announced by screen-readers when skeleton is loading\",\n components: [\"Skeleton\"],\n et: \"Laadimine\",\n en: \"Loading\",\n ru: \"Загрузка\",\n },\n \"skeleton.loading-completed\": {\n description:\n \"Announced by screen-readers when skeleton has completed loading\",\n components: [\"Skeleton\"],\n et: \"Laadimine lõpetatud\",\n en: \"Loading completed\",\n ru: \"Загрузка завершена\",\n },\n \"spinner.loading\": {\n description: \"Announced by screen-readers when spinner is loading\",\n components: [\"Spinner\"],\n et: \"Laadimine\",\n en: \"Loading\",\n ru: \"Загрузка\",\n },\n \"table.loading\": {\n description: \"Shown when table is loading\",\n components: [\"Table\"],\n et: \"Tabel laeb\",\n en: \"Table is loading\",\n ru: \"Таблица загружается\",\n },\n \"table.empty\": {\n description: \"Shown when table is empty\",\n components: [\"Table\"],\n et: \"Tulemused puuduvad\",\n en: \"No results\",\n ru: \"Нет результатов\",\n },\n \"table.error\": {\n description: \"Shown when table is in error state\",\n components: [\"Table\"],\n et: \"Tabeli andmete pärimisel tekkis viga\",\n en: \"An error occurred while retrieving table data\",\n ru: \"Произошла ошибка при получении данных таблицы\",\n },\n \"table.filter\": {\n description: \"Label for filter toggle\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Filtreeri\",\n en: \"Filter\",\n ru: \"Фильтровать\",\n },\n \"table.filter.select-all\": {\n description: \"Label for selecting all\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Vali kõik\",\n en: \"Select all\",\n ru: \"Выбрать все\",\n },\n \"table.filter.remove-all\": {\n description: \"Label for removing all\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Eemalda kõik\",\n en: \"Remove all\",\n ru: \"Удалить все\",\n },\n \"table.filter.no-options\": {\n description: \"When select filter has no options\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Valikud puuduvad\",\n en: \"No options\",\n ru: \"Нет вариантов\",\n },\n \"table.filter.validation.no-spaces\": {\n description: \"Filter validation error - Text can not start with spaces\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Tekst ei tohi alata tühikutega\",\n en: \"Filter text cant start with spaces\",\n ru: \"Текст фильтра не может начинаться с пробелов\",\n },\n \"table.filter.validation.min-length\": {\n description: \"Filter validation error - Text is too short\",\n components: [\"Table\", \"TableFilter\"],\n et: (count: number) =>\n count === 1\n ? `Sisesta vähemalt ${count} tähemärk`\n : `Sisesta vähemalt ${count} tähemärki`,\n en: (count: number) =>\n count === 1\n ? `Min length is ${count} char`\n : `Min length is ${count} chars`,\n ru: (count: number) =>\n count === 1\n ? `Минимальная длина ${count} знак`\n : `Минимальная длина ${count} знаков`,\n },\n \"table.filter.validation.to-before-from\": {\n description: \"Filter validation error - End date is before start date\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Lõppkuupäev on enne alguskuupäeva\",\n en: \"End date must be after start date\",\n ru: \"Дата окончания предшествует дате начала\",\n },\n \"table.filter.from\": {\n description: \"Label for date filter from\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Kuupäev alates\",\n en: \"Date from\",\n ru: \"Дата с\",\n },\n \"table.filter.to\": {\n description: \"Label for date filter until\",\n components: [\"Table\", \"TableFilter\"],\n et: \"Kuupäev kuni\",\n en: \"Date until\",\n ru: \"Дата до\",\n },\n \"table.toggle-sub-row\": {\n description: \"Toggle sub row button (Visually hidden)\",\n components: [\"Table\"],\n et: (isExpaned: boolean) => (isExpaned ? \"Sulge alamrida\" : \"Ava alamrida\"),\n en: (isExpaned: boolean) => (isExpaned ? \"Close subrow\" : \"Open subrow\"),\n ru: (isExpaned: boolean) =>\n isExpaned ? \"Закрыть подстроку\" : \"Открыть подстроку\",\n },\n \"table.select-all\": {\n description: \"Row selection - Label for check in table header\",\n components: [\"Table\"],\n et: (isSelected: boolean) => (isSelected ? \"Eemalda kõik\" : \"Vali kõik\"),\n en: (isSelected: boolean) => (isSelected ? \"Deselect all\" : \"Select all\"),\n ru: (isSelected: boolean) =>\n isSelected ? \"Убрать выделение со всего\" : \"Выбрать все\",\n },\n \"table.select-row\": {\n description: \"Row selection - Label for check in table row\",\n components: [\"Table\"],\n et: (isSelected: boolean) => (isSelected ? \"Eemalda rida\" : \"Vali rida\"),\n en: (isSelected: boolean) => (isSelected ? \"Deselect row\" : \"Select row\"),\n ru: (isSelected: boolean) =>\n isSelected ? \"Отменить выбор строки\" : \"Выбрать ряд\",\n },\n \"table.sort\": {\n description: \"Label for sort button\",\n components: [\"Table\"],\n et: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Sorteeri kahanevalt\"\n : direction === \"desc\"\n ? \"Eemalda sorteerimine\"\n : \"Sorteeri kasvavalt\",\n en: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Sort decending\"\n : direction === \"desc\"\n ? \"Remove sorting\"\n : \"Sort ascending\",\n ru: (direction: \"asc\" | \"desc\" | false) =>\n direction === \"asc\"\n ? \"Сортировать по убыванию\"\n : direction === \"desc\"\n ? \"Отменить сортировку\"\n : \"Сортировать по возрастанию\",\n },\n \"tooltip.icon-trigger\": {\n description: \"Label we use for icons that are tooltip triggers\",\n components: [\"TooltipTrigger\"],\n et: \"Kuva tööriistavihje\",\n en: \"Show tooltip\",\n ru: \"Показать подсказку\",\n },\n \"info-button.label\": {\n description: \"Info button default label\",\n components: [\"InfoButton\"],\n et: \"Lisainfo\",\n en: \"More information\",\n ru: \"Дополнительная информация\",\n },\n \"pagination.title\": {\n description: \"Label of the pagination\",\n components: [\"Table\", \"Pagination\"],\n et: \"Pagineerimine\",\n en: \"Pagination\",\n ru: \"Страницы\",\n },\n \"pagination.page\": {\n description: \"Label of individual page numbers\",\n components: [\"Table\", \"Pagination\"],\n et: (page: number, isCurrent?: boolean) =>\n isCurrent ? `Aktiivne leht, leht ${page}` : `Mine lehele ${page}`,\n en: (page: number, isCurrent?: boolean) =>\n isCurrent ? `Current page, page ${page}` : `Go to page ${page}`,\n ru: (page: number, isCurrent?: boolean) =>\n isCurrent\n ? `Текущая страница, страница ${page}`\n : `Перейти на страницу ${page}`,\n },\n \"pagination.prev-page\": {\n description: \"Previous page button label\",\n components: [\"Table\", \"Pagination\"],\n et: \"Eelmine leht\",\n en: \"Previous page\",\n ru: \"Предыдущая страница\",\n },\n \"pagination.next-page\": {\n description: \"Next page button label\",\n components: [\"Table\", \"Pagination\"],\n et: \"Järgmine leht\",\n en: \"Next page\",\n ru: \"Следущая страница\",\n },\n \"pagination.results\": {\n description: \"Total results text\",\n components: [\"Table\", \"Pagination\"],\n et: (count?: number) => (count === 1 ? \"tulemus\" : \"tulemust\"),\n en: (count?: number) => (count === 1 ? \"result\" : \"results\"),\n ru: (count?: number) => (count === 1 ? \"результат\" : \"результа\"),\n },\n \"pagination.page-size\": {\n description: \"Label of page size select\",\n components: [\"Table\", \"Pagination\"],\n et: \"Kuva korraga\",\n en: \"Page size\",\n ru: \"Размер страницы\",\n },\n \"table-of-contents.title\": {\n description: \"Title of the table of contents\",\n components: [\"TableOfContents\"],\n et: \"Sisukord\",\n en: \"Table of contents\",\n ru: \"Содержание\",\n },\n \"table-of-contents.valid\": {\n description: \"Number of valid steps\",\n components: [\"TableOfContents\"],\n et: (count: string | number) => `${count} valiidsed`,\n en: (count: string | number) => `${count} valid`,\n ru: (count: string | number) => `${count} действительны`,\n },\n \"table-of-contents.invalid\": {\n description: \"Number of invalid steps\",\n components: [\"TableOfContents\"],\n et: (count: string | number) => `${count} mitte valiidne`,\n en: (count: string | number) => `${count} invalid`,\n ru: (count: string | number) => `${count} неверный`,\n },\n \"truncate.see-more\": {\n description: \"See more button label\",\n components: [\"Truncate\"],\n et: \"Näita rohkem\",\n en: \"Show more\",\n ru: \"Показать больше\",\n },\n \"truncate.see-less\": {\n description: \"See less button label\",\n components: [\"Truncate\"],\n et: \"Näita vähem\",\n en: \"Show less\",\n ru: \"Скрыть\",\n },\n \"vertical-progress.edit\": {\n description: \"Edit button label\",\n components: [\"VerticalProgressItem\"],\n et: \"Muuda\",\n en: \"Edit\",\n ru: \"редактировать\",\n },\n \"numberField.decrement\": {\n description: \"Label for screen-reader for number field decrease button\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Vähenda ${count} võrra`,\n en: (count: string | number) => `Decrease by ${count}`,\n ru: (count: string | number) => `Уменьшить на ${count}`,\n },\n \"numberField.increment\": {\n description: \"Label for screen-reader for number field increase button\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Suurenda ${count} võrra`,\n en: (count: string | number) => `Increase by ${count}`,\n ru: (count: string | number) => `Увеличить на ${count}`,\n },\n \"numberField.quantityUpdated\": {\n description:\n \"Label for screen-reader when quantity get updated by button click\",\n components: [\"NumberField\"],\n et: (count: string | number) => `Uuendatud. Uus väärtus ${count}`,\n en: (count: string | number) => `Updated. New value ${count}`,\n ru: (count: string | number) => `Ууэндатуд. Уус вяэртус ${count}`,\n },\n \"sidenav.backToMainMenu\": {\n description: \"Side navigation label\",\n components: [\"Sidenav\"],\n et: \"Tagasi peamenüüsse\",\n en: \"Back to main menu\",\n ru: \"Назад в главное меню\",\n },\n \"sidenav.toggle\": {\n description: \"Label for sidenav toggle on mobile\",\n components: [\"Sidenav\"],\n et: (isOpen: boolean) => (isOpen ? \"Sulge menüü\" : \"Ava menüü\"),\n en: (isOpen: boolean) => (isOpen ? \"Close menu\" : \"Open menu\"),\n ru: (isOpen: boolean) => (isOpen ? \"Закрыть меню\" : \"Открыть меню\"),\n },\n \"sidenav.toggleSubmenu\": {\n description: \"Label for sidenav submenu toggle\",\n components: [\"Sidenav\"],\n et: (value: string, isOpen: boolean) => (`${isOpen ? 'Sulge' : 'Ava'} ${value} alammenüü`),\n en: (value: string, isOpen: boolean) => (`${isOpen ? 'Close' : 'Open'} ${value} submenu`),\n ru: (value: string, isOpen: boolean) => (`${isOpen ? 'Закрыть' : 'Открыть'} ${value} подменю`),\n },\n carousel: {\n description: \"Label for carousel\",\n components: [\"CarouselContent\"],\n et: \"Karussell\",\n en: \"Carousel\",\n ru: \"Карусель\",\n },\n \"carousel.slide\": {\n description: \"Label for carousel slide\",\n components: [\"CarouselContent\"],\n et: (slideNumber: number, totalNumber: number) =>\n `Slaid ${slideNumber} / ${totalNumber}`,\n en: (slideNumber: number, totalNumber: number) =>\n `Slide ${slideNumber} of ${totalNumber}`,\n ru: (slideNumber: number, totalNumber: number) =>\n `Слайд ${slideNumber} из ${totalNumber}`,\n },\n \"carousel.moveForward\": {\n description: \"Label for carousel next button\",\n components: [\"CarouselIndicators\", \"CarouselNavigation\"],\n et: \"Liigu edasi\",\n en: \"Move forward\",\n ru: \"Двигаться вперед\",\n },\n \"carousel.moveBack\": {\n description: \"Label for carousel previous button\",\n components: [\"CarouselIndicators\", \"CarouselNavigation\"],\n et: \"Liigu tagasi\",\n en: \"Move back\",\n ru: \"Двигаться назад\",\n },\n \"carousel.showSlide\": {\n description: \"Label for carousel slide indicator\",\n components: [\"CarouselIndicators\"],\n et: (slideNumber: number) => `Vaata slaidi ${slideNumber}`,\n en: (slideNumber: number) => `Show slide ${slideNumber}`,\n ru: (slideNumber: number) => `Показать слайд ${slideNumber}`,\n },\n \"date-picker.january\": {\n description: \"Label for january month\",\n components: [\"DatePicker\"],\n et: \"Jaanuar\",\n en: \"January\",\n ru: \"Январь\",\n },\n \"date-picker.february\": {\n description: \"Label for february month\",\n components: [\"DatePicker\"],\n et: \"Veebruar\",\n en: \"February\",\n ru: \"Февраль\",\n },\n \"date-picker.march\": {\n description: \"Label for march month\",\n components: [\"DatePicker\"],\n et: \"Märts\",\n en: \"March\",\n ru: \"Март\",\n },\n \"date-picker.april\": {\n description: \"Label for april month\",\n components: [\"DatePicker\"],\n et: \"Aprill\",\n en: \"April\",\n ru: \"Апрель\",\n },\n \"date-picker.may\": {\n description: \"Label for may month\",\n components: [\"DatePicker\"],\n et: \"Mai\",\n en: \"May\",\n ru: \"Май\",\n },\n \"date-picker.june\": {\n description: \"Label for june month\",\n components: [\"DatePicker\"],\n et: \"Juuni\",\n en: \"June\",\n ru: \"Июнь\",\n },\n \"date-picker.july\": {\n description: \"Label for july month\",\n components: [\"DatePicker\"],\n et: \"Juuli\",\n en: \"July\",\n ru: \"Июль\",\n },\n \"date-picker.august\": {\n description: \"Label for august month\",\n components: [\"DatePicker\"],\n et: \"August\",\n en: \"August\",\n ru: \"Август\",\n },\n \"date-picker.september\": {\n description: \"Label for september month\",\n components: [\"DatePicker\"],\n et: \"September\",\n en: \"September\",\n ru: \"Сентябрь\",\n },\n \"date-picker.october\": {\n description: \"Label for october month\",\n components: [\"DatePicker\"],\n et: \"Oktoober\",\n en: \"October\",\n ru: \"Октябрь\",\n },\n \"date-picker.november\": {\n description: \"Label for november month\",\n components: [\"DatePicker\"],\n et: \"November\",\n en: \"November\",\n ru: \"Ноябрь\",\n },\n \"date-picker.december\": {\n description: \"Label for december month\",\n components: [\"DatePicker\"],\n et: \"Detsember\",\n en: \"December\",\n ru: \"Декабрь\",\n },\n \"date-picker.january-short\": {\n description: \"Short label for january month\",\n components: [\"DatePicker\"],\n et: \"Jaan\",\n en: \"Jan\",\n ru: \"Янв\",\n },\n \"date-picker.february-short\": {\n description: \"Short label for february month\",\n components: [\"DatePicker\"],\n et: \"Veebr\",\n en: \"Feb\",\n ru: \"Фев\",\n },\n \"date-picker.march-short\": {\n description: \"Short label for march month\",\n components: [\"DatePicker\"],\n et: \"Märts\",\n en: \"Mar\",\n ru: \"Мар\",\n },\n \"date-picker.april-short\": {\n description: \"Short label for april month\",\n components: [\"DatePicker\"],\n et: \"Apr\",\n en: \"Apr\",\n ru: \"Апр\",\n },\n \"date-picker.may-short\": {\n description: \"Short label for may month\",\n components: [\"DatePicker\"],\n et: \"Mai\",\n en: \"May\",\n ru: \"Май\",\n },\n \"date-picker.june-short\": {\n description: \"Short label for june month\",\n components: [\"DatePicker\"],\n et: \"Juuni\",\n en: \"Jun\",\n ru: \"Июн\",\n },\n \"date-picker.july-short\": {\n description: \"Short label for july month\",\n components: [\"DatePicker\"],\n et: \"Juuli\",\n en: \"Jul\",\n ru: \"Июл\",\n },\n \"date-picker.august-short\": {\n description: \"Short label for august month\",\n components: [\"DatePicker\"],\n et: \"Aug\",\n en: \"Aug\",\n ru: \"Авг\",\n },\n \"date-picker.september-short\": {\n description: \"Short label for september month\",\n components: [\"DatePicker\"],\n et: \"Sept\",\n en: \"Sep\",\n ru: \"Сен\",\n },\n \"date-picker.october-short\": {\n description: \"Short label for october month\",\n components: [\"DatePicker\"],\n et: \"Okt\",\n en: \"Oct\",\n ru: \"Окт\",\n },\n \"date-picker.november-short\": {\n description: \"Short label for november month\",\n components: [\"DatePicker\"],\n et: \"Nov\",\n en: \"Nov\",\n ru: \"Ноя\",\n },\n \"date-picker.december-short\": {\n description: \"Short label for december month\",\n components: [\"DatePicker\"],\n et: \"Dets\",\n en: \"Dec\",\n ru: \"Дек\",\n },\n \"date-picker.monday\": {\n description: \"Label for Monday\",\n components: [\"DatePicker\"],\n et: \"Esmaspäev\",\n en: \"Monday\",\n ru: \"Понедельник\",\n },\n \"date-picker.tuesday\": {\n description: \"Label for Tuesday\",\n components: [\"DatePicker\"],\n et: \"Teisipäev\",\n en: \"Tuesday\",\n ru: \"Вторник\",\n },\n \"date-picker.wednesday\": {\n description: \"Label for Wednesday\",\n components: [\"DatePicker\"],\n et: \"Kolmapäev\",\n en: \"Wednesday\",\n ru: \"Среда\",\n },\n \"date-picker.thursday\": {\n description: \"Label for Thursday\",\n components: [\"DatePicker\"],\n et: \"Neljapäev\",\n en: \"Thursday\",\n ru: \"Четверг\",\n },\n \"date-picker.friday\": {\n description: \"Label for Friday\",\n components: [\"DatePicker\"],\n et: \"Reede\",\n en: \"Friday\",\n ru: \"Пятница\",\n },\n \"date-picker.saturday\": {\n description: \"Label for Saturday\",\n components: [\"DatePicker\"],\n et: \"Laupäev\",\n en: \"Saturday\",\n ru: \"Суббота\",\n },\n \"date-picker.sunday\": {\n description: \"Label for Sunday\",\n components: [\"DatePicker\"],\n et: \"Pühapäev\",\n en: \"Sunday\",\n ru: \"Воскресенье\",\n },\n \"date-picker.monday-short\": {\n description: \"Short label for Monday\",\n components: [\"DatePicker\"],\n et: \"E\",\n en: \"Mon\",\n ru: \"Пн\",\n },\n \"date-picker.tuesday-short\": {\n description: \"Short label for Tuesday\",\n components: [\"DatePicker\"],\n et: \"T\",\n en: \"Tue\",\n ru: \"Вт\",\n },\n \"date-picker.wednesday-short\": {\n description: \"Short label for Wednesday\",\n components: [\"DatePicker\"],\n et: \"K\",\n en: \"Wed\",\n ru: \"Ср\",\n },\n \"date-picker.thursday-short\": {\n description: \"Short label for Thursday\",\n components: [\"DatePicker\"],\n et: \"N\",\n en: \"Thu\",\n ru: \"Чт\",\n },\n \"date-picker.friday-short\": {\n description: \"Short label for Friday\",\n components: [\"DatePicker\"],\n et: \"R\",\n en: \"Fri\",\n ru: \"Пт\",\n },\n \"date-picker.saturday-short\": {\n description: \"Short label for Saturday\",\n components: [\"DatePicker\"],\n et: \"L\",\n en: \"Sat\",\n ru: \"Сб\",\n },\n \"date-picker.sunday-short\": {\n description: \"Short label for Sunday\",\n components: [\"DatePicker\"],\n et: \"P\",\n en: \"Sun\",\n ru: \"Вс\",\n },\n \"date-picker.go-next-month\": {\n description: \"Label for next month navigation\",\n components: [\"DatePicker\"],\n et: \"Järgmine kuu\",\n en: \"Next month\",\n ru: \"Следующий месяц\",\n },\n \"date-picker.go-prev-month\": {\n description: \"Label for previous month navigation\",\n components: [\"DatePicker\"],\n et: \"Eelmine kuu\",\n en: \"Previous month\",\n ru: \"Предыдущий месяц\",\n },\n \"date-picker.select-month\": {\n description: \"Label for month selection dropdown\",\n components: [\"DatePicker\"],\n et: \"Vali kuu\",\n en: \"Select month\",\n ru: \"Выберите месяц\",\n },\n \"date-picker.select-year\": {\n description: \"Label for year selection dropdown\",\n components: [\"DatePicker\"],\n et: \"Vali aasta\",\n en: \"Select year\",\n ru: \"Выберите год\",\n },\n \"date-picker.clear-date\": {\n description:\n \"Label for the button that clears the selected date from the input field.\",\n components: [\"DatePicker\"],\n et: \"Tühjenda kuupäev\",\n en: \"Clear date\",\n ru: \"Очистить дату\",\n },\n \"date-picker.open-calendar\": {\n description: \"Label for the button that opens the date picker calendar.\",\n components: [\"DatePicker\"],\n et: \"Ava kalender\",\n en: \"Open calendar\",\n ru: \"Открыть календарь\",\n },\n \"date-picker.previous-years\": {\n description: \"Label for showing previous years in year-grid.\",\n components: [\"DatePicker\"],\n et: \"Eelnevad aastad\",\n en: \"Previous years\",\n ru: \"Предыдущие годы\",\n },\n \"date-picker.next-years\": {\n description: \"Label for showing next years in year-grid.\",\n components: [\"DatePicker\"],\n et: \"Järgmised aastad\",\n en: \"Next years\",\n ru: \"Следующие годы\",\n },\n \"vertical-stepper.completed\": {\n description:\n \"Label for screen-reader that this step is completed (visually hidden)\",\n components: [\"VerticalStepper\"],\n et: \"Lõpetatud\",\n en: \"Completed\",\n ru: \"Завершено\",\n },\n \"vertical-stepper.error\": {\n description:\n \"Label for screen-reader that this step has error (visually hidden)\",\n components: [\"VerticalStepper\"],\n et: \"Puudulik\",\n en: \"Error\",\n ru: \"Oшибка\",\n },\n};\n\nexport type TediTranslationsMap<L extends Language> = {\n [K in keyof typeof translationsMap]: (typeof translationsMap)[K][L];\n};\n\nexport type TranslationEntry = {\n description?: string;\n components?: string[];\n} & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [L in Language]: string | ((...args: any[]) => string);\n};\n\nexport type TranslationMap = Record<string, TranslationEntry>;\n","import { InjectionToken } from \"@angular/core\";\nimport { Language } from \"../services/translation/translation.service\";\n\nexport const TEDI_TRANSLATION_DEFAULT_TOKEN = new InjectionToken<Language>(\n \"TEDI_TRANSLATION_DEFAULT_TOKEN\",\n);\n","import { DOCUMENT, isPlatformBrowser, isPlatformServer } from \"@angular/common\";\nimport { effect, inject, PLATFORM_ID, REQUEST, signal } from \"@angular/core\";\n\nfunction parseCookies(header: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n if (!header) return result;\n\n for (const c of header.split(\";\")) {\n const [rawKey, ...rest] = c.split(\"=\");\n const key = (rawKey ?? \"\").trim();\n const rawVal = rest.join(\"=\");\n\n try {\n result[key] = decodeURIComponent(rawVal).trim();\n } catch {\n result[key] = rawVal.trim();\n }\n }\n\n return result;\n}\n\nfunction readServerCookie(key: string): string | undefined {\n try {\n const req = inject(REQUEST, { optional: true });\n const cookieHeader = req?.headers.get(\"cookie\");\n\n if (!cookieHeader) return undefined;\n\n return parseCookies(cookieHeader)[key];\n } catch {\n return undefined;\n }\n}\n\nfunction readBrowserCookie(key: string): string | undefined {\n const document = inject(DOCUMENT);\n const cookies = parseCookies(document.cookie);\n return cookies[key];\n}\n\nfunction parseCookieValue<T>(raw: string | undefined, initialValue: T): T {\n if (!raw) return initialValue;\n\n try {\n const parsed =\n typeof initialValue === \"string\" ? raw : (JSON.parse(raw) as T);\n return parsed as T;\n } catch {\n return initialValue;\n }\n}\n\nexport function cookieSignal<T>(key: string, initialValue: T) {\n const platformId = inject(PLATFORM_ID);\n const document = inject(DOCUMENT);\n const isBrowser = isPlatformBrowser(platformId);\n const isServer = isPlatformServer(platformId);\n\n let startValue = initialValue;\n\n if (isServer) {\n const raw = readServerCookie(key);\n startValue = parseCookieValue(raw, initialValue);\n }\n\n if (isBrowser) {\n const raw = readBrowserCookie(key);\n startValue = parseCookieValue(raw, initialValue);\n }\n\n const state = signal<T>(startValue);\n const options = {\n path: \"/\",\n sameSite: \"Lax\",\n secure: false,\n maxAge: 60 * 60 * 24 * 30,\n };\n\n if (isBrowser) {\n effect(() => {\n const value = state();\n\n if (value === null || value === undefined || value === \"\") {\n document.cookie = `${key}=; path=${options.path}; max-age=0`;\n return;\n }\n\n const stored = typeof value === \"string\" ? value : JSON.stringify(value);\n document.cookie = `${key}=${encodeURIComponent(stored)}; path=${options.path}; max-age=${options.maxAge}; samesite=${options.sameSite};`;\n });\n }\n\n return state;\n}\n","import {\n computed,\n inject,\n Injectable,\n isSignal,\n signal,\n Signal,\n} from \"@angular/core\";\nimport {\n translationsMap,\n TranslationMap,\n TediTranslationsMap,\n} from \"./translations\";\nimport { TEDI_TRANSLATION_DEFAULT_TOKEN } from \"../../tokens/translation.token\";\nimport { cookieSignal } from \"../../utils/cookies.util\";\n\nexport type Language = \"en\" | \"et\" | \"ru\";\nexport const LANGUAGE_COOKIE_NAME = \"tedi-lang\";\nexport const AVAILABLE_LANGUAGES: Language[] = [\"et\", \"en\", \"ru\"];\nexport const LANGUAGE_FALLBACK_VALUE: Language = \"et\";\n\n@Injectable({ providedIn: \"root\" })\nexport class TediTranslationService {\n private readonly defaultLang = inject(TEDI_TRANSLATION_DEFAULT_TOKEN);\n\n private readonly currentLang = cookieSignal(\n LANGUAGE_COOKIE_NAME,\n this.defaultLang,\n );\n private translations = signal<TranslationMap>(translationsMap);\n\n getLanguage = this.currentLang.asReadonly();\n\n setLanguage(lang: Language) {\n this.currentLang.set(lang);\n }\n\n translate<\n TLang extends Language,\n TKey extends keyof TediTranslationsMap<TLang> | (string & {}),\n TArgs extends TKey extends keyof TediTranslationsMap<TLang>\n ? TediTranslationsMap<TLang>[TKey] extends (...args: infer P) => string\n ? P\n : []\n : unknown[],\n >(key: TKey, ...args: TArgs): string {\n const lang = this.currentLang();\n const entry = this.translations()[key];\n\n if (!entry || !(lang in entry)) {\n return key;\n }\n\n const value = entry[lang];\n\n if (typeof value === \"function\") {\n return value(...args);\n }\n\n return value;\n }\n\n track<\n TLang extends Language,\n TKey extends keyof TediTranslationsMap<TLang> | (string & {}),\n TArgs extends TKey extends keyof TediTranslationsMap<TLang>\n ? TediTranslationsMap<TLang>[TKey] extends (...args: infer P) => string\n ? P\n : []\n : unknown[],\n >(key: TKey, ...args: (TArgs[number] | Signal<TArgs[number]>)[]) {\n return computed(() => {\n const resolvedArgs = args.map((arg) =>\n isSignal(arg) ? arg() : arg,\n ) as TArgs;\n\n return this.translate(key, ...resolvedArgs);\n });\n }\n\n addTranslations(newTranslations: TranslationMap) {\n this.translations.update((prev) => ({ ...prev, ...newTranslations }));\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport type { Theme } from \"../services/theme/theme.service\";\n\nexport const TEDI_THEME_DEFAULT_TOKEN = new InjectionToken<Theme>(\n \"TEDI_THEME_DEFAULT_TOKEN\",\n);\n","import { Injectable, inject, effect } from \"@angular/core\";\nimport { DOCUMENT } from \"@angular/common\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../../tokens/theme.token\";\nimport { cookieSignal } from \"../../utils/cookies.util\";\n\nexport type Theme = \"default\" | \"dark\" | \"rit\";\nexport const AVAILABLE_THEMES: Theme[] = [\"default\", \"dark\", \"rit\"];\nexport const THEME_CLASS_PREFIX = \"tedi-theme--\";\nexport const THEME_COOKIE_NAME = \"tedi-theme\";\nexport const THEME_FALLBACK_VALUE: Theme = \"default\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ThemeService {\n private readonly document = inject(DOCUMENT);\n private readonly defaultTheme = inject(TEDI_THEME_DEFAULT_TOKEN);\n\n readonly theme = cookieSignal<Theme>(THEME_COOKIE_NAME, this.defaultTheme);\n\n constructor() {\n effect(() => {\n const html = this.document.documentElement;\n\n for (const t of AVAILABLE_THEMES) {\n html.classList.remove(`${THEME_CLASS_PREFIX}${t}`);\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${this.theme()}`);\n });\n }\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { TediTranslationService } from \"./translation.service\";\n\n@Pipe({\n name: \"tediTranslate\",\n standalone: true,\n pure: false\n})\nexport class TediTranslationPipe implements PipeTransform {\n translationService = inject(TediTranslationService);\n\n transform(key: string, ...args: unknown[]): string {\n return this.translationService.translate(key, ...args);\n }\n}","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\n\nexport type ClosingButtonSize = \"default\" | \"small\";\nexport type ClosingButtonIconSize = 18 | 24;\n@Component({\n selector: \"button[tedi-closing-button]\",\n imports: [IconComponent],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: \"./closing-button.component.html\",\n styleUrl: \"./closing-button.component.scss\",\n host: {\n \"[title]\": \"ariaLabel() || _defaultLabel()\",\n \"[attr.aria-label]\": \"ariaLabel() || _defaultLabel()\",\n \"[class.tedi-closing-button]\": \"true\",\n \"[class.tedi-closing-button--small]\": \"size() === 'small'\",\n },\n})\nexport class ClosingButtonComponent {\n /**\n * Overall button size.\n * - `default` - The default size, typically larger.\n * - `small` - A smaller version of the button, often used in compact layouts.\n * @default default\n */\n size = input<ClosingButtonSize>(\"default\");\n /**\n * The size of the icon inside the button in pixels.\n * - `24` - A standard icon size, commonly used in most interfaces.\n * - `18` - A smaller icon size, suitable for compact designs.\n * @default 24\n */\n iconSize = input<ClosingButtonIconSize>(24);\n\n /**\n * ARIA label to override default label \"close\"\n */\n readonly ariaLabel = input<string | undefined>();\n\n private translationService = inject(TediTranslationService);\n private readonly _defaultLabel = this.translationService.track(\"close\");\n}\n","<tedi-icon name=\"close\" [size]=\"iconSize()\" aria-hidden=\"true\" />\n","import {\n Component,\n computed,\n input,\n model,\n output,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { NgTemplateOutlet } from \"@angular/common\";\n\nexport type AlertRole = \"alert\" | \"status\" | \"none\";\nexport type AlertType = \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type AlertTitleType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\";\nexport type AlertVariant = \"default\" | \"global\" | \"noSideBorders\";\n\n@Component({\n standalone: true,\n selector: \"tedi-alert\",\n imports: [IconComponent, ClosingButtonComponent, NgTemplateOutlet],\n templateUrl: \"./alert.component.html\",\n styleUrls: [\"./alert.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[style.display]\": \"open() ? 'flex' : 'none'\",\n \"[attr.aria-live]\": \"getAriaLive()\",\n \"[attr.aria-label]\": \"getAriaLabel()\",\n \"[class]\": \"classes()\",\n \"[attr.role]\": \"role() === 'none' ? null : role()\",\n },\n})\nexport class AlertComponent {\n /**\n * An optional title for the alert, typically used to summarize the message's purpose.\n * If provided, it appears prominently at the top of the alert.\n */\n title = input<string>();\n /**\n * Defines the visual and contextual type of the alert. This determines the icon, color, and\n * overall style, making it clear whether the alert is informational, a success message,\n * a warning, or an error.\n * @default info\n */\n type = input<AlertType>(\"info\");\n /**\n * Specifies an optional icon to display in the alert, providing quick visual context.\n */\n icon = input<string>(\"\");\n /**\n * If true, a close button will be displayed.\n * @default false\n */\n showClose = input<boolean>(false);\n /**\n * The ARIA role of the alert, informing screen readers about the alert's purpose.\n * Options:\n * - 'alert': For high-priority messages that demand immediate attention.\n * - 'status': For less urgent messages providing feedback or updates.\n * - 'none': Used when no ARIA role is needed.\n * @default alert\n */\n role = input<AlertRole>(\"alert\");\n /**\n * Variant for the alert, which can be used to apply specific styles.\n * For example, 'global' for full-width alerts or 'noSideBorders' for alerts without side borders.\n */\n variant = input<AlertVariant>(\"default\");\n /**\n * The HTML tag to be used for the alert title.\n * @default h2\n */\n titleElement = input<AlertTitleType>(\"h2\");\n /**\n * Is alert open?\n * @default true\n */\n open = model(true);\n\n /**\n * Delay in milliseconds before setting \"open\" to false when close is triggered.\n * @default 0\n */\n closeDelay = input(0);\n\n /**\n * Close click output\n */\n readonly closeClick = output<void>();\n\n getAriaLive = computed(() => {\n switch (this.role()) {\n case \"alert\":\n return \"assertive\";\n case \"status\":\n return \"polite\";\n case \"none\":\n return \"off\";\n }\n });\n\n getAriaLabel = computed(() => {\n if (this.title()) {\n return `${this.type()} alert: ${this.title()}`;\n }\n return `${this.type()} alert`;\n });\n\n classes = computed(() => {\n return {\n \"tedi-alert\": true,\n [`tedi-alert--${this.type()}`]: !!this.type(),\n \"tedi-alert--global\": this.variant() === \"global\",\n \"tedi-alert--no-side-borders\": this.variant() === \"noSideBorders\",\n };\n });\n\n handleClose() {\n this.closeClick.emit();\n const delay = this.closeDelay();\n if (delay > 0) {\n setTimeout(() => this.open.set(false), delay);\n } else {\n this.open.set(false);\n }\n }\n}\n","@if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" class=\"tedi-alert__content-icon\" />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n input,\n output,\n} from \"@angular/core\";\nimport { AlertComponent, AlertType, AlertRole } from \"../alert/alert.component\";\n\nexport const TOAST_DEFAULT_DURATION = 6000;\n\nexport type ToastType = AlertType;\nexport type ToastRole = AlertRole;\nexport type ToastPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface ToastConfig {\n /**\n * Title of the toast notification.\n */\n title: string;\n /**\n * Toast text content.\n */\n content?: string;\n /**\n * Type of the toast notification determining its color scheme.\n * @default info\n */\n type?: ToastType;\n /**\n * Specifies an optional icon to display in the toast notification, providing quick visual context.\n */\n icon?: string;\n /**\n * Toast duration in milliseconds. Set to 0 for persistent toast.\n */\n duration?: number;\n /**\n * Whether to show the progress bar for timed toasts.\n * @default false\n */\n showProgressBar?: boolean;\n /**\n * Whether to pause the auto-close timer when hovering over the toast.\n * @default true\n */\n pauseOnHover?: boolean;\n /**\n * The ARIA role of the toast, informing screen readers about the notification's priority.\n * - 'status': For non-critical notifications.\n * - 'alert': For critical errors.\n * - 'none': Used when no ARIA role is needed.\n * @default status\n */\n role?: ToastRole;\n /**\n * The position of toast container.\n * Possible values:\n * - 'top-left'\n * - 'top-right'\n * - 'bottom-left'\n * - 'bottom-right'\n * @default bottom-right\n */\n position?: ToastPosition;\n /**\n * Unique identifier of given toast. Id is automatically generated if not provided by client\n */\n id?: string;\n}\n\n@Component({\n selector: \"tedi-toast\",\n standalone: true,\n imports: [AlertComponent],\n templateUrl: \"./toast.component.html\",\n styleUrl: \"./toast.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n /**\n * Title of the toast notification.\n */\n readonly title = input<string>();\n\n /**\n * Type of the toast notification determining its color scheme.\n * @default info\n */\n readonly type = input<ToastType>(\"info\");\n\n /**\n * Icon name. Only shown when provided.\n */\n readonly icon = input<string>(\"\");\n\n /**\n * The ARIA role of the toast, informing screen readers about the notification's priority.\n * - 'status': For non-critical notifications (screen readers announce politely).\n * - 'alert': For critical errors (screen readers announce immediately).\n * - 'none': Used when no ARIA role is needed.\n * @default status\n */\n readonly role = input<ToastRole>(\"status\");\n\n /**\n * Duration in milliseconds for auto-close.\n * @default 6000\n */\n readonly duration = input<number>(TOAST_DEFAULT_DURATION);\n\n /**\n * Whether to show the progress bar.\n * @default false\n */\n readonly showProgressBar = input<boolean>(false);\n\n /**\n * Whether the toast timer is currently paused.\n * @default false\n */\n readonly paused = input<boolean>(false);\n\n /**\n * Emits when the toast is closed by the user.\n */\n readonly closed = output<void>();\n\n readonly mouseEnter = output<void>();\n readonly mouseLeave = output<void>();\n\n handleClose(): void {\n this.closed.emit();\n }\n\n onMouseEnter(): void {\n this.mouseEnter.emit();\n }\n\n onMouseLeave(): void {\n this.mouseLeave.emit();\n }\n}\n","<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeDelay]=\"300\"\n [role]=\"role()\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n computed,\n} from \"@angular/core\";\nimport { ToastComponent, ToastPosition, ToastRole } from \"./toast.component\";\nimport { ToastService } from \"../../../services/toast/toast.service\";\n\nexport interface ToastItem {\n id: string;\n title: string;\n content?: string;\n type?: \"info\" | \"success\" | \"warning\" | \"danger\";\n icon?: string;\n role?: ToastRole;\n duration?: number;\n showProgressBar?: boolean;\n pauseOnHover?: boolean;\n paused?: boolean;\n exiting?: boolean;\n position: ToastPosition;\n}\n\nconst POSITIONS: ToastPosition[] = [\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n];\n\n/**\n * Internal toast container component that renders toast notifications.\n * This component is automatically created by ToastService using CDK Overlay.\n *\n * @internal\n */\n@Component({\n selector: \"tedi-toast-container\",\n standalone: true,\n imports: [ToastComponent],\n template: `\n @for (position of positions; track position) {\n @if (toastsByPosition()[position].length > 0) {\n <div class=\"tedi-toast-container__position tedi-toast-container__position--{{ position }}\">\n @for (toast of toastsByPosition()[position]; track toast.id) {\n <tedi-toast\n [title]=\"toast.title\"\n [type]=\"toast.type ?? 'info'\"\n [icon]=\"toast.icon ?? ''\"\n [role]=\"toast.role ?? 'status'\"\n [duration]=\"toast.duration ?? 0\"\n [showProgressBar]=\"toast.showProgressBar ?? false\"\n [paused]=\"toast.paused ?? false\"\n [class.tedi-toast--exiting]=\"toast.exiting\"\n (closed)=\"onClosed(toast.id)\"\n (mouseEnter)=\"onMouseEnter(toast.id)\"\n (mouseLeave)=\"onMouseLeave(toast.id)\"\n >\n @if (toast.content) {\n {{ toast.content }}\n }\n </tedi-toast>\n }\n </div>\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-toast-container\",\n },\n})\nexport class ToastContainerComponent {\n private readonly toastService = inject(ToastService);\n\n readonly positions = POSITIONS;\n\n readonly toastsByPosition = computed(() => {\n const toasts = this.toastService.toasts$();\n const grouped: Record<ToastPosition, ToastItem[]> = {\n \"top-left\": [],\n \"top-right\": [],\n \"bottom-left\": [],\n \"bottom-right\": [],\n };\n\n for (const toast of toasts) {\n grouped[toast.position].push(toast);\n }\n\n return grouped;\n });\n\n hasToastsForPosition(position: ToastPosition): boolean {\n return this.toastService.getToasts().some((t) => t.position === position);\n }\n\n getToastsForPosition(position: ToastPosition): ToastItem[] {\n return this.toastService.getToasts().filter((t) => t.position === position);\n }\n\n onClosed(id: string): void {\n this.toastService.close(id);\n }\n\n onMouseEnter(id: string): void {\n this.toastService.pause(id);\n }\n\n onMouseLeave(id: string): void {\n this.toastService.resume(id);\n }\n}\n","import { Injectable, inject, OnDestroy } from \"@angular/core\";\nimport { DOCUMENT } from \"@angular/common\";\n\n/**\n * Custom announcer service for toast notifications that uses the `sr-only` class\n * instead of CDK's LiveAnnouncer which requires CDK styles.\n *\n * Creates a visually hidden element that screen readers can access to announce\n * toast messages with appropriate politeness levels.\n *\n * @internal\n */\n@Injectable({ providedIn: \"root\" })\nexport class ToastAnnouncerService implements OnDestroy {\n private readonly document = inject(DOCUMENT);\n\n private politeElement: HTMLElement | null = null;\n private assertiveElement: HTMLElement | null = null;\n\n /**\n * Announce a message to screen readers.\n * @param message The message to announce\n * @param politeness The politeness level: 'polite' (default) or 'assertive'\n * @param clearAfterMs Time in ms after which to clear the message (default: 1000ms)\n */\n announce(message: string, politeness: \"polite\" | \"assertive\" = \"polite\", clearAfterMs: number = 1000): void {\n const element = this.getOrCreateElement(politeness);\n element.textContent = \"\";\n\n // Use a small timeout to ensure screen readers detect the change\n setTimeout(() => {\n element.textContent = message;\n setTimeout(() => {\n element.textContent = \"\";\n }, clearAfterMs);\n }, 100);\n }\n\n /**\n * Clear all announcements text content.\n */\n clear(): void {\n if (this.politeElement) {\n this.politeElement.textContent = \"\";\n }\n if (this.assertiveElement) {\n this.assertiveElement.textContent = \"\";\n }\n }\n\n destroy(): void {\n this.politeElement?.remove();\n this.assertiveElement?.remove();\n this.politeElement = null;\n this.assertiveElement = null;\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n private getOrCreateElement(politeness: \"polite\" | \"assertive\"): HTMLElement {\n if (politeness === \"assertive\") {\n if (!this.assertiveElement) {\n this.assertiveElement = this.createAnnouncerElement(\"assertive\");\n }\n return this.assertiveElement;\n } else {\n if (!this.politeElement) {\n this.politeElement = this.createAnnouncerElement(\"polite\");\n }\n return this.politeElement;\n }\n }\n\n private createAnnouncerElement(politeness: \"polite\" | \"assertive\"): HTMLElement {\n const element = this.document.createElement(\"span\");\n element.setAttribute(\"aria-live\", politeness);\n element.setAttribute(\"aria-atomic\", \"true\");\n element.setAttribute(\"role\", politeness === \"assertive\" ? \"alert\" : \"status\");\n element.classList.add(\"sr-only\");\n element.id = `tedi-toast-announcer-${politeness}`;\n this.document.body.appendChild(element);\n return element;\n }\n}\n","import {\n Injectable,\n Injector,\n inject,\n signal,\n} from \"@angular/core\";\nimport { Overlay, OverlayRef, OverlayConfig } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { ToastContainerComponent, ToastItem } from \"../../components/notifications/toast/toast-container.component\";\nimport { ToastConfig, ToastRole, TOAST_DEFAULT_DURATION } from \"../../components/notifications/toast/toast.component\";\nimport { ToastAnnouncerService } from \"./toast-announcer.service\";\n\ntype ToastMethodOptions = Partial<Omit<ToastConfig, \"title\" | \"content\" | \"type\">>;\n\nconst ANIMATION_DURATION = 300;\n\nlet toastId = 0;\n\ninterface ToastTimerState {\n timeout: ReturnType<typeof setTimeout> | null;\n startTime: number;\n remainingTime: number;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ToastService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly announcer = inject(ToastAnnouncerService);\n\n // Static shared state across all service instances\n private static readonly sharedToasts = signal<ToastItem[]>([]);\n private static readonly sharedTimerMap = new Map<string, ToastTimerState>();\n private static sharedOverlayRef: OverlayRef | null = null;\n\n // Instance accessors for static state\n private get toasts() {\n return ToastService.sharedToasts;\n }\n\n private get timerMap() {\n return ToastService.sharedTimerMap;\n }\n\n private get overlayRef() {\n return ToastService.sharedOverlayRef;\n }\n\n private set overlayRef(value: OverlayRef | null) {\n ToastService.sharedOverlayRef = value;\n }\n\n /**\n * Readonly signal of all current toasts.\n * @internal\n */\n readonly toasts$ = ToastService.sharedToasts.asReadonly();\n\n /**\n * Get all current toasts\n * @internal\n */\n getToasts(): ToastItem[] {\n return this.toasts();\n }\n\n /**\n * Show an info toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n info(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"info\" });\n }\n\n /**\n * Show a success toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n success(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"success\" });\n }\n\n /**\n * Show a warning toast notification.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n warning(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ ...options, title, content, type: \"warning\" });\n }\n\n /**\n * Show a danger toast notification.\n * Defaults to role=\"alert\" for immediate screen reader announcement.\n * @param title The toast title\n * @param content Toast content\n * @param options Additional toast options\n */\n danger(title: string, content?: string, options?: ToastMethodOptions): string {\n return this.show({ role: \"alert\", ...options, title, content, type: \"danger\" });\n }\n\n /**\n * Show a toast notification with full configuration.\n */\n show(options: ToastConfig): string {\n this.assertContainerExists();\n\n const id = options.id || this.generateId();\n const position = options.position || \"bottom-right\";\n const duration = options.duration ?? TOAST_DEFAULT_DURATION;\n const role = options.role ?? \"status\";\n const showProgressBar = options.showProgressBar ?? false;\n const pauseOnHover = options.pauseOnHover ?? true;\n\n const toast: ToastItem = {\n id,\n title: options.title,\n content: options.content,\n type: options.type ?? \"info\",\n icon: options.icon ?? \"\",\n role,\n duration,\n showProgressBar,\n pauseOnHover,\n position,\n };\n\n this.toasts.update((toasts) => [...toasts, toast]);\n\n this.announceToScreenReader(toast, role);\n\n if (duration > 0) {\n this.startTimer(id, duration);\n }\n\n return id;\n }\n\n /**\n * Close a specific toast by ID.\n */\n close(id: string): void {\n this.clearTimer(id);\n\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || toast.exiting) return;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, exiting: true } : t))\n );\n\n setTimeout(() => {\n this.toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n this.cleanupIfEmpty();\n }, ANIMATION_DURATION);\n }\n\n /**\n * Pause a toast's auto-close timer.\n * @internal\n */\n pause(id: string): void {\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.pauseOnHover || toast.exiting) return;\n\n const timerState = this.timerMap.get(id);\n if (!timerState || !timerState.timeout) return;\n\n const elapsed = Date.now() - timerState.startTime;\n const remainingTime = Math.max(0, timerState.remainingTime - elapsed);\n\n clearTimeout(timerState.timeout);\n timerState.timeout = null;\n timerState.remainingTime = remainingTime;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, paused: true } : t))\n );\n }\n\n /**\n * Resume a toast's auto-close timer.\n * @internal\n */\n resume(id: string): void {\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.pauseOnHover || toast.exiting) return;\n\n const timerState = this.timerMap.get(id);\n if (!timerState || timerState.timeout) return;\n\n this.toasts.update((toasts) =>\n toasts.map((t) => (t.id === id ? { ...t, paused: false } : t))\n );\n\n if (timerState.remainingTime > 0) {\n timerState.startTime = Date.now();\n timerState.timeout = setTimeout(() => this.close(id), timerState.remainingTime);\n }\n }\n\n private startTimer(id: string, duration: number): void {\n const timeout = setTimeout(() => this.close(id), duration);\n this.timerMap.set(id, {\n timeout,\n startTime: Date.now(),\n remainingTime: duration,\n });\n }\n\n private clearTimer(id: string): void {\n const timerState = this.timerMap.get(id);\n if (timerState?.timeout) {\n clearTimeout(timerState.timeout);\n }\n this.timerMap.delete(id);\n }\n\n private assertContainerExists(): void {\n if (this.overlayRef) {\n // Check if the portal is attached and the overlay element is in the DOM\n const isAttached = this.overlayRef.hasAttached();\n const isInDom = this.overlayRef.overlayElement?.isConnected ?? false;\n\n if (isAttached && isInDom) {\n return;\n }\n\n // Portal detached or element removed from DOM, clean up stale overlay\n try {\n this.overlayRef.dispose();\n } catch {\n // Ignore disposal errors\n }\n this.overlayRef = null;\n this.toasts.set([]);\n this.timerMap.forEach((state) => {\n if (state.timeout) clearTimeout(state.timeout);\n });\n this.timerMap.clear();\n }\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay.position().global(),\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n\n const portal = new ComponentPortal(\n ToastContainerComponent,\n null,\n this.injector\n );\n\n this.overlayRef.attach(portal);\n }\n\n private cleanupIfEmpty(): void {\n if (!this.toasts().length && this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.announcer.destroy();\n }\n }\n\n private announceToScreenReader(toast: ToastItem, role: ToastRole): void {\n if (role === \"none\") return;\n\n const message = toast.content\n ? `${toast.title}: ${toast.content}`\n : toast.title;\n\n const politeness = role === \"alert\" ? \"assertive\" : \"polite\";\n this.announcer.announce(message, politeness);\n }\n\n private generateId(): string {\n return `toast-${++toastId}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services\";\n\n@Component({\n standalone: true,\n selector: \"button[tedi-info-button]\",\n imports: [IconComponent],\n template: `<tedi-icon name=\"info\" [size]=\"18\" />`,\n styleUrl: \"./info-button.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-info-button\",\n \"[attr.aria-label]\": \"ariaLabel() || _defaultLabel()\"\n }\n})\nexport class InfoButtonComponent {\n readonly translationService = inject(TediTranslationService);\n\n /**\n * InfoButton ARIA label\n */\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' });\n\n private readonly _defaultLabel = this.translationService.track('info-button.label');\n}\n","/**\n * Generates a random UUID (Universally Unique Identifier).\n * This function uses the `crypto` API if available, otherwise falls back to a custom implementation.\n *\n * @returns {string} A randomly generated UUID.\n */\nexport function generateUUID(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const r = (Math.random() * 16) | 0;\n const v = char === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import {\n Component,\n input,\n signal,\n AfterViewInit,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n inject,\n Renderer2,\n} from \"@angular/core\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport { generateUUID } from \"../../../helpers/generate-uuid\";\n\nexport type ArrowType = \"default\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"tedi-collapse\",\n imports: [IconComponent, TextComponent, TediTranslationPipe],\n templateUrl: \"./collapse.component.html\",\n styleUrls: [\"./collapse.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CollapseComponent implements AfterViewInit {\n /**\n * The title/header element for the collapsible section.\n * Rendered inside the toggle button.\n */\n openText = input<string>();\n /**\n * Text shown on the toggle button when the content is expanded.\n */\n closeText = input<string>();\n /**\n * Whether the collapse should be initially open.\n * @default false\n */\n defaultOpen = input<boolean>(false);\n /**\n * To show or hide the openText and closeText.\n * @default \"false\"\n */\n hideCollapseText = input<boolean>(false);\n /**\n * Option for toggling different arrow styles.\n * @default \"default\"\n */\n arrowType = input<ArrowType>(\"default\");\n\n renderer = inject(Renderer2);\n collapseContentId: string = `collapse-content-${generateUUID()}`;\n isOpen = signal<boolean>(false);\n\n toggleCollapse() {\n this.isOpen.update((prev) => !prev);\n }\n\n ngAfterViewInit() {\n if (this.defaultOpen()) {\n this.isOpen.set(true);\n }\n }\n}\n","<div class=\"tedi-collapse\" [class.tedi-collapse--open]=\"isOpen() === true\">\n <button\n class=\"tedi-collapse__button\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"isOpen() ? true : false\"\n [attr.aria-controls]=\"collapseContentId\"\n >\n @if (hideCollapseText() === false) {\n <p tedi-text color=\"brand\" class=\"tedi-collapse__button--text\">\n {{\n isOpen()\n ? (closeText() ?? (\"close\" | tediTranslate))\n : (openText() ?? (\"open\" | tediTranslate))\n }}\n </p>\n }\n @if (arrowType() === \"default\") {\n <tedi-icon class=\"tedi-collapse__icon\" name=\"expand_more\" color=\"brand\" />\n } @else if (arrowType() === \"secondary\") {\n <div class=\"tedi-collapse__icon--wrapper\">\n <tedi-icon class=\"tedi-collapse__icon\" name=\"expand_more\" color=\"brand\" />\n </div>\n }\n </button>\n <div class=\"tedi-collapse__content\" [id]=\"collapseContentId\">\n <div class=\"tedi-collapse__extender\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type BulletColor =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"brand\"\n | \"brand-dark\"\n | \"success\"\n | \"warning\"\n | \"warning-dark\"\n | \"danger\"\n | \"white\";\n\n@Component({\n selector: \"ul[tedi-list], ol[tedi-list]\",\n standalone: true,\n templateUrl: \"./list.component.html\",\n styleUrl: \"./list.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ListComponent {\n /**\n * Is list styled?\n * @default true\n */\n styled = input<boolean>(true);\n /**\n * Color of the list bullet.\n * @default brand\n */\n color = input<BulletColor>(\"brand\");\n\n classes = computed(() => {\n const classList = [\"tedi-list\", `tedi-list--bullet-color-${this.color()}`];\n\n if (!this.styled()) {\n classList.push(\"tedi-list--unstyled\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type CheckboxSize = \"default\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"input[type=checkbox][tedi-checkbox]\",\n template: \"\",\n styleUrl: \"./checkbox.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-checkbox--large]\": \"size() === 'large'\",\n \"[class.tedi-checkbox--invalid]\": \"invalid()\",\n },\n})\nexport class CheckboxComponent {\n /**\n * Size of the checkbox.\n * @default default\n */\n readonly size = input<CheckboxSize>(\"default\");\n /**\n * Is checkbox invalid?\n * @default false\n */\n readonly invalid = input(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type SeparatorAxis = \"horizontal\" | \"vertical\";\nexport type SeparatorColor = \"primary\" | \"secondary\" | \"accent\";\nexport type SeparatorVariant = \"dotted\" | \"dotted-small\" | \"dot-only\";\nexport type SeparatorDotSize = \"large\" | \"medium\" | \"small\" | \"extra-small\";\nexport type SeparatorThickness = 1 | 2;\nexport type SeparatorSpacingValue =\n | 0\n | 0.25\n | 0.5\n | 0.75\n | 1\n | 1.25\n | 1.5\n | 1.75\n | 2\n | 2.5\n | 5;\nexport type SeparatorSpacing = {\n top?: SeparatorSpacingValue;\n bottom?: SeparatorSpacingValue;\n left?: SeparatorSpacingValue;\n right?: SeparatorSpacingValue;\n};\n\n@Component({\n selector: \"tedi-separator\",\n template: \"\",\n styleUrl: \"./separator.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n \"[style.width]\":\n \"variant() === 'dot-only' ? null : axis() === 'horizontal' ? size() : '0px'\",\n \"[style.height]\":\n \"variant() === 'dot-only' ? null : axis() === 'vertical' ? size() : '0px'\",\n },\n})\nexport class SeparatorComponent {\n /**\n * Axis of separator.\n */\n axis = input<SeparatorAxis>(\"horizontal\");\n /**\n * Color of separator\n */\n color = input<SeparatorColor>(\"primary\");\n /**\n * Separator style variant.\n */\n variant = input<SeparatorVariant>();\n /**\n * Dot size. Only used when variant is \"dot-only\".\n */\n dotSize = input<SeparatorDotSize>();\n /**\n * Is dot filled? Only used when variant is \"dot-only\".\n */\n dotFilled = input(true);\n /**\n * Thickness in pixels (ignored if variant is used).\n * @default 1\n */\n thickness = input<SeparatorThickness>(1);\n /**\n * Spacing applied based on the axis:\n * - For horizontal axis, spacing is applied to top and bottom of the separator.\n * - For vertical axis, spacing is applied to left and right of the separator.\n */\n spacing = input<SeparatorSpacingValue | SeparatorSpacing>();\n /**\n * Size of separator based on the axis:\n * - For horizontal axis, size defines width.\n * - For vertical axis, size defines height (when using percentages, then parent container must have height set).\n * @default 100%\n */\n size = input(\"100%\");\n\n // eslint-disable-next-line complexity\n classes = computed(() => {\n const classList = [\n \"tedi-separator\",\n `tedi-separator--${this.color()}`,\n `tedi-separator--${this.axis()}`,\n ];\n\n if (this.variant()) {\n classList.push(`tedi-separator--${this.variant()}`);\n }\n\n if (this.variant() && this.dotSize()) {\n classList.push(`tedi-separator--${this.variant()}-${this.dotSize()}`);\n }\n\n if (this.variant() === \"dot-only\" && this.dotFilled()) {\n classList.push(`tedi-separator--${this.variant()}-filled`);\n } else {\n classList.push(`tedi-separator--${this.variant()}-outlined`);\n }\n\n if (this.thickness()) {\n classList.push(`tedi-separator--thickness-${this.thickness()}`);\n }\n\n const spacing = this.spacing();\n\n if (spacing && typeof spacing === \"number\") {\n classList.push(`tedi-separator--spacing-${spacing}`.replace(\".\", \"-\"));\n } else if (spacing) {\n if (this.axis() === \"horizontal\") {\n if (spacing.top) {\n classList.push(\n `tedi-separator--top-${spacing.top}`.replace(\".\", \"-\"),\n );\n }\n\n if (spacing.bottom) {\n classList.push(\n `tedi-separator--bottom-${spacing.bottom}`.replace(\".\", \"-\"),\n );\n }\n } else {\n if (spacing.left) {\n classList.push(\n `tedi-separator--left-${spacing.left}`.replace(\".\", \"-\"),\n );\n }\n\n if (spacing.right) {\n classList.push(\n `tedi-separator--right-${spacing.right}`.replace(\".\", \"-\"),\n );\n }\n }\n }\n\n return classList.join(\" \");\n });\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from \"@angular/core\";\nimport { PopoverComponent } from \"../popover.component\";\n\n@Directive({\n standalone: true,\n selector: \"[tedi-popover-trigger]\",\n host: {\n tabindex: \"0\",\n role: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"[id]\": \"popover.containerId() + '_trigger'\",\n \"[attr.aria-expanded]\": \"popover.floatUiComponent().state\",\n \"[attr.aria-controls]\": \"popover.containerId()\",\n \"[class.tedi-popover-trigger__text]\": \"underline()\",\n },\n})\nexport class PopoverTriggerDirective {\n /**\n * Should add underline class to trigger element?\n * @default false\n */\n readonly underline = input(false);\n\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly popover = inject(PopoverComponent);\n\n @HostListener(\"click\")\n onClick() {\n this.popover.togglePopover();\n }\n}\n","export function getFocusableElements(container: HTMLElement): HTMLElement[] {\n const selectors = [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"summary\",\n \"iframe\",\n \"audio[controls]\",\n \"video[controls]\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[tabindex]:not([tabindex='-1'])\",\n ];\n const elements = Array.from(container.querySelectorAll(selectors.join(\",\")));\n\n if (typeof window === \"undefined\") {\n return elements.filter(\n (el): el is HTMLElement => el instanceof HTMLElement,\n );\n }\n\n return elements.filter((el): el is HTMLElement => {\n if (!(el instanceof HTMLElement)) return false;\n\n const style = window.getComputedStyle(el);\n\n if (style.display === \"none\" || style.visibility === \"hidden\") return false;\n if (el.hasAttribute(\"hidden\")) return false;\n if (el.closest(\"[inert]\")) return false;\n\n const fieldset = el.closest(\"fieldset[disabled]\");\n\n if (fieldset) {\n const firstLegend = fieldset.querySelector(\"legend\");\n if (!firstLegend || !firstLegend.contains(el)) return false;\n }\n\n if (el.tagName !== \"SUMMARY\") {\n const closedDetails = el.closest(\"details:not([open])\");\n if (closedDetails) return false;\n }\n\n return true;\n });\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ClosingButtonComponent } from \"../../../buttons/closing-button/closing-button.component\";\nimport { PopoverComponent } from \"../popover.component\";\n\nexport type PopoverWidth = \"none\" | \"small\" | \"medium\" | \"large\";\n\nlet popoverTitleId = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-popover-content\",\n templateUrl: \"./popover-content.component.html\",\n styleUrl: \"../popover.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, ClosingButtonComponent],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class PopoverContentComponent {\n /**\n * The width of the popover. Can be 'none', 'small', 'medium', or 'large'.\n * @default small\n */\n maxWidth = input<PopoverWidth>(\"small\");\n /**\n * Heading title of the content\n */\n title = input(\"\");\n /**\n * Should content show close button?\n * @default false\n */\n showClose = input(false);\n\n private readonly popover = inject(PopoverComponent);\n titleId = `popover-title-${popoverTitleId++}`;\n\n classes = computed(() => {\n const classList = [\n \"tedi-popover-content\",\n `tedi-popover-content--${this.maxWidth()}`,\n ];\n return classList.join(\" \");\n });\n\n handleClose() {\n this.popover.hidePopover(true);\n }\n}\n","@if (title() && showClose()) {\n <div class=\"tedi-popover-content__head\">\n <h4 class=\"tedi-popover-content__title\" [id]=\"titleId\">{{ title() }}</h4>\n <button tedi-closing-button (click)=\"handleClose()\"></button>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else if (showClose()) {\n <div class=\"tedi-popover-content__head\">\n <div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <button tedi-closing-button size=\"small\" (click)=\"handleClose()\"></button>\n </div>\n} @else if (title()) {\n <h4 [id]=\"titleId\">{{ title() }}</h4>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { DOCUMENT } from \"@angular/common\";\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n inject,\n Renderer2,\n computed,\n viewChild,\n signal,\n contentChild,\n AfterContentChecked,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { PopoverTriggerDirective } from \"./popover-trigger/popover-trigger.directive\";\nimport { getFocusableElements } from \"../../../utils/elements.util\";\nimport { PopoverContentComponent } from \"./popover-content/popover-content.component\";\n\nexport type PopoverPosition = `${NgxFloatUiPlacements}`;\n\n@Component({\n standalone: true,\n selector: \"tedi-popover\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./popover.component.html\",\n styleUrl: \"./popover.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverComponent implements AfterContentChecked {\n /**\n * The position of the popover relative to the trigger element.\n * @default top\n */\n position = input<PopoverPosition>(\"top\");\n /**\n * Is dismissible by clicking outside of content?\n * @default true\n */\n dismissible = input(true);\n /**\n * Does popover content hide on scroll?\n * @default false\n */\n hideOnScroll = input(false);\n /**\n * Does popover have illustrative border on the arrow side?\n * @default false\n */\n withBorder = input(false);\n /**\n * Should show arrow?\n */\n withArrow = input(true);\n /**\n * Lock scrolling on rest of the page?\n * @default false\n */\n lockScroll = input(false);\n /** Delay time (in ms) for closing popover when not hovering trigger or content.\n * @default 100\n */\n readonly timeoutDelay = input(100);\n\n private readonly document = inject(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n\n readonly floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n readonly popoverTrigger = contentChild.required(PopoverTriggerDirective);\n private readonly popoverContent = contentChild.required(\n PopoverContentComponent,\n );\n\n readonly containerId = signal(\"\");\n readonly isContentHovered = signal(false);\n\n hideTimeout?: ReturnType<typeof setTimeout>;\n private keydownListener?: () => void;\n private scrollListener?: () => void;\n private focusinListener?: () => void;\n private mousedownListener?: () => void;\n\n ngAfterContentChecked() {\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container-popover\",\n );\n\n if (container) {\n const labelledBy = this.popoverContent().title()\n ? this.popoverContent().titleId\n : container.id + \"_trigger\";\n container.setAttribute(\"tabindex\", \"-1\");\n container.setAttribute(\"aria-labelledby\", labelledBy);\n this.containerId.set(container.id);\n }\n }\n\n showPopover() {\n if (this.floatUiComponent().state) return;\n\n clearTimeout(this.hideTimeout);\n this.floatUiComponent().show();\n\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container-popover\",\n );\n\n if (this.lockScroll()) {\n this.renderer.setStyle(this.document.body, \"overflow\", \"hidden\");\n }\n\n if (container) {\n setTimeout(() => container.focus({ preventScroll: true }));\n this.setupKeyboardNavigation(container);\n }\n\n if (this.hideOnScroll()) {\n this.setupScrollListener();\n }\n\n if (this.dismissible()) {\n this.setupDismissListeners();\n }\n }\n\n hidePopover(focusTrigger?: boolean) {\n if (!this.floatUiComponent().state) return;\n\n this.cleanupKeyboardNavigation();\n this.cleanupScrollListener();\n this.cleanupDismissListeners();\n this.floatUiComponent().hide();\n\n if (this.lockScroll()) {\n this.renderer.removeStyle(this.document.body, \"overflow\");\n }\n\n if (focusTrigger) {\n this.popoverTrigger().host.nativeElement.focus({ preventScroll: true });\n }\n }\n\n togglePopover() {\n if (this.floatUiComponent().state) {\n this.hidePopover(true);\n } else {\n this.showPopover();\n }\n }\n\n readonly floatUiContainerClass = computed(() => {\n const classList = [\"float-ui-container-popover\"];\n\n if (this.withBorder()) {\n classList.push(\"float-ui-container-popover--border\");\n }\n\n if (this.withArrow()) {\n classList.push(\"float-ui-container-popover--arrow\");\n }\n\n return classList.join(\",\");\n });\n\n private setupKeyboardNavigation(container: HTMLElement) {\n this.cleanupKeyboardNavigation();\n\n this.keydownListener = this.renderer.listen(\n container,\n \"keydown\",\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && this.floatUiComponent().state) {\n e.preventDefault();\n this.hidePopover(true);\n }\n\n if (e.key === \"Tab\") {\n const focusableElements = getFocusableElements(container);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n const activeElement = this.document.activeElement as HTMLElement;\n\n if (\n !e.shiftKey &&\n (activeElement === lastElement ||\n (activeElement === container && !focusableElements.length))\n ) {\n e.preventDefault();\n this.focusElementAfterTrigger();\n } else if (\n e.shiftKey &&\n (activeElement === firstElement || activeElement === container)\n ) {\n e.preventDefault();\n this.focusElementBeforeTrigger();\n }\n }\n },\n );\n }\n\n private cleanupKeyboardNavigation() {\n if (this.keydownListener) {\n this.keydownListener();\n this.keydownListener = undefined;\n }\n }\n\n private setupScrollListener() {\n this.cleanupScrollListener();\n\n this.scrollListener = this.renderer.listen(\n this.document,\n \"scroll\",\n () => {\n if (this.floatUiComponent().state) {\n this.hidePopover(false);\n }\n },\n { capture: true, passive: true },\n );\n }\n\n private cleanupScrollListener() {\n if (this.scrollListener) {\n this.scrollListener();\n this.scrollListener = undefined;\n }\n }\n\n private setupDismissListeners() {\n this.cleanupDismissListeners();\n\n this.focusinListener = this.renderer.listen(\n this.document,\n \"focusin\",\n (e: FocusEvent) => this.handleClosePopoverEvent(e),\n );\n\n this.mousedownListener = this.renderer.listen(\n this.document,\n \"mousedown\",\n (e: MouseEvent) => this.handleClosePopoverEvent(e),\n );\n }\n\n private cleanupDismissListeners() {\n if (this.focusinListener) {\n this.focusinListener();\n this.focusinListener = undefined;\n }\n\n if (this.mousedownListener) {\n this.mousedownListener();\n this.mousedownListener = undefined;\n }\n }\n\n private focusElementAfterTrigger() {\n const focusableElements = getFocusableElements(this.document.body);\n const triggerIndex = focusableElements.indexOf(\n this.popoverTrigger().host.nativeElement,\n );\n\n if (triggerIndex !== -1 && triggerIndex < focusableElements.length - 1) {\n const nextElement = focusableElements[triggerIndex + 1];\n this.hidePopover();\n setTimeout(() => nextElement.focus());\n }\n }\n\n private focusElementBeforeTrigger() {\n const focusableElements = getFocusableElements(this.document.body);\n const triggerIndex = focusableElements.indexOf(\n this.popoverTrigger().host.nativeElement,\n );\n\n if (triggerIndex > 0) {\n const previousElement = focusableElements[triggerIndex - 1];\n this.hidePopover();\n setTimeout(() => previousElement.focus());\n }\n }\n\n private handleClosePopoverEvent(e: Event) {\n const triggerEl = this.popoverTrigger().host.nativeElement;\n const containerEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const target = e.target as HTMLElement | null;\n\n if (!target || triggerEl.contains(target) || containerEl.contains(target)) {\n return;\n }\n\n this.hidePopover(true);\n }\n}\n","<ng-content select=\"[tedi-popover-trigger]\" />\n<float-ui-content\n #floatUiComponent\n looseTrigger=\"none\"\n ariaRole=\"dialog\"\n appendTo=\"body\"\n [floatUiLoose]=\"floatUiComponent\"\n [targetElement]=\"popoverTrigger().host.nativeElement\"\n [loosePlacement]=\"position()\"\n [applyClass]=\"floatUiContainerClass()\"\n [disableAnimation]=\"true\"\n>\n <ng-content select=\"tedi-popover-content\" />\n</float-ui-content>\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from \"@angular/core\";\nimport { DropdownComponent } from \"../dropdown.component\";\n\nexport type DropdownTriggerAriaHasPopup = \"menu\" | \"listbox\" | \"true\";\n\n@Directive({\n standalone: true,\n selector: \"[tedi-dropdown-trigger]\",\n host: {\n \"[attr.id]\": \"dropdown.containerId() + '_trigger'\",\n \"[attr.aria-controls]\": \"dropdown.containerId()\",\n \"[attr.aria-expanded]\": \"dropdown.floatUiComponent().state\",\n \"[attr.aria-haspopup]\": \"'menu'\",\n \"[attr.role]\": \"isButton ? null : 'button'\",\n \"[attr.tabindex]\": \"isButton ? null : '0'\",\n },\n})\nexport class DropdownTriggerDirective {\n /** Defines the aria-haspopup attribute for the trigger, informing assistive technologies whether it opens a menu or listbox. Improves accessibility by describing the type of popup. */\n readonly ariaHaspopup = input<DropdownTriggerAriaHasPopup>(\"menu\");\n\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly dropdown = inject(DropdownComponent);\n\n get isButton(): boolean {\n return this.host.nativeElement.tagName === \"BUTTON\";\n }\n\n @HostListener(\"click\")\n onClick() {\n this.dropdown.toggleDropdown();\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeydown(event: KeyboardEvent) {\n const key = event.key;\n\n switch (key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.openAndFocusFirst();\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n this.openAndFocusLast();\n break;\n\n case \"Escape\":\n event.preventDefault();\n this.dropdown.hideDropdown();\n this.host.nativeElement.focus();\n break;\n }\n }\n\n private openAndFocusFirst() {\n if (!this.dropdown.floatUiComponent().state) {\n this.dropdown.showDropdown();\n }\n this.dropdown.focusFirstItem?.();\n }\n\n private openAndFocusLast() {\n if (!this.dropdown.floatUiComponent().state) {\n this.dropdown.showDropdown();\n }\n this.dropdown.focusLastItem?.();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownComponent } from \"../dropdown.component\";\nimport { DropdownContentComponent } from \"../dropdown-content/dropdown-content.component\";\n\n@Component({\n selector: \"li[tedi-dropdown-item]\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./dropdown-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[attr.role]\":\n \"dropdownContent.dropdownRole() === 'menu' ? 'menuitem' : 'option'\",\n \"[attr.aria-selected]\":\n \"dropdownContent.dropdownRole() === 'listbox' ? isSelected() : null\",\n \"[attr.aria-disabled]\": \"disabled() ? 'true' : null\",\n \"[tabindex]\":\n \"dropdownContent.dropdownRole() === 'menu' ? '-1' : (disabled() ? null : '-1')\",\n },\n})\nexport class DropdownItemComponent {\n /** Item value */\n readonly value = input<string>();\n\n /** Is item disabled? */\n readonly disabled = input(false);\n\n readonly host = inject<ElementRef<HTMLLIElement>>(ElementRef);\n readonly dropdown = inject(DropdownComponent);\n readonly dropdownContent = inject(DropdownContentComponent);\n\n isSelected() {\n return this.dropdown.value() === this.value();\n }\n\n focus() {\n this.host.nativeElement.focus();\n }\n\n @HostListener(\"click\")\n onClick() {\n if (this.disabled()) return;\n\n this.onItemSelect();\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeydown(event: KeyboardEvent) {\n const key = event.key;\n\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n\n switch (key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.dropdown.focusNextItem(this.host.nativeElement);\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n this.dropdown.focusPrevItem(this.host.nativeElement);\n break;\n\n case \"Home\":\n event.preventDefault();\n this.dropdown.focusFirstItem();\n break;\n\n case \"End\":\n event.preventDefault();\n this.dropdown.focusLastItem();\n break;\n\n case \"Enter\":\n case \" \":\n event.preventDefault();\n this.onItemSelect();\n break;\n\n case \"Escape\":\n event.preventDefault();\n this.dropdown.hideDropdown();\n this.dropdown.dropdownTrigger()?.host.nativeElement.focus();\n break;\n }\n }\n\n private onItemSelect() {\n if (this.dropdownContent.dropdownRole() === \"listbox\") {\n this.dropdown.value.set(this.value());\n }\n\n this.dropdown.hideDropdown();\n this.dropdown.dropdownTrigger()?.host.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownItemComponent } from \"../dropdown-item/dropdown-item.component\";\nimport { DropdownComponent } from \"../dropdown.component\";\n\nexport type DropdownRole = \"menu\" | \"listbox\";\n\n@Component({\n selector: \"tedi-dropdown-content\",\n standalone: true,\n templateUrl: \"./dropdown-content.component.html\",\n styleUrl: \"./dropdown-content.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: \"presentation\",\n \"[attr.aria-labelledby]\": \"dropdown.containerId() + '_trigger'\",\n },\n})\nexport class DropdownContentComponent {\n /**\n * Role for content, use listbox for list and menu for actions\n * @default menu\n */\n readonly dropdownRole = input<DropdownRole>(\"menu\");\n\n readonly dropdown = inject(DropdownComponent);\n readonly items = contentChildren(DropdownItemComponent);\n}\n","<ng-content />\n<ul [attr.role]=\"dropdownRole()\">\n <ng-content select=\"li[tedi-dropdown-item]\" />\n</ul>\n","import {\n Component,\n input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n viewChild,\n contentChild,\n signal,\n AfterContentChecked,\n OnDestroy,\n inject,\n PLATFORM_ID,\n model,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { DropdownTriggerDirective } from \"./dropdown-trigger/dropdown-trigger.directive\";\nimport { DropdownContentComponent } from \"./dropdown-content/dropdown-content.component\";\nimport { isPlatformBrowser } from \"@angular/common\";\n\nexport type DropdownPosition = `${NgxFloatUiPlacements}`;\n\n@Component({\n standalone: true,\n selector: \"tedi-dropdown\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent implements AfterContentChecked, OnDestroy {\n /** Current value of dropdown (used with listbox) */\n readonly value = model<string>();\n\n /**\n * The position of the dropdown relative to the trigger element.\n * @default bottom-start\n */\n readonly position = input<DropdownPosition>(\"bottom-start\");\n\n /**\n * Should position to opposite direction when overflowing screen?\n * @default true\n */\n readonly preventOverflow = input(true);\n\n /**\n * Append floating element to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger element.\n * @default \"\"\n */\n readonly appendTo = input(\"\");\n\n readonly dropdownTrigger = contentChild.required(DropdownTriggerDirective);\n readonly dropdownContent = contentChild.required(DropdownContentComponent);\n readonly floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n\n private readonly activeIndex = signal<number | null>(null);\n readonly containerId = signal(\"\");\n readonly isContentHovered = signal(false);\n readonly floatUiDisplay = signal<\"inline\" | \"block\">(\"inline\");\n\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n document.addEventListener(\"pointerdown\", this.handleOutsideClick, true);\n }\n }\n\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener(\n \"pointerdown\",\n this.handleOutsideClick,\n true,\n );\n }\n }\n\n ngAfterContentChecked(): void {\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const container = floatUiEl.querySelector<HTMLElement>(\n \".float-ui-container\",\n );\n\n if (container) {\n container.setAttribute(\"tabindex\", \"-1\");\n container.setAttribute(\"aria-labelledby\", container.id + \"_trigger\");\n this.containerId.set(container.id);\n }\n }\n\n showDropdown() {\n if (this.floatUiComponent().state) return;\n\n this.floatUiComponent().show();\n this.floatUiDisplay.set(\"block\");\n this.setActiveToSelectedOrFirst();\n\n const floatUiEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n const triggerWidth = this.dropdownTrigger()?.host.nativeElement.offsetWidth;\n\n if (triggerWidth) {\n floatUiEl.style.setProperty(\n \"--_tedi-dropdown-trigger-width\",\n `${triggerWidth}px`,\n );\n }\n\n setTimeout(() => this.focusActiveItem());\n }\n\n hideDropdown() {\n if (this.floatUiComponent().state) {\n this.floatUiComponent().hide();\n this.floatUiDisplay.set(\"inline\");\n this.activeIndex.set(null);\n this.updateTabindexes();\n }\n }\n\n toggleDropdown() {\n if (this.floatUiComponent().state) {\n this.hideDropdown();\n } else {\n this.showDropdown();\n }\n }\n\n handleOutsideClick = (event: Event) => {\n if (!this.floatUiComponent().state) return;\n\n const target = event.target as HTMLElement;\n\n const triggerEl = this.dropdownTrigger().host.nativeElement;\n const contentEl = this.floatUiComponent().elRef\n .nativeElement as HTMLElement;\n\n const clickedInside =\n triggerEl.contains(target) || contentEl.contains(target);\n\n if (!clickedInside) {\n this.hideDropdown();\n triggerEl.focus();\n }\n };\n\n focusFirstItem() {\n const items = this.dropdownContent().items();\n const index = items.findIndex((item) => !item.disabled());\n\n if (index !== -1) {\n this.activeIndex.set(index);\n this.updateTabindexes();\n items[index].focus();\n }\n }\n\n focusLastItem() {\n const items = this.dropdownContent().items();\n\n for (let i = items.length - 1; i >= 0; i--) {\n if (!items[i].disabled()) {\n this.activeIndex.set(i);\n this.updateTabindexes();\n items[i].focus();\n return;\n }\n }\n }\n\n setActiveToSelectedOrFirst() {\n const items = this.dropdownContent().items();\n const selectedIndex = items.findIndex(\n (item) => item.value() === this.value(),\n );\n\n if (selectedIndex !== -1 && !items[selectedIndex].disabled()) {\n this.activeIndex.set(selectedIndex);\n this.updateTabindexes();\n return;\n }\n\n const index = items.findIndex((item) => !item.disabled());\n\n if (index !== -1) {\n this.activeIndex.set(index);\n this.updateTabindexes();\n }\n }\n\n focusActiveItem() {\n const index = this.activeIndex();\n if (index == null) return;\n\n const items = this.dropdownContent().items();\n if (!items[index]) return;\n\n const el = items[index].host.nativeElement;\n el.focus();\n el.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n\n focusNextItem(fromEl: HTMLLIElement) {\n const fromIndex = this.findIndexByElement(fromEl);\n if (fromIndex === -1) return;\n\n const nextIndex = this.getNextEnabledIndex(fromIndex);\n if (nextIndex == null) return;\n\n const items = this.dropdownContent().items();\n this.activeIndex.set(nextIndex);\n this.updateTabindexes();\n items[nextIndex].focus();\n }\n\n focusPrevItem(fromEl: HTMLLIElement) {\n const fromIndex = this.findIndexByElement(fromEl);\n if (fromIndex === -1) return;\n\n const prevIndex = this.getPrevEnabledIndex(fromIndex);\n if (prevIndex == null) return;\n\n const items = this.dropdownContent().items();\n this.activeIndex.set(prevIndex);\n this.updateTabindexes();\n items[prevIndex].focus();\n }\n\n updateTabindexes() {\n const items = this.dropdownContent().items();\n const role = this.dropdownContent().dropdownRole();\n const active = this.activeIndex();\n\n items.forEach((item, i) => {\n const el = item.host.nativeElement;\n\n if (i === active && !item.disabled()) {\n el.setAttribute(\"tabindex\", \"0\");\n } else {\n if (role === \"listbox\" && item.disabled()) {\n el.removeAttribute(\"tabindex\");\n } else {\n el.setAttribute(\"tabindex\", \"-1\");\n }\n }\n });\n }\n\n private findIndexByElement(el: HTMLLIElement): number {\n return this.dropdownContent()\n .items()\n .findIndex((item) => item.host.nativeElement === el);\n }\n\n private getNextEnabledIndex(fromIndex: number): number | null {\n const items = this.dropdownContent().items();\n\n for (let i = fromIndex + 1; i < items.length; i++) {\n if (!items[i].disabled()) return i;\n }\n\n return null;\n }\n\n private getPrevEnabledIndex(fromIndex: number): number | null {\n const items = this.dropdownContent().items();\n\n for (let i = fromIndex - 1; i >= 0; i--) {\n if (!items[i].disabled()) return i;\n }\n\n return null;\n }\n}\n","<div\n applyClass=\"float-ui-container-dropdown\"\n style=\"display: contents\"\n looseTrigger=\"none\"\n ariaRole=\"presentation\"\n [hideOnClickOutside]=\"true\"\n [floatUiLoose]=\"floatUiComponent\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\n [disableAnimation]=\"true\"\n [targetElement]=\"dropdownTrigger().host.nativeElement\"\n [appendTo]=\"appendTo()\"\n>\n <ng-content select=\"[tedi-dropdown-trigger]\" />\n</div>\n<float-ui-content #floatUiComponent [style.display]=\"floatUiDisplay()\">\n <ng-content select=\"tedi-dropdown-content\" />\n</float-ui-content>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { DropdownComponent } from \"../../../overlay/dropdown/dropdown.component\";\nimport { DropdownTriggerDirective } from \"../../../overlay/dropdown/dropdown-trigger/dropdown-trigger.directive\";\nimport { DropdownContentComponent } from \"../../../overlay/dropdown/dropdown-content/dropdown-content.component\";\nimport { DropdownItemComponent } from \"../../../overlay/dropdown/dropdown-item/dropdown-item.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\nimport { DatePickerSelectorMode, DatePickerView } from \"../date-picker.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-header\",\n templateUrl: \"./date-picker-header.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n IconComponent,\n DropdownComponent,\n DropdownTriggerDirective,\n DropdownContentComponent,\n DropdownItemComponent,\n ],\n})\nexport class DatePickerHeaderComponent {\n /** Unique ID for ARIA controls */\n readonly uniqueId = input.required<string>();\n\n /** Current view mode */\n readonly currentView = input.required<DatePickerView>();\n\n /** Currently displayed month */\n readonly month = input.required<Date>();\n\n /** Month selector mode */\n readonly monthMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Year selector mode */\n readonly yearMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Whether to show navigation buttons */\n readonly showNavigation = input(true);\n\n /** Whether previous month navigation is enabled */\n readonly canGoPrev = input(true);\n\n /** Whether next month navigation is enabled */\n readonly canGoNext = input(true);\n\n /** Selected year for display */\n readonly selectedYear = input.required<number>();\n\n /** List of available years for dropdown */\n readonly years = input.required<number[]>();\n\n /** Paged years for year grid navigation */\n readonly pagedYears = input.required<number[]>();\n\n /** Whether there's a previous year page */\n readonly hasPrevYearPage = input(true);\n\n /** Whether there's a next year page */\n readonly hasNextYearPage = input(true);\n\n /** Set of disabled month indices (0-11) */\n readonly disabledMonths = input<Set<number>>(new Set());\n\n /** Set of disabled years */\n readonly disabledYears = input<Set<number>>(new Set());\n\n readonly prevMonth = output<void>();\n readonly nextMonth = output<void>();\n readonly monthSelect = output<string>();\n readonly yearSelect = output<string>();\n readonly monthClick = output<void>();\n readonly yearClick = output<void>();\n readonly prevYearPage = output<void>();\n readonly nextYearPage = output<void>();\n\n readonly translationService = inject(TediTranslationService);\n\n readonly monthNames = [\n this.translationService.track(\"date-picker.january\"),\n this.translationService.track(\"date-picker.february\"),\n this.translationService.track(\"date-picker.march\"),\n this.translationService.track(\"date-picker.april\"),\n this.translationService.track(\"date-picker.may\"),\n this.translationService.track(\"date-picker.june\"),\n this.translationService.track(\"date-picker.july\"),\n this.translationService.track(\"date-picker.august\"),\n this.translationService.track(\"date-picker.september\"),\n this.translationService.track(\"date-picker.october\"),\n this.translationService.track(\"date-picker.november\"),\n this.translationService.track(\"date-picker.december\"),\n ];\n\n onPrevMonth() {\n this.prevMonth.emit();\n }\n\n onNextMonth() {\n this.nextMonth.emit();\n }\n\n onMonthSelect(value?: string) {\n if (value) this.monthSelect.emit(value);\n }\n\n onYearSelect(value?: string) {\n if (value) this.yearSelect.emit(value);\n }\n\n onMonthClick() {\n this.monthClick.emit();\n }\n\n onYearClick() {\n this.yearClick.emit();\n }\n\n onPrevYearPage() {\n this.prevYearPage.emit();\n }\n\n onNextYearPage() {\n this.nextYearPage.emit();\n }\n}\n","<div class=\"tedi-date-picker__header\">\n @if (currentView() === \"calendar-grid\") {\n @if (showNavigation()) {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.go-prev-month')()\"\n [attr.aria-controls]=\"uniqueId()\"\n (click)=\"onPrevMonth()\"\n [disabled]=\"!canGoPrev()\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n }\n\n <div class=\"tedi-date-picker__controls\">\n @if (monthMode() === \"dropdown\") {\n <tedi-dropdown\n [value]=\"month().getMonth().toString()\"\n (valueChange)=\"onMonthSelect($event)\"\n >\n <button\n tedi-dropdown-trigger\n ariaHaspopup=\"listbox\"\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-month')()\"\n >\n {{ monthNames[month().getMonth()]() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n <tedi-dropdown-content\n dropdownRole=\"listbox\"\n class=\"tedi-date-picker__dropdown-content tedi-date-picker__dropdown-content--month\"\n >\n @for (monthName of monthNames; track i; let i = $index) {\n <li\n tedi-dropdown-item\n [value]=\"i.toString()\"\n [disabled]=\"disabledMonths().has(i)\"\n >\n {{ monthName() }}\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n } @else if (monthMode() === \"grid\") {\n <button\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-month')()\"\n (click)=\"onMonthClick()\"\n >\n {{ monthNames[month().getMonth()]() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n } @else if (monthMode() === \"label\") {\n <div class=\"tedi-date-picker__label\">\n {{ monthNames[month().getMonth()]() }}\n </div>\n }\n\n @if (yearMode() === \"dropdown\") {\n <tedi-dropdown\n position=\"bottom-end\"\n [value]=\"selectedYear().toString()\"\n (valueChange)=\"onYearSelect($event)\"\n >\n <button\n tedi-dropdown-trigger\n ariaHaspopup=\"listbox\"\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-year')()\"\n >\n {{ selectedYear() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n <tedi-dropdown-content\n dropdownRole=\"listbox\"\n class=\"tedi-date-picker__dropdown-content tedi-date-picker__dropdown-content--year\"\n >\n @for (year of years(); track year) {\n <li\n tedi-dropdown-item\n [value]=\"year.toString()\"\n [disabled]=\"disabledYears().has(year)\"\n >\n {{ year }}\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n } @else if (yearMode() === \"grid\") {\n <button\n class=\"tedi-date-picker__dropdown-trigger\"\n [attr.aria-label]=\"translationService.track('date-picker.select-year')()\"\n (click)=\"onYearClick()\"\n >\n {{ selectedYear() }}\n <tedi-icon\n name=\"arrow_drop_down\"\n class=\"tedi-date-picker__dropdown-arrow\"\n size=\"inherit\"\n />\n </button>\n } @else if (yearMode() === \"label\") {\n <div class=\"tedi-date-picker__label\">\n {{ selectedYear() }}\n </div>\n }\n </div>\n\n @if (showNavigation()) {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.go-next-month')()\"\n [attr.aria-controls]=\"uniqueId()\"\n (click)=\"onNextMonth()\"\n [disabled]=\"!canGoNext()\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n }\n } @else if (currentView() === \"month-grid\") {\n <div class=\"tedi-date-picker__controls\">\n {{ monthNames[month().getMonth()]() }}\n </div>\n } @else if (currentView() === \"year-grid\") {\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.previous-years')()\"\n (click)=\"onPrevYearPage()\"\n [disabled]=\"!hasPrevYearPage()\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n <div class=\"tedi-date-picker__controls\">{{ selectedYear() }}</div>\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__nav\"\n [attr.aria-label]=\"translationService.track('date-picker.next-years')()\"\n (click)=\"onNextYearPage()\"\n [disabled]=\"!hasNextYearPage()\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n viewChild,\n ElementRef,\n inject,\n} from \"@angular/core\";\nimport { DatePickerDay } from \"../date-picker.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-calendar-grid\",\n templateUrl: \"./date-picker-calendar-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerCalendarGridComponent {\n private readonly gridElement =\n viewChild<ElementRef<HTMLDivElement>>(\"gridElement\");\n /** Grid element unique ID for ARIA */\n readonly gridId = input.required<string>();\n\n /** Week rows containing day data */\n readonly weekRows = input.required<DatePickerDay[][]>();\n\n /** Week numbers for each row */\n readonly weekNumbers = input.required<number[]>();\n\n /** Whether to show week numbers */\n readonly showWeekNumbers = input(false);\n\n /** Currently active date for keyboard navigation */\n readonly activeDate = input.required<Date | null>();\n\n /** Currently selected date */\n readonly selected = input<Date | null>(null);\n\n /** Today's date */\n readonly today = input.required<Date>();\n\n /** Emits when a day is selected */\n readonly daySelect = output<DatePickerDay>();\n\n /** Emits on day keydown for keyboard navigation */\n readonly dayKeydown = output<{ event: KeyboardEvent; date: Date }>();\n\n private readonly translationService = inject(TediTranslationService);\n\n readonly weekDays = [\n this.translationService.track(\"date-picker.monday-short\"),\n this.translationService.track(\"date-picker.tuesday-short\"),\n this.translationService.track(\"date-picker.wednesday-short\"),\n this.translationService.track(\"date-picker.thursday-short\"),\n this.translationService.track(\"date-picker.friday-short\"),\n this.translationService.track(\"date-picker.saturday-short\"),\n this.translationService.track(\"date-picker.sunday-short\"),\n ];\n\n isSelected(date: Date): boolean {\n const sel = this.selected();\n return !!sel && date.toDateString() === sel.toDateString();\n }\n\n isToday(date: Date): boolean {\n return date.toDateString() === this.today().toDateString();\n }\n\n getTabIndex(date: Date): number {\n const active = this.activeDate();\n return active && date.toDateString() === active.toDateString() ? 0 : -1;\n }\n\n onDayClick(day: DatePickerDay) {\n this.daySelect.emit(day);\n }\n\n onDayKeydown(event: KeyboardEvent, date: Date) {\n this.dayKeydown.emit({ event, date });\n }\n\n /** Focus a specific date in the grid */\n focusDate(date: Date) {\n const container = this.gridElement()?.nativeElement;\n if (!container) return;\n\n const key = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n ).getTime();\n\n const btn = container.querySelector<HTMLButtonElement>(\n `[data-date-key=\"${key}\"]`,\n );\n\n if (btn && document.activeElement !== btn) {\n btn.focus({ preventScroll: true });\n }\n }\n}\n","<div\n class=\"tedi-date-picker__weekdays\"\n [class.tedi-date-picker__weekdays--numbered]=\"showWeekNumbers()\"\n role=\"row\"\n>\n @if (showWeekNumbers()) {\n <div role=\"columnheader\"></div>\n }\n @for (wd of weekDays; track $index) {\n <div class=\"tedi-date-picker__weekday\" role=\"columnheader\">\n {{ wd() }}\n </div>\n }\n</div>\n\n<div\n #gridElement\n class=\"tedi-date-picker__grid\"\n role=\"grid\"\n [attr.id]=\"gridId()\"\n aria-readonly=\"true\"\n>\n @for (week of weekRows(); track row; let row = $index) {\n <div\n class=\"tedi-date-picker__row\"\n [class.tedi-date-picker__row--numbered]=\"showWeekNumbers()\"\n role=\"row\"\n >\n @if (showWeekNumbers()) {\n <div\n class=\"tedi-date-picker__weeknumber\"\n role=\"gridcell\"\n aria-readonly=\"true\"\n >\n {{ weekNumbers()[row] }}\n </div>\n }\n @for (day of week; track day.date) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"tedi-date-picker__day\"\n [class.tedi-date-picker__day--other-month]=\"!day.inCurrentMonth\"\n [class.tedi-date-picker__day--selected]=\"isSelected(day.date)\"\n [disabled]=\"day.disabled\"\n [attr.aria-selected]=\"isSelected(day.date) ? 'true' : null\"\n [attr.aria-disabled]=\"day.disabled ? 'true' : null\"\n [attr.aria-current]=\"isToday(day.date) ? 'date' : null\"\n [attr.tabindex]=\"getTabIndex(day.date)\"\n [attr.data-date-key]=\"day.date.getTime()\"\n (keydown)=\"onDayKeydown($event, day.date)\"\n (click)=\"onDayClick(day)\"\n >\n @if (isToday(day.date)) {\n <div class=\"tedi-date-picker__today\">\n {{ day.date.getDate() }}\n </div>\n } @else {\n {{ day.date.getDate() }}\n }\n </button>\n }\n </div>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from \"@angular/core\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-month-grid\",\n templateUrl: \"./date-picker-month-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerMonthGridComponent {\n /** Currently displayed month (0-11) */\n readonly currentMonth = input.required<Date>();\n\n /** Emits selected month index (0-11) */\n readonly monthSelect = output<number>();\n\n private readonly translationService = inject(TediTranslationService);\n\n readonly monthShortNames = [\n this.translationService.track(\"date-picker.january-short\"),\n this.translationService.track(\"date-picker.february-short\"),\n this.translationService.track(\"date-picker.march-short\"),\n this.translationService.track(\"date-picker.april-short\"),\n this.translationService.track(\"date-picker.may-short\"),\n this.translationService.track(\"date-picker.june-short\"),\n this.translationService.track(\"date-picker.july-short\"),\n this.translationService.track(\"date-picker.august-short\"),\n this.translationService.track(\"date-picker.september-short\"),\n this.translationService.track(\"date-picker.october-short\"),\n this.translationService.track(\"date-picker.november-short\"),\n this.translationService.track(\"date-picker.december-short\"),\n ];\n\n onMonthClick(index: number) {\n this.monthSelect.emit(index);\n }\n}\n","<div class=\"tedi-date-picker__month-year-grid\" role=\"group\">\n @for (monthName of monthShortNames; track i; let i = $index) {\n <button\n type=\"button\"\n class=\"tedi-date-picker__month-year-button\"\n [class.tedi-date-picker__month-year-button--selected]=\"\n currentMonth().getMonth() === i\n \"\n (click)=\"onMonthClick(i)\"\n >\n {{ monthName() }}\n </button>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n output,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker-year-grid\",\n templateUrl: \"./date-picker-year-grid.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerYearGridComponent {\n /** Years to display in current page */\n readonly pagedYears = input.required<number[]>();\n\n /** Currently selected year */\n readonly selectedYear = input.required<number>();\n\n /** Emits selected year */\n readonly yearSelect = output<number>();\n\n onYearClick(year: number) {\n this.yearSelect.emit(year);\n }\n}\n","<div class=\"tedi-date-picker__month-year-grid\" role=\"group\">\n @for (year of pagedYears(); track year) {\n <button\n type=\"button\"\n class=\"tedi-date-picker__month-year-button\"\n [class.tedi-date-picker__month-year-button--selected]=\"selectedYear() === year\"\n (click)=\"onYearClick(year)\"\n >\n {{ year }}\n </button>\n }\n</div>\n","/**\n * Formats a Date object to dd.MM.yyyy string format.\n */\nexport function formatDate(date: Date): string {\n const d = String(date.getDate()).padStart(2, \"0\");\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const y = date.getFullYear();\n return `${d}.${m}.${y}`;\n}\n\n/**\n * Parses a dd.MM.yyyy string to a Date object.\n * Returns null if the string is invalid.\n */\nexport function parseDate(str: string): Date | null {\n const parts = str.trim().split(\".\");\n if (parts.length !== 3) return null;\n\n const [dd, mm, yyyy] = parts.map(Number);\n if (!dd || !mm || !yyyy) return null;\n\n const date = new Date(yyyy, mm - 1, dd);\n\n if (\n date.getFullYear() !== yyyy ||\n date.getMonth() !== mm - 1 ||\n date.getDate() !== dd\n ) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Checks if two dates represent the same calendar day.\n */\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getDate() === b.getDate() &&\n a.getMonth() === b.getMonth() &&\n a.getFullYear() === b.getFullYear()\n );\n}\n\n/**\n * Checks if date a is before date b.\n */\nexport function isBeforeDay(a: Date, b: Date): boolean {\n if (a.getFullYear() !== b.getFullYear()) {\n return a.getFullYear() < b.getFullYear();\n }\n if (a.getMonth() !== b.getMonth()) {\n return a.getMonth() < b.getMonth();\n }\n return a.getDate() < b.getDate();\n}\n\n/**\n * Checks if date a is after date b.\n */\nexport function isAfterDay(a: Date, b: Date): boolean {\n if (a.getFullYear() !== b.getFullYear()) {\n return a.getFullYear() > b.getFullYear();\n }\n if (a.getMonth() !== b.getMonth()) {\n return a.getMonth() > b.getMonth();\n }\n return a.getDate() > b.getDate();\n}\n\n/**\n * Returns the ISO week number for a given date.\n */\nexport function getISOWeek(date: Date): number {\n const target = new Date(date);\n target.setHours(0, 0, 0, 0);\n\n const day = target.getDay();\n const isoDay = day === 0 ? 7 : day;\n\n target.setDate(target.getDate() + (4 - isoDay));\n const yearStart = new Date(target.getFullYear(), 0, 1);\n\n const diffInDays = Math.floor(\n (target.getTime() - yearStart.getTime()) / 86400000,\n );\n return Math.floor(diffInDays / 7) + 1;\n}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n computed,\n model,\n input,\n inject,\n signal,\n OnInit,\n viewChild,\n ElementRef,\n effect,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\nimport { SeparatorComponent } from \"../../helpers/separator/separator.component\";\nimport { PopoverComponent } from \"../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../overlay/popover/popover-content/popover-content.component\";\nimport { PopoverTriggerDirective } from \"../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { DatePickerHeaderComponent } from \"./date-picker-header/date-picker-header.component\";\nimport { DatePickerCalendarGridComponent } from \"./date-picker-calendar-grid/date-picker-calendar-grid.component\";\nimport { DatePickerMonthGridComponent } from \"./date-picker-month-grid/date-picker-month-grid.component\";\nimport { DatePickerYearGridComponent } from \"./date-picker-year-grid/date-picker-year-grid.component\";\nimport { formatDate, parseDate, isSameDay, isBeforeDay, isAfterDay, getISOWeek } from \"../../../utils/date.util\";\n\nexport interface DatePickerDay {\n date: Date;\n disabled: boolean;\n inCurrentMonth: boolean;\n}\n\nexport type DatePickerInputState = \"default\" | \"error\" | \"valid\";\nexport type DatePickerInputSize = \"default\" | \"small\";\nexport type DatePickerSelectorMode = \"none\" | \"label\" | \"grid\" | \"dropdown\";\nexport type DatePickerView = \"month-grid\" | \"year-grid\" | \"calendar-grid\";\n\nexport type DatePickerMatcher =\n | Date\n | Date[]\n | { before: Date }\n | { after: Date }\n | { from: Date; to?: Date }\n | ((date: Date) => boolean);\n\nlet datePickerId = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-date-picker\",\n templateUrl: \"./date-picker.component.html\",\n styleUrl: \"./date-picker.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n IconComponent,\n ClosingButtonComponent,\n SeparatorComponent,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n DatePickerHeaderComponent,\n DatePickerCalendarGridComponent,\n DatePickerMonthGridComponent,\n DatePickerYearGridComponent,\n ],\n})\nexport class DatePickerComponent implements OnInit {\n readonly today = new Date();\n readonly uniqueId = `tedi-date-picker-id-${datePickerId++}`;\n\n /** Selected date */\n readonly selected = model<Date | null>(null);\n\n /** Currently shown month */\n readonly month = model(this.today);\n\n /** Disabled dates that cannot be selected. */\n readonly disabled = input<DatePickerMatcher | DatePickerMatcher[] | null>(\n null,\n );\n\n /** Shows or hides the calendar navigation controls (previous/next month buttons). */\n readonly showNavigation = input(true);\n\n /** Month selector mode: none | label | grid | dropdown */\n readonly monthMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Year selector mode: none | label | grid | dropdown */\n readonly yearMode = input<DatePickerSelectorMode>(\"dropdown\");\n\n /** Explicit starting year for the year dropdown list. If null, a dynamic fallback range (current year - 100) is used. */\n readonly startYear = input<number | null>(null);\n\n /** Explicit ending year for the year dropdown list. If null, a dynamic fallback range (current year + 20) is used. */\n readonly endYear = input<number | null>(null);\n\n /** Input id */\n readonly inputId = input<string>();\n\n /** Input placeholder */\n readonly inputPlaceholder = input<string>();\n\n /** Input state */\n readonly inputState = input<DatePickerInputState>(\"default\");\n\n /** Input size */\n readonly inputSize = input<DatePickerInputSize>(\"default\");\n\n /** Is input disabled? */\n readonly inputDisabled = input(false);\n\n /** Is manual typing into input allowed? */\n readonly allowManualInput = input(true);\n\n /** Should show week numbers before calendar grid? */\n readonly showWeekNumbers = input(false);\n\n /** Close calendar popover after date selection, default true */\n readonly closeOnSelect = input(true);\n\n /** Current view of datepicker (months grid, years grid or calendar grid) */\n readonly currentView = signal<DatePickerView>(\"calendar-grid\");\n\n /** Shown input value */\n readonly inputValue = signal(\"\");\n\n /** Keyboard active date (what receives keyboard focus) */\n readonly activeDate = signal<Date | null>(null);\n\n private readonly YEARS_PER_PAGE = 12;\n readonly yearPageIndex = signal(0);\n readonly selectedYear = computed(() => this.month().getFullYear());\n\n readonly years = computed(() => {\n const current = this.today.getFullYear();\n\n const start = this.startYear() ?? current - 100;\n const end = this.endYear() ?? current + 20;\n\n const safeStart = Math.min(start, end);\n const safeEnd = Math.max(start, end);\n\n return Array.from(\n { length: safeEnd - safeStart + 1 },\n (_, i) => safeStart + i,\n );\n });\n\n readonly pagedYears = computed(() => {\n const start = this.yearPageIndex() * this.YEARS_PER_PAGE;\n return this.years().slice(start, start + this.YEARS_PER_PAGE);\n });\n\n readonly hasPrevYearPage = computed(() => {\n return this.yearPageIndex() > 0;\n });\n\n readonly hasNextYearPage = computed(() => {\n const all = this.years().length;\n return (this.yearPageIndex() + 1) * this.YEARS_PER_PAGE < all;\n });\n\n readonly disabledMonths = computed(() => {\n const year = this.month().getFullYear();\n const disabled = new Set<number>();\n\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) === null) {\n disabled.add(month);\n }\n }\n\n return disabled;\n });\n\n readonly disabledYears = computed(() => {\n const disabled = new Set<number>();\n\n for (const year of this.years()) {\n if (this.isYearDisabled(year)) {\n disabled.add(year);\n }\n }\n\n return disabled;\n });\n\n readonly weekRows = computed(() => {\n const cells = this.days();\n const rows: DatePickerDay[][] = [];\n\n for (let i = 0; i < cells.length; i += 7) {\n rows.push(cells.slice(i, i + 7));\n }\n\n return rows;\n });\n\n readonly weekNumbers = computed(() => {\n return this.weekRows().map((week) => getISOWeek(week[0].date));\n });\n\n readonly canGoPrev = computed(() => {\n return this.findPrevEnabledMonth() !== null;\n });\n\n readonly canGoNext = computed(() => {\n return this.findNextEnabledMonth() !== null;\n });\n\n readonly days = computed<DatePickerDay[]>(() => {\n const month = this.month();\n const year = month.getFullYear();\n const monthIndex = month.getMonth();\n\n const firstOfMonth = new Date(year, monthIndex, 1);\n const daysInMonth = new Date(year, monthIndex + 1, 0).getDate();\n const firstWeekday = (firstOfMonth.getDay() + 6) % 7;\n\n const trailing = (7 - ((firstWeekday + daysInMonth) % 7)) % 7;\n const cells: DatePickerDay[] = [];\n\n /** Previous month days */\n for (let i = 0; i < firstWeekday; i++) {\n const date = new Date(year, monthIndex, i - firstWeekday + 1);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: false,\n disabled,\n });\n }\n\n /** Current month days */\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, monthIndex, day);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: true,\n disabled,\n });\n }\n\n /** Next month days */\n const lastDate = new Date(year, monthIndex, daysInMonth);\n\n for (let i = 1; i <= trailing; i++) {\n const date = new Date(lastDate);\n date.setDate(lastDate.getDate() + i);\n const disabled = this.isDisabled(date);\n\n cells.push({\n date,\n inCurrentMonth: false,\n disabled,\n });\n }\n\n return cells;\n });\n\n readonly inputElement =\n viewChild.required<ElementRef<HTMLInputElement>>(\"inputElement\");\n readonly calendarGrid = viewChild<DatePickerCalendarGridComponent>(\"gridElement\");\n readonly popover = viewChild.required(PopoverComponent);\n\n readonly translationService = inject(TediTranslationService);\n\n constructor() {\n effect(() => {\n const selected = this.selected();\n this.inputValue.set(selected ? formatDate(selected) : \"\");\n });\n }\n\n ngOnInit(): void {\n let active = this.selected() ?? this.today;\n\n // If the initial active date is disabled, find the first enabled date\n if (this.isDisabled(active)) {\n const firstEnabled = this.getFirstEnabledDayOfMonth(\n active.getFullYear(),\n active.getMonth(),\n );\n if (firstEnabled) {\n active = firstEnabled;\n }\n }\n\n this.activeDate.set(active);\n }\n\n getTabIndex(date: Date): number {\n const active = this.activeDate();\n return active && date.toDateString() === active.toDateString() ? 0 : -1;\n }\n\n prevMonth() {\n const prev = this.findPrevEnabledMonth();\n if (prev) {\n this.month.set(prev);\n this.updateActiveDateForMonth(prev.getFullYear(), prev.getMonth());\n }\n }\n\n nextMonth() {\n const next = this.findNextEnabledMonth();\n if (next) {\n this.month.set(next);\n this.updateActiveDateForMonth(next.getFullYear(), next.getMonth());\n }\n }\n\n prevYearPage() {\n if (this.hasPrevYearPage()) {\n this.yearPageIndex.set(this.yearPageIndex() - 1);\n }\n }\n\n nextYearPage() {\n if (this.hasNextYearPage()) {\n this.yearPageIndex.set(this.yearPageIndex() + 1);\n }\n }\n\n selectDay(day: DatePickerDay) {\n if (day.disabled) return;\n\n this.selected.set(day.date);\n this.inputValue.set(formatDate(day.date));\n\n if (this.closeOnSelect()) {\n this.closeCalendar();\n }\n }\n\n isSelected(date: Date): boolean {\n return (\n !!this.selected() &&\n date.toDateString() === this.selected()!.toDateString()\n );\n }\n\n isToday(date: Date): boolean {\n return date.toDateString() === this.today.toDateString();\n }\n\n isDisabled(date: Date): boolean {\n const rules = this.disabled();\n if (!rules) return false;\n\n const matchers = Array.isArray(rules) ? rules : [rules];\n return matchers.some((m) => this.matches(m, date));\n }\n\n onMonthClick() {\n this.currentView.set(\"month-grid\");\n }\n\n onMonthSelect(value?: string | number) {\n if (value === undefined || value === null) return;\n\n const monthIndex = typeof value === \"number\" ? value : Number(value);\n const year = this.month().getFullYear();\n\n if (this.getFirstEnabledDayOfMonth(year, monthIndex) === null) {\n return;\n }\n\n const updated = new Date(this.month());\n updated.setMonth(monthIndex);\n this.month.set(updated);\n this.updateActiveDateForMonth(year, monthIndex);\n\n if (this.currentView() === \"month-grid\") {\n this.currentView.set(\"calendar-grid\");\n }\n }\n\n onYearClick() {\n const selected = this.month().getFullYear();\n const index = this.years().indexOf(selected);\n this.yearPageIndex.set(Math.floor(index / this.YEARS_PER_PAGE));\n this.currentView.set(\"year-grid\");\n }\n\n onYearSelect(value?: string | number) {\n if (value === undefined || value === null) return;\n\n const year = typeof value === \"number\" ? value : Number(value);\n\n if (this.isYearDisabled(year)) {\n return;\n }\n\n const updated = new Date(this.month());\n updated.setFullYear(year);\n\n // If the current month is disabled in the new year, find the first enabled month\n let targetMonth = updated.getMonth();\n if (this.getFirstEnabledDayOfMonth(year, targetMonth) === null) {\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n targetMonth = month;\n updated.setMonth(month);\n break;\n }\n }\n }\n\n this.month.set(updated);\n this.updateActiveDateForMonth(year, targetMonth);\n\n if (this.currentView() === \"year-grid\") {\n this.currentView.set(\"calendar-grid\");\n }\n }\n\n onDayKeydown(event: KeyboardEvent, current: Date) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.selectDay({ date: current, disabled: false, inCurrentMonth: true });\n return;\n }\n\n if (event.key === \"Escape\") {\n this.closeCalendar();\n return;\n }\n\n const target = this.handleDayNavigation(event.key, current);\n if (target) {\n event.preventDefault();\n this.focusDate(target);\n }\n }\n\n private handleDayNavigation(key: string, current: Date): Date | null {\n const arrowSteps: Record<string, number> = {\n ArrowLeft: -1,\n ArrowRight: 1,\n ArrowUp: -7,\n ArrowDown: 7,\n };\n\n if (key in arrowSteps) {\n return this.findNextEnabledDate(current, arrowSteps[key]);\n }\n\n if (key === \"Home\") {\n const target = new Date(current);\n target.setDate(current.getDate() - ((current.getDay() + 6) % 7));\n return this.isDisabled(target)\n ? this.findNextEnabledDate(target, 1)\n : target;\n }\n\n if (key === \"End\") {\n const target = new Date(current);\n target.setDate(current.getDate() + (6 - ((current.getDay() + 6) % 7)));\n return this.isDisabled(target)\n ? this.findNextEnabledDate(target, -1)\n : target;\n }\n\n if (key === \"PageUp\") {\n const target = new Date(current);\n target.setMonth(current.getMonth() - 1);\n return this.isDisabled(target)\n ? (this.findNextEnabledDate(target, 1) ??\n this.findNextEnabledDate(target, -1))\n : target;\n }\n\n if (key === \"PageDown\") {\n const target = new Date(current);\n target.setMonth(current.getMonth() + 1);\n return this.isDisabled(target)\n ? (this.findNextEnabledDate(target, -1) ??\n this.findNextEnabledDate(target, 1))\n : target;\n }\n\n return null;\n }\n\n onCalendarKeyDown(event: KeyboardEvent) {\n if (this.currentView() !== \"calendar-grid\" && event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n\n this.currentView.set(\"calendar-grid\");\n const active = this.selected() ?? this.today;\n setTimeout(() => this.focusDate(active));\n return;\n }\n\n if (event.key === \"Tab\") {\n this.handleFocusTrap(event);\n }\n }\n\n private handleFocusTrap(event: KeyboardEvent) {\n const container = (event.target as HTMLElement).closest(\n \".tedi-date-picker__calendar\",\n );\n if (!container) return;\n\n const focusableSelector = 'button:not([disabled]):not([tabindex=\"-1\"]), [tabindex=\"0\"]:not([disabled])';\n const focusableElements = Array.from(\n container.querySelectorAll<HTMLElement>(focusableSelector),\n );\n\n if (!focusableElements.length) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n\n onInput(event: Event) {\n if (!this.allowManualInput()) return;\n\n const value = (event.target as HTMLInputElement).value;\n this.inputValue.set(value);\n\n if (value === \"\") {\n this.selected.set(null);\n }\n }\n\n onInputBlur() {\n if (!this.allowManualInput()) return;\n\n const selected = this.selected();\n const parsed = parseDate(this.inputValue());\n\n if (parsed) {\n this.selected.set(parsed);\n this.month.set(parsed);\n } else {\n this.inputValue.set(selected ? formatDate(selected) : \"\");\n }\n }\n\n onInputClick() {\n if (this.allowManualInput()) return;\n\n if (this.popover().floatUiComponent().state) {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n } else {\n this.popover().floatUiComponent().show();\n this.openCalendar();\n }\n }\n\n clearInput() {\n this.inputValue.set(\"\");\n this.selected.set(null);\n }\n\n closeCalendar() {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n }\n\n openCalendar() {\n let active = this.selected() ?? this.today;\n\n // If active date is disabled, find the first enabled date\n if (this.isDisabled(active)) {\n const currentMonth = this.month();\n const firstEnabled = this.getFirstEnabledDayOfMonth(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n );\n if (firstEnabled) {\n active = firstEnabled;\n }\n }\n\n this.activeDate.set(active);\n setTimeout(() => this.focusDate(active));\n }\n\n private focusDate(date: Date) {\n this.activeDate.set(date);\n const currentMonth = this.month();\n\n if (\n currentMonth.getFullYear() !== date.getFullYear() ||\n currentMonth.getMonth() !== date.getMonth()\n ) {\n this.month.set(new Date(date));\n }\n\n setTimeout(() => {\n this.calendarGrid()?.focusDate(date);\n });\n }\n\n private matches(m: DatePickerMatcher, date: Date): boolean {\n if (m instanceof Date) {\n return isSameDay(m, date);\n }\n\n if (Array.isArray(m)) {\n return m.some((d) => isSameDay(d, date));\n }\n\n if (typeof m === \"function\") {\n return m(date);\n }\n\n if (\"before\" in m) {\n return isBeforeDay(date, m.before);\n }\n\n if (\"after\" in m) {\n return isAfterDay(date, m.after);\n }\n\n if (\"from\" in m) {\n const { from, to } = m;\n if (to) {\n return (isSameDay(date, from) || isAfterDay(date, from)) &&\n (isSameDay(date, to) || isBeforeDay(date, to));\n }\n\n return isSameDay(date, from) || isAfterDay(date, from);\n }\n\n return false;\n }\n\n /**\n * Updates activeDate to the selected date if it's in the given month,\n * otherwise to the first enabled date in the month.\n * Needed for correct WCAG focus handling\n */\n private updateActiveDateForMonth(year: number, month: number) {\n const selected = this.selected();\n\n if (\n selected &&\n selected.getFullYear() === year &&\n selected.getMonth() === month &&\n !this.isDisabled(selected)\n ) {\n this.activeDate.set(selected);\n return;\n }\n\n const firstEnabled = this.getFirstEnabledDayOfMonth(year, month);\n if (firstEnabled) {\n this.activeDate.set(firstEnabled);\n }\n }\n\n private getFirstEnabledDayOfMonth(year: number, month: number): Date | null {\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n\n if (!this.isDisabled(date)) {\n return date;\n }\n }\n\n return null;\n }\n\n private isYearDisabled(year: number): boolean {\n for (let month = 0; month < 12; month++) {\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return false;\n }\n }\n\n return true;\n }\n\n private findPrevEnabledMonth(): Date | null {\n const current = this.month();\n const years = this.years();\n const minYear = years.length > 0 ? years[0] : current.getFullYear() - 100;\n\n let year = current.getFullYear();\n let month = current.getMonth() - 1;\n\n while (year >= minYear) {\n if (month < 0) {\n month = 11;\n year--;\n }\n\n if (year < minYear) break;\n\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return new Date(year, month, 1);\n }\n\n month--;\n }\n\n return null;\n }\n\n private findNextEnabledMonth(): Date | null {\n const current = this.month();\n const years = this.years();\n const maxYear = years.length > 0 ? years[years.length - 1] : current.getFullYear() + 20;\n\n let year = current.getFullYear();\n let month = current.getMonth() + 1;\n\n while (year <= maxYear) {\n if (month > 11) {\n month = 0;\n year++;\n }\n\n if (year > maxYear) break;\n\n if (this.getFirstEnabledDayOfMonth(year, month) !== null) {\n return new Date(year, month, 1);\n }\n\n month++;\n }\n\n return null;\n }\n\n /**\n * Finds the next enabled date starting from the given date, moving by the given step.\n * Returns null if no enabled date is found within a reasonable range.\n * Needed for correct WCAG arrow movement handling\n */\n private findNextEnabledDate(from: Date, step: number): Date | null {\n const maxIterations = 365;\n const target = new Date(from);\n\n for (let i = 0; i < maxIterations; i++) {\n target.setDate(target.getDate() + step);\n\n if (!this.isDisabled(target)) {\n return new Date(target);\n }\n }\n\n return null;\n }\n}\n","<input\n #inputElement\n type=\"text\"\n class=\"tedi-date-picker__input\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"dialog\"\n [class.tedi-date-picker__input--small]=\"inputSize() === 'small'\"\n [class.tedi-date-picker__input--valid]=\"inputState() === 'valid'\"\n [class.tedi-date-picker__input--error]=\"inputState() === 'error'\"\n [attr.id]=\"inputId()\"\n [attr.placeholder]=\"inputPlaceholder()\"\n [attr.aria-expanded]=\"!inputDisabled() && popover().floatUiComponent().state\"\n [attr.aria-controls]=\"uniqueId\"\n [attr.aria-readonly]=\"!allowManualInput()\"\n [readOnly]=\"!allowManualInput()\"\n [value]=\"inputValue()\"\n [disabled]=\"inputDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"onInputBlur()\"\n (click)=\"onInputClick()\"\n/>\n<div class=\"tedi-date-picker__input-buttons\">\n @if (selected()) {\n <button\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n class=\"tedi-date-picker__clear\"\n [iconSize]=\"18\"\n [attr.aria-label]=\"translationService.track('date-picker.clear-date')()\"\n [disabled]=\"inputDisabled()\"\n (click)=\"clearInput()\"\n ></button>\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n <tedi-popover\n style=\"display: flex; align-items: center\"\n position=\"bottom-end\"\n [withArrow]=\"false\"\n >\n <button\n tedi-button\n tedi-popover-trigger\n type=\"button\"\n variant=\"neutral\"\n size=\"small\"\n class=\"tedi-date-picker__toggle\"\n [attr.aria-label]=\"\n translationService.track('date-picker.open-calendar')()\n \"\n [disabled]=\"inputDisabled()\"\n (click)=\"openCalendar()\"\n >\n <tedi-icon name=\"calendar_today\" size=\"inherit\" />\n </button>\n <tedi-popover-content maxWidth=\"none\" style=\"padding: 0\">\n <div\n class=\"tedi-date-picker__calendar\"\n (keydown)=\"onCalendarKeyDown($event)\"\n >\n <tedi-date-picker-header\n [uniqueId]=\"uniqueId\"\n [currentView]=\"currentView()\"\n [month]=\"month()\"\n [monthMode]=\"monthMode()\"\n [yearMode]=\"yearMode()\"\n [showNavigation]=\"showNavigation()\"\n [canGoPrev]=\"canGoPrev()\"\n [canGoNext]=\"canGoNext()\"\n [selectedYear]=\"selectedYear()\"\n [years]=\"years()\"\n [pagedYears]=\"pagedYears()\"\n [hasPrevYearPage]=\"hasPrevYearPage()\"\n [hasNextYearPage]=\"hasNextYearPage()\"\n [disabledMonths]=\"disabledMonths()\"\n [disabledYears]=\"disabledYears()\"\n (prevMonth)=\"prevMonth()\"\n (nextMonth)=\"nextMonth()\"\n (monthSelect)=\"onMonthSelect($event)\"\n (yearSelect)=\"onYearSelect($event)\"\n (monthClick)=\"onMonthClick()\"\n (yearClick)=\"onYearClick()\"\n (prevYearPage)=\"prevYearPage()\"\n (nextYearPage)=\"nextYearPage()\"\n />\n\n @if (currentView() === \"calendar-grid\") {\n <tedi-date-picker-calendar-grid\n #gridElement\n [gridId]=\"uniqueId\"\n [weekRows]=\"weekRows()\"\n [weekNumbers]=\"weekNumbers()\"\n [showWeekNumbers]=\"showWeekNumbers()\"\n [activeDate]=\"activeDate()\"\n [selected]=\"selected()\"\n [today]=\"today\"\n (daySelect)=\"selectDay($event)\"\n (dayKeydown)=\"onDayKeydown($event.event, $event.date)\"\n />\n } @else if (currentView() === \"month-grid\") {\n <tedi-date-picker-month-grid\n [currentMonth]=\"month()\"\n (monthSelect)=\"onMonthSelect($event)\"\n />\n } @else if (currentView() === \"year-grid\") {\n <tedi-date-picker-year-grid\n [pagedYears]=\"pagedYears()\"\n [selectedYear]=\"selectedYear()\"\n (yearSelect)=\"onYearSelect($event)\"\n />\n }\n </div>\n </tedi-popover-content>\n </tedi-popover>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type FeedbackTextType = \"hint\" | \"valid\" | \"error\";\nexport type FeedbackTextPosition = \"left\" | \"right\";\n\n@Component({\n selector: \"tedi-feedback-text\",\n standalone: true,\n templateUrl: \"./feedback-text.component.html\",\n styleUrl: \"./feedback-text.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"[attr.role]\": \"role()\",\n \"[attr.aria-live]\": \"ariaLive()\",\n },\n})\nexport class FeedbackTextComponent {\n /**\n * Helper text\n */\n text = input.required<string>();\n /**\n * Type of form-helper.\n * @default hint\n */\n type = input<FeedbackTextType>(\"hint\");\n /**\n * Position of the helper.\n * @default left\n */\n position = input<FeedbackTextPosition>(\"left\");\n\n role = computed(() => {\n if (this.type() === \"valid\" || this.type() === \"error\") {\n return \"alert\";\n }\n\n return undefined;\n });\n\n ariaLive = computed(() => {\n if (this.type() === \"error\" || this.type() === \"valid\") {\n return \"assertive\";\n }\n\n return \"polite\";\n });\n\n classes = computed(() => {\n return `tedi-feedback-text tedi-feedback-text--${this.type()} tedi-feedback-text--${this.position()}`;\n });\n}\n","{{ text() }}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TediTranslationPipe } from \"../../../services\";\n\nexport type LabelSize = \"small\" | \"default\";\nexport type LabelColor = \"primary\" | \"secondary\";\n\n@Component({\n selector: \"[tedi-label]\",\n templateUrl: \"./label.component.html\",\n styleUrl: \"./label.component.scss\",\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TediTranslationPipe\n ],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class LabelComponent {\n /**\n * Size of the label.\n * @default default\n */\n size = input<LabelSize>(\"default\");\n /**\n * Whether label is required.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Color of the label.\n * @default secondary\n */\n color = input<LabelColor>(\"secondary\");\n\n classes = computed(() => {\n const classList = [\"tedi-label\", `tedi-label--${this.color()}`];\n\n if (this.size() === \"small\") {\n classList.push(\"tedi-label--small\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content />\n@if (required()) {\n <span class=\"tedi-label--required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">, {{ 'required' | tediTranslate }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n ViewEncapsulation,\n forwardRef,\n ElementRef,\n signal,\n ViewChild,\n} from \"@angular/core\";\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\nimport { ComponentInputs } from \"../../../types/inputs.type\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nexport type NumberFieldSize = \"default\" | \"small\";\n\n@Component({\n selector: \"tedi-number-field\",\n standalone: true,\n templateUrl: \"./number-field.component.html\",\n styleUrl: \"./number-field.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n LabelComponent,\n ButtonComponent,\n IconComponent,\n TextComponent,\n FeedbackTextComponent,\n TediTranslationPipe,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberFieldComponent),\n multi: true,\n },\n ],\n})\nexport class NumberFieldComponent implements ControlValueAccessor {\n /**\n * The unique identifier for the input element that this label is associated with. This ID should match the input element's id attribute to ensure accessibility.\n */\n inputId = input.required<string>();\n /**\n * The text content of the label that describes the input field.\n */\n label = input<string>();\n /**\n * Value of the input field. Supports two-way binding, use with form controls.\n */\n value = model<number>(0);\n /**\n * Is input disabled?\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Indicates whether the input field is required. If set to true, the required indicator will be displayed next to the label.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Minimum allowed value. Disables decrementing below this value and restricts manual input.\n */\n min = input<number>();\n /**\n * Maximum allowed value. Disables incrementing above this value and restricts manual input.\n */\n max = input<number>();\n /**\n * Step size for incrementing or decrementing the value.\n * @default 1\n */\n step = input<number>(1);\n /**\n * Size of the number field.\n * @default default\n */\n size = input<NumberFieldSize>(\"default\");\n /**\n * Marks the field as invalid for validation purposes.\n * @default false\n */\n invalid = input<boolean>(false);\n /**\n * Text displayed after the input value, typically a unit.\n */\n suffix = input<string>();\n /**\n * FeedbackText component inputs.\n */\n feedbackText = input<ComponentInputs<FeedbackTextComponent>>();\n /**\n * Is input full width?\n * @default false\n */\n fullWidth = input(false);\n\n @ViewChild(\"inputElement\") inputRef!: ElementRef<HTMLInputElement>;\n\n private formDisabled = signal(false);\n private onChange: (value: number) => void = () => { };\n private onTouched: () => void = () => { };\n private translationService = inject(TediTranslationService);\n private liveAnnouncer = inject(LiveAnnouncer);\n\n readonly isInvalid = computed(() => {\n const min = this.min();\n const max = this.max();\n\n return (\n this.invalid() ||\n Boolean(min !== undefined && this.value() < min) ||\n Boolean(max !== undefined && this.value() > max)\n );\n });\n\n readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n readonly decrementDisabled = computed(() => {\n const min = this.min();\n\n return this.isDisabled() || (min !== undefined && this.value() <= min);\n });\n\n readonly incrementDisabled = computed(() => {\n const max = this.max();\n\n return this.isDisabled() || (max !== undefined && this.value() >= max);\n });\n\n readonly feedbackId = computed(() =>\n this.feedbackText() ? `${this.inputId()}-feedback` : null\n );\n\n writeValue(value?: number): void {\n this.value.set(value ? (isNaN(value) ? 0 : value) : 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.formDisabled.set(disabled);\n }\n\n focus(): void {\n this.inputRef.nativeElement.focus();\n }\n\n blur(): void {\n this.inputRef.nativeElement.blur();\n this.onTouched();\n }\n\n handleButtonClick(action: \"decrement\" | \"increment\") {\n const delta = action === \"decrement\" ? -1 : 1;\n const nextValue = this.value() + this.step() * delta;\n this.value.set(nextValue);\n this.onChange(nextValue);\n this.onTouched();\n this.announceValue(nextValue);\n }\n\n announceValue(value: number) {\n this.liveAnnouncer.announce(\n this.translationService.translate(\"numberField.quantityUpdated\", value),\n \"polite\"\n );\n }\n\n handleInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const value = isNaN(input.valueAsNumber) ? 0 : input.valueAsNumber;\n if (value !== this.value()) {\n this.value.set(value);\n this.onChange(value);\n }\n }\n\n handleBlur() {\n this.onTouched();\n }\n}\n","@if (label()) {\n <label tedi-label [for]=\"inputId()\" [required]=\"required()\" [size]=\"size()\">\n {{ label() }}\n </label>\n}\n<div\n [class]=\"{\n 'tedi-number-field': true,\n 'tedi-number-field--invalid': isInvalid(),\n 'tedi-number-field--disabled': isDisabled(),\n }\"\n>\n <button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [class]=\"{\n 'tedi-number-field__button': true,\n 'tedi-number-field__button--decrement': true,\n 'tedi-number-field__button--small': size() === 'small',\n }\"\n [disabled]=\"decrementDisabled()\"\n [attr.aria-label]=\"'numberField.decrement' | tediTranslate: step()\"\n (click)=\"handleButtonClick('decrement')\"\n >\n <tedi-icon name=\"remove\" [size]=\"18\" />\n </button>\n <div\n [class]=\"{\n 'tedi-number-field__input-wrapper': true,\n 'tedi-number-field__input-wrapper--small': size() === 'small',\n 'tedi-number-field__input-wrapper--disabled': isDisabled(),\n 'tedi-number-field__input-wrapper--with-suffix': suffix(),\n 'tedi-number-field__input-wrapper--full-width': fullWidth(),\n }\"\n (click)=\"focus()\"\n >\n <input\n #inputElement\n [id]=\"inputId()\"\n type=\"number\"\n inputmode=\"numeric\"\n class=\"tedi-number-field__input\"\n [value]=\"value()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.step]=\"step()\"\n [attr.aria-invalid]=\"isInvalid()\"\n [attr.aria-describedby]=\"feedbackId()\"\n (input)=\"handleInputChange($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (suffix()) {\n <small tedi-text color=\"tertiary\" class=\"tedi-number-field__suffix\">\n {{ suffix() }}\n </small>\n }\n </div>\n <button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [class]=\"{\n 'tedi-number-field__button': true,\n 'tedi-number-field__button--increment': true,\n 'tedi-number-field__button--small': size() === 'small',\n }\"\n [disabled]=\"incrementDisabled()\"\n [attr.aria-label]=\"'numberField.increment' | tediTranslate: step()\"\n (click)=\"handleButtonClick('increment')\"\n >\n <tedi-icon name=\"add\" [size]=\"18\" />\n </button>\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [attr.id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n ViewChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { IconColor, IconComponent } from \"../../base/icon/icon.component\";\n\nexport type ToggleVariant = \"primary\" | \"colored\";\nexport type ToggleType = \"filled\" | \"outlined\";\nexport type ToggleSize = \"default\" | \"large\";\n\n@Component({\n selector: \"tedi-toggle\",\n standalone: true,\n templateUrl: \"./toggle.component.html\",\n styleUrl: \"./toggle.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true\n }\n ],\n host: {\n \"[class]\": \"classes()\"\n }\n})\nexport class ToggleComponent implements ControlValueAccessor {\n /**\n * The unique identifier for the input element that is associated with label.\n */\n inputId = input.required<string>();\n /**\n * Is toggle checked? Supports two-way binding, use with form controls.\n */\n checked = model<boolean>(false);\n /**\n * Is input disabled?\n * @default false\n */\n disabled = input<boolean>(false);\n /**\n * Indicates whether the input field is required.\n * @default false\n */\n required = input<boolean>(false);\n /**\n * Color variant of the toggle\n * @default primary\n */\n variant = input<ToggleVariant>(\"primary\");\n /**\n * Type of the toggle\n * @default filled\n */\n type = input<ToggleType>(\"filled\");\n /**\n * Size of the toggle\n * @default default\n */\n size = input<ToggleSize>(\"default\");\n /**\n * Should the toggle show lock icon. Works only with large toggle.\n * @default false\n */\n icon = input<boolean>(false);\n\n @ViewChild('inputElement') inputRef!: ElementRef<HTMLInputElement>;\n private onChange: (checked: boolean) => void = () => { };\n private onTouched: () => void = () => { };\n\n writeValue(checked: boolean): void {\n this.checked.set(checked);\n }\n\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n focus(): void {\n this.inputRef.nativeElement.focus();\n }\n\n blur(): void {\n this.inputRef.nativeElement.blur();\n this.onTouched();\n }\n\n handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.checked.set(target.checked);\n this.onChange(target.checked);\n }\n\n classes = computed(() => {\n return [\n \"tedi-toggle\",\n `tedi-toggle--${this.variant()}-${this.type()}`,\n `tedi-toggle--size-${this.size()}`,\n ].join(\" \");\n });\n\n iconColor = computed<IconColor>(() => {\n if (this.type() === \"outlined\") {\n return 'white';\n }\n\n switch (this.variant()) {\n case \"primary\":\n return this.checked() ? \"brand\" : \"tertiary\";\n case \"colored\":\n return this.checked() ? \"success\" : \"danger\";\n }\n });\n}\n","<input\n #inputElement\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-checked]=\"checked()\"\n type=\"checkbox\"\n class=\"tedi-toggle__input\"\n role=\"switch\"\n (change)=\"handleChange($event)\"\n/>\n<span class=\"tedi-toggle__slider\" aria-hidden=\"true\">\n @if (icon() && size() === 'large') {\n <tedi-icon\n [name]=\"checked() ? 'lock_open_right' : 'lock'\"\n [color]=\"iconColor()\"\n [size]=\"16\"\n class=\"tedi-toggle__icon\"\n />\n }\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-text-group-label\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupLabelComponent {}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointInputs,\n BreakpointService,\n} from \"../../../services/breakpoint/breakpoint.service\";\nimport { LabelComponent } from \"../../../components/form\";\nimport { TextGroupLabelComponent } from \"./text-group-label.component\";\n\nexport type TextGroupType = \"vertical\" | \"horizontal\";\n\nexport type TextGroupInputs = {\n /**\n * Type of text group layout\n * @default horizontal\n */\n type: TextGroupType;\n /**\n * Width for the label (e.g., '200px', '30%', etc.)\n */\n labelWidth: string | undefined;\n};\n@Component({\n standalone: true,\n selector: \"tedi-text-group\",\n templateUrl: \"./text-group.component.html\",\n styleUrl: \"./text-group.component.scss\",\n imports: [\n LabelComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupComponent implements BreakpointInputs<TextGroupInputs>, AfterContentChecked {\n type = input<TextGroupType>(\"horizontal\");\n labelWidth = input<string>();\n breakpointService = inject(BreakpointService);\n\n readonly textGroupLabel = contentChild(TextGroupLabelComponent, { read: ElementRef });\n readonly labelText = signal<string | null>(null);\n\n xs = input<TextGroupInputs>();\n sm = input<TextGroupInputs>();\n md = input<TextGroupInputs>();\n lg = input<TextGroupInputs>();\n xl = input<TextGroupInputs>();\n xxl = input<TextGroupInputs>();\n\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<TextGroupInputs>({\n type: this.type(),\n labelWidth: this.labelWidth(),\n\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [`tedi-text-group--${this.breakpointInputs().type}`];\n return classList.join(\" \");\n });\n\n ngAfterContentChecked(): void {\n const labelEl = this.textGroupLabel()?.nativeElement as HTMLElement;\n if (labelEl) {\n const text = labelEl.textContent?.trim() || null;\n if (text !== this.labelText()) {\n this.labelText.set(text);\n }\n }\n }\n}\n","<dl [class]=\"classes()\" [style.--_label-width]=\"labelWidth()\">\n <dt [attr.aria-label]=\"labelText()\">\n <span tedi-label aria-hidden=\"true\">\n <ng-content select=\"tedi-text-group-label\"></ng-content>\n </span>\n </dt>\n <dd>\n <ng-content select=\"tedi-text-group-value\"></ng-content>\n </dd>\n</dl>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-text-group-value\",\n template: `<ng-content />`,\n styleUrl: \"./text-group.component.scss\",\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TextGroupValueComponent {}\n","import { Directive, inject, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediCarouselSlide]\",\n standalone: true,\n})\nexport class CarouselSlideDirective {\n template = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n signal,\n viewChild,\n AfterViewInit,\n OnDestroy,\n input,\n inject,\n HostListener,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { CarouselSlideDirective } from \"../carousel-slide.directive\";\nimport {\n breakpointInput,\n BreakpointInput,\n BreakpointService,\n} from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationService } from \"../../../../services\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-content\",\n templateUrl: \"./carousel-content.component.html\",\n styleUrls: [\"./carousel-content.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet],\n host: {\n tabindex: \"0\",\n role: \"region\",\n \"aria-roledescription\": \"carousel\",\n \"[attr.aria-label]\": \"translationService.track('carousel')()\",\n \"aria-live\": \"off\",\n \"[class]\": \"classes()\",\n },\n})\nexport class CarouselContentComponent implements AfterViewInit, OnDestroy {\n /** Slides per view (minimum 1, can be fractional, e.g. 1.25 for peeking) */\n readonly slidesPerView = input(\n { xs: 1 },\n { transform: (v: BreakpointInput<number>) => breakpointInput(v) },\n );\n\n /** Gap between slides in px */\n readonly gap = input(\n { xs: 16 },\n { transform: (v: BreakpointInput<number>) => breakpointInput(v) },\n );\n\n /** Should carousel have fade? In mobile both left and right, in desktop only right. */\n readonly fade = input(false);\n\n /** Transition duration in ms */\n readonly transitionMs = input(400);\n\n readonly translationService = inject(TediTranslationService);\n private readonly breakpointService = inject(BreakpointService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly track = viewChild.required<ElementRef<HTMLDivElement>>(\"track\");\n readonly slides = contentChildren(CarouselSlideDirective);\n\n readonly trackIndex = signal(0);\n readonly animate = signal(false);\n readonly viewportWidth = signal(0);\n private readonly windowBase = signal(0);\n\n readonly currentSlidesPerView = computed(() => {\n if (\n this.slidesPerView().xxl &&\n this.breakpointService.isAboveBreakpoint(\"xxl\")()\n ) {\n return this.slidesPerView().xxl as number;\n } else if (\n this.slidesPerView().xl &&\n this.breakpointService.isAboveBreakpoint(\"xl\")()\n ) {\n return this.slidesPerView().xl as number;\n } else if (\n this.slidesPerView().lg &&\n this.breakpointService.isAboveBreakpoint(\"lg\")()\n ) {\n return this.slidesPerView().lg as number;\n } else if (\n this.slidesPerView().md &&\n this.breakpointService.isAboveBreakpoint(\"md\")()\n ) {\n return this.slidesPerView().md as number;\n } else if (\n this.slidesPerView().sm &&\n this.breakpointService.isAboveBreakpoint(\"sm\")()\n ) {\n return this.slidesPerView().sm as number;\n } else {\n return this.slidesPerView().xs;\n }\n });\n\n readonly currentGap = computed(() => {\n if (this.gap().xxl && this.breakpointService.isAboveBreakpoint(\"xxl\")()) {\n return this.gap().xxl as number;\n } else if (\n this.gap().xl &&\n this.breakpointService.isAboveBreakpoint(\"xl\")()\n ) {\n return this.gap().xl as number;\n } else if (\n this.gap().lg &&\n this.breakpointService.isAboveBreakpoint(\"lg\")()\n ) {\n return this.gap().lg as number;\n } else if (\n this.gap().md &&\n this.breakpointService.isAboveBreakpoint(\"md\")()\n ) {\n return this.gap().md as number;\n } else if (\n this.gap().sm &&\n this.breakpointService.isAboveBreakpoint(\"sm\")()\n ) {\n return this.gap().sm as number;\n } else {\n return this.gap().xs;\n }\n });\n\n readonly buffer = computed(() => this.slides().length);\n\n readonly slideIndex = computed(() => {\n const slidesCount = this.slides().length;\n\n if (slidesCount === 0) {\n return 0;\n }\n\n const i = Math.floor(this.trackIndex());\n return ((i % slidesCount) + slidesCount) % slidesCount;\n });\n\n\n readonly renderedActiveIndex = computed(() => {\n return this.trackIndex() - this.windowBase() + this.buffer();\n });\n\n readonly renderedIndices = computed(() => {\n const slidesCount = this.slides().length;\n\n if (!slidesCount) {\n return [];\n }\n\n const total = 2 * this.buffer() + Math.ceil(this.currentSlidesPerView());\n const start = this.windowBase() - this.buffer();\n\n return Array.from(\n { length: total },\n (_, i) => (((start + i) % slidesCount) + slidesCount) % slidesCount,\n );\n });\n\n readonly slideFlex = computed(() => {\n const slidesPerView = this.currentSlidesPerView();\n const gap = this.currentGap();\n return `0 0 calc((100% - ${(slidesPerView - 1) * gap}px) / ${slidesPerView})`;\n });\n\n readonly classes = computed(() => {\n const classList = [\"tedi-carousel__content\"];\n\n if (this.fade() && this.currentSlidesPerView() > 1) {\n classList.push(\"tedi-carousel__content--fade-right\");\n } else if (this.fade() && this.currentSlidesPerView() <= 1) {\n classList.push(\"tedi-carousel__content--fade-x\");\n }\n\n return classList.join(\" \");\n });\n\n readonly trackStyle = computed(() => {\n const slidesPerView = this.currentSlidesPerView();\n const gap = this.currentGap();\n const viewportWidth = this.viewportWidth();\n\n if (!viewportWidth) {\n return {\n gap: `${gap}px`,\n transform: \"translate3d(0,0,0)\",\n transition: \"none\",\n };\n }\n\n const totalGapWidth = gap * (slidesPerView - 1);\n const slideWidth = (viewportWidth - totalGapWidth) / slidesPerView;\n\n const offsetSlides = this.trackIndex() - this.windowBase() + this.buffer();\n const translateX = -offsetSlides * (slideWidth + gap);\n\n return {\n gap: `${gap}px`,\n transform: `translate3d(${translateX}px, 0, 0)`,\n transition: this.animate()\n ? `transform ${this.transitionMs()}ms ease`\n : \"none\",\n };\n });\n\n locked = false;\n dragging = false;\n private startX = 0;\n private startIndex = 0;\n private ro?: ResizeObserver;\n private wheelTimeout?: ReturnType<typeof setTimeout>;\n private scrollDelta = 0;\n\n @HostListener(\"wheel\", [\"$event\"])\n onWheel(event: WheelEvent) {\n const slidesCount = this.slides().length;\n\n if (!slidesCount) {\n return;\n }\n\n const delta =\n Math.abs(event.deltaX) > Math.abs(event.deltaY)\n ? event.deltaX\n : event.shiftKey\n ? event.deltaY\n : 0;\n\n if (!delta) {\n return;\n }\n\n event.preventDefault();\n\n const cellWidth =\n (this.viewportWidth() -\n this.currentGap() * (this.currentSlidesPerView() - 1)) /\n this.currentSlidesPerView() +\n this.currentGap();\n\n if (!cellWidth) {\n return;\n }\n\n const deltaSlides = delta / cellWidth;\n this.scrollDelta += deltaSlides;\n\n const maxDelta = this.buffer() * 0.9;\n const min = this.windowBase() - maxDelta;\n const max = this.windowBase() + maxDelta;\n\n const unclamped = this.trackIndex() + deltaSlides;\n const clamped = Math.min(Math.max(unclamped, min), max);\n const wasClamped = clamped !== unclamped;\n\n this.animate.set(false);\n this.trackIndex.set(clamped);\n\n clearTimeout(this.wheelTimeout);\n\n this.wheelTimeout = setTimeout(() => {\n this.animate.set(true);\n\n const direction = Math.sign(this.scrollDelta);\n const current = this.trackIndex();\n\n let snapIndex = Math.round(current);\n\n if (Math.abs(this.scrollDelta) > 0.3) {\n snapIndex = direction > 0 ? Math.ceil(current) : Math.floor(current);\n }\n\n if (wasClamped) {\n if (current <= min) snapIndex = Math.ceil(min);\n if (current >= max) snapIndex = Math.floor(max);\n }\n\n const finalIndex = Math.min(Math.max(snapIndex, min), max);\n this.trackIndex.set(finalIndex);\n this.scrollDelta = 0;\n }, 120);\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case \"ArrowRight\":\n case \"PageDown\":\n event.preventDefault();\n this.next();\n break;\n\n case \"ArrowLeft\":\n case \"PageUp\":\n event.preventDefault();\n this.prev();\n break;\n\n case \"Home\":\n event.preventDefault();\n this.goToIndex(0);\n break;\n\n case \"End\": {\n event.preventDefault();\n this.goToIndex(this.slides().length - 1);\n break;\n }\n\n default:\n break;\n }\n }\n\n @HostListener(\"pointerdown\", [\"$event\"])\n onPointerDown(ev: PointerEvent) {\n if (!this.slides().length) {\n return;\n }\n\n this.host.nativeElement.setPointerCapture(ev.pointerId);\n this.dragging = true;\n this.animate.set(false);\n this.startX = ev.clientX;\n this.startIndex = this.trackIndex();\n this.windowBase.set(Math.floor(this.startIndex));\n }\n\n @HostListener(\"pointermove\", [\"$event\"])\n onPointerMove(ev: PointerEvent) {\n if (!this.dragging) {\n return;\n }\n\n const dx = ev.clientX - this.startX;\n const cellWidth =\n (this.viewportWidth() -\n this.currentGap() * (this.currentSlidesPerView() - 1)) /\n this.currentSlidesPerView() +\n this.currentGap();\n\n if (!cellWidth) {\n return;\n }\n\n const deltaSlides = dx / cellWidth;\n const targetIndex = this.startIndex - deltaSlides;\n\n const maxDelta = this.buffer() * 0.9;\n const min = this.windowBase() - maxDelta;\n const max = this.windowBase() + maxDelta;\n const clamped = Math.min(Math.max(targetIndex, min), max);\n this.trackIndex.set(clamped);\n }\n\n @HostListener(\"pointerup\")\n @HostListener(\"pointercancel\")\n @HostListener(\"lostpointercapture\")\n onPointerUp() {\n if (!this.dragging) {\n return;\n }\n\n this.dragging = false;\n this.animate.set(true);\n this.trackIndex.set(Math.round(this.trackIndex()));\n }\n\n ngAfterViewInit(): void {\n const viewport = this.host.nativeElement;\n this.viewportWidth.set(viewport.clientWidth);\n\n this.ro = new ResizeObserver(() => {\n this.viewportWidth.set(viewport.clientWidth);\n });\n\n this.ro.observe(viewport);\n }\n\n ngOnDestroy(): void {\n this.ro?.disconnect();\n }\n\n next(): void {\n if (!this.slides().length || this.locked) {\n return;\n }\n\n this.animate.set(true);\n this.trackIndex.update((i) => i + 1);\n this.lockNavigation();\n }\n\n prev(): void {\n if (!this.slides().length || this.locked) {\n return;\n }\n\n this.animate.set(true);\n this.trackIndex.update((i) => i - 1);\n this.lockNavigation();\n }\n\n goToIndex(index: number) {\n const slidesCount = this.slides().length;\n\n if (!slidesCount || this.locked) {\n return;\n }\n\n const current = this.slideIndex();\n const normalized = ((index % slidesCount) + slidesCount) % slidesCount;\n const delta = normalized - current;\n this.animate.set(true);\n this.trackIndex.update((i) => i + delta);\n }\n\n onTransitionEnd(e: TransitionEvent) {\n if (\n e.target !== this.track().nativeElement ||\n e.propertyName !== \"transform\" ||\n this.dragging\n ) {\n return;\n }\n\n this.animate.set(false);\n this.windowBase.set(Math.floor(this.trackIndex()));\n }\n\n lockNavigation() {\n this.locked = true;\n setTimeout(() => (this.locked = false), this.transitionMs());\n }\n}\n","<div\n #track\n class=\"tedi-carousel__track\"\n [style]=\"trackStyle()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n @for (idx of renderedIndices(); track $index) {\n <div\n class=\"tedi-carousel__slide\"\n [attr.role]=\"$index === renderedActiveIndex() ? 'group' : 'presentation'\"\n aria-roledescription=\"slide\"\n [attr.aria-label]=\"\n translationService.track('carousel.slide', idx + 1, slides().length)()\n \"\n [attr.aria-current]=\"$index === renderedActiveIndex() ? 'true' : null\"\n [attr.aria-hidden]=\"$index === renderedActiveIndex() ? null : 'true'\"\n [style.flex]=\"slideFlex()\"\n >\n <ng-container *ngTemplateOutlet=\"slides()[idx].template\"></ng-container>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CarouselContentComponent } from \"./carousel-content/carousel-content.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel\",\n templateUrl: \"./carousel.component.html\",\n styleUrl: \"./carousel.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CarouselComponent {\n carouselContent = contentChild.required(CarouselContentComponent);\n}\n","<ng-content select=\"tedi-carousel-header\" />\n<ng-content select=\"tedi-carousel-content\" />\n<ng-content select=\"tedi-carousel-footer\" />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-footer\",\n template: \"<ng-content />\",\n styleUrl: \"./carousel-footer.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselFooterComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-header\",\n template: \"<ng-content />\",\n styleUrl: \"./carousel-header.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselHeaderComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CarouselComponent } from \"../carousel.component\";\nimport { NgClass } from \"@angular/common\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { TediTranslationService } from \"../../../../services\";\n\nexport type CarouselIndicatorsVariant = \"dots\" | \"numbers\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-indicators\",\n templateUrl: \"./carousel-indicators.component.html\",\n styleUrl: \"./carousel-indicators.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgClass, ButtonComponent, IconComponent, TextComponent],\n})\nexport class CarouselIndicatorsComponent {\n /** Should show indicators with arrows? If yes, don't use carousel-navigation component */\n readonly withArrows = input(false);\n\n /** Variant of indicators (dots and numbers) */\n readonly variant = input<CarouselIndicatorsVariant>(\"dots\");\n\n readonly translationService = inject(TediTranslationService);\n readonly carousel = inject(CarouselComponent);\n\n readonly indicatorsArray = computed(() =>\n Array.from(\n { length: this.carousel.carouselContent().slides().length },\n (_, i) => ({\n index: i,\n active: this.carousel.carouselContent().slideIndex() === i,\n }),\n ),\n );\n\n readonly activeSlideNumber = computed(\n () => this.carousel.carouselContent().slideIndex() + 1,\n );\n\n handleNext() {\n this.carousel.carouselContent().next();\n }\n\n handlePrev() {\n this.carousel.carouselContent().prev();\n }\n\n handleIndicatorClick(index: number) {\n this.carousel.carouselContent().goToIndex(index);\n }\n}\n","@if (withArrows()) {\n <button\n tedi-button\n type=\"button\"\n variant=\"neutral\"\n [attr.aria-label]=\"translationService.track('carousel.moveBack')()\"\n (click)=\"handlePrev()\"\n >\n <tedi-icon name=\"arrow_back\" [size]=\"18\" />\n </button>\n}\n\n@if (variant() === \"dots\") {\n @for (indicator of indicatorsArray(); track indicator.index) {\n <button\n type=\"button\"\n class=\"tedi-carousel__indicator\"\n [attr.aria-label]=\"\n translationService.track('carousel.showSlide', indicator.index + 1)()\n \"\n [ngClass]=\"indicator.active ? 'tedi-carousel__indicator--active' : null\"\n (click)=\"handleIndicatorClick(indicator.index)\"\n ></button>\n }\n} @else if (activeSlideNumber()) {\n <div>\n <b tedi-text color=\"brand\">{{ activeSlideNumber() }}</b>\n <span tedi-text color=\"tertiary\"> / {{ indicatorsArray().length }}</span>\n </div>\n}\n\n@if (withArrows()) {\n <button\n tedi-button\n type=\"button\"\n variant=\"neutral\"\n [attr.aria-label]=\"translationService.track('carousel.moveForward')()\"\n (click)=\"handleNext()\"\n >\n <tedi-icon name=\"arrow_forward\" [size]=\"18\" />\n </button>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ButtonComponent } from \"../../../buttons\";\nimport { IconComponent } from \"../../../base\";\nimport { CarouselComponent } from \"../carousel.component\";\nimport { TediTranslationService } from \"../../../../services\";\n\n@Component({\n standalone: true,\n selector: \"tedi-carousel-navigation\",\n templateUrl: \"./carousel-navigation.component.html\",\n styleUrl: \"./carousel-navigation.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ButtonComponent, IconComponent],\n})\nexport class CarouselNavigationComponent {\n readonly translationService = inject(TediTranslationService);\n private readonly carousel = inject(CarouselComponent);\n\n handleNext() {\n this.carousel.carouselContent().next();\n }\n\n handlePrev() {\n this.carousel.carouselContent().prev();\n }\n}\n","<button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [attr.aria-label]=\"translationService.track('carousel.moveBack')()\"\n (click)=\"handlePrev()\"\n>\n <tedi-icon name=\"arrow_back\" [size]=\"18\" />\n</button>\n<button\n tedi-button\n type=\"button\"\n variant=\"secondary\"\n [attr.aria-label]=\"translationService.track('carousel.moveForward')()\"\n (click)=\"handleNext()\"\n>\n <tedi-icon name=\"arrow_forward\" [size]=\"18\" />\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointService,\n BreakpointInputs,\n} from \"../../../../services/breakpoint/breakpoint.service\";\n\nexport type ColWidth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type JustifySelf = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type AlignSelf = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type ColInputs = {\n /**\n * Number of column width.\n * @default 1\n */\n width: ColWidth;\n /**\n * Aligns an item horizontally inside its own grid cell.\n */\n justifySelf?: JustifySelf;\n /**\n * Aligns an item vertically inside its own grid cell.\n */\n alignSelf?: AlignSelf;\n};\n\n@Component({\n selector: \"tedi-col\",\n standalone: true,\n templateUrl: \"./col.component.html\",\n styleUrl: \"./col.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"presentation\",\n }\n})\nexport class ColComponent implements BreakpointInputs<ColInputs> {\n width = input<ColWidth>(1);\n justifySelf = input<JustifySelf>();\n alignSelf = input<AlignSelf>();\n\n xs = input<ColInputs>();\n sm = input<ColInputs>();\n md = input<ColInputs>();\n lg = input<ColInputs>();\n xl = input<ColInputs>();\n xxl = input<ColInputs>();\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<ColInputs>({\n width: this.width(),\n justifySelf: this.justifySelf(),\n alignSelf: this.alignSelf(),\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [\"tedi-col\", `tedi-col--width-${this.breakpointInputs().width}`];\n\n if (this.breakpointInputs().justifySelf) {\n classList.push(\n `tedi-col--justify-self-${this.breakpointInputs().justifySelf}`,\n );\n }\n\n if (this.breakpointInputs().alignSelf) {\n classList.push(`tedi-col--align-self-${this.breakpointInputs().alignSelf}`);\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointService,\n BreakpointInputs,\n} from \"../../../../services/breakpoint/breakpoint.service\";\n\nconst GAP_MAP: Record<number, string> = {\n 0: \"0rem\",\n 1: \"0.25rem\",\n 2: \"0.5rem\",\n 3: \"1rem\",\n 4: \"1.5rem\",\n 5: \"3rem\",\n};\n\nexport type Cols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | \"auto\";\nexport type Gap = 0 | 1 | 2 | 3 | 4 | 5;\nexport type JustifyItems = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type AlignItems = \"start\" | \"end\" | \"center\" | \"stretch\";\nexport type RowInputs = {\n /**\n * The number of columns that will fit next to each other.\n * @default auto\n */\n cols: Cols;\n /**\n * Applies minimum width (px) to the column when using auto layout.\n * @default 200px\n */\n minColWidth: number;\n /**\n * Aligns items horizontally inside their grid cell.\n */\n justifyItems?: JustifyItems;\n /**\n * Aligns items vertically inside their grid cell.\n */\n alignItems?: AlignItems;\n /**\n * Add gap between items.\n */\n gap?: Gap;\n /**\n * Add horizontal gap between items.\n */\n gapX?: Gap;\n /**\n * Add vertical gap between items.\n */\n gapY?: Gap;\n};\n\n@Component({\n selector: \"tedi-row\",\n standalone: true,\n templateUrl: \"./row.component.html\",\n styleUrl: \"./row.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"[style.--_grid-gap]\": \"breakpointInputs().cols === 'auto' ? gridGap() : null\",\n \"[style.--_grid-col-width]\": \"breakpointInputs().cols === 'auto' ? breakpointInputs().minColWidth + 'px' : null\",\n \"role\": \"presentation\"\n }\n})\nexport class RowComponent implements BreakpointInputs<RowInputs> {\n cols = input<Cols>(\"auto\");\n minColWidth = input<number>(200);\n justifyItems = input<JustifyItems>();\n alignItems = input<AlignItems>();\n gap = input<Gap>();\n gapX = input<Gap>();\n gapY = input<Gap>();\n\n xs = input<RowInputs>();\n sm = input<RowInputs>();\n md = input<RowInputs>();\n lg = input<RowInputs>();\n xl = input<RowInputs>();\n xxl = input<RowInputs>();\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<RowInputs>({\n cols: this.cols(),\n minColWidth: this.minColWidth(),\n justifyItems: this.justifyItems(),\n alignItems: this.alignItems(),\n gap: this.gap(),\n gapX: this.gapX(),\n gapY: this.gapY(),\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n gridGap = computed(() => {\n const gap = this.breakpointInputs().gap;\n const gapX = this.breakpointInputs().gapX;\n const gapValue = gap ?? gapX;\n return GAP_MAP[gapValue ?? 0];\n });\n\n classes = computed(() => {\n const classList = [\"tedi-row\", `tedi-row--cols-${this.breakpointInputs().cols}`];\n\n if (this.breakpointInputs().justifyItems) {\n classList.push(\n `tedi-row--justify-items-${this.breakpointInputs().justifyItems}`,\n );\n }\n\n if (this.breakpointInputs().alignItems) {\n classList.push(`tedi-row--align-items-${this.breakpointInputs().alignItems}`);\n }\n\n if (this.breakpointInputs().gap !== undefined) {\n classList.push(`g-${this.breakpointInputs().gap}`);\n }\n\n if (this.breakpointInputs().gapX !== undefined) {\n classList.push(`gx-${this.breakpointInputs().gapX}`);\n }\n\n if (this.breakpointInputs().gapY !== undefined) {\n classList.push(`gy-${this.breakpointInputs().gapY}`);\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TimelineItemComponent } from \"./timeline-item/timeline-item.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineComponent {\n /** Index of active item */\n activeIndex = input<number>();\n\n items = signal<TimelineItemComponent[]>([]);\n\n registerItem(item: TimelineItemComponent) {\n this.items.update((list) => [...list, item]);\n }\n\n unregisterItem(item: TimelineItemComponent) {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n SeparatorComponent,\n SeparatorColor,\n} from \"../../separator/separator.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { TimelineComponent } from \"../timeline.component\";\nimport { NgClass } from \"@angular/common\";\n\ntype TimelineItemState = \"current\" | \"past\" | \"future\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-item\",\n imports: [SeparatorComponent, TextComponent, NgClass],\n templateUrl: \"./timeline-item.component.html\",\n styleUrl: \"./timeline-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineItemComponent implements OnInit, OnDestroy {\n /** Item timings */\n timings = input<string[]>([]);\n\n timeline = inject(TimelineComponent, { optional: true });\n\n ngOnInit() {\n if (!this.timeline) {\n return;\n }\n\n this.timeline.registerItem(this);\n }\n\n ngOnDestroy() {\n if (!this.timeline) {\n return;\n }\n\n this.timeline.unregisterItem(this);\n }\n\n isLast = computed(() => {\n const timeline = this.timeline;\n\n if (!timeline) {\n return false;\n }\n\n const currentIndex = timeline.items().findIndex((t) => t === this);\n\n if (currentIndex === timeline.items().length - 1) {\n return true;\n } else {\n return false;\n }\n });\n\n state = computed<TimelineItemState>(() => {\n const timeline = this.timeline;\n const activeItemIndex = timeline?.activeIndex();\n\n if (!timeline || activeItemIndex === undefined) {\n return \"future\";\n }\n\n const currentIndex = timeline.items().findIndex((t) => t === this);\n\n if (activeItemIndex === currentIndex) {\n return \"current\";\n } else if (activeItemIndex > currentIndex) {\n return \"past\";\n } else {\n return \"future\";\n }\n });\n\n color = computed<SeparatorColor>(() => {\n if (this.state() === \"current\" || this.state() === \"past\") {\n return \"accent\";\n }\n\n return \"secondary\";\n });\n}\n","<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-description\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline-description.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineDescriptionComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-timeline-title\",\n template: \"<ng-content />\",\n styleUrl: \"./timeline-title.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineTitleComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer\",\n templateUrl: \"./footer.component.html\",\n styleUrl: \"./footer.component.scss\",\n})\nexport class FooterComponent {\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n}\n","<footer class=\"tedi-footer\">\n <div\n class=\"tedi-footer__container\"\n [class.tedi-footer--mobile]=\"mobileLayout()\"\n >\n <ng-content select=\"[tedi-footer-start]\" />\n <div class=\"tedi-footer__center\">\n <ng-content select=\"tedi-footer-body\" />\n </div>\n <ng-content select=\"[tedi-footer-end]\" />\n </div>\n <ng-content select=\"tedi-footer-bottom\" />\n</footer>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-body\",\n template: \"<ng-content />\",\n styleUrl: \"./footer-body.component.scss\",\n host: {\n class: \"tedi-footer-body\",\n \"[class.tedi-footer-body--mobile]\": \"this.mobileLayout()\",\n },\n})\nexport class FooterBodyComponent {\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n trigger,\n state,\n style,\n transition,\n animate,\n} from \"@angular/animations\";\n\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-section\",\n imports: [IconComponent, TextComponent],\n templateUrl: \"./footer-section.component.html\",\n styleUrl: \"./footer-section.component.scss\",\n host: {\n class: \"tedi-footer-section\",\n \"[class.tedi-footer-section--collapse]\": \"applyCollapse()\",\n },\n animations: [\n trigger(\"collapseContent\", [\n state(\n \"collapsed\",\n style({\n height: \"0\",\n opacity: 0,\n visibility: \"hidden\",\n }),\n ),\n state(\n \"expanded\",\n style({\n height: \"*\",\n opacity: 1,\n visibility: \"visible\",\n }),\n ),\n transition(\"collapsed <=> expanded\", [animate(\"300ms ease\")]),\n ]),\n ],\n})\nexport class FooterSectionComponent {\n /**\n * Specifies the icon to be displayed in the footer links.\n */\n icon = input<string>();\n /**\n * Specifies the heading text for the footer links.\n */\n heading = input<string>();\n /**\n * Enables the collapse functionality for the footer links.\n * When set to true, the footer links will be collapsible on mobile devices.\n * @default \"false\"\n */\n collapse = input<boolean>(false);\n collapseOpen = signal<boolean>(false);\n private breakpointService = inject(BreakpointService);\n\n applyCollapse = computed(() => {\n return this.collapse() && this.mobileLayout();\n });\n\n hideIcon = this.breakpointService.isBelowBreakpoint(\"lg\");\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n toggleCollapse() {\n if (this.collapse()) {\n this.collapseOpen.update((value) => !value);\n }\n }\n}\n","@if (icon() && !hideIcon()) {\n <tedi-icon class=\"tedi-footer-section__icon\" [name]=\"icon()!\" color=\"white\" />\n}\n\n<div\n class=\"tedi-footer-section__container\"\n [class.tedi-footer-section__container--mobile]=\"mobileLayout()\"\n>\n @if (applyCollapse()) {\n <button class=\"tedi-footer-section__button\" (click)=\"toggleCollapse()\">\n {{ heading() }}\n <tedi-icon\n class=\"collapse__icon\"\n color=\"white\"\n [name]=\"collapseOpen() ? 'expand_less' : 'expand_more'\"\n />\n </button>\n } @else {\n <strong tedi-text class=\"tedi-footer-section__heading\" color=\"white\">\n {{ heading() }}\n </strong>\n }\n <div\n [class.tedi-footer-section__content-hidden]=\"\n applyCollapse() && !collapseOpen()\n \"\n [@collapseContent]=\"\n applyCollapse() ? (collapseOpen() ? 'expanded' : 'collapsed') : 'expanded'\n \"\n class=\"tedi-footer-section__content\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n signal,\n ViewEncapsulation,\n HostBinding,\n} from \"@angular/core\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\nexport type FooterSidePlacement = \"start\" | \"end\";\nexport type FooterSidePosition = \"start\" | \"center\" | \"end\";\n\n@Component({\n standalone: true,\n selector: \"tedi-footer-side\",\n template: `<ng-content />`,\n styleUrl: \"./footer-side.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FooterSideComponent {\n /**\n * Specifies the position of the footer internal content.\n * @default center\n */\n position = input<FooterSidePosition>(\"center\");\n placement = signal<FooterSidePlacement | null>(null);\n breakpointService = inject(BreakpointService);\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n constructor(\n @Attribute(\"tedi-footer-start\") public isStart: string,\n @Attribute(\"tedi-footer-end\") public isEnd: string,\n ) {\n const side =\n this.isStart !== null ? \"start\" : this.isEnd !== null ? \"end\" : null;\n if (side) this.placement.set(side as FooterSidePlacement);\n else\n console.warn(\n '[TediFooterSide] No placement detected. Use \"tedi-footer-start\" or \"tedi-footer-end\" attribute to define where this component should be rendered.',\n );\n }\n\n @HostBinding(\"class\")\n get hostClasses(): string {\n const classes = [\"tedi-footer-side\"];\n\n if (this.mobileLayout()) classes.push(\"tedi-footer-side--mobile\");\n\n classes.push(`tedi-footer-side--${this.placement()}`);\n classes.push(`tedi-footer-side--vertical-${this.position()}`);\n\n return classes.join(\" \");\n }\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n Renderer2,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n BreakpointInputs,\n BreakpointService,\n} from \"../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\n\nexport type LinkVariant = \"default\" | \"inverted\";\nexport type LinkSize = \"default\" | \"small\";\nexport type LinkInputs = {\n /**\n * Variant of the link.\n * @default default\n */\n variant: LinkVariant;\n /**\n * Size of the link.\n * @default default\n */\n size: LinkSize;\n /**\n * Does link have underline?\n * @default true\n */\n underline: boolean;\n /**\n * Target attribute for the link (e.g., \"_blank\", \"_self\", \"_parent\", \"_top\").\n */\n target?: string;\n};\n\n@Component({\n selector: \"[tedi-link]\",\n standalone: true,\n templateUrl: \"./link.component.html\",\n styleUrl: \"./link.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [TediTranslationPipe],\n host: {\n \"[class]\": \"classes()\",\n \"[attr.tabIndex]\": \"0\",\n },\n})\nexport class LinkComponent\n implements BreakpointInputs<LinkInputs>, AfterContentChecked\n{\n variant = input<LinkVariant>(\"default\");\n size = input<LinkSize>(\"default\");\n underline = input<boolean>(true);\n target = input<string | undefined>();\n\n xs = input<LinkInputs>();\n sm = input<LinkInputs>();\n md = input<LinkInputs>();\n lg = input<LinkInputs>();\n xl = input<LinkInputs>();\n xxl = input<LinkInputs>();\n\n private host = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n ngAfterContentChecked(): void {\n const childNodes: ChildNode[] = Array.from(\n this.host.nativeElement.childNodes,\n );\n\n for (const node of childNodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {\n if (node.parentNode !== this.host.nativeElement) {\n continue;\n }\n\n const span = this.renderer.createElement(\"span\") as HTMLSpanElement;\n this.renderer.insertBefore(this.host.nativeElement, span, node);\n this.renderer.appendChild(span, node);\n }\n }\n }\n\n breakpointService = inject(BreakpointService);\n breakpointInputs = computed(() => {\n return this.breakpointService.getBreakpointInputs<LinkInputs>({\n variant: this.variant(),\n size: this.size(),\n underline: this.underline(),\n\n xs: this.xs(),\n sm: this.sm(),\n md: this.md(),\n lg: this.lg(),\n xl: this.xl(),\n xxl: this.xxl(),\n });\n });\n\n classes = computed(() => {\n const classList = [\"tedi-link\"];\n\n if (this.breakpointInputs().variant === \"inverted\") {\n classList.push(\"tedi-link--inverted\");\n }\n\n if (this.breakpointInputs().size === \"small\") {\n classList.push(\"tedi-link--small\");\n }\n\n if (!this.breakpointInputs().underline) {\n classList.push(\"tedi-link--no-underline\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n AfterContentInit,\n effect,\n Injector,\n runInInjectionContext,\n ViewContainerRef,\n EmbeddedViewRef,\n} from \"@angular/core\";\nimport { LinkComponent } from \"../../../navigation/link/link.component\";\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: \"tedi-footer-bottom\",\n templateUrl: \"./footer-bottom.component.html\",\n styleUrl: \"./footer-bottom.component.scss\",\n host: {\n class: \"tedi-footer-bottom\",\n \"[class.tedi-footer-bottom--mobile]\": \"mobileLayout()\",\n },\n})\nexport class FooterBottomComponent implements AfterContentInit {\n private injector = inject(Injector);\n private renderer = inject(Renderer2);\n private breakpointService = inject(BreakpointService);\n private hostRef = inject(ElementRef<HTMLElement>);\n private viewContainerRef = inject(ViewContainerRef);\n private ellipsisViews: Array<EmbeddedViewRef<void>> = [];\n\n @ViewChild(\"ellipsis\", { static: true }) ellipsis!: TemplateRef<void>;\n @ContentChildren(LinkComponent, { descendants: true, read: ElementRef })\n links!: QueryList<ElementRef>;\n\n mobileLayout = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n ngAfterContentInit(): void {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n if (this.mobileLayout()) {\n this.addEllipsisElements();\n } else {\n this.removeEllipsisElements();\n }\n });\n });\n }\n\n private addEllipsisElements() {\n if (!this.links || this.links.length === 0) return;\n const linksArray = this.links.toArray();\n this.removeEllipsisElements();\n\n linksArray.forEach((link, index) => {\n const nativeElement = link.nativeElement;\n\n if (index < linksArray.length - 1) {\n const parent = nativeElement.parentNode;\n if (!parent) return;\n\n const embeddedView = this.viewContainerRef.createEmbeddedView(\n this.ellipsis,\n );\n embeddedView.detectChanges();\n this.ellipsisViews.push(embeddedView);\n const ellipsisElement = embeddedView.rootNodes[0];\n this.renderer.addClass(ellipsisElement, \"tedi-footer-bottom__ellipsis\");\n\n this.renderer.insertBefore(\n parent,\n ellipsisElement,\n nativeElement.nextSibling,\n );\n }\n });\n }\n\n private removeEllipsisElements(): void {\n const ellipsisEls = this.hostRef.nativeElement.querySelectorAll(\n \".tedi-footer-bottom__ellipsis\",\n );\n\n ellipsisEls.forEach((el: HTMLElement) => {\n const parent = el.parentNode;\n if (parent) {\n this.renderer.removeChild(parent, el);\n }\n });\n this.ellipsisViews.forEach((view) => view.destroy());\n this.ellipsisViews = [];\n }\n}\n","<ng-template #ellipsis>\n <svg\n class=\"tedi-footer-bottom__ellipsis\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"4\"\n height=\"5\"\n viewBox=\"0 0 4 5\"\n fill=\"none\"\n >\n <circle cx=\"2\" cy=\"2.41309\" r=\"2\" fill=\"#9293A4\" />\n </svg>\n</ng-template>\n\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"header[tedi-header]\",\n standalone: true,\n templateUrl: \"./header.component.html\",\n styleUrl: \"./header.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-header\"\n }\n})\nexport class HeaderComponent {}","<ng-content select=\"button[tedi-sidenav-toggle]\"></ng-content>\n<div class=\"tedi-header__main\">\n <ng-content></ng-content>\n</div>","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-header-actions\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./header-actions.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-header-actions\"\n }\n})\nexport class HeaderActionsComponent {}","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'tedi-header-content',\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: './header-content.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeaderContentComponent {}\n","import { NgFor } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n inject,\n input,\n output,\n ViewChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\nimport {\n TediTranslationService,\n Language,\n} from \"../../../../services/translation/translation.service\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\n\nexport type HeaderLanguage = {\n [L in Language]?: string;\n};\n\n@Component({\n selector: \"tedi-header-language\",\n standalone: true,\n imports: [\n NgFor,\n IconComponent,\n TextComponent,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n TediTranslationPipe,\n ],\n templateUrl: \"./header-language.component.html\",\n styleUrl: \"./header-language.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-header-language\",\n },\n})\nexport class HeaderLanguageComponent {\n /**\n * Languages object.\n * Key is value in 'Language' type.\n * Value should be text shown in the UI.\n */\n languages = input.required<HeaderLanguage>();\n /**\n * This is event emitter for changing language\n */\n languageChange = output<Language>();\n\n @ViewChild(forwardRef(() => PopoverComponent)) popover?: PopoverComponent;\n\n translationService = inject(TediTranslationService);\n\n languageKeys = computed(() => Object.keys(this.languages()) as Language[]);\n\n handleChangeLang(lang: Language) {\n this.languageChange.emit(lang);\n this.translationService.setLanguage(lang);\n this.popover?.floatUiComponent().hide();\n }\n}\n","<span\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-language__label\"\n >{{ \"header.select-lang\" | tediTranslate }}</span\n>\n<tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ languages()[translationService.getLanguage()] }}</span>\n <tedi-icon name=\"expand_more\" />\n </button>\n <tedi-popover-content maxWidth=\"none\">\n <button\n *ngFor=\"let language of languageKeys()\"\n class=\"tedi-link tedi-header__link-button\"\n (click)=\"handleChangeLang(language)\"\n >\n <span>{{ languages()[language] }}</span>\n </button>\n </tedi-popover-content>\n</tedi-popover>\n","import { ChangeDetectionStrategy, Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '../../../base/icon/icon.component';\nimport { ButtonComponent } from '../../../buttons/button/button.component';\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationService } from '../../../../services/translation/translation.service';\n\n@Component({\n selector: 'tedi-header-login',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n templateUrl: './header-login.component.html',\n styleUrl: './header-login.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderLoginComponent {\n breakpointService = inject(BreakpointService);\n translationService = inject(TediTranslationService);\n\n isMobile = this.breakpointService.isBelowBreakpoint(\"sm\");\n textDesktop = this.translationService.track(\"header.login\");\n textMobile = this.translationService.track(\"header.login-mobile\");\n\n text = computed(() => this.isMobile() ? this.textMobile() : this.textDesktop());\n}\n","<button \n tedi-button \n [variant]=\"isMobile() ? 'neutral' : 'primary'\" \n [class]=\"{ 'tedi-header-login__button': true, 'tedi-header-login__button--mobile': isMobile() }\"\n>\n @if (isMobile()) {\n <tedi-icon name=\"login\" />\n }\n {{ text() }}\n</button>","import { ChangeDetectionStrategy, Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '../../../base/icon/icon.component';\nimport { BreakpointService } from \"../../../../services/breakpoint/breakpoint.service\";\n\n@Component({\n selector: 'button[tedi-header-logout]',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './header-logout.component.html',\n styleUrl: './header-logout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\"\n }\n})\nexport class HeaderLogoutComponent {\n breakpointService = inject(BreakpointService);\n isMobile = this.breakpointService.isBelowBreakpoint(\"sm\");\n\n classes = computed(() => {\n const classList = [\"tedi-header-logout\", \"tedi-link\"];\n\n if (this.isMobile()) {\n classList.push(\"tedi-header-logout--mobile\");\n }\n\n return classList.join(\" \");\n })\n}\n","<tedi-icon name=\"logout\" />\n<span>\n <ng-content></ng-content>\n</span>","import { Directive, input, inject, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint/breakpoint.service';\n\n@Directive({\n selector: '[showAt]',\n standalone: true,\n})\nexport class ShowAtDirective {\n showAt = input.required<Breakpoint>();\n\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private breakpointService = inject(BreakpointService);\n\n constructor() {\n effect(() => {\n if (this.breakpointService.isAboveBreakpoint(this.showAt())()) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainerRef.clear();\n }\n })\n }\n}\n","import { Directive, input, inject, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { Breakpoint, BreakpointService } from '../../services/breakpoint/breakpoint.service';\n\n@Directive({\n selector: '[hideAt]',\n standalone: true,\n})\nexport class HideAtDirective {\n hideAt = input.required<Breakpoint>();\n\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private breakpointService = inject(BreakpointService);\n\n constructor() {\n effect(() => {\n if (this.breakpointService.isBelowBreakpoint(this.hideAt())()) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainerRef.clear();\n }\n })\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DOCUMENT, NgTemplateOutlet } from \"@angular/common\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { ShowAtDirective } from \"../../../../directives/show-at/show-at.directive\";\nimport { HideAtDirective } from \"../../../../directives/hide-at/hide-at.directive\";\nimport {\n ButtonComponent,\n ButtonVariant,\n} from \"../../../buttons/button/button.component\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\nimport {\n Breakpoint,\n BreakpointService,\n} from \"../../../../services/breakpoint/breakpoint.service\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n selector: \"tedi-header-profile\",\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n IconComponent,\n ButtonComponent,\n ShowAtDirective,\n HideAtDirective,\n NgTemplateOutlet,\n TediTranslationPipe,\n ],\n templateUrl: \"./header-profile.component.html\",\n styleUrl: \"./header-profile.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderProfileComponent implements AfterContentInit {\n /** Name of representative */\n name = input(\"\");\n /** Breakpoint at which we show dropdown instead of modal */\n showDropdown = input<Breakpoint>();\n\n readonly breakpointService = inject(BreakpointService);\n readonly translationService = inject(TediTranslationService);\n private readonly document = inject(DOCUMENT);\n private readonly host = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly eventListeners: (() => void)[] = [];\n\n constructor() {\n effect(() => {\n if (this.modalOpen()) {\n this.renderer.setStyle(this.document.body, \"overflow\", \"hidden\");\n } else {\n this.renderer.removeStyle(this.document.body, \"overflow\");\n }\n });\n }\n\n modalOpen = signal(false);\n\n readonly buttonVariant = computed<ButtonVariant>(() => {\n if (this.breakpointService.isBelowBreakpoint(\"sm\")() || !this.name()) {\n return \"neutral\";\n }\n\n return \"secondary\";\n });\n\n readonly buttonClass = computed(() => {\n if (this.breakpointService.isBelowBreakpoint(\"sm\")()) {\n return \"tedi-header-profile--mobile\";\n }\n\n return null;\n });\n\n ngAfterContentInit(): void {\n const element = this.host.nativeElement as HTMLElement;\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"click\", (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const clickedInside = element.contains(target);\n\n if (this.modalOpen() && !clickedInside) {\n this.modalOpen.set(false);\n }\n }),\n );\n }\n\n handleModalOpen() {\n const dropdownBreakpoint = this.showDropdown();\n\n if (\n !(\n dropdownBreakpoint &&\n this.breakpointService.isAboveBreakpoint(dropdownBreakpoint)()\n )\n ) {\n this.modalOpen.update((prev) => !prev);\n }\n }\n}\n","@if (showDropdown(); as dropdown) {\n <ng-container *hideAt=\"dropdown\">\n <button\n tedi-button\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n [attr.aria-label]=\"\n breakpointService.isBelowBreakpoint('sm')() || !name()\n ? translationService.track('header.profile')()\n : null\n \"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <ng-container *ngTemplateOutlet=\"modal\"></ng-container>\n </ng-container>\n\n <ng-container *showAt=\"dropdown\">\n <tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n tedi-button\n tedi-popover-trigger\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <tedi-popover-content maxWidth=\"small\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-popover-content>\n </tedi-popover>\n </ng-container>\n} @else {\n <button\n tedi-button\n [attr.data-open]=\"modalOpen()\"\n [class]=\"buttonClass()\"\n [variant]=\"buttonVariant()\"\n (click)=\"handleModalOpen()\"\n >\n @if (breakpointService.isBelowBreakpoint(\"sm\")()) {\n <tedi-icon\n [name]=\"modalOpen() ? 'close' : 'account_circle'\"\n color=\"brand\"\n />\n {{ \"header.profile\" | tediTranslate }}\n } @else {\n <tedi-icon\n name=\"account_circle\"\n color=\"brand\"\n [style]=\"{ 'font-size': name() ? '18px' : '36px' }\"\n />\n {{ name() }}\n @if (name()) {\n <tedi-icon name=\"expand_more\" style=\"font-size: 18px\" />\n }\n }\n </button>\n <ng-container *ngTemplateOutlet=\"modal\"></ng-container>\n}\n\n<ng-template #modal>\n @if (modalOpen()) {\n <div class=\"tedi-header-profile__overlay\" (click)=\"handleModalOpen()\"></div>\n <div class=\"tedi-header-profile__modal\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { ShowAtDirective } from \"../../../../directives/show-at/show-at.directive\";\nimport { HideAtDirective } from \"../../../../directives/hide-at/hide-at.directive\";\nimport { ButtonComponent } from \"../../../buttons/button/button.component\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\nimport { PopoverComponent } from \"../../../overlay/popover/popover.component\";\nimport { PopoverTriggerDirective } from \"../../../overlay/popover/popover-trigger/popover-trigger.directive\";\nimport { PopoverContentComponent } from \"../../../overlay/popover/popover-content/popover-content.component\";\n\nexport type Representative = {\n name: string;\n icon?: string;\n description?: string;\n};\n\n@Component({\n selector: \"tedi-header-role\",\n standalone: true,\n imports: [\n NgFor,\n NgIf,\n NgTemplateOutlet,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContentComponent,\n IconComponent,\n ButtonComponent,\n TextComponent,\n ShowAtDirective,\n HideAtDirective,\n ],\n templateUrl: \"./header-role.component.html\",\n styleUrl: \"./header-role.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-header-role\",\n },\n})\nexport class HeaderRoleComponent {\n /**\n * Role text\n */\n role = input(\"\");\n /**\n * Description text\n */\n description = input(\"\");\n /** Should show input in representative list?\n * @default false\n */\n showInput = input(false);\n /** List of representatives */\n representatives = input.required<Representative[]>();\n /** Current representative */\n currentRepresentative = model.required<Representative>();\n\n mobileOpen = signal(false);\n inputValue = signal(\"\");\n\n translationService = inject(TediTranslationService);\n switchRoleText = this.translationService.track(\"header.role-switch\");\n closeText = this.translationService.track(\"close\");\n searchText = this.translationService.track(\"header.role-search\");\n noResultsText = this.translationService.track(\n \"header.role-no-representatives\",\n );\n collapseText = computed(() =>\n this.mobileOpen() ? this.closeText() : this.switchRoleText(),\n );\n\n filteredRepresentatives = computed(() => {\n return this.representatives().filter((r) => {\n if (!this.inputValue()) {\n return true;\n }\n\n const nameMatches = r.name\n .toLowerCase()\n .includes(this.inputValue().toLowerCase());\n const descriptionMatches =\n r.description\n ?.toLowerCase()\n .includes(this.inputValue().toLowerCase()) ?? false;\n\n return nameMatches || descriptionMatches;\n });\n });\n\n handleMobileOpen() {\n this.mobileOpen.update((prev) => !prev);\n }\n\n handleSelectRepresentative(r: Representative) {\n this.currentRepresentative.set(r);\n }\n\n handleInputChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.inputValue.set(value);\n }\n}\n","<ng-container *hideAt=\"'lg'\">\n <div class=\"tedi-header-role__head\">\n <div\n tedi-text\n color=\"secondary\"\n class=\"tedi-header-role__info\"\n [attr.data-multiple]=\"representatives().length > 1\"\n >\n <b>{{ role() }} {{ currentRepresentative().name }}</b>\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n @if (representatives().length > 1) {\n <button tedi-button variant=\"neutral\" (click)=\"handleMobileOpen()\">\n {{ collapseText() }}\n <tedi-icon name=\"expand_more\" [attr.data-open]=\"mobileOpen()\" />\n </button>\n }\n </div>\n @if (representatives().length > 1) {\n <div class=\"tedi-header-role__collapse\" [attr.data-open]=\"mobileOpen()\">\n <div class=\"tedi-header-role__collapse__items\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n }\n</ng-container>\n\n<ng-container *showAt=\"'lg'\">\n @if (role() || description()) {\n <div\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-role__head\"\n >\n @if (role()) {\n <b>{{ role() }}</b>\n }\n\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n }\n\n <ng-container *ngIf=\"representatives().length > 1; else normalText\">\n <tedi-popover [withBorder]=\"true\" position=\"bottom\">\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ currentRepresentative().name }}</span>\n <tedi-icon name=\"expand_more\" />\n </button>\n <tedi-popover-content maxWidth=\"small\" class=\"tedi-header-role__dropdown\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-popover-content>\n </tedi-popover>\n </ng-container>\n</ng-container>\n\n<ng-template #content>\n @if (showInput()) {\n <div>\n <label for=\"representative-input\">{{ searchText() }}</label>\n <input\n id=\"representative-input\"\n class=\"tedi-header-role__input\"\n [value]=\"inputValue()\"\n (input)=\"handleInputChange($event)\"\n />\n </div>\n }\n @if (filteredRepresentatives().length === 0) {\n <span class=\"tedi-header-role__no-results\">{{ noResultsText() }}</span>\n }\n <button\n *ngFor=\"let r of filteredRepresentatives()\"\n class=\"tedi-header-role__representative\"\n [attr.data-selected]=\"\n r.name === currentRepresentative().name &&\n r.description === currentRepresentative().description\n \"\n (click)=\"handleSelectRepresentative(r)\"\n >\n @if (r.icon) {\n <tedi-icon [name]=\"r.icon\" />\n }\n <div>\n <div>{{ r.name }}</div>\n @if (r.description) {\n <div>\n {{ r.description }}\n </div>\n }\n </div>\n </button>\n</ng-template>\n\n<ng-template #normalText>\n <div>{{ currentRepresentative().name }}</div>\n</ng-template>\n","import { computed, effect, inject, Injectable, signal } from \"@angular/core\";\nimport { Breakpoint, BreakpointService } from \"../breakpoint/breakpoint.service\";\nimport { SideNavItemComponent } from \"../../components/layout/sidenav/sidenav-item/sidenav-item.component\";\n\n@Injectable({ providedIn: \"root\" })\nexport class SideNavService {\n private readonly breakpointService = inject(BreakpointService);\n\n items = signal<SideNavItemComponent[]>([]);\n desktopBreakpoint = signal<Breakpoint>(\"lg\");\n isMobile = this.breakpointService.isBelowBreakpoint(this.desktopBreakpoint);\n isMobileOpen = signal(false);\n isCollapsed = signal(false);\n\n constructor() {\n effect(() => {\n if (this.isMobile() && this.isCollapsed()) {\n this.isCollapsed.set(false);\n }\n });\n }\n\n registerItem(item: SideNavItemComponent) {\n this.items.update((list) => [...list, item]);\n }\n\n unregisterItem(item: SideNavItemComponent) {\n this.items.update((list) => list.filter((i) => i !== item));\n }\n\n handleGoToMainMenu() {\n this.items().forEach((item) => item.dropdown?.open.set(false));\n }\n\n handleCollapse() {\n this.isCollapsed.update((prev) => !prev);\n }\n\n isMobileItemOpen = computed(() => {\n return (\n this.isMobile() && this.items().some((item) => item.dropdown?.open())\n );\n });\n\n tooltipEnabled = computed(() => {\n return this.isCollapsed() && !this.items().some(item => item.dropdown?.open());\n })\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Injector,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { SideNavService } from \"../../../services/sidenav/sidenav.service\";\nimport { Breakpoint } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type SideNavItemSize = \"small\" | \"medium\" | \"large\";\n\n@Component({\n selector: \"nav[tedi-sidenav]\",\n standalone: true,\n templateUrl: \"./sidenav.component.html\",\n styleUrl: \"./sidenav.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent, TediTranslationPipe],\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class SideNavComponent {\n /**\n * Show dividers between items\n * @default true\n */\n dividers = input<boolean>(true);\n /**\n * Size of navigation item\n * @default large\n */\n size = input<SideNavItemSize>(\"large\");\n /**\n * Is navigation collapsible in desktop?\n * @default false\n */\n collapsible = input<boolean>(false);\n /** Breakpoint when to show desktop navigation\n * @default lg\n */\n desktopBreakpoint = input<Breakpoint>(\"lg\");\n\n private readonly injector = inject(Injector);\n\n constructor(public sidenavService: SideNavService) {\n effect(() => {\n this.sidenavService.desktopBreakpoint.set(this.desktopBreakpoint())\n })\n }\n\n handleBackToMainMenu() {\n // Find the parent menu item to focus on\n const openItem = this.sidenavService.items().find(item => item.dropdown?.open());\n\n this.sidenavService.handleGoToMainMenu();\n\n afterNextRender(() => {\n if (openItem) {\n const itemEl = openItem['host']?.nativeElement as HTMLElement;\n const trigger = itemEl?.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }\n }, { injector: this.injector });\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav\", `tedi-sidenav--${this.size()}`];\n\n if (this.dividers()) {\n classList.push(\"tedi-sidenav--dividers\");\n }\n\n if (this.sidenavService.isCollapsed()) {\n classList.push(\"tedi-sidenav--collapsed\");\n }\n\n if (this.sidenavService.isMobile()) {\n classList.push(\"tedi-sidenav--mobile\");\n }\n\n if (this.sidenavService.isMobileItemOpen()) {\n classList.push(\"tedi-sidenav--mobile-item-open\");\n }\n\n if (this.sidenavService.isMobile() && !this.sidenavService.isMobileOpen()) {\n classList.push(\"tedi-sidenav--hidden\");\n }\n\n return classList.join(\" \");\n });\n}\n","@if (!sidenavService.isMobile() && collapsible()) {\n <button\n class=\"tedi-sidenav__collapse\"\n (click)=\"sidenavService.handleCollapse()\"\n [attr.aria-label]=\"'toggle' | tediTranslate: !sidenavService.isCollapsed()\"\n >\n <tedi-icon\n [name]=\"\n sidenavService.isCollapsed() ? 'left_panel_open' : 'right_panel_open'\n \"\n color=\"brand\"\n />\n </button>\n}\n@if (sidenavService.isMobileItemOpen()) {\n <button\n class=\"tedi-sidenav-back\"\n (click)=\"handleBackToMainMenu()\"\n >\n <tedi-icon name=\"arrow_back\" color=\"white\" />\n {{ \"sidenav.backToMainMenu\" | tediTranslate }}\n </button>\n}\n<ul class=\"tedi-sidenav__list\">\n <ng-content></ng-content>\n</ul>\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RouterLink } from \"@angular/router\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown-item\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown-item.component.html\",\n styleUrl: \"./sidenav-dropdown-item.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RouterLink, NgTemplateOutlet],\n host: {\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavDropdownItemComponent implements AfterViewInit {\n /**\n * Is navigation item selected\n * @default false\n */\n selected = input<boolean>(false);\n /**\n * External link\n */\n href = input<string>();\n /**\n * Router link\n */\n route = input<string>();\n\n textContent = signal(\"\");\n\n private readonly host = inject(ElementRef);\n\n ngAfterViewInit(): void {\n if (this.host.nativeElement) {\n const text = this.host.nativeElement.textContent?.trim();\n if (text) {\n this.textContent.set(text);\n }\n }\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-dropdown-item\"];\n\n if (this.selected()) {\n classList.push(\"tedi-sidenav-dropdown-item--selected\");\n }\n\n return classList.join(\" \");\n });\n}\n","<li [class]=\"classes()\">\n @if (href()) {\n <a [href]=\"href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else if (route()) {\n <a [routerLink]=\"route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <div class=\"tedi-sidenav-dropdown-item__trigger\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</li>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-sidenav-group-title\",\n standalone: true,\n templateUrl: \"./sidenav-group-title.component.html\",\n styleUrl: \"./sidenav-group-title.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"class\": \"tedi-sidenav-group-title\",\n },\n})\nexport class SideNavGroupTitleComponent {}\n","<div class=\"tedi-sidenav-group-title__text\">\n <ng-content></ng-content>\n</div>\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n HostListener,\n inject,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TooltipComponent } from \"../tooltip.component\";\n\n@Component({\n selector: \"tedi-tooltip-trigger\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"../tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TooltipTriggerComponent implements AfterContentChecked {\n readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n readonly tooltip = inject(TooltipComponent);\n private interactiveElement = signal<HTMLElement | null>(null);\n\n constructor() {\n effect(() => {\n const element = this.interactiveElement();\n if (!element) return;\n\n const descriptionId = this.tooltip.descriptionId;\n const isOpen = this.tooltip.isOpen();\n\n element.setAttribute(\"aria-describedby\", descriptionId);\n element.setAttribute(\"aria-expanded\", String(isOpen));\n });\n }\n\n @HostListener(\"click\")\n onClick() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"click\"\n ) {\n this.tooltip.toggleTooltip();\n }\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.showTooltip();\n }\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n clearTimeout(this.tooltip.hideTimeout);\n\n this.tooltip.hideTimeout = setTimeout(() => {\n this.tooltip.hideTooltip();\n }, this.tooltip.timeoutDelay());\n }\n }\n\n @HostListener(\"focusin\")\n onFocusIn() {\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.showTooltip();\n }\n }\n\n @HostListener(\"focusout\")\n onFocusOut() {\n if (this.tooltip.isContentHovered()) {\n return;\n }\n\n if (\n this.tooltip.openWith() === \"both\" ||\n this.tooltip.openWith() === \"hover\"\n ) {\n this.tooltip.hideTooltip();\n }\n }\n\n @HostListener(\"keydown.escape\")\n onEscape() {\n this.tooltip.hideTooltip();\n }\n\n ngAfterContentChecked(): void {\n const element = this.host.nativeElement as HTMLElement;\n const firstChild = element.firstChild as HTMLElement | null;\n\n if (!firstChild) {\n return;\n }\n\n if (\n firstChild.nodeType === Node.TEXT_NODE &&\n firstChild.textContent?.trim()\n ) {\n const span = this.renderer.createElement(\"span\") as HTMLSpanElement;\n this.renderer.addClass(span, \"tedi-tooltip-trigger__text\");\n this.renderer.addClass(span, \"tedi-tooltip-trigger--focus\");\n this.renderer.setAttribute(span, \"tabindex\", \"0\");\n this.renderer.insertBefore(element, span, firstChild);\n this.renderer.appendChild(span, firstChild);\n this.interactiveElement.set(span);\n return;\n }\n\n this.renderer.addClass(firstChild, \"tedi-tooltip-trigger--focus\");\n\n if (!firstChild.getAttribute(\"tabindex\")) {\n this.renderer.setAttribute(firstChild, \"tabindex\", \"0\");\n }\n\n this.interactiveElement.set(firstChild);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { TooltipComponent } from \"../tooltip.component\";\n\nexport type TooltipWidth = \"none\" | \"small\" | \"medium\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"tedi-tooltip-content\",\n template: \"<ng-content />\",\n styleUrl: \"../tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n \"aria-hidden\": \"true\"\n },\n})\nexport class TooltipContentComponent {\n /**\n * The width of the tooltip. Can be 'none', 'small', 'medium', or 'large'.\n * @default medium\n */\n maxWidth = input<TooltipWidth>(\"medium\");\n\n private tooltip = inject(TooltipComponent);\n\n classes = computed(() => {\n return [\n \"tedi-tooltip-content\",\n `tedi-tooltip-content--${this.maxWidth()}`,\n ].join(\" \");\n });\n\n @HostListener(\"mouseenter\")\n onMouseEnter() {\n clearTimeout(this.tooltip.hideTimeout);\n this.tooltip.isContentHovered.set(true);\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave() {\n this.tooltip.hideTooltip();\n this.tooltip.isContentHovered.set(false);\n }\n}\n","import {\n AfterContentChecked,\n Component,\n input,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n viewChild,\n contentChild,\n signal,\n ElementRef,\n} from \"@angular/core\";\nimport {\n NgxFloatUiContentComponent,\n NgxFloatUiModule,\n NgxFloatUiPlacements,\n} from \"ngx-float-ui\";\nimport { TooltipTriggerComponent } from \"./tooltip-trigger/tooltip-trigger.component\";\nimport { TooltipContentComponent } from \"./tooltip-content/tooltip-content.component\";\n\nexport type TooltipPosition = `${NgxFloatUiPlacements}`;\nexport type TooltipOpenWith = \"hover\" | \"click\" | \"both\";\n\nlet tooltipIdCounter = 0;\n\n@Component({\n standalone: true,\n selector: \"tedi-tooltip\",\n imports: [NgxFloatUiModule],\n templateUrl: \"./tooltip.component.html\",\n styleUrl: \"./tooltip.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterContentChecked {\n /**\n * The position of the tooltip relative to the trigger element.\n * @default top\n */\n readonly position = input<TooltipPosition>(\"top\");\n\n /**\n * Should position to opposite direction when overflowing screen?\n * @default true\n */\n readonly preventOverflow = input(true);\n\n /**\n * How tooltip can opened?\n * @default both\n */\n readonly openWith = input<TooltipOpenWith>(\"both\");\n\n /**\n * Append floating element to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger element.\n * @default body\n */\n readonly appendTo = input(\"body\");\n\n /** Delay time (in ms) for closing tooltip when not hovering trigger or content.\n * @default 100\n */\n readonly timeoutDelay = input(100);\n\n /** Dropdown trigger button */\n readonly tooltipTrigger = contentChild.required(TooltipTriggerComponent);\n\n /** Tooltip content component */\n readonly tooltipContent = contentChild.required(TooltipContentComponent, {\n read: ElementRef,\n });\n\n readonly descriptionId = `tedi-tooltip-${++tooltipIdCounter}`;\n readonly contentText = signal(\"\");\n readonly isOpen = signal(false);\n\n isContentHovered = signal(false);\n floatUiDisplay = signal<\"inline\" | \"block\">(\"inline\");\n floatUiComponent = viewChild.required(NgxFloatUiContentComponent);\n hideTimeout?: ReturnType<typeof setTimeout>;\n\n showTooltip() {\n if (!this.floatUiComponent().state) {\n clearTimeout(this.hideTimeout);\n this.floatUiComponent().show();\n this.floatUiDisplay.set(\"block\");\n this.isOpen.set(true);\n }\n }\n\n hideTooltip() {\n if (this.floatUiComponent().state) {\n this.floatUiComponent().hide();\n this.floatUiDisplay.set(\"inline\");\n this.isOpen.set(false);\n }\n }\n\n toggleTooltip() {\n if (this.floatUiComponent().state) {\n this.hideTooltip();\n } else {\n this.showTooltip();\n }\n }\n\n ngAfterContentChecked(): void {\n const contentEl = this.tooltipContent()?.nativeElement as HTMLElement;\n if (contentEl) {\n const text = contentEl.textContent?.trim() ?? \"\";\n if (text !== this.contentText()) {\n this.contentText.set(text);\n }\n }\n }\n}\n","<div\n applyClass=\"float-ui-container-tooltip\"\n ariaRole=\"tooltip\"\n ariaHidden=\"true\"\n style=\"display: contents\"\n looseTrigger=\"none\"\n [floatUiLoose]=\"floatUiComponent\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\n [disableAnimation]=\"true\"\n [targetElement]=\"tooltipTrigger().host.nativeElement\"\n [appendTo]=\"appendTo()\"\n>\n <ng-content select=\"tedi-tooltip-trigger\" />\n</div>\n@if (contentText()) {\n <span [id]=\"descriptionId\" class=\"sr-only\">{{ contentText() }}</span>\n}\n<float-ui-content #floatUiComponent [style.display]=\"floatUiDisplay()\" aria-hidden=\"true\">\n <ng-content select=\"tedi-tooltip-content\" />\n</float-ui-content>\n","import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnDestroy,\n OnInit,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { RouterLink } from \"@angular/router\";\nimport { NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport { SideNavDropdownComponent } from \"../sidenav-dropdown/sidenav-dropdown.component\";\nimport { SideNavGroupTitleComponent } from \"../sidenav-group-title/sidenav-group-title.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\nimport { TooltipComponent } from \"../../../overlay/tooltip/tooltip.component\";\nimport { TooltipContentComponent } from \"../../../overlay/tooltip/tooltip-content/tooltip-content.component\";\nimport { TooltipTriggerComponent } from \"../../../overlay/tooltip/tooltip-trigger/tooltip-trigger.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\n\n@Component({\n selector: \"tedi-sidenav-item\",\n standalone: true,\n templateUrl: \"./sidenav-item.component.html\",\n styleUrl: \"./sidenav-item.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n IconComponent,\n RouterLink,\n NgTemplateOutlet,\n NgIf,\n SideNavGroupTitleComponent,\n TooltipComponent,\n TooltipTriggerComponent,\n TooltipContentComponent,\n TediTranslationPipe,\n ],\n host: {\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavItemComponent implements AfterViewInit, OnInit, OnDestroy {\n /**\n * Is navigation item selected\n * @default false\n */\n selected = input<boolean>(false);\n /**\n * Name of the item icon\n */\n icon = input<string>();\n /**\n * External link\n */\n href = input<string>();\n /**\n * Router link\n */\n route = input<string>();\n\n @ContentChild(forwardRef(() => SideNavDropdownComponent))\n dropdown?: SideNavDropdownComponent;\n\n textContent = signal('');\n\n sidenavService = inject(SideNavService);\n private readonly host = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly eventListeners: (() => void)[] = [];\n\n ngOnInit() {\n this.sidenavService.registerItem(this);\n }\n\n ngOnDestroy() {\n this.sidenavService.unregisterItem(this);\n this.eventListeners.forEach((unlisten) => unlisten());\n }\n\n ngAfterViewInit(): void {\n const dropdown = this.dropdown;\n\n if (this.host.nativeElement) {\n const hostEl = this.host.nativeElement as Element;\n const titleElement = hostEl.querySelector(\".tedi-sidenav-item__text\");\n\n if (titleElement?.textContent) {\n this.textContent.set(titleElement.textContent);\n }\n }\n\n if (!dropdown) {\n return;\n }\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"click\", (event: MouseEvent) => {\n if (this.sidenavService.isCollapsed()) {\n const target = event.target as HTMLElement;\n const clickedInsideDropdown = dropdown.element()?.contains(target);\n const clickedInsideTrigger = this.host.nativeElement.contains(target);\n\n if (!clickedInsideTrigger && !clickedInsideDropdown) {\n dropdown.open.set(false);\n }\n }\n }),\n );\n\n this.eventListeners.push(\n this.renderer.listen(\"document\", \"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && this.sidenavService.isCollapsed() && dropdown.open()) {\n dropdown.open.set(false);\n setTimeout(() => {\n const hostEl = this.host.nativeElement as HTMLElement;\n const trigger = hostEl.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }, 0);\n }\n }),\n );\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-item\"];\n\n if (this.selected()) {\n classList.push(\"tedi-sidenav-item--selected\");\n }\n\n if (this.sidenavService.isMobileItemOpen() && !this.dropdown?.open()) {\n classList.push(\"tedi-sidenav-item--hidden\");\n }\n\n return classList.join(\" \");\n });\n\n toggleDropdown() {\n if (!this.dropdown) {\n return;\n }\n\n const wasOpen = this.dropdown.open();\n const dropdown = this.dropdown;\n\n this.dropdown.open.update((prev) => !prev);\n\n if (this.sidenavService.isCollapsed() || this.sidenavService.isMobile()) {\n afterNextRender(() => {\n if (!wasOpen) {\n // Opening - focus first item in dropdown\n const dropdownEl = dropdown.element();\n const openDropdown = dropdownEl?.querySelector('ul.tedi-sidenav-dropdown');\n const allTriggers = openDropdown?.querySelectorAll('.tedi-sidenav-dropdown-item__trigger');\n const firstFocusable = Array.from(allTriggers ?? []).find(\n (el) => (el as HTMLElement).offsetParent !== null\n ) as HTMLElement | null;\n firstFocusable?.focus();\n } else {\n // Closing - focus on parent item\n const hostEl = this.host.nativeElement as HTMLElement;\n const trigger = hostEl.querySelector('.tedi-sidenav-item__title') as HTMLElement | null;\n trigger?.focus();\n }\n }, { injector: this.injector });\n }\n }\n}\n","<li [class]=\"classes()\">\n @if (sidenavService.isMobile()) {\n @if (sidenavService.isMobileItemOpen() && dropdown?.open()) {\n <ng-container *ngIf=\"!href() && !route(); else mobileLink\">\n <tedi-sidenav-group-title>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </tedi-sidenav-group-title>\n </ng-container>\n <ng-template #mobileLink>\n <ng-container *ngIf=\"route(); else mobileHref\">\n <a class=\"tedi-sidenav-item__link\" [routerLink]=\"route()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-container>\n <ng-template #mobileHref>\n <a class=\"tedi-sidenav-item__link\" [href]=\"href()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-template>\n </ng-template>\n } @else {\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n }\n } @else if (sidenavService.tooltipEnabled()) {\n <tedi-tooltip position=\"right\">\n <tedi-tooltip-trigger>\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n </tedi-tooltip-trigger>\n <tedi-tooltip-content position=\"right\">\n {{ textContent() }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n } @else {\n <div class=\"tedi-sidenav-item__trigger\">\n <ng-container *ngTemplateOutlet=\"buttonOrLink\"></ng-container>\n </div>\n }\n\n <ng-content select=\"tedi-sidenav-dropdown\"></ng-content>\n</li>\n\n<ng-template #buttonOrLink>\n <ng-container *ngIf=\"!href() && !route(); else hasLink\">\n <button class=\"tedi-sidenav-item__title\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"dropdown?.open()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if (dropdown) {\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n }\n </button>\n </ng-container>\n <ng-template #hasLink>\n <ng-container\n *ngIf=\"\n (dropdown && sidenavService.isCollapsed()) ||\n (dropdown && sidenavService.isMobile());\n else plainLink\n \"\n >\n <button class=\"tedi-sidenav-item__title\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"dropdown.open()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n </button>\n </ng-container>\n <ng-template #plainLink>\n @if (route()) {\n <a class=\"tedi-sidenav-item__title\" [routerLink]=\"route()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a class=\"tedi-sidenav-item__title\" [href]=\"href()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n @if (dropdown) {\n <button\n class=\"tedi-sidenav-item__caret-button\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"dropdown.open()\"\n >\n <span class=\"sr-only\">{{ 'sidenav.toggleSubmenu' | tediTranslate: textContent(): dropdown.open() }}</span>\n <div class=\"tedi-sidenav-item__caret-container\">\n <tedi-icon\n name=\"expand_more\"\n class=\"tedi-sidenav-item__caret\"\n color=\"white\"\n [attr.data-open]=\"dropdown.open() ? 'true' : 'false'\"\n />\n </div>\n </button>\n }\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template #content>\n @if (icon(); as icon) {\n @if (!(sidenavService.isMobileItemOpen() && dropdown?.open())) {\n <tedi-icon [name]=\"icon\" color=\"white\" class=\"tedi-sidenav-item__icon\" />\n }\n }\n <span class=\"tedi-sidenav-item__text\">\n <ng-content></ng-content>\n </span>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { SideNavDropdownItemComponent } from \"../sidenav-dropdown-item/sidenav-dropdown-item.component\";\nimport { SideNavItemComponent } from \"../sidenav-item/sidenav-item.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown.component.html\",\n styleUrl: \"./sidenav-dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SideNavDropdownItemComponent],\n host: {\n \"class\": \"tedi-sidenav-dropdown-wrapper\",\n },\n})\nexport class SideNavDropdownComponent implements AfterViewInit {\n private readonly host = inject(ElementRef);\n\n open = signal(false);\n element = signal<HTMLElement | null>(null);\n sidenavService = inject(SideNavService);\n sidenavItem = inject(\n forwardRef(() => SideNavItemComponent),\n { host: true, optional: true },\n );\n\n ngAfterViewInit(): void {\n if (this.host.nativeElement) {\n this.element.set(this.host.nativeElement);\n }\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-dropdown\"];\n\n if (this.open()) {\n classList.push(\"tedi-sidenav-dropdown--open\");\n }\n\n return classList.join(\" \");\n });\n}\n","<ul [class]=\"classes()\">\n @if (sidenavService.isCollapsed() && !!sidenavItem.href()) {\n <tedi-sidenav-dropdown-item\n class=\"tedi-sidenav-dropdown-item--parent\"\n [href]=\"sidenavItem.href()\"\n >\n {{ sidenavItem.textContent() }}\n </tedi-sidenav-dropdown-item>\n } @else if (sidenavService.isCollapsed() && !!sidenavItem.route()) {\n <tedi-sidenav-dropdown-item\n class=\"tedi-sidenav-dropdown-item--parent\"\n [route]=\"sidenavItem.route()\"\n >\n {{ sidenavItem.textContent() }}\n </tedi-sidenav-dropdown-item>\n }\n <ng-content></ng-content>\n</ul>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChildren,\n QueryList,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RouterLink } from \"@angular/router\";\nimport { SideNavDropdownItemComponent } from \"../sidenav-dropdown-item/sidenav-dropdown-item.component\";\n\n@Component({\n selector: \"tedi-sidenav-dropdown-group\",\n standalone: true,\n templateUrl: \"./sidenav-dropdown-group.component.html\",\n styleUrl: \"./sidenav-dropdown-group.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RouterLink],\n host: {\n \"class\": \"tedi-sidenav-dropdown-group\",\n \"role\": \"presentation\",\n \"style\": \"display: contents\",\n },\n})\nexport class SideNavDropdownGroupComponent implements AfterContentInit {\n @ContentChildren(SideNavDropdownItemComponent)\n items!: QueryList<SideNavDropdownItemComponent>;\n\n private itemsArray = signal<SideNavDropdownItemComponent[]>([]);\n\n firstItem = computed(() => this.itemsArray()[0]);\n restItems = computed(() => this.itemsArray().slice(1));\n\n // to keep same component composition structure but rearrange dom elements inside the group for correct html semantics\n ngAfterContentInit(): void {\n this.itemsArray.set(this.items.toArray());\n\n this.items.changes.subscribe(() => {\n this.itemsArray.set(this.items.toArray());\n });\n }\n}\n","@if (firstItem(); as first) {\n <li class=\"tedi-sidenav-dropdown-group__parent-wrapper\">\n <div\n class=\"tedi-sidenav-dropdown-item tedi-sidenav-dropdown-group__parent\"\n [class.tedi-sidenav-dropdown-item--selected]=\"first.selected()\"\n >\n @if (first.href()) {\n <a [href]=\"first.href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </a>\n } @else if (first.route()) {\n <a [routerLink]=\"first.route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </a>\n } @else {\n <span class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ first.textContent() }}\n </span>\n }\n </div>\n\n @if (restItems().length > 0) {\n <ul class=\"tedi-sidenav-dropdown-group__list\">\n @for (item of restItems(); track item) {\n <li\n class=\"tedi-sidenav-dropdown-item tedi-sidenav-dropdown-group__item\"\n [class.tedi-sidenav-dropdown-item--selected]=\"item.selected()\"\n >\n @if (item.href()) {\n <a [href]=\"item.href()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </a>\n } @else if (item.route()) {\n <a [routerLink]=\"item.route()\" class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </a>\n } @else {\n <span class=\"tedi-sidenav-dropdown-item__trigger\">\n {{ item.textContent() }}\n </span>\n }\n </li>\n }\n </ul>\n }\n </li>\n}\n\n<!-- Hidden container for @ContentChildren query -->\n<div style=\"display: none\" aria-hidden=\"true\">\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\n\n@Component({\n selector: \"tedi-sidenav-overlay\",\n standalone: true,\n styleUrl: \"./sidenav-overlay.component.scss\",\n template: \"<ng-content />\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class SideNavOverlayComponent {\n sidenavService = inject(SideNavService);\n\n @HostListener(\"click\")\n onClick() {\n this.sidenavService.isMobileOpen.set(false);\n this.sidenavService.handleGoToMainMenu();\n }\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-overlay\"];\n\n if (this.sidenavService.isMobile() && this.sidenavService.isMobileOpen()) {\n classList.push(\"tedi-sidenav-overlay--visible\");\n }\n\n return classList.join(\" \");\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n inject,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { SideNavService } from \"../../../../services/sidenav/sidenav.service\";\nimport { TediTranslationService } from \"../../../../services/translation/translation.service\";\n\n@Component({\n selector: \"button[tedi-sidenav-toggle]\",\n standalone: true,\n templateUrl: \"./sidenav-toggle.component.html\",\n styleUrl: \"./sidenav-toggle.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent],\n host: {\n \"[class]\": \"classes()\",\n \"[attr.aria-label]\": \"ariaLabel()\",\n },\n})\nexport class SideNavToggleComponent {\n sidenavService = inject(SideNavService);\n translationService = inject(TediTranslationService);\n\n @HostListener(\"click\")\n onClick() {\n this.sidenavService.isMobileOpen.update((prev) => !prev);\n this.sidenavService.handleGoToMainMenu();\n }\n\n ariaLabel = this.translationService.track(\"sidenav.toggle\");\n\n classes = computed(() => {\n const classList = [\"tedi-sidenav-toggle\"];\n\n if (!this.sidenavService.isMobile()) {\n classList.push(\"tedi-sidenav-toggle--hidden\");\n }\n\n return classList.join(\" \");\n })\n}\n","<tedi-icon\n [name]=\"sidenavService.isMobileOpen() ? 'close' : 'menu'\"\n color=\"white\"\n/>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type SpinnerSize = 10 | 16 | 48;\nexport type SpinnerColor = \"primary\" | \"secondary\";\n\n@Component({\n selector: \"tedi-spinner\",\n standalone: true,\n templateUrl: \"./spinner.component.html\",\n styleUrl: \"./spinner.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n \"[class]\": \"classes()\",\n \"role\": \"status\",\n \"aria-live\": \"polite\",\n \"[attr.aria-label]\": \"label() ? label() : null\",\n \"[attr.aria-hidden]\": \"!label()\"\n }\n})\nexport class SpinnerComponent {\n /**\n * Size of the spinner in px.\n * @default 16\n */\n size = input<SpinnerSize>(16);\n /**\n * Specifies the color theme of the spinner.\n * The color should meet accessibility standards for color contrast.\n * @default primary\n */\n color = input<SpinnerColor>(\"primary\");\n /**\n * Provides a text label for screen readers to announce the spinner's purpose or status.\n */\n label = input<string>();\n\n classes = computed(() => {\n const classList = [\n \"tedi-spinner\",\n `tedi-spinner--size-${this.size()}`,\n `tedi-spinner--color-${this.color()}`,\n ];\n\n return classList.join(\" \");\n });\n}\n","<svg viewBox=\"0 0 44 44\" aria-hidden=\"true\">\n <circle\n class=\"tedi-spinner--inner\"\n cx=\"22\"\n cy=\"22\"\n fill=\"none\"\n ></circle>\n</svg>","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n inject,\n AfterViewInit,\n ElementRef,\n OnDestroy,\n PLATFORM_ID,\n effect,\n} from \"@angular/core\";\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport { CdkTrapFocus } from \"@angular/cdk/a11y\";\n\nexport type ModalSize = \"default\" | \"small\";\nexport type ModalWidth = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ModalPosition = \"center\" | \"left\" | \"right\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal\",\n imports: [CdkTrapFocus],\n templateUrl: \"./modal.component.html\",\n styleUrl: \"./modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ModalComponent implements AfterViewInit, OnDestroy {\n /** Is modal open? */\n readonly open = model(false);\n\n /** Modal size */\n readonly size = input<ModalSize>(\"default\");\n\n /** Modal width */\n readonly width = input<ModalWidth>(\"sm\");\n\n /** Position of the modal */\n readonly position = input<ModalPosition>(\"center\");\n\n private readonly document = inject(DOCUMENT);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private prevBodyOverflow: string = \"\";\n private prevFocusedElement: HTMLElement | null = null;\n\n readonly classes = computed(() => {\n const classList = [\n \"tedi-modal\",\n `tedi-modal--${this.size()}`,\n `tedi-modal--${this.width()}`,\n `tedi-modal--${this.position()}`,\n ];\n\n if (this.open()) {\n classList.push(\"tedi-modal--open\");\n }\n\n return classList.join(\" \");\n });\n\n constructor() {\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.open()) {\n this.onOpen();\n } else {\n this.onClose();\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.document.body.appendChild(this.host.nativeElement);\n }\n\n ngOnDestroy() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const element = this.host.nativeElement;\n\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n\n this.document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n private onOpen() {\n this.prevFocusedElement = this.document.activeElement as HTMLElement;\n this.prevBodyOverflow = this.document.body.style.overflow;\n this.document.body.style.overflow = \"hidden\";\n this.document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n private onClose() {\n this.document.body.style.overflow = this.prevBodyOverflow;\n\n if (this.prevFocusedElement) {\n this.prevFocusedElement.focus({ preventScroll: true });\n }\n\n this.document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n private handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.open.set(false);\n }\n };\n}\n","@if (open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"open.set(false)\"></div>\n <div\n class=\"tedi-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"open()\"\n >\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n </div>\n}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-content\",\n imports: [],\n templateUrl: \"./modal-content.component.html\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalContentComponent {}\n","<ng-content />\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-footer\",\n template: \"<ng-content />\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent {}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n inject,\n} from \"@angular/core\";\nimport { ClosingButtonComponent } from \"../../../buttons/closing-button/closing-button.component\";\nimport { ModalComponent } from \"../modal.component\";\n\n@Component({\n standalone: true,\n selector: \"tedi-modal-header\",\n imports: [ClosingButtonComponent],\n templateUrl: \"./modal-header.component.html\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeaderComponent {\n /** Should show closing button? */\n readonly showClose = input(true);\n\n private readonly modal = inject(ModalComponent);\n\n closeModal() {\n this.modal.open.set(false);\n }\n}\n","<div class=\"tedi-modal-header__head\">\n <ng-content select=\"h1,h2,h3,h4,h5,h6\" />\n @if (showClose()) {\n <button tedi-closing-button (click)=\"closeModal()\"></button>\n }\n</div>\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { SpinnerComponent } from \"../../loader/spinner/spinner.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { _IdGenerator } from '@angular/cdk/a11y';\n\nexport type TagType = \"primary\" | \"secondary\" | \"danger\";\n\n@Component({\n selector: \"tedi-tag\",\n imports: [SpinnerComponent, IconComponent, ClosingButtonComponent, TediTranslationPipe],\n templateUrl: \"./tag.component.html\",\n styleUrl: \"./tag.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-tag]\": \"true\",\n \"[class.tedi-tag--loading]\": \"loading()\",\n \"[class.tedi-tag--closable]\": \"closable()\",\n \"[class]\": \"classes()\",\n },\n})\nexport class TagComponent {\n readonly idGenerator = inject(_IdGenerator);\n readonly uniqueId = this.idGenerator.getId('tedi-tag');\n /**\n * Whether the tag is in loading state.\n * When true, a spinner will be displayed inside the tag.\n * @default false\n */\n loading = input(false);\n\n /**\n * Whether the tag can be closed.\n * When true, a close button will be displayed that emits the 'closed' event when clicked.\n * @default false\n */\n closable = input(false);\n\n /**\n * The visual style of the tag.\n * Possible values: 'primary', 'secondary', 'danger'\n * @default \"primary\"\n */\n type = input<TagType>(\"primary\");\n\n /**\n * Event emitted when the close button is clicked.\n */\n closed = output<Event>();\n\n classes = computed(() => {\n const classList = [];\n if (this.type()) {\n classList.push(`tedi-tag--${this.type()}`);\n }\n return classList.join(\" \");\n });\n\n handleClose(event: Event) {\n this.closed.emit(event);\n }\n}\n","@if (type() === \"danger\") {\n <span class=\"tedi-tag__icon-wrapper\">\n <tedi-icon name=\"error\" color=\"danger\" [size]=\"16\" />\n </span>\n}\n\n<span class=\"tedi-tag__content\" [attr.id]=\"uniqueId\">\n <ng-content />\n</span>\n\n@if (loading()) {\n <span class=\"tedi-tag__spinner-wrapper\">\n <tedi-spinner [size]=\"48\" />\n </span>\n} @else if (closable()) {\n <button\n type=\"button\"\n tedi-closing-button\n size=\"small\"\n [iconSize]=\"18\"\n (click)=\"handleClose($event)\"\n [attr.aria-describedby]=\"uniqueId\"\n [ariaLabel]=\"'remove' | tediTranslate\"\n >\n </button>\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n Renderer2,\n} from \"@angular/core\";\nimport type { VerticalSpacingSize } from \"./vertical-spacing.directive\";\n\n@Directive({\n selector: \"[tediVerticalSpacingItem]\",\n standalone: true,\n})\nexport class VerticalSpacingItemDirective implements AfterViewInit {\n tediVerticalSpacingItem = input<VerticalSpacingSize>(0);\n\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.renderer.addClass(\n this.el.nativeElement,\n \"tedi-vertical-spacing__item\",\n );\n\n const spacingValue = `${this.tediVerticalSpacingItem()}em`;\n\n this.renderer.setAttribute(\n this.el.nativeElement,\n \"style\",\n `--vertical-spacing-internal: ${spacingValue}`,\n );\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n input,\n Renderer2,\n} from \"@angular/core\";\n\nexport type VerticalSpacingSize =\n | 0\n | 0.25\n | 0.5\n | 0.75\n | 1\n | 1.25\n | 1.5\n | 1.75\n | 2\n | 2.5\n | 3\n | 4\n | 5;\n\n@Directive({\n selector: \"[tediVerticalSpacing]\",\n standalone: true,\n})\nexport class VerticalSpacingDirective implements AfterViewInit {\n tediVerticalSpacing = input<VerticalSpacingSize>(0);\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n this.renderer.addClass(this.el.nativeElement, \"tedi-vertical-spacing\");\n const spacingValue = `${this.tediVerticalSpacing()}em`;\n this.renderer.setAttribute(\n this.el.nativeElement,\n \"style\",\n `--vertical-spacing-internal: ${spacingValue}`,\n );\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from \"@angular/core\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../tokens/theme.token\";\nimport {\n AVAILABLE_THEMES,\n Theme,\n THEME_CLASS_PREFIX,\n THEME_FALLBACK_VALUE,\n} from \"../services/theme/theme.service\";\nimport { TEDI_TRANSLATION_DEFAULT_TOKEN } from \"../tokens/translation.token\";\nimport { Language } from \"../services/translation/translation.service\";\nimport { DOCUMENT } from \"@angular/common\";\n\nexport interface TediConfig {\n theme?: Theme;\n language?: Language;\n}\n\nfunction applyInitialTheme() {\n return () => {\n const document = inject(DOCUMENT);\n const defaultTheme = inject(TEDI_THEME_DEFAULT_TOKEN);\n const html = document.documentElement;\n\n for (const t of AVAILABLE_THEMES) {\n html.classList.remove(`${THEME_CLASS_PREFIX}${t}`);\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${defaultTheme}`);\n };\n}\n\nexport function provideTedi(config: TediConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: TEDI_THEME_DEFAULT_TOKEN,\n useValue: config.theme ?? THEME_FALLBACK_VALUE,\n },\n {\n provide: TEDI_TRANSLATION_DEFAULT_TOKEN,\n useValue: config.language ?? \"et\",\n },\n provideAppInitializer(applyInitialTheme()),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.SideNavService"],"mappings":"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"}