@tedi-design-system/angular 6.4.0-rc.7 → 6.5.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.
Files changed (30) hide show
  1. package/community/components/navigation/pagination/pagination.component.d.ts +3 -0
  2. package/community/components/navigation/pagination/pagination.component.d.ts.map +1 -1
  3. package/fesm2022/tedi-design-system-angular-community.mjs +3 -0
  4. package/fesm2022/tedi-design-system-angular-community.mjs.map +1 -1
  5. package/fesm2022/tedi-design-system-angular-tedi.mjs +743 -171
  6. package/fesm2022/tedi-design-system-angular-tedi.mjs.map +1 -1
  7. package/package.json +1 -1
  8. package/tedi/components/navigation/index.d.ts +1 -0
  9. package/tedi/components/navigation/index.d.ts.map +1 -1
  10. package/tedi/components/navigation/pagination/index.d.ts +5 -0
  11. package/tedi/components/navigation/pagination/index.d.ts.map +1 -0
  12. package/tedi/components/navigation/pagination/pagination-option-picker-modal/pagination-option-picker-modal.component.d.ts +31 -0
  13. package/tedi/components/navigation/pagination/pagination-option-picker-modal/pagination-option-picker-modal.component.d.ts.map +1 -0
  14. package/tedi/components/navigation/pagination/pagination-results.directive.d.ts +17 -0
  15. package/tedi/components/navigation/pagination/pagination-results.directive.d.ts.map +1 -0
  16. package/tedi/components/navigation/pagination/pagination.component.d.ts +182 -0
  17. package/tedi/components/navigation/pagination/pagination.component.d.ts.map +1 -0
  18. package/tedi/components/navigation/pagination/pagination.types.d.ts +48 -0
  19. package/tedi/components/navigation/pagination/pagination.types.d.ts.map +1 -0
  20. package/tedi/components/navigation/pagination/pagination.utils.d.ts +24 -0
  21. package/tedi/components/navigation/pagination/pagination.utils.d.ts.map +1 -0
  22. package/tedi/components/overlay/modal/modal-header/modal-header.component.d.ts +15 -1
  23. package/tedi/components/overlay/modal/modal-header/modal-header.component.d.ts.map +1 -1
  24. package/tedi/components/overlay/modal/modal.component.d.ts +3 -3
  25. package/tedi/components/overlay/modal/modal.component.d.ts.map +1 -1
  26. package/tedi/components/overlay/modal/modal.service.d.ts.map +1 -1
  27. package/tedi/components/overlay/modal/modal.types.d.ts +9 -2
  28. package/tedi/components/overlay/modal/modal.types.d.ts.map +1 -1
  29. package/tedi/services/translation/translations.d.ts +24 -3
  30. package/tedi/services/translation/translations.d.ts.map +1 -1
@@ -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-group/checkbox-group.component.ts","../../tedi/components/form/checkbox-group/checkbox-group.component.html","../../tedi/components/form/checkbox/checkbox.component.ts","../../tedi/components/form/checkbox-card/checkbox-card.component.ts","../../tedi/components/form/checkbox-card/checkbox-card.component.html","../../tedi/components/form/checkbox-card-group/checkbox-card-group.component.ts","../../tedi/components/form/radio-group/radio-group.component.ts","../../tedi/components/form/radio-group/radio-group.component.html","../../tedi/components/form/radio/radio.component.ts","../../tedi/components/form/radio-card-group/radio-card-group.component.ts","../../tedi/components/form/radio-card/radio-card.component.ts","../../tedi/components/form/radio-card/radio-card.component.html","../../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.tokens.ts","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value.component.ts","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value.component.html","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.html","../../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/loader/spinner/spinner.component.ts","../../tedi/components/loader/spinner/spinner.component.html","../../tedi/components/tags/tag/tag.component.ts","../../tedi/components/tags/tag/tag.component.html","../../tedi/components/form/select/select-templates.directive.ts","../../tedi/components/form/select/select.component.ts","../../tedi/components/form/select/select.component.html","../../tedi/components/form/toggle/toggle.component.ts","../../tedi/components/form/toggle/toggle.component.html","../../tedi/components/form/form-field/form-field-control.ts","../../tedi/components/form/form-field/form-field.component.ts","../../tedi/components/form/form-field/form-field.component.html","../../tedi/components/form/text-field/text-field.component.ts","../../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/filter/filter-group.component.ts","../../tedi/components/tags/status-indicator/status-indicator.component.ts","../../tedi/components/tags/status-badge/status-badge.component.ts","../../tedi/components/tags/status-badge/status-badge.component.html","../../tedi/components/filter/filter-content.directive.ts","../../tedi/components/filter/filter-prepend.directive.ts","../../tedi/components/filter/filter.component.ts","../../tedi/components/filter/filter.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/scroll-fade/scroll-fade.component.ts","../../tedi/components/helpers/scroll-fade/scroll-fade.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/navigation/horizontal-stepper/horizontal-stepper-item/horizontal-stepper-item.component.ts","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper-item/horizontal-stepper-item.component.html","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper.component.ts","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper.component.html","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value-meta.component.ts","../../tedi/components/overlay/modal/modal-ref.ts","../../tedi/components/overlay/modal/modal.component.ts","../../tedi/components/overlay/modal/modal.component.html","../../tedi/components/overlay/modal/modal.types.ts","../../tedi/components/overlay/modal/modal.service.ts","../../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/cards/accordion/accordion-item/accordion-item.component.ts","../../tedi/components/cards/accordion/accordion-item/accordion-item.component.html","../../tedi/components/cards/accordion/accordion/accordion.component.ts","../../tedi/components/cards/accordion/accordion-item-header/accordion-item-header.component.ts","../../tedi/components/cards/accordion/accordion-item-header/accordion-item-header.component.html","../../tedi/components/cards/accordion/accordion-item-content/accordion-item-content.component.ts","../../tedi/components/cards/accordion/accordion-item-content/accordion-item-content.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\"\n | \"inherit\";\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/**\n * Flag that toggles a feature on/off, optionally only below a breakpoint.\n * `true` — always on. `false` — always off. A breakpoint name — on below that breakpoint.\n *\n * `'xs'` is intentionally excluded: \"below xs\" has no meaningful viewport and would\n * be a confusing duplicate of `true`. Use `true` for always-on.\n */\nexport type BreakpointFlag = boolean | Exclude<Breakpoint, \"xs\">;\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\", \"Select\"],\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 \"select.search\": {\n description: \"Placeholder text for search input in searchable select\",\n components: [\"Select\"],\n et: \"Otsi...\",\n en: \"Search...\",\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 \"stepper.error\": {\n description:\n \"Label for screen-reader that this step has errors (visually hidden)\",\n components: [\"HorizontalStepper\"],\n et: \"Viga\",\n en: \"Error\",\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 \"filter.clear-selection\": {\n description: \"Label for the clear-selection action in the Filter dropdown\",\n components: [\"Filter\"],\n et: \"Tühjenda valik\",\n en: \"Clear selection\",\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 TEDITheme = \"default\" | \"dark\";\nexport type Theme = TEDITheme | string;\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>(\n THEME_COOKIE_NAME,\n this.defaultTheme\n );\n\n constructor() {\n effect(() => {\n const html = this.document.documentElement;\n const nextTheme = this.theme();\n\n for (let i = html.classList.length - 1; i >= 0; i--) {\n const className = html.classList.item(i);\n if (className?.startsWith(THEME_CLASS_PREFIX)) {\n html.classList.remove(className);\n }\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${nextTheme}`);\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 type=\"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 computed,\n effect,\n forwardRef,\n inject,\n input,\n isDevMode,\n model,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport type { CheckboxComponent } from \"../checkbox/checkbox.component\";\n\nexport type CheckboxGroupDirection = \"horizontal\" | \"vertical\";\n\nlet nextGroupId = 0;\n\n@Component({\n standalone: true,\n imports: [TextComponent],\n selector: \"tedi-checkbox-group\",\n templateUrl: \"./checkbox-group.component.html\",\n styleUrl: \"./checkbox-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-checkbox-group\",\n \"[attr.role]\": \"isManaged() ? 'group' : null\",\n \"[attr.aria-labelledby]\": \"managedAriaLabelledby()\",\n \"[attr.aria-label]\": \"managedAriaLabel()\",\n \"[attr.aria-disabled]\": \"isManaged() && isDisabled() ? 'true' : null\",\n },\n})\nexport class CheckboxGroupComponent implements ControlValueAccessor {\n /**\n * Label text displayed above the checkbox group.\n */\n readonly label = input<string>();\n /**\n * Layout direction of the checkboxes.\n * @default horizontal\n */\n readonly direction = input<CheckboxGroupDirection>(\"horizontal\");\n /**\n * Selected values. Bind with `[(values)]` or use a FormControl on the group.\n * When provided, the group enters managed mode and coordinates `checked`\n * on every registered child.\n * @default []\n */\n readonly values = model<string[]>([]);\n /**\n * Disables the entire group. Propagates to all children.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n /**\n * Accessible name for the group. Use when no visible `label` is rendered.\n * Ignored when `label` or `ariaLabelledby` is provided.\n */\n readonly ariaLabel = input<string>();\n /**\n * ID of an external element that labels the group. Ignored when `label` is\n * provided.\n */\n readonly ariaLabelledby = input<string>();\n\n private readonly renderer = inject(Renderer2);\n protected readonly labelId = `tedi-checkbox-group-${++nextGroupId}-label`;\n private readonly children = signal<readonly CheckboxComponent[]>([]);\n private readonly cvaDisabled = signal(false);\n private readonly managed = signal(false);\n\n private onChange: (value: string[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n readonly isManaged = this.managed.asReadonly();\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly managedAriaLabelledby = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label()) return this.labelId;\n return this.ariaLabelledby() ?? null;\n });\n protected readonly managedAriaLabel = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label() || this.ariaLabelledby()) return null;\n return this.ariaLabel() ?? null;\n });\n\n constructor() {\n effect(() => {\n if (this.values().length > 0) {\n this.managed.set(true);\n }\n this.syncChildrenChecked();\n });\n }\n\n writeValue(values: string[] | null): void {\n this.values.set(values ?? []);\n this.managed.set(true);\n }\n\n registerOnChange(fn: (values: string[]) => void): void {\n this.onChange = fn;\n this.managed.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n this.managed.set(true);\n }\n\n registerChild(child: CheckboxComponent): void {\n this.children.update((list) => [...list, child]);\n this.applyCheckedTo(child);\n }\n\n unregisterChild(child: CheckboxComponent): void {\n this.children.update((list) => list.filter((c) => c !== child));\n }\n\n onChildChange(value: string, checked: boolean): void {\n if (!this.isManaged()) return;\n const current = this.values();\n const has = current.includes(value);\n if (checked && !has) {\n this.values.set([...current, value]);\n } else if (!checked && has) {\n this.values.set(current.filter((v) => v !== value));\n } else {\n return;\n }\n this.onChange(this.values());\n this.onTouched();\n }\n\n isSelected(value: string | undefined): boolean {\n return value !== undefined && this.values().includes(value);\n }\n\n private syncChildrenChecked(): void {\n if (!this.isManaged()) return;\n for (const child of this.children()) {\n this.applyCheckedTo(child);\n }\n }\n\n private applyCheckedTo(child: CheckboxComponent): void {\n if (!this.isManaged()) return;\n const childVal = child.value();\n if (childVal === undefined) return;\n const desired = this.values().includes(childVal);\n const el = child.hostElement;\n if (el.checked !== desired) {\n this.renderer.setProperty(el, \"checked\", desired);\n }\n }\n\n /** @internal */\n warnMissingValue(): void {\n if (isDevMode()) {\n console.warn(\n \"[tedi-checkbox-group] A checkbox inside a managed group is missing a [value] input and will be ignored.\",\n );\n }\n }\n}\n","@if (label()) {\n <p [id]=\"labelId\" class=\"tedi-checkbox-group__label\" tedi-text color=\"secondary\">{{ label() }}</p>\n}\n<div class=\"tedi-checkbox-group__checks\" [class.tedi-checkbox-group__checks--vertical]=\"direction() === 'vertical'\">\n <ng-content />\n</div>\n<div class=\"tedi-checkbox-group__subtexts\">\n <ng-content select=\"tedi-feedback-text\" />\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CheckboxGroupComponent } from \"../checkbox-group/checkbox-group.component\";\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 \"[disabled]\": \"effectiveDisabled()\",\n \"(change)\": \"handleChange()\",\n },\n})\nexport class CheckboxComponent implements OnInit, OnDestroy {\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 * Identity of this checkbox inside a managed `<tedi-checkbox-group>`.\n * Required when the parent group is managed (has a FormControl or\n * `[(values)]` binding). Ignored otherwise.\n */\n readonly value = input<string>();\n /**\n * Disables this checkbox. An enclosing disabled `<tedi-checkbox-group>`\n * forces disabled regardless of this input.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly group = inject(CheckboxGroupComponent, { optional: true });\n private warned = false;\n\n readonly effectiveDisabled = computed(\n () => this.disabled() || (this.group?.isDisabled() ?? false),\n );\n\n get hostElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.group?.registerChild(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterChild(this);\n }\n\n handleChange(): void {\n if (!this.group || !this.group.isManaged()) return;\n if (this.effectiveDisabled()) return;\n const v = this.value();\n if (v === undefined) {\n if (!this.warned) {\n this.warned = true;\n this.group.warnMissingValue();\n }\n return;\n }\n this.group.onChildChange(v, this.hostElement.checked);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type CheckboxCardVariant = \"primary\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"label[tedi-checkbox-card]\",\n templateUrl: \"./checkbox-card.component.html\",\n styleUrl: \"./checkbox-card.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-checkbox-card\",\n \"[class.tedi-checkbox-card--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-checkbox-card--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-checkbox-card--hide-indicator]\": \"!showIndicator()\",\n },\n})\nexport class CheckboxCardComponent {\n /**\n * Visual variant of the card.\n * @default primary\n */\n readonly variant = input<CheckboxCardVariant>(\"primary\");\n\n /**\n * Whether to show the checkbox indicator.\n * When false, the checkbox is visually hidden but remains functional.\n * @default true\n */\n readonly showIndicator = input<boolean>(true);\n}\n","<div class=\"tedi-checkbox-card__content\">\n <ng-content />\n</div>\n<ng-content select=\"tedi-feedback-text\" />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-checkbox-card-group\",\n template: \"<ng-content />\",\n styleUrl: \"./checkbox-card-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-checkbox-card-group\",\n },\n})\nexport class CheckboxCardGroupComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n isDevMode,\n model,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport type { RadioComponent } from \"../radio/radio.component\";\n\nexport type RadioGroupDirection = \"horizontal\" | \"vertical\";\n\nlet nextGroupId = 0;\n\n@Component({\n standalone: true,\n imports: [TextComponent],\n selector: \"tedi-radio-group\",\n templateUrl: \"./radio-group.component.html\",\n styleUrl: \"./radio-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-radio-group\",\n \"[attr.role]\": \"isManaged() ? 'radiogroup' : null\",\n \"[attr.aria-labelledby]\": \"managedAriaLabelledby()\",\n \"[attr.aria-label]\": \"managedAriaLabel()\",\n \"[attr.aria-disabled]\": \"isManaged() && isDisabled() ? 'true' : null\",\n },\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n /**\n * Label text displayed above the radio group.\n */\n readonly label = input<string>();\n /**\n * Layout direction of the radios.\n * @default horizontal\n */\n readonly direction = input<RadioGroupDirection>(\"horizontal\");\n /**\n * Selected value. Bind with `[(value)]` or use a FormControl on the group.\n * When set, the group enters managed mode and coordinates `checked` on every\n * registered child.\n * @default null\n */\n readonly value = model<string | null>(null);\n /**\n * Shared `name` attribute applied to child radios. Auto-generated when\n * omitted. Pass an explicit `name` to avoid SSR hydration mismatches.\n */\n readonly name = input<string>();\n /**\n * Disables the entire group. Propagates to all children.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n /**\n * Accessible name for the group. Use when no visible `label` is rendered.\n * Ignored when `label` or `ariaLabelledby` is provided.\n */\n readonly ariaLabel = input<string>();\n /**\n * ID of an external element that labels the group. Ignored when `label` is\n * provided.\n */\n readonly ariaLabelledby = input<string>();\n\n private readonly renderer = inject(Renderer2);\n private readonly autoName = `tedi-radio-group-${++nextGroupId}`;\n protected readonly labelId = `${this.autoName}-label`;\n private readonly children = signal<readonly RadioComponent[]>([]);\n private readonly cvaDisabled = signal(false);\n private readonly managed = signal(false);\n\n private onChange: (value: string | null) => void = () => { };\n private onTouched: () => void = () => { };\n\n readonly isManaged = this.managed.asReadonly();\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly managedAriaLabelledby = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label()) return this.labelId;\n return this.ariaLabelledby() ?? null;\n });\n protected readonly managedAriaLabel = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label() || this.ariaLabelledby()) return null;\n return this.ariaLabel() ?? null;\n });\n\n constructor() {\n effect(() => {\n if (this.value() !== null) {\n this.managed.set(true);\n }\n this.syncChildrenChecked();\n });\n\n effect(() => {\n if (!this.isManaged()) return;\n const groupName = this.name() ?? this.autoName;\n for (const child of this.children()) {\n this.renderer.setAttribute(child.hostElement, \"name\", groupName);\n }\n });\n }\n\n writeValue(value: string | null): void {\n this.value.set(value);\n this.managed.set(true);\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n this.managed.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n this.managed.set(true);\n }\n\n registerChild(child: RadioComponent): void {\n this.children.update((list) => [...list, child]);\n this.applyCheckedTo(child);\n }\n\n unregisterChild(child: RadioComponent): void {\n this.children.update((list) => list.filter((c) => c !== child));\n }\n\n onChildChange(value: string): void {\n if (!this.isManaged()) return;\n if (this.value() === value) return;\n this.value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n isSelected(value: string | undefined): boolean {\n return value !== undefined && this.value() === value;\n }\n\n private syncChildrenChecked(): void {\n if (!this.isManaged()) return;\n for (const child of this.children()) {\n this.applyCheckedTo(child);\n }\n }\n\n private applyCheckedTo(child: RadioComponent): void {\n if (!this.isManaged()) return;\n const childVal = child.value();\n if (childVal === undefined) return;\n const desired = childVal === this.value();\n const el = child.hostElement;\n if (el.checked !== desired) {\n this.renderer.setProperty(el, \"checked\", desired);\n }\n }\n\n /** @internal */\n warnMissingValue(): void {\n if (isDevMode()) {\n console.warn(\n \"[tedi-radio-group] A radio inside a managed group is missing a [value] input and will be ignored.\",\n );\n }\n }\n}\n","@if (label()) {\n <p [id]=\"labelId\" class=\"tedi-radio-group__label\" tedi-text color=\"secondary\">{{ label() }}</p>\n}\n<div class=\"tedi-radio-group__checks\" [class.tedi-radio-group__checks--vertical]=\"direction() === 'vertical'\">\n <ng-content />\n</div>\n<div class=\"tedi-radio-group__subtexts\">\n <ng-content select=\"tedi-feedback-text\" />\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RadioGroupComponent } from \"../radio-group/radio-group.component\";\n\nexport type RadioSize = \"default\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"input[type=radio][tedi-radio]\",\n template: \"\",\n styleUrl: \"./radio.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-radio--large]\": \"size() === 'large'\",\n \"[class.tedi-radio--invalid]\": \"invalid()\",\n \"[disabled]\": \"effectiveDisabled()\",\n \"(change)\": \"handleChange()\",\n },\n})\nexport class RadioComponent implements OnInit, OnDestroy {\n /**\n * Size of the radio.\n * @default default\n */\n readonly size = input<RadioSize>(\"default\");\n /**\n * Is radio invalid?\n * @default false\n */\n readonly invalid = input(false);\n /**\n * Identity of this radio inside a managed `<tedi-radio-group>`. Required\n * when the parent group is managed (has a FormControl or `[(value)]`\n * binding). Ignored otherwise.\n */\n readonly value = input<string>();\n /**\n * Disables this radio. An enclosing disabled `<tedi-radio-group>` forces\n * disabled regardless of this input.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly group = inject(RadioGroupComponent, { optional: true });\n private warned = false;\n\n readonly effectiveDisabled = computed(\n () => this.disabled() || (this.group?.isDisabled() ?? false),\n );\n\n get hostElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.group?.registerChild(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterChild(this);\n }\n\n handleChange(): void {\n if (!this.group || !this.group.isManaged()) return;\n if (this.effectiveDisabled()) return;\n const v = this.value();\n if (v === undefined) {\n if (!this.warned) {\n this.warned = true;\n this.group.warnMissingValue();\n }\n return;\n }\n if (this.hostElement.checked) {\n this.group.onChildChange(v);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-radio-card-group\",\n template: \"<ng-content />\",\n styleUrl: \"./radio-card-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-radio-card-group\",\n \"[class.tedi-radio-card-group--grouped]\": \"grouped()\",\n },\n})\nexport class RadioCardGroupComponent {\n /**\n * Renders children in a button-group style layout with shared borders and\n * no gap. Child `tedi-radio-card` instances automatically inherit this and\n * do not need their own `grouped` input.\n * @default false\n */\n readonly grouped = input<boolean>(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RadioCardGroupComponent } from \"../radio-card-group/radio-card-group.component\";\n\nexport type RadioCardVariant = \"primary\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"label[tedi-radio-card]\",\n templateUrl: \"./radio-card.component.html\",\n styleUrl: \"./radio-card.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-radio-card\",\n \"[class.tedi-radio-card--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-radio-card--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-radio-card--grouped]\": \"isGrouped()\",\n \"[class.tedi-radio-card--hide-indicator]\": \"!showIndicator()\",\n },\n})\nexport class RadioCardComponent {\n /**\n * Visual variant of the card.\n * @default primary\n */\n readonly variant = input<RadioCardVariant>(\"primary\");\n /**\n * Whether the card is part of a button-group style layout. Prefer setting\n * `grouped` on the enclosing `tedi-radio-card-group` instead; this input\n * is retained for standalone cards outside a group.\n *\n * The effective state is `grouped || parentGrouped` (see `isGrouped()` and\n * `RadioCardGroupComponent`): a child cannot opt out when its parent is\n * grouped.\n * @default false\n */\n readonly grouped = input(false);\n\n /**\n * Whether to show the radio indicator.\n * When false, the radio is visually hidden but remains functional.\n * @default true\n */\n readonly showIndicator = input<boolean>(true);\n\n private readonly cardGroup = inject(RadioCardGroupComponent, {\n optional: true,\n });\n\n readonly isGrouped = computed(\n () => this.grouped() || (this.cardGroup?.grouped() ?? false),\n );\n}\n","<div class=\"tedi-radio-card__content\">\n <ng-content />\n</div>\n<ng-content select=\"tedi-feedback-text\" />\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 * Should position flip to opposite direction when overflowing screen?\n * @default false\n */\n preventOverflow = input(false);\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 /**\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 /** 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]=\"appendTo()\"\n [floatUiLoose]=\"floatUiComponent\"\n [targetElement]=\"popoverTrigger().host.nativeElement\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\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\" | \"dialog\" | \"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]\": \"ariaHaspopup()\",\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 { InjectionToken, Signal, WritableSignal } from \"@angular/core\";\n\nexport interface DropdownApi {\n /** Current value of the dropdown. Used to track the selected option in listbox mode. */\n value: WritableSignal<string | undefined>;\n /** ID of the float-ui container element. Used to link trigger and content for accessibility. */\n containerId: WritableSignal<string>;\n /** Move focus to the next enabled item after the given element. */\n focusNextItem(fromEl: HTMLLIElement): void;\n /** Move focus to the previous enabled item before the given element. */\n focusPrevItem(fromEl: HTMLLIElement): void;\n /** Move focus to the first enabled item in the dropdown. */\n focusFirstItem(): void;\n /** Move focus to the last enabled item in the dropdown. */\n focusLastItem(): void;\n /** Close the dropdown and reset active item state. */\n hideDropdown(): void;\n /** Reference to the dropdown trigger directive. Used to read trigger dimensions and return focus. */\n dropdownTrigger(): { host: { nativeElement: HTMLElement } } | undefined;\n}\n\nexport const DROPDOWN_API = new InjectionToken<DropdownApi>(\"DropdownApi\");\n\nexport interface DropdownContentApi {\n /** The ARIA role of the dropdown content. Determines keyboard interaction and accessibility semantics. */\n dropdownRole: Signal<\"menu\" | \"listbox\">;\n}\n\nexport const DROPDOWN_CONTENT_API = new InjectionToken<DropdownContentApi>(\n \"DropdownContentApi\",\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CheckboxComponent } from \"../../../form/checkbox/checkbox.component\";\n\nexport type DropdownItemValueType = \"default\" | \"checkbox\" | \"radio\";\nexport type DropdownItemValueLayout = \"horizontal\" | \"vertical\";\n\n@Component({\n selector: \"tedi-dropdown-item-value\",\n templateUrl: \"./dropdown-item-value.component.html\",\n styleUrl: \"./dropdown-item-value.component.scss\",\n standalone: true,\n imports: [CheckboxComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value\",\n \"[class.tedi-dropdown-item-value--vertical]\": \"layout() === 'vertical'\",\n \"[class.tedi-dropdown-item-value--horizontal]\": \"layout() === 'horizontal'\",\n \"[class.tedi-dropdown-item-value--checkbox]\": \"type() === 'checkbox'\",\n \"[class.tedi-dropdown-item-value--radio]\": \"type() === 'radio'\",\n },\n})\nexport class DropdownItemValueComponent {\n /**\n * Type of item value - controls selection indicator\n * - 'default': No selection indicator\n * - 'checkbox': Shows checkbox (for multiselect)\n * - 'radio': Shows radio button (for single select listbox)\n * @default 'default'\n */\n readonly type = input<DropdownItemValueType>(\"default\");\n\n /**\n * Layout: 'horizontal' (side-by-side) or 'vertical' (stacked)\n * @default 'horizontal'\n */\n readonly layout = input<DropdownItemValueLayout>(\"horizontal\");\n\n /**\n * Whether the item is selected (controls checkbox/radio state)\n * @default false\n */\n readonly selected = input<boolean>(false);\n\n /**\n * Whether the checkbox is in indeterminate state\n * @default false\n */\n readonly indeterminate = input<boolean>(false);\n\n /**\n * Whether the item is disabled\n * @default false\n */\n readonly disabled = input<boolean>(false);\n}\n","@if (type() === 'checkbox') {\n <input\n type=\"checkbox\"\n tedi-checkbox\n class=\"tedi-dropdown-item-value__checkbox\"\n tabindex=\"-1\"\n [checked]=\"selected()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation()\"\n />\n} @else if (type() === 'radio') {\n <input\n type=\"radio\"\n class=\"tedi-dropdown-item-value__radio\"\n tabindex=\"-1\"\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n<ng-content select=\"tedi-icon, [tediIcon]\" />\n<div class=\"tedi-dropdown-item-value__content\">\n <ng-content select=\"tedi-dropdown-item-value-label\" />\n <ng-content select=\"tedi-dropdown-item-value-meta\" />\n</div>\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-dropdown-item-value-label\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value__label\",\n },\n})\nexport class DropdownItemValueLabelComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ElementRef,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n DROPDOWN_API,\n DROPDOWN_CONTENT_API,\n DropdownApi,\n DropdownContentApi,\n} from \"../dropdown.tokens\";\nimport { DropdownItemValueComponent } from \"../dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../dropdown-item-value/dropdown-item-value-label.component\";\n\n@Component({\n selector: \"li[tedi-dropdown-item]\",\n standalone: true,\n imports: [DropdownItemValueComponent, DropdownItemValueLabelComponent],\n templateUrl: \"./dropdown-item.component.html\",\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<DropdownApi>(DROPDOWN_API);\n readonly dropdownContent = inject<DropdownContentApi>(DROPDOWN_CONTENT_API);\n\n /** Check if custom dropdown-item-value is provided */\n readonly customItemValue = contentChild(DropdownItemValueComponent);\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","<ng-content select=\"tedi-dropdown-item-value\" />\n\n@if (!customItemValue()) {\n <tedi-dropdown-item-value>\n <tedi-dropdown-item-value-label>\n <ng-content />\n </tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownItemComponent } from \"../dropdown-item/dropdown-item.component\";\nimport { DROPDOWN_API, DROPDOWN_CONTENT_API } from \"../dropdown.tokens\";\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]\": \"containerId() + '_trigger'\",\n },\n providers: [\n {\n provide: DROPDOWN_CONTENT_API,\n useExisting: forwardRef(() => DropdownContentComponent),\n },\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 private readonly dropdownApi = inject(DROPDOWN_API);\n readonly containerId = computed(() => this.dropdownApi.containerId());\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\";\nimport { DROPDOWN_API } from \"./dropdown.tokens\";\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 providers: [\n {\n provide: DROPDOWN_API,\n useExisting: DropdownComponent,\n },\n ],\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 signal,\n OnInit,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\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\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\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 TediTranslationPipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent implements OnInit, ControlValueAccessor {\n readonly today = new Date();\n readonly uniqueId = `tedi-date-picker-id-${datePickerId++}`;\n\n private formDisabled = signal(false);\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private emitIfChanged(value: Date | null): void {\n const current = this.selected();\n const changed = value === null\n ? current !== null\n : !current || !isSameDay(value, current);\n\n if (changed) {\n this.onChange(value);\n }\n }\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 /** Internal computed for combined disabled state (inputDisabled + formDisabled from reactive forms) */\n readonly fieldDisabled = computed(() => this.inputDisabled() || this.formDisabled());\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 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 // ControlValueAccessor implementation\n writeValue(value: Date | null): void {\n this.selected.set(value);\n this.inputValue.set(value ? formatDate(value) : \"\");\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.formDisabled.set(disabled);\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.emitIfChanged(day.date);\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 this.onTouched();\n\n if (!this.allowManualInput()) return;\n\n const selected = this.selected();\n const parsed = parseDate(this.inputValue());\n\n if (parsed) {\n this.emitIfChanged(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.emitIfChanged(null);\n this.inputValue.set(\"\");\n this.selected.set(null);\n }\n\n closeCalendar() {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n this.onTouched();\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]=\"!fieldDisabled() && popover().floatUiComponent().state\"\n [attr.aria-controls]=\"uniqueId\"\n [attr.aria-readonly]=\"!allowManualInput()\"\n [readOnly]=\"!allowManualInput()\"\n [value]=\"inputValue()\"\n [disabled]=\"fieldDisabled()\"\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 [ariaLabel]=\"'date-picker.clear-date' | tediTranslate\"\n [disabled]=\"fieldDisabled()\"\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 [preventOverflow]=\"true\"\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]=\"'date-picker.open-calendar' | tediTranslate\"\n [disabled]=\"fieldDisabled()\"\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 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 private readonly sizeConfig: Record<SpinnerSize, { strokeWidth: number; r: number }> = {\n 10: { strokeWidth: 4.4, r: 19.8 },\n 16: { strokeWidth: 5.5, r: 19.25 },\n 48: { strokeWidth: 3.6667, r: 20.1667 },\n };\n\n strokeWidth = computed(() => this.sizeConfig[this.size()].strokeWidth);\n r = computed(() => this.sizeConfig[this.size()].r);\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 [attr.r]=\"r()\"\n fill=\"none\"\n ></circle>\n</svg>","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 { Directive, TemplateRef, inject } from \"@angular/core\";\n\n/**\n * Context provided to custom option templates.\n */\nexport interface SelectOptionContext<T = unknown> {\n /** The option item data */\n $implicit: T;\n /** The option item data (explicit reference) */\n item: T;\n /** Index of the option in the list */\n index: number;\n /** Whether this option is currently selected */\n selected: boolean;\n /** Whether this option is disabled */\n disabled: boolean;\n}\n\n/**\n * Context provided to custom value templates (for displaying selected value in trigger).\n */\nexport interface SelectValueContext<T = unknown> {\n /** The selected item data */\n $implicit: T;\n /** The selected item data (explicit reference) */\n item: T;\n /** The label string for the selected item */\n label: string;\n}\n\n/**\n * Directive for custom option template rendering in the dropdown.\n *\n * @example\n * ```html\n * <tedi-select [options]=\"options\">\n * <ng-template tediSelectOption let-item>\n * <div class=\"custom-option\">\n * <strong>{{ item.title }}</strong>\n * <span>{{ item.description }}</span>\n * </div>\n * </ng-template>\n * </tedi-select>\n * ```\n */\n@Directive({\n selector: \"[tediSelectOption]\",\n standalone: true,\n})\nexport class SelectOptionTemplateDirective<T = unknown> {\n template = inject<TemplateRef<SelectOptionContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: SelectOptionTemplateDirective<T>,\n ctx: unknown\n ): ctx is SelectOptionContext<T> {\n return true;\n }\n}\n\n/**\n * Directive for custom value template rendering (selected value display in trigger).\n * Used for single-select to display custom content like colors, icons, etc.\n *\n * @example\n * ```html\n * <tedi-select [options]=\"colors\" bindLabel=\"name\" bindValue=\"id\">\n * <ng-template tediSelectValue let-item>\n * <div class=\"color-swatch\" [style.background]=\"item.color\"></div>\n * </ng-template>\n * </tedi-select>\n * ```\n */\n@Directive({\n selector: \"[tediSelectValue]\",\n standalone: true,\n})\nexport class SelectValueTemplateDirective<T = unknown> {\n template = inject<TemplateRef<SelectValueContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: SelectValueTemplateDirective<T>,\n ctx: unknown\n ): ctx is SelectValueContext<T> {\n return true;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, OverlayModule } from \"@angular/cdk/overlay\";\nimport { CdkListbox, CdkListboxModule } from \"@angular/cdk/listbox\";\nimport {\n AfterContentChecked,\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n signal,\n viewChild,\n viewChildren,\n ViewEncapsulation,\n forwardRef,\n computed,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { IconComponent, TextComponent } from \"../../base\";\nimport { ClosingButtonComponent } from \"../../buttons\";\nimport { TediTranslationPipe } from \"../../../services\";\nimport { ComponentInputs } from \"../../../types\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { TagComponent } from \"../../tags/tag/tag.component\";\nimport { DropdownItemValueComponent } from \"../../overlay/dropdown/dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../../overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component\";\nimport {\n SelectOptionTemplateDirective,\n SelectValueTemplateDirective,\n SelectOptionContext,\n SelectValueContext,\n} from \"./select-templates.directive\";\nimport { InputSize, InputState } from \"../form-field/form-field.component\";\nexport type SelectInputSize = Exclude<InputSize, \"large\">;\n\nexport interface SelectOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n group?: string;\n [key: string]: unknown;\n}\n\nexport interface SelectOptionGroup<T = unknown> {\n label: string;\n options: SelectOption<T>[];\n}\n\nexport type GroupByFn<T = unknown> = (item: T) => string | undefined;\nexport type CompareWithFn<T = unknown> = (a: T, b: T) => boolean;\n\nexport enum SpecialOptionControls {\n SELECT_ALL = \"\\0SELECT_ALL\",\n SELECT_GROUP = \"\\0SELECT_GROUP_\",\n}\n\n@Component({\n selector: \"tedi-select\",\n imports: [\n CommonModule,\n OverlayModule,\n CdkListboxModule,\n ClosingButtonComponent,\n IconComponent,\n LabelComponent,\n FeedbackTextComponent,\n TextComponent,\n TagComponent,\n TediTranslationPipe,\n DropdownItemValueComponent,\n DropdownItemValueLabelComponent,\n ],\n templateUrl: \"./select.component.html\",\n styleUrl: \"./select.component.scss\",\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-select\",\n \"[class.tedi-select--multiselect]\": \"allowMultiple()\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent<T = unknown> implements AfterContentChecked, AfterViewChecked, ControlValueAccessor {\n /**\n * Unique identifier for the select input element.\n * Used for label association and accessibility.\n */\n inputId = input.required<string>();\n\n /**\n * Label text displayed above the select.\n */\n label = input<string>();\n\n /**\n * Whether the field is required.\n * @default false\n */\n required = input<boolean>(false);\n\n /**\n * Placeholder text shown when no value is selected.\n * @default \"\"\n */\n placeholder = input<string>(\"\");\n\n /**\n * Visual state of the input.\n * @default \"default\"\n */\n state = input<InputState>(\"default\");\n\n /**\n * Size variant of the select.\n * @default \"default\"\n */\n size = input<SelectInputSize>(\"default\");\n\n /**\n * Whether to show a clear button when a value is selected.\n * @default false\n */\n clearable = input<boolean>(false);\n\n /**\n * Element reference used to determine dropdown width.\n * When null, dropdown width matches the host element.\n */\n dropdownWidthRef = input<ElementRef | null>();\n\n /**\n * Configuration for the feedback text displayed below the select.\n */\n feedbackText = input<ComponentInputs<FeedbackTextComponent>>();\n\n /**\n * Array of options to display in the dropdown.\n * Can be an array of objects or primitive values.\n * @default []\n */\n options = input<T[]>([]);\n\n /**\n * Property name to use as the display label for object items.\n * @default \"label\"\n */\n bindLabel = input<string>(\"label\");\n\n /**\n * Property name to use as the value for object items.\n * When undefined, the entire object is used as the value.\n */\n bindValue = input<string | undefined>(undefined);\n\n /**\n * Whether multiple items can be selected.\n * @default false\n */\n allowMultiple = input<boolean>(false);\n\n /**\n * Property name or function used to group options.\n * When a string, uses that property from the item.\n * When a function, calls it with each item to determine the group.\n */\n groupBy = input<string | GroupByFn<T> | undefined>(undefined);\n\n /**\n * Whether to show a \"Select All\" option in multiselect mode.\n * @default false\n */\n showSelectAll = input<boolean>(false);\n\n /**\n * Whether group headers are selectable in multiselect mode.\n * Clicking a group header selects/deselects all options in that group.\n * @default false\n */\n selectableGroups = input<boolean>(false);\n\n /**\n * Whether selected tags are individually removable in multiselect mode.\n * @default false\n */\n isTagRemovable = input<boolean>(false);\n\n /**\n * Whether selected tags wrap to multiple rows in multiselect mode.\n * When false, overflow tags are hidden and a counter is shown.\n * @default false\n */\n multiRow = input<boolean>(false);\n\n /**\n * Function used to compare option values for equality.\n * Used to determine which options are selected.\n * @default (a, b) => a === b\n */\n compareWith = input<CompareWithFn>((a, b) => a === b);\n\n /**\n * Property name to check for disabled state on items.\n * @default \"disabled\"\n */\n disabledKey = input<string>(\"disabled\");\n\n /**\n * Text displayed when no options match the search term.\n */\n noOptionsMessage = input<string>();\n\n /**\n * Maximum height of the dropdown menu in pixels.\n * When not set, the dropdown height is calculated based on available viewport space.\n */\n maxDropdownHeight = input<number | undefined>();\n\n /**\n * Layout type for the dropdown options.\n * - `\"menu\"` (default): vertical list of options.\n * - `\"grid\"`: swatch grid layout for use with custom option templates\n * (e.g. color or icon pickers). Customizable via `--tedi-swatch-size`,\n * `--tedi-swatch-gap`, and `--tedi-swatch-columns` CSS properties.\n * @default \"menu\"\n */\n dropdownType = input<'menu' | 'grid'>('menu');\n\n /**\n * Whether the select has a search input for filtering options.\n * @default false\n */\n searchable = input<boolean>(false);\n\n /**\n * Custom search function for filtering options.\n * When provided, overrides the default label-based search.\n * Receives the search term and the option item (with all original properties), returns true to include the option.\n */\n searchFn = input<((term: string, item: T) => boolean) | undefined>();\n\n /**\n * Whether to clear the search input after an option is selected.\n * Only has a visible effect in multi-select mode — in single-select mode\n * the dropdown closes on selection, which already clears the search term.\n * @default false\n */\n clearSearchOnSelect = input<boolean>(false);\n\n /**\n * Emits whenever the selection changes from any source: option click,\n * tag removal, clear button, select-all, or group toggle.\n * Payload is the array of selected values in multi-select mode, or the\n * single selected value (or `null`) in single-select mode.\n */\n readonly selectionChange = output<T | T[] | null>();\n\n /**\n * Emits the current search term whenever the user types in the search input.\n * Only fires when `searchable` is `true`.\n */\n readonly searchChange = output<string>();\n\n /**\n * Emits when the dropdown panel opens.\n */\n readonly opened = output<void>();\n\n /**\n * Emits when the dropdown panel closes.\n */\n readonly closed = output<void>();\n\n /**\n * Emits when the user clicks the clear button.\n * Fires alongside `selectionChange`, which carries the new (empty) value.\n */\n readonly cleared = output<void>();\n\n readonly SpecialOptionControls = SpecialOptionControls;\n\n readonly dropdownPositions: ConnectedPosition[] = [\n // Open below, expand downward\n {\n originX: \"start\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n },\n // Fallback: open above, expand upward\n {\n originX: \"start\",\n originY: \"top\",\n overlayX: \"start\",\n overlayY: \"bottom\",\n },\n ];\n\n listboxId = computed(() => this.inputId() + \"-listbox\");\n labelId = computed(() => this.inputId() + \"-label\");\n\n isOpen = signal(false);\n selectedValues = signal<unknown[]>([]);\n disabled = signal(false);\n dropdownWidth = signal<number | null>(null);\n dropdownMaxHeight = signal<number | null>(null);\n visibleTagsCount = signal<number | null>(null);\n searchTerm = signal<string>(\"\");\n searchFocused = signal<boolean>(false);\n\n hiddenTagsCount = computed(() => {\n const visible = this.visibleTagsCount();\n const total = this.selectedValues().length;\n if (visible === null || visible >= total) return 0;\n return total - visible;\n });\n\n listboxRef = viewChild(CdkListbox, { read: ElementRef });\n cdkListboxRef = viewChild(CdkListbox);\n connectedOverlay = viewChild(CdkConnectedOverlay);\n triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });\n searchInputRef = viewChild<ElementRef>(\"searchInput\");\n multiselectContainerRef = viewChild<ElementRef>(\"multiselectContainer\");\n tagRefs = viewChildren(\"tagElement\", { read: ElementRef });\n hostRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n // Template queries for custom rendering\n optionTemplate = contentChild(SelectOptionTemplateDirective);\n valueTemplate = contentChild(SelectValueTemplateDirective);\n\n normalizedOptions = computed<SelectOption<T>[]>(() => {\n const items = this.options();\n if (!items || items.length === 0) return [];\n\n return items.map((item) => {\n if (typeof item === \"string\" || typeof item === \"number\") {\n return {\n value: item as unknown,\n label: String(item),\n disabled: false,\n group: undefined,\n } as SelectOption<T>;\n }\n\n const itemRecord = item as Record<string, unknown>;\n const bindLabel = this.bindLabel();\n const bindValue = this.bindValue();\n const disabledKey = this.disabledKey();\n const groupBy = this.groupBy();\n\n const label = String(itemRecord[bindLabel] ?? item);\n const value = bindValue ? itemRecord[bindValue] : item;\n const disabled = !!itemRecord[disabledKey];\n let group: string | undefined;\n\n if (typeof groupBy === \"string\") {\n group = itemRecord[groupBy] as string | undefined;\n } else if (typeof groupBy === \"function\") {\n group = groupBy(item);\n }\n\n return { ...itemRecord, value, label, disabled, group } as SelectOption<T>;\n });\n });\n\n filteredOptions = computed<SelectOption<T>[]>(() => {\n const options = this.normalizedOptions();\n const trimmed = this.searchTerm().trim();\n\n if (!trimmed) {\n return options;\n }\n\n const term = trimmed.toLowerCase();\n const searchFn = this.searchFn();\n\n if (searchFn) {\n return options.filter((option) => searchFn(term, option as unknown as T));\n }\n\n return options.filter((option) =>\n option.label.toLowerCase().includes(term)\n );\n });\n\n optionGroups = computed<SelectOptionGroup<T>[]>(() => {\n const options = this.filteredOptions();\n const groups: SelectOptionGroup<T>[] = [];\n\n options.forEach((option) => {\n const groupLabel = option.group ?? \"\";\n const existingGroup = groups.find((g) => g.label === groupLabel);\n\n if (existingGroup) {\n existingGroup.options.push(option);\n } else {\n groups.push({ label: groupLabel, options: [option] });\n }\n });\n\n return groups;\n });\n\n selectedOptions = computed<SelectOption<T>[]>(() => {\n const values = this.selectedValues();\n const options = this.normalizedOptions();\n const compareWith = this.compareWith();\n\n return options.filter((option) =>\n values.some((val) => compareWith(option.value, val))\n );\n });\n\n visibleSelectedValues = computed<unknown[]>(() => {\n const selected = this.selectedValues();\n const filtered = this.filteredOptions();\n const compareWith = this.compareWith();\n\n return selected.filter((val) =>\n filtered.some((opt) => compareWith(opt.value, val))\n );\n });\n\n selectedLabels = computed<string[]>(() => {\n return this.selectedOptions().map((option) => option.label);\n });\n\n showSingleSelectedValue = computed<boolean>(() => {\n return !this.searchTerm() && !!this.selectedValues().length && !this.allowMultiple();\n });\n\n allOptionsSelected = computed<boolean>(() => {\n const options = this.searchTerm().trim()\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const selected = this.selectedValues();\n const compareWith = this.compareWith();\n\n return (\n enabledOptions.length > 0 &&\n enabledOptions.every((option) =>\n selected.some((val) => compareWith(option.value, val))\n )\n );\n });\n\n someOptionsSelected = computed<boolean>(() => {\n const options = this.searchTerm().trim()\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const selected = this.selectedValues();\n const compareWith = this.compareWith();\n\n const selectedCount = enabledOptions.filter((option) =>\n selected.some((val) => compareWith(option.value, val))\n ).length;\n\n return selectedCount > 0 && selectedCount < enabledOptions.length;\n });\n\n ngAfterContentChecked(): void {\n this.setDropdownWidth();\n }\n\n ngAfterViewChecked(): void {\n if (this.allowMultiple() && !this.multiRow()) {\n this.calculateVisibleTags();\n }\n if (this.isOpen()) {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n }\n }\n\n @HostListener(\"window:resize\")\n onWindowResize(): void {\n this.setDropdownWidth();\n if (this.allowMultiple() && !this.multiRow()) {\n this.visibleTagsCount.set(null);\n }\n }\n\n @HostListener(\"document:click\", [\"$event\"])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n\n const target = event.target as HTMLElement;\n const hostElement = this.hostRef.nativeElement;\n const listboxElement = this.listboxRef()?.nativeElement;\n\n const clickedInside = hostElement.contains(target) || listboxElement?.contains(target);\n\n if (!clickedInside) {\n this.closeDropdown();\n }\n }\n\n focusListboxWhenVisible = effect(() => {\n if (this.isOpen() && this.searchable() && this.searchInputRef()) {\n this.searchInputRef()?.nativeElement.focus();\n } else if (this.isOpen() && this.listboxRef() && !this.searchable()) {\n this.listboxRef()?.nativeElement.focus();\n }\n });\n\n constructor() {\n /**\n * Workaround: Prevent CDK from resetting active item to the first selected\n * option whenever [cdkListboxValue] changes in multiselect mode. CDK calls\n * _setNextFocusToSelectedOption inside _setSelection, which moves focus\n * away from the user's current position after each selection toggle.\n * Tested against @angular/cdk 19. Revisit when CDK exposes a public API\n * to control this behavior.\n */\n effect(() => {\n const listbox = this.cdkListboxRef();\n if (listbox && this.allowMultiple()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (listbox as any)._setNextFocusToSelectedOption = () => { };\n }\n });\n }\n\n resetVisibleTagsOnSelectionChange = effect(() => {\n this.selectedValues();\n this.visibleTagsCount.set(null);\n });\n\n toggleIsOpen(close?: boolean): void {\n if (this.disabled() && !close) return;\n\n if (close) {\n this.closeDropdown();\n this.focusTrigger();\n } else {\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchTerm.set(input.value);\n this.searchChange.emit(input.value);\n\n if (!this.isOpen()) {\n this.openDropdown();\n }\n }\n\n onSearchFocus(): void {\n this.searchFocused.set(true);\n }\n\n onSearchBlur(): void {\n this.searchFocused.set(false);\n this.onTouched();\n }\n\n onTriggerClick(): void {\n if (this.disabled()) return;\n\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n } else {\n this.toggleIsOpen();\n }\n }\n\n onArrowClick(event: Event): void {\n event.stopPropagation();\n this.toggleIsOpen();\n }\n\n onTriggerEnter(): void {\n if (!this.isOpen()) {\n this.openDropdown();\n }\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Home\":\n case \"End\":\n event.preventDefault();\n if (this.isOpen()) {\n this.forwardToCdkListbox(event.key);\n } else {\n this.openDropdown();\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (this.isOpen()) {\n this.forwardToCdkListbox(event.key);\n } else {\n this.openDropdown();\n }\n break;\n case \" \":\n if (!this.isOpen()) {\n event.preventDefault();\n this.openDropdown();\n }\n break;\n case \"Escape\":\n case \"Tab\":\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n\n private static readonly KEY_CODES: Record<string, number> = {\n ArrowDown: 40,\n ArrowUp: 38,\n Home: 36,\n End: 35,\n Enter: 13,\n \" \": 32,\n };\n\n private forwardToCdkListbox(key: string): void {\n const listbox = this.cdkListboxRef();\n if (listbox) {\n const keyCode = SelectComponent.KEY_CODES[key] ?? 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (listbox as any)._handleKeydown(new KeyboardEvent(\"keydown\", { key, keyCode, bubbles: true }));\n }\n }\n\n private openDropdown(): void {\n if (this.isOpen()) return;\n this.calculateDropdownMaxHeight();\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n private calculateDropdownMaxHeight(): void {\n const inputMaxHeight = this.maxDropdownHeight();\n\n if (inputMaxHeight != null) {\n this.dropdownMaxHeight.set(inputMaxHeight);\n return;\n }\n\n const trigger = this.triggerRef()?.nativeElement;\n if (!trigger) {\n this.dropdownMaxHeight.set(null);\n return;\n }\n\n const triggerRect = trigger.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const margin = 16; // Margin from viewport edges\n\n // Calculate space below and above the trigger\n const spaceBelow = viewportHeight - triggerRect.bottom - margin;\n const spaceAbove = triggerRect.top - margin;\n\n // Use the larger available space\n const maxHeight = Math.max(spaceBelow, spaceAbove);\n\n this.dropdownMaxHeight.set(maxHeight);\n }\n\n private closeDropdown(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.searchTerm.set(\"\");\n this.dropdownMaxHeight.set(null);\n this.closed.emit();\n }\n\n handleValueChange(event: { value: readonly unknown[] }): void {\n const values = event.value;\n\n const selectAllIndex = values.findIndex(\n (v) => v === SpecialOptionControls.SELECT_ALL\n );\n const selectGroupValue = values.find(\n (v) =>\n typeof v === \"string\" &&\n v.startsWith(SpecialOptionControls.SELECT_GROUP)\n );\n\n if (selectAllIndex !== -1) {\n this.toggleSelectAll();\n this.onTouched();\n return;\n }\n\n if (selectGroupValue) {\n const groupLabel = (selectGroupValue as string).replace(\n SpecialOptionControls.SELECT_GROUP,\n \"\"\n );\n this.toggleGroupSelection(groupLabel);\n this.onTouched();\n return;\n }\n\n if (this.allowMultiple()) {\n let newSelection: unknown[];\n if (this.searchable() && this.searchTerm().trim()) {\n const filtered = this.filteredOptions();\n const compareWith = this.compareWith();\n const hiddenSelected = this.selectedValues().filter(\n (val) => !filtered.some((opt) => compareWith(opt.value, val))\n );\n newSelection = [...hiddenSelected, ...values];\n } else {\n newSelection = [...values];\n }\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n }\n } else {\n const selected = values[0] ?? null;\n this.selectedValues.set(selected != null ? [selected] : []);\n this.onChange(selected);\n this.selectionChange.emit(selected as T | null);\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n this.toggleIsOpen(true);\n }\n\n this.onTouched();\n }\n\n clear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n this.selectedValues.set([]);\n if (this.allowMultiple()) {\n this.onChange([]);\n this.selectionChange.emit([] as T[]);\n } else {\n this.onChange(null);\n this.selectionChange.emit(null);\n }\n this.cleared.emit();\n this.onTouched();\n this.focusTrigger();\n }\n\n deselect(event: Event, value: unknown): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (this.disabled()) return;\n\n const compareWith = this.compareWith();\n const newSelection = this.selectedValues().filter(\n (v) => !compareWith(v, value)\n );\n\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n this.onTouched();\n }\n\n isOptionSelected(optionValue: unknown): boolean {\n const compareWith = this.compareWith();\n return this.selectedValues().some((val) => compareWith(val, optionValue));\n }\n\n getLabel(value: unknown): string {\n const compareWith = this.compareWith();\n const option = this.normalizedOptions().find((o) =>\n compareWith(o.value, value)\n );\n return option?.label ?? String(value);\n }\n\n /**\n * Get the original item from the items array for a given option.\n * Used for custom templates that need access to the full item data.\n */\n getOriginalItem(option: SelectOption<T>): T {\n const compareWith = this.compareWith();\n const bindValue = this.bindValue();\n\n if (!bindValue) {\n return option.value as T;\n }\n\n // Find the original item by matching the value\n const items = this.options();\n const found = items.find((item) => {\n const itemRecord = item as Record<string, unknown>;\n return compareWith(itemRecord[bindValue], option.value);\n });\n\n return found ?? (option as unknown as T);\n }\n\n /** Create context object for custom option templates. */\n getOptionContext(option: SelectOption<T>, index: number): SelectOptionContext<T> {\n const item = this.getOriginalItem(option);\n return {\n $implicit: item,\n item,\n index,\n selected: this.isOptionSelected(option.value),\n disabled: option.disabled ?? false,\n };\n }\n\n /** Create context object for custom value templates. */\n getValueContext(option: SelectOption<T>): SelectValueContext<T> {\n const item = this.getOriginalItem(option);\n return { $implicit: item, item, label: option.label };\n }\n\n isGroupSelected(groupLabel: string): boolean {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return false;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n if (enabledGroupOptions.length === 0) return false;\n\n const compareWith = this.compareWith();\n const selected = this.selectedValues();\n\n return enabledGroupOptions.every((option) =>\n selected.some((val) => compareWith(option.value, val))\n );\n }\n\n isGroupIndeterminate(groupLabel: string): boolean {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return false;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n if (enabledGroupOptions.length === 0) return false;\n\n const compareWith = this.compareWith();\n const selected = this.selectedValues();\n\n const selectedCount = enabledGroupOptions.filter((option) =>\n selected.some((val) => compareWith(option.value, val))\n ).length;\n\n return selectedCount > 0 && selectedCount < enabledGroupOptions.length;\n }\n\n private focusTrigger(): void {\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n } else {\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n private getAvailableTagWidth(): number {\n const trigger = this.triggerRef()?.nativeElement;\n if (!trigger) return 0;\n\n const triggerWidth = trigger.clientWidth;\n if (triggerWidth === 0) return 0;\n\n const triggerStyle = getComputedStyle(trigger);\n const padding = (parseFloat(triggerStyle.paddingLeft) || 0) + (parseFloat(triggerStyle.paddingRight) || 0);\n\n let nonTagWidth = 0;\n const arrow: HTMLElement | null = trigger.querySelector(\".tedi-select__arrow\");\n const clear: HTMLElement | null = trigger.querySelector(\".tedi-select__clear\");\n const searchInput: HTMLElement | null = trigger.querySelector(\".tedi-select__search-input\");\n if (arrow) nonTagWidth += arrow.offsetWidth + (parseFloat(getComputedStyle(arrow).marginLeft) || 0) + (parseFloat(getComputedStyle(arrow).paddingLeft) || 0);\n if (clear) nonTagWidth += clear.offsetWidth;\n if (searchInput) nonTagWidth += parseFloat(getComputedStyle(searchInput).minWidth) || 0;\n\n return triggerWidth - padding - nonTagWidth;\n }\n\n private calculateVisibleTags(): void {\n const tags = this.tagRefs();\n if (tags.length === 0 || this.visibleTagsCount() !== null) return;\n\n const availableWidth = this.getAvailableTagWidth();\n if (availableWidth <= 0) return;\n\n const gap = 8;\n const counterTagWidth = 40;\n let usedWidth = 0;\n let visibleCount = 0;\n\n for (let i = 0; i < tags.length; i++) {\n const tagWidth = tags[i].nativeElement.offsetWidth;\n const spaceNeeded = usedWidth + tagWidth + (visibleCount > 0 ? gap : 0);\n const hasMoreItems = i < tags.length - 1;\n const reservedSpace = hasMoreItems ? counterTagWidth + gap : 0;\n\n if (spaceNeeded + reservedSpace <= availableWidth) {\n usedWidth = spaceNeeded;\n visibleCount++;\n } else {\n break;\n }\n }\n\n if (visibleCount === 0 && tags.length > 0) {\n visibleCount = 1;\n }\n\n this.ngZone.run(() => {\n this.visibleTagsCount.set(visibleCount);\n });\n }\n\n private setDropdownWidth(): void {\n const widthRef = this.dropdownWidthRef();\n if (widthRef === null) {\n this.dropdownWidth.set(null);\n return;\n }\n\n const element = widthRef?.nativeElement ?? this.hostRef?.nativeElement;\n const computedWidth = element?.getBoundingClientRect()?.width ?? 0;\n this.dropdownWidth.set(computedWidth);\n }\n\n private toggleSelectAll(): void {\n const isSearching = !!this.searchTerm().trim();\n const options = isSearching\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const compareWith = this.compareWith();\n\n if (this.allOptionsSelected()) {\n // Deselect: remove only the visible enabled options, keep the rest\n const newSelection = this.selectedValues().filter(\n (val) => !enabledOptions.some((o) => compareWith(val, o.value))\n );\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n } else {\n // Select: add visible enabled options to current selection\n const newSelection = [...this.selectedValues()];\n for (const option of enabledOptions) {\n if (!newSelection.some((val) => compareWith(val, option.value))) {\n newSelection.push(option.value);\n }\n }\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n }\n }\n\n private toggleGroupSelection(groupLabel: string): void {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n const groupValues = enabledGroupOptions.map((o) => o.value);\n const isGroupSelected = this.isGroupSelected(groupLabel);\n const compareWith = this.compareWith();\n\n let newSelection: unknown[];\n\n if (isGroupSelected) {\n newSelection = this.selectedValues().filter(\n (val) => !groupValues.some((gv) => compareWith(val, gv))\n );\n } else {\n newSelection = [...this.selectedValues()];\n for (const gv of groupValues) {\n if (!newSelection.some((val) => compareWith(val, gv))) {\n newSelection.push(gv);\n }\n }\n }\n\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n }\n\n onChange: (value: unknown) => void = () => { };\n onTouched: () => void = () => { };\n\n writeValue(value: unknown): void {\n if (this.allowMultiple()) {\n this.selectedValues.set(Array.isArray(value) ? value : []);\n } else {\n this.selectedValues.set(value != null ? [value] : []);\n }\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n if (isDisabled) {\n this.closeDropdown();\n }\n }\n}\n","@if (label()) {\n <label\n [id]=\"labelId()\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n (click)=\"onTriggerClick()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"searchable() ? null : inputId()\"\n class=\"tedi-select__trigger tedi-input\"\n [class.tedi-input--disabled]=\"disabled()\"\n [class.tedi-input--small]=\"size() === 'small'\"\n [class.tedi-input--error]=\"state() === 'error'\"\n [class.tedi-input--valid]=\"state() === 'valid'\"\n [class.tedi-select__trigger--searchable]=\"searchable()\"\n [class.tedi-select__trigger--search-focused]=\"searchFocused()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [attr.role]=\"searchable() ? null : 'combobox'\"\n [attr.aria-haspopup]=\"searchable() ? null : 'listbox'\"\n [attr.aria-expanded]=\"searchable() ? null : isOpen()\"\n [attr.aria-controls]=\"searchable() ? null : listboxId()\"\n [attr.aria-labelledby]=\"!searchable() && label() ? labelId() : null\"\n [tabindex]=\"searchable() || disabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown.enter)=\"onTriggerEnter()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n @if (searchable()) {\n <div class=\"tedi-select__search-wrapper\">\n @if (showSingleSelectedValue()) {\n <span class=\"tedi-select__selected-value\">\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n </span>\n }\n @if (allowMultiple() && selectedValues().length) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [class.tedi-select__search-input--hidden]=\"showSingleSelectedValue()\"\n [placeholder]=\"showSingleSelectedValue() ? '' : placeholder()\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"label() ? labelId() : null\"\n />\n }\n </div>\n } @else {\n <span class=\"tedi-select__label\">\n @if (selectedValues().length) {\n @if (allowMultiple()) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else {\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n }\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n }\n\n @if (clearable() && selectedValues().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n [ariaLabel]=\"'clear' | tediTranslate\"\n (click)=\"clear($event)\"\n (keydown.enter)=\"clear($event)\"\n (keydown.space)=\"clear($event)\"\n [attr.aria-describedby]=\"label() ? labelId() : null\"\n ></button>\n }\n\n <button\n class=\"tedi-select__arrow\"\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"onArrowClick($event)\"\n >\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template #multiselectTags>\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n #multiselectContainer\n >\n @if (multiRow()) {\n @for (value of selectedValues(); track value) {\n <tedi-tag\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n } @else {\n @for (value of selectedValues(); track value; let i = $index) {\n @if (visibleTagsCount() === null || i < visibleTagsCount()!) {\n <tedi-tag\n #tagElement\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n }\n @if (hiddenTagsCount() > 0) {\n <tedi-tag>+{{ hiddenTagsCount() }}</tedi-tag>\n }\n }\n @if (searchable()) {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"label() ? labelId() : null\"\n />\n }\n </div>\n</ng-template>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"dropdownPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"toggleIsOpen(true)\"\n>\n <div\n class=\"tedi-select__dropdown\"\n [style.width]=\"!!dropdownWidth() ? dropdownWidth() + 'px' : 'auto'\"\n [style.max-height]=\"dropdownMaxHeight() ? dropdownMaxHeight() + 'px' : null\"\n >\n <ul\n [id]=\"listboxId()\"\n class=\"tedi-select__options\"\n [class.tedi-select__options--multiselect]=\"allowMultiple()\"\n [class.tedi-select__options--swatch-grid]=\"dropdownType() === 'grid'\"\n cdkListbox\n [cdkListboxMultiple]=\"allowMultiple()\"\n [cdkListboxValue]=\"visibleSelectedValues()\"\n [cdkListboxNavigatesDisabledOptions]=\"false\"\n [cdkListboxUseActiveDescendant]=\"true\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n (keydown.tab)=\"toggleIsOpen(true)\"\n (keydown.escape)=\"toggleIsOpen(true)\"\n #listbox=\"cdkListbox\"\n >\n @if (filteredOptions().length) {\n @if (allowMultiple() && showSelectAll()) {\n <li\n class=\"tedi-dropdown-item\"\n [cdkOption]=\"SpecialOptionControls.SELECT_ALL\"\n >\n <tedi-dropdown-item-value type=\"checkbox\" [selected]=\"allOptionsSelected()\" [indeterminate]=\"someOptionsSelected()\">\n <tedi-dropdown-item-value-label>{{ \"select.select-all\" | tediTranslate }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n }\n\n @for (group of optionGroups(); track group.label) {\n @if (group.label.length > 0) {\n @if (allowMultiple() && selectableGroups()) {\n <li\n class=\"tedi-dropdown-item tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"SpecialOptionControls.SELECT_GROUP + group.label\"\n >\n <tedi-dropdown-item-value type=\"checkbox\" [selected]=\"isGroupSelected(group.label)\" [indeterminate]=\"isGroupIndeterminate(group.label)\">\n <tedi-dropdown-item-value-label>{{ group.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n } @else {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value; let i = $index) {\n <li\n class=\"tedi-dropdown-item\"\n [class.tedi-dropdown-item--selected]=\"!allowMultiple() && isOptionSelected(option.value)\"\n [class.tedi-dropdown-item--disabled]=\"option.disabled\"\n [class.tedi-dropdown-item--custom]=\"optionTemplate()\"\n [cdkOption]=\"option.value\"\n [cdkOptionDisabled]=\"option.disabled\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getOptionContext(option, i)\"\n />\n } @else {\n <tedi-dropdown-item-value\n [type]=\"allowMultiple() ? 'checkbox' : 'default'\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n }\n </li>\n }\n }\n } @else {\n <li class=\"tedi-dropdown-item tedi-select__no-options\">\n {{ noOptionsMessage() || (\"select.no-options\" | tediTranslate) }}\n </li>\n }\n </ul>\n </div>\n</ng-template>\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 { InjectionToken, Signal } from \"@angular/core\";\n\n/**\n * Interface implemented by controls that can be used inside `tedi-form-field`.\n * Allows the form field container to interact with the underlying control.\n */\nexport interface FormFieldControl<T = unknown> {\n /**\n * Current value of the control.\n */\n value: Signal<T>;\n /**\n * Whether the control is disabled.\n */\n disabled: Signal<boolean>;\n /** Reactive invalid state (driven by FormField) */\n invalid: Signal<boolean>;\n\n /** Called by FormField to update invalid state */\n setInvalidState(isInvalid: boolean): void;\n /**\n * Optional method used by the form field clear button.\n * If implemented, the form field can trigger clearing the value.\n */\n clearField?(): void;\n}\n\n/**\n * Injection token used by `tedi-form-field` to obtain\n * the associated control instance.\n */\nexport const TEDI_FORM_FIELD_CONTROL = new InjectionToken<FormFieldControl>(\n \"TEDI_FORM_FIELD_CONTROL\",\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n input,\n ViewEncapsulation,\n AfterContentInit,\n inject,\n DestroyRef,\n} from \"@angular/core\";\nimport { NgClass } from \"@angular/common\";\nimport {\n FormFieldControl,\n TEDI_FORM_FIELD_CONTROL,\n} from \"./form-field-control\";\nimport {\n IconColor,\n IconComponent,\n IconSize,\n IconType,\n IconVariant,\n} from \"../../../components/base/icon/icon.component\";\nimport { ClosingButtonComponent } from \"../../../components/buttons/closing-button/closing-button.component\";\nimport { SeparatorComponent } from \"../../../components/helpers/separator/separator.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { NgControl } from \"@angular/forms\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nexport type InputSize = \"small\" | \"large\" | \"default\";\nexport type InputState = \"valid\" | \"error\" | \"default\";\ntype ValidationState = \"invalid\" | \"valid\" | \"neutral\";\n\nexport interface FormFieldIcon {\n name: string;\n size?: IconSize;\n color?: IconColor;\n type?: IconType;\n variant?: IconVariant;\n}\n\n@Component({\n selector: \"tedi-form-field\",\n standalone: true,\n templateUrl: \"./form-field.component.html\",\n styleUrl: \"./form-field.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgClass,\n IconComponent,\n ClosingButtonComponent,\n SeparatorComponent,\n TediTranslationPipe,\n ],\n host: {\n \"[class]\": \"hostClasses()\",\n },\n})\nexport class FormFieldComponent implements AfterContentInit {\n /**\n * The size of the form field.\n * @default \"default\"\n */\n size = input<InputSize>(\"default\");\n /**\n * Icon name or configuration object.\n */\n icon = input<string | FormFieldIcon | undefined>();\n /**\n * Whether the form field includes a clear button.\n * @default false\n */\n clearable = input<boolean>(false);\n /**\n * Custom CSS classes for the input.\n */\n inputClass = input<string | null>(null);\n\n @ContentChild(TEDI_FORM_FIELD_CONTROL)\n control?: FormFieldControl;\n\n @ContentChild(NgControl)\n ngControl?: NgControl;\n\n @ContentChild(FeedbackTextComponent)\n feedback?: FeedbackTextComponent;\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterContentInit() {\n this.ngControl?.control?.events\n ?.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateValidationState());\n\n this.updateValidationState();\n }\n\n private updateValidationState() {\n const invalid = !!this.ngControl?.invalid;\n const touched = !!this.ngControl?.touched;\n const dirty = !!this.ngControl?.dirty;\n const fieldInvalid = invalid && (touched || dirty);\n\n this.control?.setInvalidState(fieldInvalid);\n }\n\n readonly resolvedIcon = computed<FormFieldIcon | undefined>(() => {\n const icon = this.icon();\n if (!icon) return undefined;\n\n return typeof icon === \"string\" ? { name: icon } : icon;\n });\n\n readonly validationState = computed<ValidationState>(() => {\n const feedbackType = this.feedback?.type();\n const fieldInvalid = this.control?.invalid?.() ?? false;\n\n if (fieldInvalid || feedbackType === \"error\") return \"invalid\";\n if (feedbackType === \"valid\") return \"valid\";\n\n return \"neutral\";\n });\n\n showClearButton = computed(() => {\n const value = this.control?.value();\n return this.clearable() && !!value;\n });\n\n readonly isDisabled = computed(() => this.control?.disabled() ?? false);\n\n readonly hostClasses = computed(() => {\n return {\n \"tedi-form-field\": true,\n \"tedi-form-field--valid\": this.validationState() === \"valid\",\n \"tedi-form-field--invalid\": this.validationState() === \"invalid\",\n \"tedi-form-field--disabled\": this.control?.disabled(),\n \"tedi-form-field--small\": this.size() === \"small\",\n \"tedi-form-field--large\": this.size() === \"large\",\n \"tedi-form-field--with-icon\": this.clearable() || !!this.icon(),\n };\n });\n\n readonly inputClasses = computed(() => {\n const customClass = this.inputClass();\n\n return {\n \"tedi-form-field__input\": true,\n ...(customClass ? { [customClass]: true } : {}),\n };\n });\n\n clear() {\n this.control?.clearField?.();\n }\n}\n","<ng-content select=\"label[tedi-label]\"></ng-content>\n\n<div [ngClass]=\"inputClasses()\">\n <ng-content select=\"input[tedi-text-field]\"></ng-content>\n\n @if (clearable()) {\n <div\n class=\"tedi-form-field__buttons\"\n [class.tedi-form-field__buttons--hidden]=\"!showClearButton()\"\n [attr.aria-hidden]=\"!showClearButton() || null\"\n >\n <button\n class=\"tedi-form-field__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [ariaLabel]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n [tabIndex]=\"showClearButton() ? 0 : -1\"\n [disabled]=\"isDisabled() || !showClearButton()\"\n (click)=\"clear()\"\n ></button>\n\n @if (icon()) {\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n </div>\n }\n\n @if (resolvedIcon(); as icon) {\n <div class=\"tedi-form-field__icon\">\n <tedi-icon\n [name]=\"icon.name\"\n [size]=\"icon.size ?? (size() === 'small' ? 16 : 18)\"\n [color]=\"icon.color ?? 'secondary'\"\n [type]=\"icon.type ?? 'outlined'\"\n [variant]=\"icon.variant ?? 'outlined'\"\n [attr.aria-hidden]=\"true\"\n />\n </div>\n }\n</div>\n\n@if (feedback) {\n <div class=\"tedi-form-field__feedback\">\n <ng-content select=\"tedi-feedback-text\"></ng-content>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n ViewEncapsulation,\n forwardRef,\n signal,\n output,\n ElementRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport {\n FormFieldControl,\n TEDI_FORM_FIELD_CONTROL,\n} from \"../form-field/form-field-control\";\n\n@Component({\n selector: \"input[tedi-text-field]\",\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n {\n provide: TEDI_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => TextFieldComponent),\n },\n ],\n template: \"\",\n styleUrl: \"./text-field.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-text-field\",\n \"[class.tedi-text-field--arrows-hidden]\": \"arrowsHidden()\",\n \"[attr.aria-invalid]\": \"invalid() || null\",\n \"[value]\": \"value()\",\n \"(input)\": \"handleInputChange($event)\",\n \"(blur)\": \"handleBlur()\",\n },\n})\nexport class TextFieldComponent\n implements ControlValueAccessor, FormFieldControl\n{\n /**\n * Value of the input field. Supports two-way binding, use with form controls.\n */\n value = model<string>(\"\");\n /**\n * Whether to hide arrows for number inputs.\n * @default true\n */\n arrowsHidden = input<boolean>(true);\n /**\n * Callback triggered when the clear button is clicked.\n */\n readonly clear = output<void>();\n\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n readonly disabled = computed(() => this.formDisabled());\n\n readonly invalid = signal(false);\n\n setInvalidState(isInvalid: boolean) {\n this.invalid.set(isInvalid);\n }\n\n private formDisabled = signal(false);\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n private setValue(value: string) {\n this.el.nativeElement.value = value;\n this.value.set(value);\n }\n\n writeValue(value: string | null): void {\n this.setValue(value ?? \"\");\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n this.el.nativeElement.disabled = isDisabled;\n }\n\n handleInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n this.value.set(value);\n this.onChange(value);\n }\n\n handleBlur() {\n this.onTouched();\n }\n\n clearField() {\n if (this.disabled()) return;\n\n this.setValue(\"\");\n this.onChange(\"\");\n this.clear.emit();\n this.onTouched();\n }\n}\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', `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 viewChildren,\n AfterViewInit,\n OnDestroy,\n input,\n inject,\n HostListener,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\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 private readonly liveAnnouncer = inject(LiveAnnouncer);\n\n readonly track = viewChild.required<ElementRef<HTMLDivElement>>(\"track\");\n readonly slideElements = viewChildren<ElementRef<HTMLDivElement>>(\"slide\");\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 /**\n * Checks if a slide at the given rendered index is currently visible in the viewport.\n * Used to determine which slides should be accessible to screen readers.\n */\n isSlideVisible(renderedIndex: number): boolean {\n const activeIndex = this.renderedActiveIndex();\n const slidesPerView = Math.ceil(this.currentSlidesPerView());\n return renderedIndex >= activeIndex && renderedIndex < activeIndex + slidesPerView;\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 pendingFocus = 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(\"scroll\")\n onScroll() {\n // Prevent any scroll triggered by focus (e.g., VoiceOver navigation)\n this.host.nativeElement.scrollLeft = 0;\n this.host.nativeElement.scrollTop = 0;\n }\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 this.announceSlideChange();\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 this.announceSlideChange();\n }\n\n goToIndex(index: number, options?: { focusSlide?: boolean }) {\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 if (options?.focusSlide) {\n // Focus after transition completes so DOM positions are stable\n this.pendingFocus = true;\n } else {\n this.announceSlideChange();\n }\n }\n\n /**\n * Focuses the currently active slide for screen reader users.\n * Uses preventScroll to avoid breaking carousel layout.\n */\n focusActiveSlide(): void {\n setTimeout(() => {\n const activeIndex = this.renderedActiveIndex();\n const slideElement = this.slideElements()[activeIndex];\n if (slideElement) {\n slideElement.nativeElement.focus({ preventScroll: true });\n }\n });\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 if (this.pendingFocus) {\n this.pendingFocus = false;\n this.focusActiveSlide();\n }\n }\n\n lockNavigation() {\n this.locked = true;\n setTimeout(() => (this.locked = false), this.transitionMs());\n }\n\n /**\n * Announces the current slide position to screen readers via LiveAnnouncer.\n * Called after navigation to inform users of the slide change.\n */\n announceSlideChange(): void {\n setTimeout(() => {\n const slideNumber = this.slideIndex() + 1;\n const totalSlides = this.slides().length;\n const message = this.translationService.translate(\n \"carousel.slide\",\n slideNumber,\n totalSlides\n );\n\n this.liveAnnouncer.announce(message, \"polite\");\n }, 100);\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 #slide\n class=\"tedi-carousel__slide\"\n [attr.role]=\"isSlideVisible($index) ? '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]=\"isSlideVisible($index) ? null : 'true'\"\n [attr.tabindex]=\"isSlideVisible($index) ? '-1' : null\"\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, { focusSlide: true });\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 ViewEncapsulation,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Component({\n selector: \"tedi-filter-group\",\n standalone: true,\n template: `<ng-content />`,\n styleUrl: \"./filter-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-filter-group\",\n \"[attr.role]\":\n \"isManaged() ? (allowMultiple() ? 'group' : 'radiogroup') : null\",\n \"[attr.aria-label]\": \"label()\",\n },\n})\nexport class FilterGroupComponent implements ControlValueAccessor {\n /**\n * Multi-select mode allows multiple filters to be selected simultaneously.\n * When false, only one filter can be selected at a time (radio-like behavior).\n * Value is treated as `string[]` when true, `string | null` otherwise.\n * @default false\n */\n readonly allowMultiple = input<boolean>(false);\n /**\n * Selected value (single-select) or values (multi-select). Two-way bound.\n * Use `string | null` when `allowMultiple` is false, `string[]` when true.\n */\n readonly value = model<string | string[] | null>(null);\n /**\n * Accessible label for the group.\n */\n readonly label = input<string>();\n\n readonly isManaged = signal(false);\n readonly disabled = signal(false);\n\n private readonly multiValues = computed<string[]>(() => {\n const v = this.value();\n return Array.isArray(v) ? v : [];\n });\n private readonly singleValue = computed<string | null>(() => {\n const v = this.value();\n return typeof v === \"string\" ? v : null;\n });\n\n private onChange: (value: string | null | string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string | null | string[]): void {\n if (this.allowMultiple()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else {\n this.value.set(typeof value === \"string\" ? value : null);\n }\n }\n\n registerOnChange(fn: (value: string | null | string[]) => void): void {\n this.onChange = fn;\n this.isManaged.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n selectFilter(value: string): void {\n if (this.allowMultiple()) {\n const current = this.multiValues();\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value];\n this.value.set(next);\n this.onChange(next);\n } else {\n const next = this.singleValue() === value ? null : value;\n this.value.set(next);\n this.onChange(next);\n }\n this.onTouched();\n }\n\n isSelected(value: string): boolean {\n if (this.allowMultiple()) {\n return this.multiValues().includes(value);\n }\n return this.singleValue() === value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n} from \"@angular/core\";\n\nexport type StatusIndicatorType = \"success\" | \"danger\" | \"warning\" | \"inactive\";\nexport type StatusIndicatorSize = \"sm\" | \"lg\";\nexport type StatusIndicatorPosition = \"default\" | \"top-right\";\n\n@Component({\n selector: \"tedi-status-indicator\",\n standalone: true,\n template: \"\",\n styleUrl: \"./status-indicator.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-status-indicator\",\n \"[class.tedi-status-indicator--success]\": \"type() === 'success'\",\n \"[class.tedi-status-indicator--danger]\": \"type() === 'danger'\",\n \"[class.tedi-status-indicator--warning]\": \"type() === 'warning'\",\n \"[class.tedi-status-indicator--inactive]\": \"type() === 'inactive'\",\n \"[class.tedi-status-indicator--sm]\": \"size() === 'sm'\",\n \"[class.tedi-status-indicator--lg]\": \"size() === 'lg'\",\n \"[class.tedi-status-indicator--bordered]\": \"hasBorder()\",\n \"[class.tedi-status-indicator--top-right]\": \"position() === 'top-right'\",\n \"[attr.role]\": \"label() ? 'img' : null\",\n \"[attr.aria-hidden]\": \"!label()\",\n \"[attr.aria-label]\": \"label() || null\",\n },\n})\nexport class StatusIndicatorComponent {\n /**\n * Accessible label for the indicator. When provided, the indicator is\n * exposed to assistive technology with `role=\"img\"`. When omitted, the\n * indicator is treated as decorative (`aria-hidden=\"true\"`).\n */\n readonly label = input<string>();\n /**\n * The status type, which determines the indicator color.\n * @default success\n */\n readonly type = input<StatusIndicatorType>(\"success\");\n /**\n * The size of the indicator.\n * @default sm\n */\n readonly size = input<StatusIndicatorSize>(\"sm\");\n /**\n * Whether the indicator has a white border ring.\n * @default false\n */\n readonly hasBorder = input<boolean>(false);\n /**\n * Controls positioning of the indicator.\n * - `'default'` — inline, no absolute positioning\n * - `'top-right'` — absolutely positioned at the top-right corner of the parent\n * @default default\n */\n readonly position = input<StatusIndicatorPosition>(\"default\");\n}\n","import { CommonModule, NgClass } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n computed,\n inject,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { StatusIndicatorComponent } from \"../status-indicator/status-indicator.component\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\n\nexport type StatusBadgeColor =\n | \"neutral\"\n | \"brand\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"transparent\";\nexport type StatusBadgeVariant = \"filled\" | \"filled-bordered\" | \"bordered\";\nexport type StatusBadgeSize = \"default\" | \"large\";\nexport type StatusBadgeStatus = \"danger\" | \"success\" | \"warning\" | \"inactive\";\n\n@Component({\n selector: \"tedi-status-badge\",\n standalone: true,\n imports: [IconComponent, StatusIndicatorComponent, CommonModule, NgClass],\n templateUrl: \"./status-badge.component.html\",\n styleUrl: \"./status-badge.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusBadgeComponent {\n readonly idGenerator = inject(_IdGenerator);\n readonly uniqueId = this.idGenerator.getId(\"tedi-status-badge\");\n /**\n * The text to be displayed inside the StatusBadge.\n */\n text = input<string>(\"\");\n /**\n * Additional classes to apply custom styles to the StatusBadge.\n */\n class = input<string>();\n /**\n * Provides the full text or description when the Badge represents an abbreviation.\n * This is typically shown as a tooltip on hover.\n */\n title = input<string>();\n /**\n * ARIA role attribute for accessibility.\n */\n role = input<string>();\n /**\n * Specifies the color scheme of the StatusBadge.\n * @default neutral\n */\n color = input<StatusBadgeColor>(\"neutral\");\n /**\n * Determines the style or visual type of the StatusBadge.\n * @default filled\n */\n variant = input<StatusBadgeVariant>(\"filled\");\n /**\n * Specifies the size of the StatusBadge.\n * @default default\n */\n size = input<StatusBadgeSize>(\"default\");\n /**\n * StatusBadge status indicator.\n */\n status = input<StatusBadgeStatus>();\n /**\n * The name of the icon to be displayed inside the StatusBadge. The icon is rendered using the `Icon` component.\n */\n icon = input<string>(\"\");\n\n classes = computed(() => {\n const classList = [\"tedi-status-badge\"];\n\n if (this.color()) {\n classList.push(`tedi-status-badge--color-${this.color()}`);\n }\n\n if (this.variant()) {\n classList.push(`tedi-status-badge--variant-${this.variant()}`);\n }\n\n if (this.size() === \"large\") {\n classList.push(\"tedi-status-badge--large\");\n }\n\n const hasText = !!this.text()?.trim();\n const hasIcon = !!this.icon()?.trim();\n if (hasIcon && !hasText) {\n classList.push(\"tedi-status-badge__icon-only\");\n }\n\n const customClass = this.class();\n if (customClass) {\n classList.push(customClass);\n }\n\n return classList;\n });\n\n ariaLive = computed(() => {\n if (this.role() === \"alert\") {\n return \"assertive\";\n }\n if (this.role() === \"status\") {\n return \"polite\";\n }\n return null;\n });\n}\n","@if (title()) {\n <abbr\n [ngClass]=\"classes()\"\n [attr.id]=\"uniqueId\"\n [attr.title]=\"title()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n >\n <ng-container *ngTemplateOutlet=\"statusBadgeContent\"></ng-container>\n </abbr>\n} @else {\n <div\n [ngClass]=\"classes()\"\n [attr.id]=\"uniqueId\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n >\n <ng-container *ngTemplateOutlet=\"statusBadgeContent\"></ng-container>\n </div>\n}\n\n<ng-template #statusBadgeContent>\n @if (status()) {\n <tedi-status-indicator\n [type]=\"status()!\"\n [size]=\"size() === 'large' ? 'lg' : 'sm'\"\n [hasBorder]=\"true\"\n position=\"top-right\"\n />\n }\n\n @if (icon()) {\n <tedi-icon class=\"tedi-status-badge__icon\" [name]=\"icon()\" [size]=\"16\" />\n }\n\n @if (text()) {\n <span class=\"tedi-status-badge__text\">{{ text() }}</span>\n }\n</ng-template>\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediFilterContent]\",\n standalone: true,\n})\nexport class FilterContentDirective {}\n","import { Directive, input } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediFilterPrepend]\",\n standalone: true,\n})\nexport class FilterPrependDirective {\n /**\n * Whether to hide the prepend content when the filter is selected.\n * When true, the prepend is replaced by a check icon on selection.\n * @default true\n */\n readonly hideWhenSelected = input(true);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChild,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from \"@angular/core\";\nimport { FilterGroupComponent } from \"./filter-group.component\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ButtonComponent } from \"../buttons\";\nimport { IconComponent } from \"../base/icon/icon.component\";\nimport { StatusBadgeComponent } from \"../tags/status-badge/status-badge.component\";\nimport { SeparatorComponent } from \"../helpers/separator/separator.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 { DropdownItemValueComponent } from \"../overlay/dropdown/dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component\";\nimport { FormFieldComponent } from \"../form/form-field/form-field.component\";\nimport { TextFieldComponent } from \"../form/text-field/text-field.component\";\nimport { FilterContentDirective } from \"./filter-content.directive\";\nimport { FilterPrependDirective } from \"./filter-prepend.directive\";\nimport { TediTranslationService } from \"../../services/translation/translation.service\";\n\nexport type FilterVariant = \"primary\" | \"secondary\";\nexport type FilterSize = \"default\" | \"large\";\n\nexport interface FilterOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: \"tedi-filter\",\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ButtonComponent,\n IconComponent,\n StatusBadgeComponent,\n SeparatorComponent,\n DropdownComponent,\n DropdownTriggerDirective,\n DropdownContentComponent,\n DropdownItemValueComponent,\n DropdownItemValueLabelComponent,\n FormFieldComponent,\n TextFieldComponent,\n FilterContentDirective,\n ],\n templateUrl: \"./filter.component.html\",\n styleUrl: \"./filter.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-filter\",\n \"[class.tedi-filter--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-filter--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-filter--large]\": \"size() === 'large'\",\n \"[class.tedi-filter--selected]\": \"isSelected()\",\n \"[class.tedi-filter--disabled]\": \"isDisabled()\",\n },\n})\nexport class FilterComponent implements ControlValueAccessor {\n /**\n * Filter label text.\n */\n readonly text = input<string>(\"\");\n /**\n * Visual variant of the filter.\n * @default primary\n */\n readonly variant = input<FilterVariant>(\"primary\");\n /**\n * Size of the filter.\n * @default default\n */\n readonly size = input<FilterSize>(\"default\");\n /**\n * Whether the filter is selected (boolean toggle mode, used when no options are provided).\n * @default false\n */\n readonly selected = model<boolean>(false);\n /**\n * Enables multi-select mode. When true, value is treated as `string[]`; when false,\n * value is treated as `string`. Has no effect when no options are provided.\n * @default false\n */\n readonly allowMultiple = input<boolean>(false);\n /**\n * Options for the dropdown. Enables single-select mode, or multi-select mode when\n * combined with `allowMultiple`.\n */\n readonly options = input<FilterOption[]>([]);\n /**\n * Selected value (single-select) or values (multi-select). Two-way bound.\n * Use `string` when `allowMultiple` is false, `string[]` when true.\n */\n readonly value = model<string | string[]>(\"\");\n /**\n * Show the search field in the dropdown.\n * @default false\n */\n readonly showSearch = input<boolean>(false);\n /**\n * Whether the dropdown search field has a clear (×) button.\n * Only applies when `showSearch` is true.\n * @default true\n */\n readonly searchClearable = input<boolean>(true);\n /**\n * Whether to clear the search field after an option is selected (or toggled in multi-select).\n * Useful in multi-select flows where the user picks several options consecutively.\n * @default false\n */\n readonly clearSearchOnSelect = input<boolean>(false);\n /**\n * Show \"Select all\" option in the dropdown.\n * @default false\n */\n readonly showSelectAll = input<boolean>(false);\n /**\n * Show \"Clear selection\" action in the dropdown.\n * @default false\n */\n readonly showClear = input<boolean>(false);\n /**\n * Override for the \"Select all\" option label. Defaults to the translated string.\n */\n readonly selectAllLabel = input<string | undefined>(undefined);\n /**\n * Override for the \"Clear selection\" action label. Defaults to the translated string.\n */\n readonly clearLabel = input<string | undefined>(undefined);\n /**\n * Emitted when the clear button is clicked in a custom content dropdown.\n */\n readonly cleared = output<void>();\n /**\n * When true, the filter label is preserved as a prefix when a value is selected.\n * E.g. \"Teenus: Optometristi vastuvõtt\" instead of just \"Optometristi vastuvõtt\".\n * @default false\n */\n readonly preserveLabel = input<boolean>(false);\n /**\n * Append dropdown to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger.\n * @default \"\"\n */\n readonly appendTo = input(\"\");\n /**\n * Whether the filter is disabled. Also set automatically when used with a disabled FormControl\n * or when nested in a disabled FilterGroup.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n\n readonly dropdown = viewChild<DropdownComponent>(\"dropdown\");\n private readonly dropdownPanel =\n viewChild<ElementRef<HTMLElement>>(\"dropdownPanel\");\n private readonly optionsList =\n viewChild<ElementRef<HTMLElement>>(\"optionsList\");\n private readonly triggerBtn =\n viewChild<ElementRef<HTMLButtonElement>>(\"triggerBtn\");\n\n private readonly filterGroup = inject(FilterGroupComponent, {\n optional: true,\n });\n private readonly translationService = inject(TediTranslationService);\n private readonly customContent = contentChild(FilterContentDirective);\n private readonly filterPrepend = contentChild(FilterPrependDirective);\n readonly hasCustomContent = computed(() => !!this.customContent());\n readonly hasOptions = computed(() => this.options().length > 0);\n readonly isMultiSelect = computed(\n () => this.hasOptions() && this.allowMultiple(),\n );\n readonly isSingleSelect = computed(\n () => this.hasOptions() && !this.allowMultiple(),\n );\n readonly hasDropdown = computed(\n () => this.hasOptions() || this.hasCustomContent(),\n );\n\n readonly singleValue = computed<string>(() => {\n const v = this.value();\n return typeof v === \"string\" ? v : \"\";\n });\n readonly multiValues = computed<string[]>(() => {\n const v = this.value();\n return Array.isArray(v) ? v : [];\n });\n\n private readonly defaultSelectAllLabel = this.translationService.track(\n \"select.select-all\",\n );\n private readonly defaultClearLabel = this.translationService.track(\n \"filter.clear-selection\",\n );\n readonly resolvedSelectAllLabel = computed(\n () => this.selectAllLabel() ?? this.defaultSelectAllLabel(),\n );\n readonly resolvedClearLabel = computed(\n () => this.clearLabel() ?? this.defaultClearLabel(),\n );\n\n private readonly idGenerator = inject(_IdGenerator);\n private readonly baseId = this.idGenerator.getId(\"tedi-filter\");\n\n private readonly formDisabled = signal(false);\n readonly isDisabled = computed(\n () =>\n this.disabled() ||\n this.formDisabled() ||\n !!this.filterGroup?.disabled(),\n );\n readonly searchTerm = signal(\"\");\n readonly activeOptionIndex = signal<number>(-1);\n private suppressNextOptionsFocusAutoSelect = false;\n\n readonly activeDescendantId = computed(() => {\n const idx = this.activeOptionIndex();\n if (idx === -1) return null;\n return idx < this.filteredOptions().length\n ? this.getOptionId(idx)\n : null;\n });\n\n readonly iconSize = computed(() => (this.size() === \"large\" ? 24 : 18));\n\n readonly isGrouped = computed(\n () => !!this.filterGroup && this.filterGroup.isManaged(),\n );\n\n readonly isGroupedRadio = computed(\n () => this.isGrouped() && !this.filterGroup!.allowMultiple(),\n );\n\n readonly hidePrepend = computed(\n () =>\n this.isSelected() &&\n (this.filterPrepend()?.hideWhenSelected() ?? true),\n );\n\n readonly isSelected = computed(() => {\n if (this.isGrouped()) {\n return this.filterGroup!.isSelected(this.singleValue());\n }\n if (this.isMultiSelect()) {\n return this.multiValues().length > 0;\n }\n if (this.isSingleSelect()) {\n return this.singleValue() !== \"\";\n }\n return this.selected();\n });\n\n readonly selectedCount = computed(() => this.multiValues().length);\n\n readonly selectedLabel = computed(() => {\n const val = this.singleValue();\n if (!val) return null;\n return this.options().find((opt) => opt.value === val)?.label ?? null;\n });\n\n readonly displayText = computed(() => {\n if (this.isSingleSelect()) {\n const label = this.selectedLabel();\n if (label && this.preserveLabel()) {\n return this.text() + \": \" + label;\n }\n return label ?? this.text();\n }\n return this.text();\n });\n\n readonly filteredOptions = computed(() => {\n const term = this.searchTerm().toLowerCase();\n if (!term) return this.options();\n return this.options().filter((opt) =>\n opt.label.toLowerCase().includes(term),\n );\n });\n\n readonly allFilteredSelected = computed(() => {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n if (filtered.length === 0) return false;\n const vals = this.multiValues();\n return filtered.every((opt) => vals.includes(opt.value));\n });\n\n readonly someFilteredSelected = computed(() => {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n const vals = this.multiValues();\n const selectedCount = filtered.filter((opt) =>\n vals.includes(opt.value),\n ).length;\n return selectedCount > 0 && selectedCount < filtered.length;\n });\n\n private onChange: (value: boolean | string | string[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n writeValue(value: boolean | string | string[]): void {\n if (this.isMultiSelect()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else if (this.isSingleSelect()) {\n this.value.set(typeof value === \"string\" ? value : \"\");\n } else {\n this.selected.set(!!value);\n }\n }\n\n registerOnChange(fn: (value: boolean | string | string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.isGrouped()) {\n this.filterGroup!.selectFilter(this.singleValue());\n return;\n }\n const newValue = !this.selected();\n this.selected.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n\n getOptionId(index: number): string {\n return `${this.baseId}-option-${index}`;\n }\n\n isOptionSelected(value: string): boolean {\n if (this.isSingleSelect()) {\n return this.singleValue() === value;\n }\n return this.multiValues().includes(value);\n }\n\n selectOption(value: string): void {\n const newValue = this.singleValue() === value ? \"\" : value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n this.dropdown()?.hideDropdown();\n this.triggerBtn()?.nativeElement.focus();\n }\n\n toggleOption(value: string): void {\n const current = this.multiValues();\n const newValues = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value];\n this.value.set(newValues);\n this.onChange(newValues);\n this.onTouched();\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n }\n\n toggleSelectAll(): void {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n let newValues: string[];\n if (this.allFilteredSelected()) {\n const filteredValues = new Set(filtered.map((opt) => opt.value));\n newValues = this.multiValues().filter((v) => !filteredValues.has(v));\n } else {\n const current = new Set(this.multiValues());\n filtered.forEach((opt) => current.add(opt.value));\n newValues = [...current];\n }\n this.value.set(newValues);\n this.onChange(newValues);\n this.onTouched();\n }\n\n clearSelection(): void {\n this.value.set([]);\n this.onChange([]);\n this.onTouched();\n }\n\n clearSingleSelection(): void {\n this.value.set(\"\");\n this.onChange(\"\");\n this.onTouched();\n }\n\n onCustomClear(): void {\n this.cleared.emit();\n }\n\n onSearchClear(): void {\n this.searchTerm.set(\"\");\n }\n\n focusDropdownContent(keyboard = false, focusLast = false): void {\n setTimeout(() => {\n if (!this.dropdown()?.floatUiComponent().state) return;\n if (!keyboard) {\n this.suppressNextOptionsFocusAutoSelect = true;\n this.activeOptionIndex.set(-1);\n }\n const focusable = this.getTabStops();\n if (focusLast) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n });\n }\n\n handleDropdownKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case \"Escape\":\n event.preventDefault();\n this.dropdown()?.hideDropdown();\n this.triggerBtn()?.nativeElement.focus();\n break;\n\n case \"Tab\":\n this.handleTabKey(event);\n break;\n }\n }\n\n onOptionsFocus(): void {\n if (this.suppressNextOptionsFocusAutoSelect) {\n this.suppressNextOptionsFocusAutoSelect = false;\n return;\n }\n if (this.activeOptionIndex() === -1) {\n this.activeOptionIndex.set(this.findNextEnabledIndex(-1, 1));\n }\n }\n\n onOptionsBlur(): void {\n this.activeOptionIndex.set(-1);\n this.suppressNextOptionsFocusAutoSelect = false;\n }\n\n onOptionsMousedown(): void {\n this.suppressNextOptionsFocusAutoSelect = true;\n this.activeOptionIndex.set(-1);\n }\n\n onOptionsKeydown(event: KeyboardEvent): void {\n const options = this.filteredOptions();\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = this.findNextEnabledIndex(\n this.activeOptionIndex(),\n 1,\n );\n if (next !== -1) this.setActiveOption(next);\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n const prev = this.findNextEnabledIndex(\n this.activeOptionIndex(),\n -1,\n );\n if (prev !== -1) this.setActiveOption(prev);\n break;\n }\n\n case \"Home\":\n event.preventDefault();\n this.setActiveOption(this.findNextEnabledIndex(-1, 1));\n break;\n\n case \"End\":\n event.preventDefault();\n this.setActiveOption(\n this.findNextEnabledIndex(options.length, -1),\n );\n break;\n\n case \"Enter\":\n case \" \": {\n event.preventDefault();\n const idx = this.activeOptionIndex();\n const option = options[idx];\n if (option && !option.disabled) {\n if (this.isSingleSelect()) {\n this.selectOption(option.value);\n } else {\n this.toggleOption(option.value);\n }\n }\n break;\n }\n }\n }\n\n private handleTabKey(event: KeyboardEvent): void {\n const tabStops = this.getTabStops();\n if (!tabStops.length) return;\n\n const currentIndex = tabStops.indexOf(\n document.activeElement as HTMLElement,\n );\n\n if (event.shiftKey && currentIndex <= 0) {\n event.preventDefault();\n tabStops[tabStops.length - 1].focus();\n } else if (!event.shiftKey && currentIndex === tabStops.length - 1) {\n event.preventDefault();\n tabStops[0].focus();\n }\n }\n\n private findNextEnabledIndex(from: number, direction: 1 | -1): number {\n const options = this.filteredOptions();\n let index = from + direction;\n while (index >= 0 && index < options.length) {\n if (!options[index].disabled) return index;\n index += direction;\n }\n return -1;\n }\n\n private setActiveOption(index: number): void {\n this.activeOptionIndex.set(index);\n const container = this.optionsList()?.nativeElement;\n if (!container || index === -1) return;\n const items = container.querySelectorAll<HTMLElement>(\n \".tedi-filter-dropdown__item\",\n );\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n\n private getTabStops(): HTMLElement[] {\n const panel = this.dropdownPanel()?.nativeElement;\n if (!panel) return [];\n return Array.from(\n panel.querySelectorAll<HTMLElement>(\n 'input:not([disabled]):not([tabindex=\"-1\"]), button:not([disabled]), [role=\"option\"][tabindex=\"0\"], [role=\"listbox\"][tabindex=\"0\"], [role=\"checkbox\"][tabindex=\"0\"]',\n ),\n );\n }\n}\n","@if (hasDropdown()) {\n <tedi-dropdown #dropdown [appendTo]=\"appendTo()\" position=\"bottom-start\">\n <button\n #triggerBtn\n tedi-dropdown-trigger\n ariaHaspopup=\"dialog\"\n class=\"tedi-filter__button\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n (click)=\"focusDropdownContent()\"\n (keydown.arrowDown)=\"focusDropdownContent(true)\"\n (keydown.arrowUp)=\"focusDropdownContent(true, true)\"\n >\n <ng-container *ngTemplateOutlet=\"buttonContent\" />\n </button>\n <tedi-dropdown-content>\n <div\n #dropdownPanel\n class=\"tedi-filter-dropdown\"\n [class.tedi-filter-dropdown--custom]=\"hasCustomContent()\"\n role=\"dialog\"\n [attr.aria-label]=\"text()\"\n (keydown)=\"handleDropdownKeydown($event)\"\n >\n @if (hasCustomContent()) {\n <div class=\"tedi-filter-dropdown__custom-content\">\n <ng-content select=\"[tediFilterContent]\" />\n </div>\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"onCustomClear()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n } @else if (isSingleSelect()) {\n @if (showSearch()) {\n <ng-container *ngTemplateOutlet=\"searchField\" />\n }\n\n <div\n #optionsList\n class=\"tedi-filter-dropdown__options\"\n role=\"listbox\"\n [attr.aria-label]=\"text()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (focus)=\"onOptionsFocus()\"\n (blur)=\"onOptionsBlur()\"\n (mousedown)=\"onOptionsMousedown()\"\n (keydown)=\"onOptionsKeydown($event)\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div\n class=\"tedi-filter-dropdown__item\"\n [class.tedi-filter-dropdown__item--disabled]=\"option.disabled\"\n [class.tedi-filter-dropdown__item--focused]=\"activeOptionIndex() === i\"\n [class.tedi-filter-dropdown__item--selected]=\"isOptionSelected(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [id]=\"getOptionId(i)\"\n (click)=\"!option.disabled && selectOption(option.value)\"\n >\n <tedi-dropdown-item-value\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n }\n </div>\n\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"clearSingleSelection()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n } @else {\n @if (showSearch()) {\n <ng-container *ngTemplateOutlet=\"searchField\" />\n }\n\n @if (showSelectAll() && filteredOptions().length > 0) {\n <div\n class=\"tedi-filter-dropdown__item tedi-filter-dropdown__item--select-all\"\n role=\"checkbox\"\n [attr.aria-checked]=\"allFilteredSelected() ? 'true' : someFilteredSelected() ? 'mixed' : 'false'\"\n (click)=\"toggleSelectAll()\"\n (keydown.enter)=\"toggleSelectAll()\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectAll()\"\n tabindex=\"0\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"allFilteredSelected()\"\n [indeterminate]=\"someFilteredSelected()\"\n >\n <tedi-dropdown-item-value-label>{{ resolvedSelectAllLabel() }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n <tedi-separator />\n }\n\n <div\n #optionsList\n class=\"tedi-filter-dropdown__options\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"text()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (focus)=\"onOptionsFocus()\"\n (blur)=\"onOptionsBlur()\"\n (mousedown)=\"onOptionsMousedown()\"\n (keydown)=\"onOptionsKeydown($event)\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div\n class=\"tedi-filter-dropdown__item\"\n [class.tedi-filter-dropdown__item--disabled]=\"option.disabled\"\n [class.tedi-filter-dropdown__item--focused]=\"activeOptionIndex() === i\"\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [id]=\"getOptionId(i)\"\n (click)=\"!option.disabled && toggleOption(option.value)\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n }\n </div>\n\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"clearSelection()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n }\n </div>\n </tedi-dropdown-content>\n </tedi-dropdown>\n} @else {\n <button\n class=\"tedi-filter__button\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n [attr.role]=\"isGroupedRadio() ? 'radio' : null\"\n [attr.aria-checked]=\"isGroupedRadio() ? isSelected() : null\"\n [attr.aria-pressed]=\"isGroupedRadio() ? null : isSelected()\"\n (click)=\"toggle()\"\n >\n <ng-container *ngTemplateOutlet=\"buttonContent\" />\n </button>\n}\n\n<ng-template #buttonContent>\n @if (!hasDropdown() && isSelected()) {\n <tedi-icon class=\"tedi-filter__icon\" name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n\n <div class=\"tedi-filter__prepend\" [class.tedi-filter__prepend--hidden]=\"hidePrepend()\">\n <ng-content select=\"[tediFilterPrepend]\" />\n </div>\n\n <span class=\"tedi-filter__text\">{{ displayText() }}</span>\n\n <div class=\"tedi-filter__append\">\n <ng-content select=\"[tediFilterAppend]\" />\n </div>\n\n @if (isMultiSelect() && isSelected() && selectedCount() > 0) {\n <tedi-status-badge class=\"tedi-filter__count\" [text]=\"'' + selectedCount()\" color=\"brand\" />\n }\n\n @if (hasDropdown()) {\n <tedi-icon class=\"tedi-filter__icon\" name=\"arrow_drop_down\" variant=\"filled\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n</ng-template>\n\n<ng-template #searchField>\n <div class=\"tedi-filter-dropdown__search\">\n <tedi-form-field icon=\"search\" [clearable]=\"searchClearable()\">\n <input\n tedi-text-field\n type=\"text\"\n role=\"searchbox\"\n [attr.aria-label]=\"text()\"\n [(value)]=\"searchTerm\"\n (clear)=\"onSearchClear()\"\n />\n </tedi-form-field>\n </div>\n <tedi-separator />\n</ng-template>\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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from \"@angular/core\";\n\nexport type ScrollFadeSize = 0 | 10 | 20;\nexport type ScrollFadePosition = \"top\" | \"bottom\" | \"both\";\nexport type ScrollFadeScrollbar = \"default\" | \"custom\";\n\n@Component({\n standalone: true,\n selector: \"tedi-scroll-fade\",\n templateUrl: \"./scroll-fade.component.html\",\n styleUrl: \"./scroll-fade.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ScrollFadeComponent implements AfterViewInit {\n /** Size of the fade gradient in percentages. */\n readonly fadeSize = input<ScrollFadeSize>(20);\n\n /** Which edges show the fade. */\n readonly fadePosition = input<ScrollFadePosition>(\"both\");\n\n /** Scrollbar style. */\n readonly scrollBar = input<ScrollFadeScrollbar>(\"custom\");\n\n /** Emitted when scrolled to the top. */\n readonly scrolledToTop = output<void>();\n\n /** Emitted when scrolled to the bottom. */\n readonly scrolledToBottom = output<void>();\n\n private readonly innerRef = viewChild.required<ElementRef<HTMLDivElement>>(\"inner\");\n\n private readonly fade = signal({ top: false, bottom: false });\n\n readonly classes = computed(() => {\n const classList = [\"tedi-scroll-fade\"];\n const { top, bottom } = this.fade();\n const pos = this.fadePosition();\n const size = this.fadeSize();\n\n if (top && (pos === \"both\" || pos === \"top\")) {\n classList.push(`tedi-scroll-fade--top-${size}`);\n }\n\n if (bottom && (pos === \"both\" || pos === \"bottom\")) {\n classList.push(`tedi-scroll-fade--bottom-${size}`);\n }\n\n return classList.join(\" \");\n });\n\n readonly innerClasses = computed(() => {\n const classList = [\"tedi-scroll-fade__inner\"];\n\n if (this.scrollBar() === \"custom\") {\n classList.push(\"tedi-scroll-fade__inner--custom-scroll\");\n }\n\n return classList.join(\" \");\n });\n\n onScroll(): void {\n const el = this.innerRef().nativeElement;\n this.updateFade(el.scrollTop, el.scrollHeight, el.clientHeight);\n }\n\n ngAfterViewInit(): void {\n const el = this.innerRef().nativeElement;\n this.updateFade(el.scrollTop, el.scrollHeight, el.clientHeight);\n }\n\n private updateFade(scrollTop: number, scrollHeight: number, clientHeight: number): void {\n const atTop = scrollTop === 0;\n const atBottom = Math.abs(scrollHeight - scrollTop - clientHeight) <= 1;\n\n if (atTop) {\n this.scrolledToTop.emit();\n }\n\n if (atBottom) {\n this.scrolledToBottom.emit();\n }\n\n this.fade.set({ top: !atTop, bottom: !atBottom });\n }\n}\n","<div #inner [class]=\"innerClasses()\" (scroll)=\"onScroll()\">\n <ng-content />\n</div>\n","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\" [preventOverflow]=\"true\" appendTo=\"\">\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\" [preventOverflow]=\"true\" appendTo=\"\">\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\" [preventOverflow]=\"true\" appendTo=\"\">\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 private isTouch = false;\n\n constructor() {\n effect(() => {\n const element = this.interactiveElement();\n if (!element) return;\n\n element.setAttribute(\"aria-describedby\", this.tooltip.descriptionId);\n });\n }\n\n @HostListener(\"touchstart\")\n onTouchStart() {\n this.isTouch = true;\n }\n\n @HostListener(\"touchend\")\n onTouchEnd() {\n this.tooltip.toggleTooltip();\n setTimeout(() => (this.isTouch = false), 300);\n }\n\n @HostListener(\"click\")\n onClick() {\n if (this.isTouch) return;\n\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 (this.isTouch) return;\n\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 (this.isTouch) return;\n\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 (this.isTouch) return;\n\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.isTouch) return;\n if (this.tooltip.isContentHovered()) return;\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 booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\n\n@Component({\n selector: \"tedi-horizontal-stepper-item\",\n imports: [IconComponent, TediTranslationPipe],\n templateUrl: \"./horizontal-stepper-item.component.html\",\n styleUrl: \"./horizontal-stepper-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-horizontal-stepper-item]\": \"true\",\n \"[class.tedi-horizontal-stepper-item--selected]\": \"selected()\",\n \"[class.tedi-horizontal-stepper-item--completed]\":\n \"completed() && !error()\",\n \"[class.tedi-horizontal-stepper-item--error]\": \"error()\",\n \"[class.tedi-horizontal-stepper-item--disabled]\": \"disabled()\",\n },\n})\nexport class HorizontalStepperItemComponent {\n label = input.required<string>();\n description = input<string>();\n completed = input(false, { transform: booleanAttribute });\n error = input(false, { transform: booleanAttribute });\n selected = input(false, { transform: booleanAttribute });\n /**\n * Prevents the step from being clicked or focused. Use for future steps\n * the user shouldn't reach yet (e.g. when validation runs step-by-step).\n * Leave completed steps enabled so users can navigate back to them.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Emits when the user clicks the step. Does not emit when the step is\n * selected (it's already the current step) or disabled.\n */\n stepSelect = output();\n\n /** @internal Set by parent HorizontalStepperComponent */\n _stepNumber = signal(0);\n\n protected onClick(): void {\n if (this.selected() || this.disabled()) return;\n this.stepSelect.emit();\n }\n}\n","<button\n class=\"tedi-horizontal-stepper-item__step\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [attr.aria-current]=\"selected() ? 'step' : null\"\n (click)=\"onClick()\"\n>\n <span class=\"tedi-horizontal-stepper-item__indicator\">\n @if (completed() && !error()) {\n <tedi-icon\n name=\"check\"\n color=\"white\"\n [size]=\"18\"\n [label]=\"'stepper.completed' | tediTranslate\"\n />\n } @else if (error()) {\n <tedi-icon\n name=\"exclamation\"\n color=\"white\"\n [size]=\"18\"\n [label]=\"'stepper.error' | tediTranslate\"\n />\n } @else {\n <span class=\"tedi-horizontal-stepper-item__number\">{{ _stepNumber() }}</span>\n }\n </span>\n <span class=\"tedi-horizontal-stepper-item__content\">\n <span class=\"tedi-horizontal-stepper-item__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"tedi-horizontal-stepper-item__description\">{{ description() }}</span>\n }\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { HorizontalStepperItemComponent } from \"./horizontal-stepper-item/horizontal-stepper-item.component\";\nimport { BreakpointFlag } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type HorizontalStepperBackground = \"default\" | \"transparent\";\n\n@Component({\n selector: \"tedi-horizontal-stepper\",\n templateUrl: \"./horizontal-stepper.component.html\",\n styleUrl: \"./horizontal-stepper.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-horizontal-stepper]\": \"true\",\n \"[class.tedi-horizontal-stepper--transparent]\":\n \"background() === 'transparent'\",\n \"[class.tedi-horizontal-stepper--compact]\": \"compact() === true\",\n \"[class.tedi-horizontal-stepper--compact-sm]\": \"compact() === 'sm'\",\n \"[class.tedi-horizontal-stepper--compact-md]\": \"compact() === 'md'\",\n \"[class.tedi-horizontal-stepper--compact-lg]\": \"compact() === 'lg'\",\n \"[class.tedi-horizontal-stepper--compact-xl]\": \"compact() === 'xl'\",\n \"[class.tedi-horizontal-stepper--compact-xxl]\": \"compact() === 'xxl'\",\n role: \"navigation\",\n \"[attr.aria-label]\": \"ariaLabel()\",\n },\n})\nexport class HorizontalStepperComponent {\n ariaLabel = input<string>();\n background = input<HorizontalStepperBackground>(\"default\");\n /**\n * Collapse labels so only indicators plus the selected step's label are visible.\n * `true` — always collapsed. A breakpoint (`'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`) — collapsed below that breakpoint. @default 'sm'\n */\n compact = input<BreakpointFlag>(\"sm\");\n\n items = contentChildren(HorizontalStepperItemComponent);\n\n private assignStepNumbers = effect(() => {\n this.items().forEach((item, index) => {\n item._stepNumber.set(index + 1);\n });\n });\n}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-dropdown-item-value-meta\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value__meta\",\n },\n})\nexport class DropdownItemValueMetaComponent {}\n","import { Observable } from \"rxjs\";\nimport { DialogRef } from \"@angular/cdk/dialog\";\n\n/**\n * Reference to a modal opened via `ModalService`.\n * Provides methods to close the modal and observe its lifecycle.\n */\nexport class ModalRef<R = unknown> {\n constructor(private readonly dialogRef: DialogRef<R>) {}\n\n /** Close the modal, optionally returning a result. */\n close(result?: R): void {\n this.dialogRef.close(result);\n }\n\n /** Observable that emits when the modal is closed, with the optional result value. */\n get closed(): Observable<R | undefined> {\n return this.dialogRef.closed;\n }\n\n /** Observable that emits when the backdrop is clicked. */\n get backdropClick(): Observable<MouseEvent> {\n return this.dialogRef.backdropClick;\n }\n\n /** Observable that emits on keyboard events within the modal. */\n get keydownEvents(): Observable<KeyboardEvent> {\n return this.dialogRef.keydownEvents;\n }\n\n /** Update the modal's width and height. */\n updateSize(width?: string, height?: string): this {\n this.dialogRef.updateSize(width, height);\n return this;\n }\n}\n","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\";\nimport { ModalRef } from \"./modal-ref\";\nimport type {\n ModalSize,\n ModalWidth,\n ModalPosition\n} from \"./modal.types\";\n\n/**\n * Modal component that works in two modes:\n *\n * **Service mode** When opened via `ModalService.open()`, acts as a\n * lightweight layout wrapper. CDK Dialog handles overlay, backdrop, focus trap,\n * scroll blocking, and keyboard events.\n *\n * **Standalone mode** (deprecated): When used directly in a template with `[(open)]`,\n * manages its own overlay, scroll lock, and focus. Migrate to `ModalService.open()`.\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 /** @deprecated Is modal open? Only used in standalone (deprecated) mode. */\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 /** @deprecated Whether clicking the backdrop closes the modal. Only used in standalone mode. */\n readonly closeOnBackdropClick = input(true);\n\n private readonly document = inject(DOCUMENT);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n /**\n * When a ModalRef is available, this component is inside a CDK Dialog\n * and should act as a layout-only wrapper.\n */\n readonly serviceMode = !!inject(ModalRef, { optional: true });\n\n private prevBodyOverflow: string = \"\";\n private prevFocusedElement: HTMLElement | null = null;\n\n private readonly isPresetWidth = computed(() =>\n ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as string[]).includes(this.width()),\n );\n\n /** Custom width for non-preset widths (legacy mode only). */\n readonly customWidth = computed(() =>\n !this.serviceMode && !this.isPresetWidth() ? this.width() : null,\n );\n\n readonly classes = computed(() => {\n const classList = [\"tedi-modal\"];\n\n if (this.serviceMode) {\n classList.push(\"tedi-modal--service\");\n } else {\n classList.push(`tedi-modal--${this.size()}`);\n\n if (this.isPresetWidth()) {\n classList.push(`tedi-modal--${this.width()}`);\n }\n\n if (this.position() === \"top\") {\n classList.push(\"tedi-modal--center\", \"tedi-modal--top\");\n } else {\n classList.push(`tedi-modal--${this.position()}`);\n }\n\n if (this.open()) {\n classList.push(\"tedi-modal--open\");\n }\n }\n\n return classList.join(\" \");\n });\n\n constructor() {\n if (this.serviceMode) return;\n\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 (this.serviceMode) return;\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.document.body.appendChild(this.host.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.serviceMode) return;\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 /** @internal */\n onBackdropClick(): void {\n if (this.closeOnBackdropClick()) {\n this.open.set(false);\n }\n }\n\n private handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.open.set(false);\n }\n };\n}\n","@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\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","import { InjectionToken } from \"@angular/core\";\nimport { BreakpointFlag } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type ModalSize = \"default\" | \"small\";\nexport type ModalWidthPreset = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ModalWidth = ModalWidthPreset | (string & {});\nexport type ModalPosition = \"center\" | \"top\" | \"left\" | \"right\";\nexport type ModalScrollBehavior = \"content\" | \"page\";\nexport type ModalFullscreen = BreakpointFlag;\n\nexport interface ModalConfig<D = unknown> {\n /** Data to pass to the modal content component. Accessible via `inject(MODAL_DATA)`. */\n data?: D;\n /** Modal size variant. @default 'default' */\n size?: ModalSize;\n /** Modal width — preset ('xs'–'xl') or custom CSS value (e.g. '800px'). @default 'sm' */\n width?: ModalWidth;\n /** Position of the modal. @default 'center' */\n position?: ModalPosition;\n /** Scroll behavior when content overflows. 'content' scrolls inside the modal, 'page' scrolls the overlay. @default 'content' */\n scrollBehavior?: ModalScrollBehavior;\n /** Whether clicking the backdrop closes the modal. @default true */\n closeOnBackdropClick?: boolean;\n /** Whether pressing Escape closes the modal. @default true */\n closeOnEscape?: boolean;\n /** Whether to show a close button in the header. @default true */\n showClose?: boolean;\n /** Fullscreen mode. `true` = always fullscreen, a breakpoint (`'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`) = fullscreen below that breakpoint. @default false */\n fullscreen?: ModalFullscreen;\n /** Max-width cap (e.g. '75%', '60vw'). Overrides the default 95vw limit. */\n maxWidth?: string;\n /** ARIA label for the dialog. */\n ariaLabel?: string;\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string;\n}\n\n/** Injection token for data passed to a modal opened via ModalService. */\nexport const MODAL_DATA = new InjectionToken<unknown>(\"TediModalData\");\n","import { Injectable, inject } from \"@angular/core\";\nimport { Dialog, DialogRef } from \"@angular/cdk/dialog\";\nimport { GlobalPositionStrategy, Overlay } from \"@angular/cdk/overlay\";\nimport { ComponentType } from \"@angular/cdk/portal\";\nimport { ModalRef } from \"./modal-ref\";\nimport { ModalConfig, ModalFullscreen, ModalPosition, ModalScrollBehavior, MODAL_DATA } from \"./modal.types\";\n\nconst WIDTH_PRESETS: readonly string[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\n\n@Injectable({ providedIn: \"root\" })\nexport class ModalService {\n private readonly dialog = inject(Dialog);\n private readonly overlay = inject(Overlay);\n\n /**\n * Open a modal dialog with the given component as content.\n *\n * @param component Component to render inside the modal.\n * @param config Modal configuration (size, width, position, data, etc.).\n * @returns A `ModalRef` to control and observe the modal.\n *\n * @example\n * ```ts\n * const ref = this.modalService.open(MyFormComponent, {\n * data: { userId: 123 },\n * width: 'md',\n * position: 'center',\n * });\n *\n * ref.closed.subscribe(result => console.log('Modal closed with:', result));\n * ```\n */\n open<R = unknown, D = unknown>(\n component: ComponentType<unknown>,\n config: ModalConfig<D> = {},\n ): ModalRef<R> {\n const {\n data,\n size = \"default\",\n width = \"sm\",\n position = \"center\",\n scrollBehavior = \"content\",\n closeOnBackdropClick = true,\n closeOnEscape = true,\n fullscreen = false,\n maxWidth,\n ariaLabel,\n ariaLabelledBy,\n } = config;\n\n const panelClasses = this.buildPanelClasses(size, width, position, scrollBehavior, fullscreen);\n const isPresetWidth = WIDTH_PRESETS.includes(width);\n\n const dialogRef = this.dialog.open<R, D>(component, {\n data,\n panelClass: panelClasses,\n backdropClass: \"tedi-modal-backdrop\",\n hasBackdrop: true,\n disableClose: true,\n ariaLabel,\n ariaLabelledBy,\n ariaModal: true,\n autoFocus: \"first-tabbable\",\n restoreFocus: true,\n positionStrategy: this.buildPositionStrategy(position, scrollBehavior),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n providers: (ref) => [\n { provide: ModalRef, useValue: new ModalRef<R>(ref) },\n { provide: MODAL_DATA, useValue: data },\n ],\n });\n\n if (!isPresetWidth) {\n dialogRef.overlayRef.overlayElement.style.width = width;\n }\n\n if (maxWidth) {\n dialogRef.overlayRef.overlayElement.style.setProperty(\"--_tedi-modal-max-width\", maxWidth);\n }\n\n this.setupDialogBehavior(dialogRef, scrollBehavior, closeOnBackdropClick, closeOnEscape);\n\n return new ModalRef<R>(dialogRef);\n }\n\n /** Close all open modals. */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n private buildPanelClasses(\n size: string,\n width: string,\n position: ModalPosition,\n scrollBehavior: ModalScrollBehavior,\n fullscreen: ModalFullscreen,\n ): string[] {\n const classes = [\n \"tedi-modal-dialog\",\n `tedi-modal-dialog--${size}`,\n ];\n\n if (WIDTH_PRESETS.includes(width)) {\n classes.push(`tedi-modal-dialog--${width}`);\n }\n\n if (position === \"top\") {\n classes.push(\"tedi-modal-dialog--center\", \"tedi-modal-dialog--top\");\n } else {\n classes.push(`tedi-modal-dialog--${position}`);\n }\n\n if (scrollBehavior === \"page\") {\n classes.push(\"tedi-modal-dialog--scroll-page\");\n }\n\n if (fullscreen === true) {\n classes.push(\"tedi-modal-dialog--fullscreen\");\n } else if (typeof fullscreen === \"string\") {\n classes.push(`tedi-modal-dialog--fullscreen-${fullscreen}`);\n }\n\n return classes;\n }\n\n private setupDialogBehavior<R>(\n dialogRef: DialogRef<R>,\n scrollBehavior: ModalScrollBehavior,\n closeOnBackdropClick: boolean,\n closeOnEscape: boolean,\n ): void {\n if (scrollBehavior === \"page\") {\n const host = dialogRef.overlayRef.hostElement;\n host.style.overflow = \"auto\";\n host.style.paddingBlock = \"var(--layout-grid-gutters-16)\";\n }\n\n if (closeOnBackdropClick) {\n dialogRef.backdropClick.subscribe(() => dialogRef.close());\n }\n\n if (closeOnEscape) {\n dialogRef.keydownEvents.subscribe((event) => {\n if (event.key === \"Escape\") {\n dialogRef.close();\n }\n });\n }\n }\n\n private buildPositionStrategy(\n position: ModalPosition,\n scrollBehavior: ModalScrollBehavior,\n ): GlobalPositionStrategy {\n const global = this.overlay.position().global();\n\n if (position === \"left\") {\n return global.left(\"0\").top(\"0\");\n }\n\n if (position === \"right\") {\n return global.right(\"0\").top(\"0\");\n }\n\n if (position === \"top\") {\n return global.centerHorizontally().top(\"var(--modal-top-margin)\");\n }\n\n if (scrollBehavior === \"page\") {\n return global.centerHorizontally().top(\"0\");\n }\n\n return global.centerHorizontally().centerVertically();\n }\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 host: {\n class: \"tedi-modal-content\",\n },\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 host: {\n class: \"tedi-modal-footer\",\n },\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\";\nimport { ModalRef } from \"../modal-ref\";\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 host: {\n class: \"tedi-modal-header\",\n },\n})\nexport class ModalHeaderComponent {\n /** Should show closing button? */\n readonly showClose = input(true);\n\n /** @deprecated Injected when used inside the old template-based tedi-modal. */\n private readonly modal = inject(ModalComponent, { optional: true });\n\n /** Injected when opened via ModalService. */\n private readonly modalRef = inject(ModalRef, { optional: true });\n\n closeModal() {\n if (this.modalRef) {\n this.modalRef.close();\n } else if (this.modal) {\n this.modal.open.set(false);\n }\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 class=\"tedi-modal-header__close\" (click)=\"closeModal()\"></button>\n }\n</div>\n<ng-content select=\"[tedi-modal-description]\" />\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n OnInit,\n model,\n inject,\n} from \"@angular/core\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\nimport { AccordionComponent } from \"../accordion/accordion.component\";\n\n/**\n * A single item inside a `tedi-accordion`. Owns the item's state (expanded)\n * and the inputs shared by header and content (selected, showIconCard,\n * defaultExpanded).\n *\n * Header-related configuration lives on `tedi-accordion-item-header`; body\n * styling lives on `tedi-accordion-item-content`.\n *\n * Use together with the header and content children:\n *\n * ```html\n * <tedi-accordion-item>\n * <tedi-accordion-item-header>\n * <span tedi-accordion-title>Title</span>\n * </tedi-accordion-item-header>\n * <tedi-accordion-item-content>Content</tedi-accordion-item-content>\n * </tedi-accordion-item>\n * ```\n *\n * The optional `[tedi-accordion-icon-card]` slot is projected as a direct\n * child of the item (not inside the header), because it occupies its own\n * column in the item's grid layout.\n */\n@Component({\n selector: \"tedi-accordion-item\",\n standalone: true,\n templateUrl: \"./accordion-item.component.html\",\n styleUrl: \"./accordion-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AccordionItemComponent implements OnInit {\n readonly idGenerator = inject(_IdGenerator);\n readonly contentId = this.idGenerator.getId(\"tedi-accordion-content\");\n readonly headerId = this.idGenerator.getId(\"tedi-accordion-header\");\n\n /**\n * Whether the accordion item is expanded initially.\n * Does not control the expanded state after initialization.\n */\n defaultExpanded = input(false);\n /**\n * Enables the icon-card layout variant. Affects both header and content\n * styling, so it lives on the item.\n */\n showIconCard = input(false);\n /**\n * Marks the accordion item as selected.\n */\n selected = input(false);\n\n expanded = model(false);\n\n private readonly accordion = inject(AccordionComponent, { optional: true });\n\n ngOnInit() {\n this.setExpanded(this.defaultExpanded());\n }\n\n toggle() {\n this.setExpanded(!this.expanded());\n }\n\n setExpanded(value: boolean) {\n this.expanded.set(value);\n this.accordion?.onItemToggled(this);\n }\n}\n","<div\n class=\"tedi-accordion__item\"\n [class.tedi-accordion__item--selected]=\"selected()\"\n [class.tedi-accordion__item--expanded]=\"expanded()\"\n>\n @if (showIconCard()) {\n <ng-content select=\"[tedi-accordion-icon-card]\"></ng-content>\n }\n\n <ng-content select=\"tedi-accordion-item-header\"></ng-content>\n\n <ng-content select=\"tedi-accordion-item-content\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n contentChildren,\n} from \"@angular/core\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./accordion.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionComponent {\n /**\n * Whether the accordion allows multiple items to be expanded at the same time.\n * If false, opening one item will collapse the others automatically.\n */\n allowMultiple = input(false);\n\n items = contentChildren(AccordionItemComponent);\n\n onItemToggled(activeItem: AccordionItemComponent) {\n if (this.allowMultiple()) return;\n\n if (activeItem.expanded()) {\n this.items().forEach((item) => {\n if (item !== activeItem) {\n item.setExpanded(false);\n }\n });\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { LinkComponent } from \"../../../navigation/link/link.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion-item-header\",\n standalone: true,\n templateUrl: \"./accordion-item-header.component.html\",\n styleUrl: \"./accordion-item-header.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n IconComponent,\n TextComponent,\n LinkComponent,\n TediTranslationPipe,\n ],\n host: {\n \"[class.tedi-accordion-item-header]\": \"true\",\n \"[class.tedi-accordion-item-header--hoverable]\": \"headerClickable()\",\n \"[class.tedi-accordion-item-header--expanded]\": \"expanded()\",\n \"[class.tedi-accordion-item-header--with-icon-card]\":\n \"item.showIconCard()\",\n \"[class]\": \"headerClass() ?? ''\",\n },\n})\nexport class AccordionItemHeaderComponent {\n protected readonly item = inject(AccordionItemComponent);\n\n /**\n * If false, disables header toggling and enables using interactive elements in the accordion header.\n */\n headerClickable = input(true);\n /**\n * Sets how the accordion title stretches horizontally.\n * `hug` - container sizes to its content.\n * `fill` - container expands to available space, moving any trailing elements to the end.\n */\n titleLayout = input<\"hug\" | \"fill\">(\"hug\");\n /** Label shown when accordion is collapsed */\n openLabel = input<string>(\"open\");\n /** Label shown when accordion is expanded */\n closeLabel = input<string>(\"close\");\n /**\n * Controls whether the expand/collapse label is shown.\n */\n showExpandLabel = input(true);\n /**\n * Controls whether the default expand/collapse action is shown.\n */\n showDefaultExpandAction = input(true);\n /**\n * Position of the expand action relative to the header content.\n */\n expandActionPosition = input<\"start\" | \"end\">(\"end\");\n /**\n * Custom CSS classes for the accordion header.\n */\n headerClass = input<string | null>(null);\n\n readonly headerId = this.item.headerId;\n readonly contentId = this.item.contentId;\n readonly expanded = this.item.expanded;\n\n readonly expandLabel = computed(() =>\n this.expanded() ? this.closeLabel() : this.openLabel(),\n );\n\n readonly showStartExpandAction = computed(\n () =>\n this.showDefaultExpandAction() && this.expandActionPosition() === \"start\",\n );\n\n readonly showEndExpandAction = computed(\n () =>\n this.showDefaultExpandAction() && this.expandActionPosition() === \"end\",\n );\n\n toggle() {\n this.item.toggle();\n }\n}\n","@if (headerClickable()) {\n <button\n [id]=\"headerId\"\n type=\"button\"\n class=\"tedi-accordion-item-header__trigger\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n >\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </button>\n} @else {\n <div [id]=\"headerId\" class=\"tedi-accordion-item-header__trigger\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </div>\n}\n\n<ng-template #headerContent>\n <div class=\"tedi-accordion-item-header__start\">\n <ng-content select=\"[tedi-accordion-start-action]\"></ng-content>\n\n <ng-content select=\"[tedi-accordion-before-title]\"></ng-content>\n\n <span\n class=\"tedi-accordion-item-header__title\"\n [class.tedi-accordion-item-header__title--grow]=\"titleLayout() === 'fill'\"\n >\n <span class=\"tedi-accordion-item-header__title-main\">\n @if (showStartExpandAction()) {\n <ng-container *ngTemplateOutlet=\"collapseButton\"></ng-container>\n }\n\n <span tedi-text color=\"secondary\" modifiers=\"normal\">\n <ng-content select=\"[tedi-accordion-title]\"></ng-content>\n </span>\n </span>\n\n <ng-content select=\"[tedi-accordion-start-description]\"></ng-content>\n </span>\n\n <ng-content select=\"[tedi-accordion-after-title]\"></ng-content>\n </div>\n\n <ng-content select=\"[tedi-accordion-end-description]\"></ng-content>\n\n @if (showEndExpandAction()) {\n <ng-container *ngTemplateOutlet=\"collapseButton\"></ng-container>\n }\n\n <ng-content select=\"[tedi-accordion-end-action]\"></ng-content>\n</ng-template>\n\n<ng-template #collapseButton>\n @if (headerClickable()) {\n <div\n tedi-text\n modifiers=\"normal\"\n class=\"tedi-accordion-item-header__expand-indicator\"\n [class.tedi-accordion-item-header__expand-indicator--with-label]=\"\n showExpandLabel()\n \"\n >\n {{ (showExpandLabel() ? expandLabel() : \"\") | tediTranslate }}\n <ng-container *ngTemplateOutlet=\"expandIcon\"></ng-container>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"tedi-accordion-item-header__toggle-button\"\n tedi-link\n [underline]=\"false\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-label]=\"\n !showExpandLabel() ? (expandLabel() | tediTranslate) : null\n \"\n >\n @if (showExpandLabel()) {\n {{ expandLabel() | tediTranslate }}\n }\n <ng-container *ngTemplateOutlet=\"expandIcon\"></ng-container>\n </button>\n }\n</ng-template>\n\n<ng-template #expandIcon>\n <tedi-icon\n aria-hidden=\"true\"\n name=\"expand_more\"\n class=\"tedi-accordion-item-header__icon\"\n [class.tedi-accordion-item-header__icon--expanded]=\"expanded()\"\n [class.tedi-accordion-item-header__icon--no-label]=\"!showExpandLabel()\"\n />\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion-item-content\",\n standalone: true,\n templateUrl: \"./accordion-item-content.component.html\",\n styleUrl: \"./accordion-item-content.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n \"[class.tedi-accordion-item-content]\": \"true\",\n \"[class.tedi-accordion-item-content--with-icon-card]\": \"item.showIconCard()\",\n \"[class]\": \"contentClass() ?? ''\",\n \"[id]\": \"contentId\",\n \"[attr.role]\": \"expanded() ? 'region' : null\",\n \"[attr.aria-labelledby]\": \"headerId\",\n \"[attr.aria-hidden]\": \"!expanded()\",\n \"[attr.inert]\": \"!expanded() ? '' : null\",\n },\n})\nexport class AccordionItemContentComponent {\n protected readonly item = inject(AccordionItemComponent);\n\n /**\n * Custom CSS classes for the accordion content.\n */\n contentClass = input<string | null>(null);\n\n readonly headerId = this.item.headerId;\n readonly contentId = this.item.contentId;\n readonly expanded = this.item.expanded;\n}\n","<div class=\"tedi-accordion-item-content__inner\">\n <ng-content></ng-content>\n</div>\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 makeEnvironmentProviders,\n} from \"@angular/core\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../tokens/theme.token\";\nimport {\n Theme,\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\";\n\nexport interface TediConfig {\n theme?: Theme;\n language?: Language;\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 ]);\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextGroupId","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-group/checkbox-group.component.ts","../../tedi/components/form/checkbox-group/checkbox-group.component.html","../../tedi/components/form/checkbox/checkbox.component.ts","../../tedi/components/form/checkbox-card/checkbox-card.component.ts","../../tedi/components/form/checkbox-card/checkbox-card.component.html","../../tedi/components/form/checkbox-card-group/checkbox-card-group.component.ts","../../tedi/components/form/radio-group/radio-group.component.ts","../../tedi/components/form/radio-group/radio-group.component.html","../../tedi/components/form/radio/radio.component.ts","../../tedi/components/form/radio-card-group/radio-card-group.component.ts","../../tedi/components/form/radio-card/radio-card.component.ts","../../tedi/components/form/radio-card/radio-card.component.html","../../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.tokens.ts","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value.component.ts","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value.component.html","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.ts","../../tedi/components/overlay/dropdown/dropdown-item/dropdown-item.component.html","../../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/loader/spinner/spinner.component.ts","../../tedi/components/loader/spinner/spinner.component.html","../../tedi/components/tags/tag/tag.component.ts","../../tedi/components/tags/tag/tag.component.html","../../tedi/components/form/select/select-templates.directive.ts","../../tedi/components/form/select/select.component.ts","../../tedi/components/form/select/select.component.html","../../tedi/components/form/toggle/toggle.component.ts","../../tedi/components/form/toggle/toggle.component.html","../../tedi/components/form/form-field/form-field-control.ts","../../tedi/components/form/form-field/form-field.component.ts","../../tedi/components/form/form-field/form-field.component.html","../../tedi/components/form/text-field/text-field.component.ts","../../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/filter/filter-group.component.ts","../../tedi/components/tags/status-indicator/status-indicator.component.ts","../../tedi/components/tags/status-badge/status-badge.component.ts","../../tedi/components/tags/status-badge/status-badge.component.html","../../tedi/components/filter/filter-content.directive.ts","../../tedi/components/filter/filter-prepend.directive.ts","../../tedi/components/filter/filter.component.ts","../../tedi/components/filter/filter.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/scroll-fade/scroll-fade.component.ts","../../tedi/components/helpers/scroll-fade/scroll-fade.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/navigation/horizontal-stepper/horizontal-stepper-item/horizontal-stepper-item.component.ts","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper-item/horizontal-stepper-item.component.html","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper.component.ts","../../tedi/components/navigation/horizontal-stepper/horizontal-stepper.component.html","../../tedi/components/overlay/modal/modal-ref.ts","../../tedi/components/overlay/modal/modal.types.ts","../../tedi/components/overlay/modal/modal.service.ts","../../tedi/components/navigation/pagination/pagination.utils.ts","../../tedi/components/navigation/pagination/pagination-results.directive.ts","../../tedi/components/overlay/modal/modal.component.ts","../../tedi/components/overlay/modal/modal.component.html","../../tedi/components/overlay/modal/modal-header/modal-header.component.ts","../../tedi/components/overlay/modal/modal-header/modal-header.component.html","../../tedi/components/overlay/modal/modal-content/modal-content.component.ts","../../tedi/components/overlay/modal/modal-content/modal-content.component.html","../../tedi/components/navigation/pagination/pagination-option-picker-modal/pagination-option-picker-modal.component.ts","../../tedi/components/navigation/pagination/pagination-option-picker-modal/pagination-option-picker-modal.component.html","../../tedi/components/navigation/pagination/pagination.component.ts","../../tedi/components/navigation/pagination/pagination.component.html","../../tedi/components/overlay/dropdown/dropdown-item-value/dropdown-item-value-meta.component.ts","../../tedi/components/overlay/modal/modal-footer/modal-footer.component.ts","../../tedi/components/cards/accordion/accordion-item/accordion-item.component.ts","../../tedi/components/cards/accordion/accordion-item/accordion-item.component.html","../../tedi/components/cards/accordion/accordion/accordion.component.ts","../../tedi/components/cards/accordion/accordion-item-header/accordion-item-header.component.ts","../../tedi/components/cards/accordion/accordion-item-header/accordion-item-header.component.html","../../tedi/components/cards/accordion/accordion-item-content/accordion-item-content.component.ts","../../tedi/components/cards/accordion/accordion-item-content/accordion-item-content.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\"\n | \"inherit\";\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/**\n * Flag that toggles a feature on/off, optionally only below a breakpoint.\n * `true` — always on. `false` — always off. A breakpoint name — on below that breakpoint.\n *\n * `'xs'` is intentionally excluded: \"below xs\" has no meaningful viewport and would\n * be a confusing duplicate of `true`. Use `true` for always-on.\n */\nexport type BreakpointFlag = boolean | Exclude<Breakpoint, \"xs\">;\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\", \"Select\"],\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 \"select.search\": {\n description: \"Placeholder text for search input in searchable select\",\n components: [\"Select\"],\n et: \"Otsi...\",\n en: \"Search...\",\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 \"stepper.error\": {\n description:\n \"Label for screen-reader that this step has errors (visually hidden)\",\n components: [\"HorizontalStepper\"],\n et: \"Viga\",\n en: \"Error\",\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 \"filter.clear-selection\": {\n description: \"Label for the clear-selection action in the Filter dropdown\",\n components: [\"Filter\"],\n et: \"Tühjenda valik\",\n en: \"Clear selection\",\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:\n \"Total results text. Returns the full localised string with count embedded — locales decide their own word order.\",\n components: [\"Table\", \"Pagination\"],\n et: (count?: number) => `${count ?? 0} ${count === 1 ? \"tulemus\" : \"tulemust\"}`,\n en: (count?: number) => `${count ?? 0} ${count === 1 ? \"result\" : \"results\"}`,\n ru: (count?: number) => `${count ?? 0} ${count === 1 ? \"результат\" : \"результа\"}`,\n },\n \"pagination.page-size\": {\n description: \"Label of page size select\",\n components: [\"Table\", \"Pagination\"],\n et: \"Kuva korraga\",\n en: \"Show per page\",\n ru: \"Показывать по\",\n },\n \"pagination.page-status\": {\n description:\n \"Status message announced to screen readers via an aria-live region when the page changes.\",\n components: [\"Pagination\"],\n et: (page?: number, total?: number) => `Lehekülg ${page ?? 0} / ${total ?? 0}`,\n en: (page?: number, total?: number) => `Page ${page ?? 0} of ${total ?? 0}`,\n ru: (page?: number, total?: number) => `Страница ${page ?? 0} из ${total ?? 0}`,\n },\n \"pagination.page-title\": {\n description:\n \"Title of the mobile page-jump picker modal, shown when `showModalTitle` is enabled.\",\n components: [\"Pagination\"],\n et: \"Vali lehekülg\",\n en: \"Select page\",\n ru: \"Выбрать страницу\",\n },\n \"pagination.page-size-title\": {\n description:\n \"Title of the mobile page-size picker modal, shown when `showModalTitle` is enabled.\",\n components: [\"Pagination\"],\n et: \"Tulemusi lehel\",\n en: \"Results per page\",\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 TEDITheme = \"default\" | \"dark\";\nexport type Theme = TEDITheme | string;\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>(\n THEME_COOKIE_NAME,\n this.defaultTheme\n );\n\n constructor() {\n effect(() => {\n const html = this.document.documentElement;\n const nextTheme = this.theme();\n\n for (let i = html.classList.length - 1; i >= 0; i--) {\n const className = html.classList.item(i);\n if (className?.startsWith(THEME_CLASS_PREFIX)) {\n html.classList.remove(className);\n }\n }\n\n html.classList.add(`${THEME_CLASS_PREFIX}${nextTheme}`);\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 type=\"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 computed,\n effect,\n forwardRef,\n inject,\n input,\n isDevMode,\n model,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport type { CheckboxComponent } from \"../checkbox/checkbox.component\";\n\nexport type CheckboxGroupDirection = \"horizontal\" | \"vertical\";\n\nlet nextGroupId = 0;\n\n@Component({\n standalone: true,\n imports: [TextComponent],\n selector: \"tedi-checkbox-group\",\n templateUrl: \"./checkbox-group.component.html\",\n styleUrl: \"./checkbox-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-checkbox-group\",\n \"[attr.role]\": \"isManaged() ? 'group' : null\",\n \"[attr.aria-labelledby]\": \"managedAriaLabelledby()\",\n \"[attr.aria-label]\": \"managedAriaLabel()\",\n \"[attr.aria-disabled]\": \"isManaged() && isDisabled() ? 'true' : null\",\n },\n})\nexport class CheckboxGroupComponent implements ControlValueAccessor {\n /**\n * Label text displayed above the checkbox group.\n */\n readonly label = input<string>();\n /**\n * Layout direction of the checkboxes.\n * @default horizontal\n */\n readonly direction = input<CheckboxGroupDirection>(\"horizontal\");\n /**\n * Selected values. Bind with `[(values)]` or use a FormControl on the group.\n * When provided, the group enters managed mode and coordinates `checked`\n * on every registered child.\n * @default []\n */\n readonly values = model<string[]>([]);\n /**\n * Disables the entire group. Propagates to all children.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n /**\n * Accessible name for the group. Use when no visible `label` is rendered.\n * Ignored when `label` or `ariaLabelledby` is provided.\n */\n readonly ariaLabel = input<string>();\n /**\n * ID of an external element that labels the group. Ignored when `label` is\n * provided.\n */\n readonly ariaLabelledby = input<string>();\n\n private readonly renderer = inject(Renderer2);\n protected readonly labelId = `tedi-checkbox-group-${++nextGroupId}-label`;\n private readonly children = signal<readonly CheckboxComponent[]>([]);\n private readonly cvaDisabled = signal(false);\n private readonly managed = signal(false);\n\n private onChange: (value: string[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n readonly isManaged = this.managed.asReadonly();\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly managedAriaLabelledby = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label()) return this.labelId;\n return this.ariaLabelledby() ?? null;\n });\n protected readonly managedAriaLabel = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label() || this.ariaLabelledby()) return null;\n return this.ariaLabel() ?? null;\n });\n\n constructor() {\n effect(() => {\n if (this.values().length > 0) {\n this.managed.set(true);\n }\n this.syncChildrenChecked();\n });\n }\n\n writeValue(values: string[] | null): void {\n this.values.set(values ?? []);\n this.managed.set(true);\n }\n\n registerOnChange(fn: (values: string[]) => void): void {\n this.onChange = fn;\n this.managed.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n this.managed.set(true);\n }\n\n registerChild(child: CheckboxComponent): void {\n this.children.update((list) => [...list, child]);\n this.applyCheckedTo(child);\n }\n\n unregisterChild(child: CheckboxComponent): void {\n this.children.update((list) => list.filter((c) => c !== child));\n }\n\n onChildChange(value: string, checked: boolean): void {\n if (!this.isManaged()) return;\n const current = this.values();\n const has = current.includes(value);\n if (checked && !has) {\n this.values.set([...current, value]);\n } else if (!checked && has) {\n this.values.set(current.filter((v) => v !== value));\n } else {\n return;\n }\n this.onChange(this.values());\n this.onTouched();\n }\n\n isSelected(value: string | undefined): boolean {\n return value !== undefined && this.values().includes(value);\n }\n\n private syncChildrenChecked(): void {\n if (!this.isManaged()) return;\n for (const child of this.children()) {\n this.applyCheckedTo(child);\n }\n }\n\n private applyCheckedTo(child: CheckboxComponent): void {\n if (!this.isManaged()) return;\n const childVal = child.value();\n if (childVal === undefined) return;\n const desired = this.values().includes(childVal);\n const el = child.hostElement;\n if (el.checked !== desired) {\n this.renderer.setProperty(el, \"checked\", desired);\n }\n }\n\n /** @internal */\n warnMissingValue(): void {\n if (isDevMode()) {\n console.warn(\n \"[tedi-checkbox-group] A checkbox inside a managed group is missing a [value] input and will be ignored.\",\n );\n }\n }\n}\n","@if (label()) {\n <p [id]=\"labelId\" class=\"tedi-checkbox-group__label\" tedi-text color=\"secondary\">{{ label() }}</p>\n}\n<div class=\"tedi-checkbox-group__checks\" [class.tedi-checkbox-group__checks--vertical]=\"direction() === 'vertical'\">\n <ng-content />\n</div>\n<div class=\"tedi-checkbox-group__subtexts\">\n <ng-content select=\"tedi-feedback-text\" />\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CheckboxGroupComponent } from \"../checkbox-group/checkbox-group.component\";\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 \"[disabled]\": \"effectiveDisabled()\",\n \"(change)\": \"handleChange()\",\n },\n})\nexport class CheckboxComponent implements OnInit, OnDestroy {\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 * Identity of this checkbox inside a managed `<tedi-checkbox-group>`.\n * Required when the parent group is managed (has a FormControl or\n * `[(values)]` binding). Ignored otherwise.\n */\n readonly value = input<string>();\n /**\n * Disables this checkbox. An enclosing disabled `<tedi-checkbox-group>`\n * forces disabled regardless of this input.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly group = inject(CheckboxGroupComponent, { optional: true });\n private warned = false;\n\n readonly effectiveDisabled = computed(\n () => this.disabled() || (this.group?.isDisabled() ?? false),\n );\n\n get hostElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.group?.registerChild(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterChild(this);\n }\n\n handleChange(): void {\n if (!this.group || !this.group.isManaged()) return;\n if (this.effectiveDisabled()) return;\n const v = this.value();\n if (v === undefined) {\n if (!this.warned) {\n this.warned = true;\n this.group.warnMissingValue();\n }\n return;\n }\n this.group.onChildChange(v, this.hostElement.checked);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type CheckboxCardVariant = \"primary\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"label[tedi-checkbox-card]\",\n templateUrl: \"./checkbox-card.component.html\",\n styleUrl: \"./checkbox-card.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-checkbox-card\",\n \"[class.tedi-checkbox-card--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-checkbox-card--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-checkbox-card--hide-indicator]\": \"!showIndicator()\",\n },\n})\nexport class CheckboxCardComponent {\n /**\n * Visual variant of the card.\n * @default primary\n */\n readonly variant = input<CheckboxCardVariant>(\"primary\");\n\n /**\n * Whether to show the checkbox indicator.\n * When false, the checkbox is visually hidden but remains functional.\n * @default true\n */\n readonly showIndicator = input<boolean>(true);\n}\n","<div class=\"tedi-checkbox-card__content\">\n <ng-content />\n</div>\n<ng-content select=\"tedi-feedback-text\" />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-checkbox-card-group\",\n template: \"<ng-content />\",\n styleUrl: \"./checkbox-card-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-checkbox-card-group\",\n },\n})\nexport class CheckboxCardGroupComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n isDevMode,\n model,\n Renderer2,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { TextComponent } from \"../../base/text/text.component\";\nimport type { RadioComponent } from \"../radio/radio.component\";\n\nexport type RadioGroupDirection = \"horizontal\" | \"vertical\";\n\nlet nextGroupId = 0;\n\n@Component({\n standalone: true,\n imports: [TextComponent],\n selector: \"tedi-radio-group\",\n templateUrl: \"./radio-group.component.html\",\n styleUrl: \"./radio-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-radio-group\",\n \"[attr.role]\": \"isManaged() ? 'radiogroup' : null\",\n \"[attr.aria-labelledby]\": \"managedAriaLabelledby()\",\n \"[attr.aria-label]\": \"managedAriaLabel()\",\n \"[attr.aria-disabled]\": \"isManaged() && isDisabled() ? 'true' : null\",\n },\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n /**\n * Label text displayed above the radio group.\n */\n readonly label = input<string>();\n /**\n * Layout direction of the radios.\n * @default horizontal\n */\n readonly direction = input<RadioGroupDirection>(\"horizontal\");\n /**\n * Selected value. Bind with `[(value)]` or use a FormControl on the group.\n * When set, the group enters managed mode and coordinates `checked` on every\n * registered child.\n * @default null\n */\n readonly value = model<string | null>(null);\n /**\n * Shared `name` attribute applied to child radios. Auto-generated when\n * omitted. Pass an explicit `name` to avoid SSR hydration mismatches.\n */\n readonly name = input<string>();\n /**\n * Disables the entire group. Propagates to all children.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n /**\n * Accessible name for the group. Use when no visible `label` is rendered.\n * Ignored when `label` or `ariaLabelledby` is provided.\n */\n readonly ariaLabel = input<string>();\n /**\n * ID of an external element that labels the group. Ignored when `label` is\n * provided.\n */\n readonly ariaLabelledby = input<string>();\n\n private readonly renderer = inject(Renderer2);\n private readonly autoName = `tedi-radio-group-${++nextGroupId}`;\n protected readonly labelId = `${this.autoName}-label`;\n private readonly children = signal<readonly RadioComponent[]>([]);\n private readonly cvaDisabled = signal(false);\n private readonly managed = signal(false);\n\n private onChange: (value: string | null) => void = () => { };\n private onTouched: () => void = () => { };\n\n readonly isManaged = this.managed.asReadonly();\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n protected readonly managedAriaLabelledby = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label()) return this.labelId;\n return this.ariaLabelledby() ?? null;\n });\n protected readonly managedAriaLabel = computed<string | null>(() => {\n if (!this.isManaged()) return null;\n if (this.label() || this.ariaLabelledby()) return null;\n return this.ariaLabel() ?? null;\n });\n\n constructor() {\n effect(() => {\n if (this.value() !== null) {\n this.managed.set(true);\n }\n this.syncChildrenChecked();\n });\n\n effect(() => {\n if (!this.isManaged()) return;\n const groupName = this.name() ?? this.autoName;\n for (const child of this.children()) {\n this.renderer.setAttribute(child.hostElement, \"name\", groupName);\n }\n });\n }\n\n writeValue(value: string | null): void {\n this.value.set(value);\n this.managed.set(true);\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n this.managed.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n this.managed.set(true);\n }\n\n registerChild(child: RadioComponent): void {\n this.children.update((list) => [...list, child]);\n this.applyCheckedTo(child);\n }\n\n unregisterChild(child: RadioComponent): void {\n this.children.update((list) => list.filter((c) => c !== child));\n }\n\n onChildChange(value: string): void {\n if (!this.isManaged()) return;\n if (this.value() === value) return;\n this.value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n\n isSelected(value: string | undefined): boolean {\n return value !== undefined && this.value() === value;\n }\n\n private syncChildrenChecked(): void {\n if (!this.isManaged()) return;\n for (const child of this.children()) {\n this.applyCheckedTo(child);\n }\n }\n\n private applyCheckedTo(child: RadioComponent): void {\n if (!this.isManaged()) return;\n const childVal = child.value();\n if (childVal === undefined) return;\n const desired = childVal === this.value();\n const el = child.hostElement;\n if (el.checked !== desired) {\n this.renderer.setProperty(el, \"checked\", desired);\n }\n }\n\n /** @internal */\n warnMissingValue(): void {\n if (isDevMode()) {\n console.warn(\n \"[tedi-radio-group] A radio inside a managed group is missing a [value] input and will be ignored.\",\n );\n }\n }\n}\n","@if (label()) {\n <p [id]=\"labelId\" class=\"tedi-radio-group__label\" tedi-text color=\"secondary\">{{ label() }}</p>\n}\n<div class=\"tedi-radio-group__checks\" [class.tedi-radio-group__checks--vertical]=\"direction() === 'vertical'\">\n <ng-content />\n</div>\n<div class=\"tedi-radio-group__subtexts\">\n <ng-content select=\"tedi-feedback-text\" />\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RadioGroupComponent } from \"../radio-group/radio-group.component\";\n\nexport type RadioSize = \"default\" | \"large\";\n\n@Component({\n standalone: true,\n selector: \"input[type=radio][tedi-radio]\",\n template: \"\",\n styleUrl: \"./radio.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-radio--large]\": \"size() === 'large'\",\n \"[class.tedi-radio--invalid]\": \"invalid()\",\n \"[disabled]\": \"effectiveDisabled()\",\n \"(change)\": \"handleChange()\",\n },\n})\nexport class RadioComponent implements OnInit, OnDestroy {\n /**\n * Size of the radio.\n * @default default\n */\n readonly size = input<RadioSize>(\"default\");\n /**\n * Is radio invalid?\n * @default false\n */\n readonly invalid = input(false);\n /**\n * Identity of this radio inside a managed `<tedi-radio-group>`. Required\n * when the parent group is managed (has a FormControl or `[(value)]`\n * binding). Ignored otherwise.\n */\n readonly value = input<string>();\n /**\n * Disables this radio. An enclosing disabled `<tedi-radio-group>` forces\n * disabled regardless of this input.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly group = inject(RadioGroupComponent, { optional: true });\n private warned = false;\n\n readonly effectiveDisabled = computed(\n () => this.disabled() || (this.group?.isDisabled() ?? false),\n );\n\n get hostElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.group?.registerChild(this);\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterChild(this);\n }\n\n handleChange(): void {\n if (!this.group || !this.group.isManaged()) return;\n if (this.effectiveDisabled()) return;\n const v = this.value();\n if (v === undefined) {\n if (!this.warned) {\n this.warned = true;\n this.group.warnMissingValue();\n }\n return;\n }\n if (this.hostElement.checked) {\n this.group.onChildChange(v);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n standalone: true,\n selector: \"tedi-radio-card-group\",\n template: \"<ng-content />\",\n styleUrl: \"./radio-card-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-radio-card-group\",\n \"[class.tedi-radio-card-group--grouped]\": \"grouped()\",\n },\n})\nexport class RadioCardGroupComponent {\n /**\n * Renders children in a button-group style layout with shared borders and\n * no gap. Child `tedi-radio-card` instances automatically inherit this and\n * do not need their own `grouped` input.\n * @default false\n */\n readonly grouped = input<boolean>(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { RadioCardGroupComponent } from \"../radio-card-group/radio-card-group.component\";\n\nexport type RadioCardVariant = \"primary\" | \"secondary\";\n\n@Component({\n standalone: true,\n selector: \"label[tedi-radio-card]\",\n templateUrl: \"./radio-card.component.html\",\n styleUrl: \"./radio-card.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-radio-card\",\n \"[class.tedi-radio-card--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-radio-card--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-radio-card--grouped]\": \"isGrouped()\",\n \"[class.tedi-radio-card--hide-indicator]\": \"!showIndicator()\",\n },\n})\nexport class RadioCardComponent {\n /**\n * Visual variant of the card.\n * @default primary\n */\n readonly variant = input<RadioCardVariant>(\"primary\");\n /**\n * Whether the card is part of a button-group style layout. Prefer setting\n * `grouped` on the enclosing `tedi-radio-card-group` instead; this input\n * is retained for standalone cards outside a group.\n *\n * The effective state is `grouped || parentGrouped` (see `isGrouped()` and\n * `RadioCardGroupComponent`): a child cannot opt out when its parent is\n * grouped.\n * @default false\n */\n readonly grouped = input(false);\n\n /**\n * Whether to show the radio indicator.\n * When false, the radio is visually hidden but remains functional.\n * @default true\n */\n readonly showIndicator = input<boolean>(true);\n\n private readonly cardGroup = inject(RadioCardGroupComponent, {\n optional: true,\n });\n\n readonly isGrouped = computed(\n () => this.grouped() || (this.cardGroup?.grouped() ?? false),\n );\n}\n","<div class=\"tedi-radio-card__content\">\n <ng-content />\n</div>\n<ng-content select=\"tedi-feedback-text\" />\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 * Should position flip to opposite direction when overflowing screen?\n * @default false\n */\n preventOverflow = input(false);\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 /**\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 /** 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]=\"appendTo()\"\n [floatUiLoose]=\"floatUiComponent\"\n [targetElement]=\"popoverTrigger().host.nativeElement\"\n [loosePlacement]=\"position()\"\n [preventOverflow]=\"position().includes('auto') ? false : preventOverflow()\"\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\" | \"dialog\" | \"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]\": \"ariaHaspopup()\",\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 { InjectionToken, Signal, WritableSignal } from \"@angular/core\";\n\nexport interface DropdownApi {\n /** Current value of the dropdown. Used to track the selected option in listbox mode. */\n value: WritableSignal<string | undefined>;\n /** ID of the float-ui container element. Used to link trigger and content for accessibility. */\n containerId: WritableSignal<string>;\n /** Move focus to the next enabled item after the given element. */\n focusNextItem(fromEl: HTMLLIElement): void;\n /** Move focus to the previous enabled item before the given element. */\n focusPrevItem(fromEl: HTMLLIElement): void;\n /** Move focus to the first enabled item in the dropdown. */\n focusFirstItem(): void;\n /** Move focus to the last enabled item in the dropdown. */\n focusLastItem(): void;\n /** Close the dropdown and reset active item state. */\n hideDropdown(): void;\n /** Reference to the dropdown trigger directive. Used to read trigger dimensions and return focus. */\n dropdownTrigger(): { host: { nativeElement: HTMLElement } } | undefined;\n}\n\nexport const DROPDOWN_API = new InjectionToken<DropdownApi>(\"DropdownApi\");\n\nexport interface DropdownContentApi {\n /** The ARIA role of the dropdown content. Determines keyboard interaction and accessibility semantics. */\n dropdownRole: Signal<\"menu\" | \"listbox\">;\n}\n\nexport const DROPDOWN_CONTENT_API = new InjectionToken<DropdownContentApi>(\n \"DropdownContentApi\",\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CheckboxComponent } from \"../../../form/checkbox/checkbox.component\";\n\nexport type DropdownItemValueType = \"default\" | \"checkbox\" | \"radio\";\nexport type DropdownItemValueLayout = \"horizontal\" | \"vertical\";\n\n@Component({\n selector: \"tedi-dropdown-item-value\",\n templateUrl: \"./dropdown-item-value.component.html\",\n styleUrl: \"./dropdown-item-value.component.scss\",\n standalone: true,\n imports: [CheckboxComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value\",\n \"[class.tedi-dropdown-item-value--vertical]\": \"layout() === 'vertical'\",\n \"[class.tedi-dropdown-item-value--horizontal]\": \"layout() === 'horizontal'\",\n \"[class.tedi-dropdown-item-value--checkbox]\": \"type() === 'checkbox'\",\n \"[class.tedi-dropdown-item-value--radio]\": \"type() === 'radio'\",\n },\n})\nexport class DropdownItemValueComponent {\n /**\n * Type of item value - controls selection indicator\n * - 'default': No selection indicator\n * - 'checkbox': Shows checkbox (for multiselect)\n * - 'radio': Shows radio button (for single select listbox)\n * @default 'default'\n */\n readonly type = input<DropdownItemValueType>(\"default\");\n\n /**\n * Layout: 'horizontal' (side-by-side) or 'vertical' (stacked)\n * @default 'horizontal'\n */\n readonly layout = input<DropdownItemValueLayout>(\"horizontal\");\n\n /**\n * Whether the item is selected (controls checkbox/radio state)\n * @default false\n */\n readonly selected = input<boolean>(false);\n\n /**\n * Whether the checkbox is in indeterminate state\n * @default false\n */\n readonly indeterminate = input<boolean>(false);\n\n /**\n * Whether the item is disabled\n * @default false\n */\n readonly disabled = input<boolean>(false);\n}\n","@if (type() === 'checkbox') {\n <input\n type=\"checkbox\"\n tedi-checkbox\n class=\"tedi-dropdown-item-value__checkbox\"\n tabindex=\"-1\"\n [checked]=\"selected()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation()\"\n />\n} @else if (type() === 'radio') {\n <input\n type=\"radio\"\n class=\"tedi-dropdown-item-value__radio\"\n tabindex=\"-1\"\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n<ng-content select=\"tedi-icon, [tediIcon]\" />\n<div class=\"tedi-dropdown-item-value__content\">\n <ng-content select=\"tedi-dropdown-item-value-label\" />\n <ng-content select=\"tedi-dropdown-item-value-meta\" />\n</div>\n<ng-content />\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-dropdown-item-value-label\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value__label\",\n },\n})\nexport class DropdownItemValueLabelComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n ElementRef,\n HostListener,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n DROPDOWN_API,\n DROPDOWN_CONTENT_API,\n DropdownApi,\n DropdownContentApi,\n} from \"../dropdown.tokens\";\nimport { DropdownItemValueComponent } from \"../dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../dropdown-item-value/dropdown-item-value-label.component\";\n\n@Component({\n selector: \"li[tedi-dropdown-item]\",\n standalone: true,\n imports: [DropdownItemValueComponent, DropdownItemValueLabelComponent],\n templateUrl: \"./dropdown-item.component.html\",\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<DropdownApi>(DROPDOWN_API);\n readonly dropdownContent = inject<DropdownContentApi>(DROPDOWN_CONTENT_API);\n\n /** Check if custom dropdown-item-value is provided */\n readonly customItemValue = contentChild(DropdownItemValueComponent);\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","<ng-content select=\"tedi-dropdown-item-value\" />\n\n@if (!customItemValue()) {\n <tedi-dropdown-item-value>\n <tedi-dropdown-item-value-label>\n <ng-content />\n </tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { DropdownItemComponent } from \"../dropdown-item/dropdown-item.component\";\nimport { DROPDOWN_API, DROPDOWN_CONTENT_API } from \"../dropdown.tokens\";\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]\": \"containerId() + '_trigger'\",\n },\n providers: [\n {\n provide: DROPDOWN_CONTENT_API,\n useExisting: forwardRef(() => DropdownContentComponent),\n },\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 private readonly dropdownApi = inject(DROPDOWN_API);\n readonly containerId = computed(() => this.dropdownApi.containerId());\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\";\nimport { DROPDOWN_API } from \"./dropdown.tokens\";\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 providers: [\n {\n provide: DROPDOWN_API,\n useExisting: DropdownComponent,\n },\n ],\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 signal,\n OnInit,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { ButtonComponent } from \"../../buttons/button/button.component\";\nimport { ClosingButtonComponent } from \"../../buttons/closing-button/closing-button.component\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\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\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\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 TediTranslationPipe\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent implements OnInit, ControlValueAccessor {\n readonly today = new Date();\n readonly uniqueId = `tedi-date-picker-id-${datePickerId++}`;\n\n private formDisabled = signal(false);\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private emitIfChanged(value: Date | null): void {\n const current = this.selected();\n const changed = value === null\n ? current !== null\n : !current || !isSameDay(value, current);\n\n if (changed) {\n this.onChange(value);\n }\n }\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 /** Internal computed for combined disabled state (inputDisabled + formDisabled from reactive forms) */\n readonly fieldDisabled = computed(() => this.inputDisabled() || this.formDisabled());\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 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 // ControlValueAccessor implementation\n writeValue(value: Date | null): void {\n this.selected.set(value);\n this.inputValue.set(value ? formatDate(value) : \"\");\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.formDisabled.set(disabled);\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.emitIfChanged(day.date);\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 this.onTouched();\n\n if (!this.allowManualInput()) return;\n\n const selected = this.selected();\n const parsed = parseDate(this.inputValue());\n\n if (parsed) {\n this.emitIfChanged(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.emitIfChanged(null);\n this.inputValue.set(\"\");\n this.selected.set(null);\n }\n\n closeCalendar() {\n this.popover().floatUiComponent().hide();\n this.inputElement().nativeElement.focus();\n this.onTouched();\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]=\"!fieldDisabled() && popover().floatUiComponent().state\"\n [attr.aria-controls]=\"uniqueId\"\n [attr.aria-readonly]=\"!allowManualInput()\"\n [readOnly]=\"!allowManualInput()\"\n [value]=\"inputValue()\"\n [disabled]=\"fieldDisabled()\"\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 [ariaLabel]=\"'date-picker.clear-date' | tediTranslate\"\n [disabled]=\"fieldDisabled()\"\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 [preventOverflow]=\"true\"\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]=\"'date-picker.open-calendar' | tediTranslate\"\n [disabled]=\"fieldDisabled()\"\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 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 private readonly sizeConfig: Record<SpinnerSize, { strokeWidth: number; r: number }> = {\n 10: { strokeWidth: 4.4, r: 19.8 },\n 16: { strokeWidth: 5.5, r: 19.25 },\n 48: { strokeWidth: 3.6667, r: 20.1667 },\n };\n\n strokeWidth = computed(() => this.sizeConfig[this.size()].strokeWidth);\n r = computed(() => this.sizeConfig[this.size()].r);\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 [attr.r]=\"r()\"\n fill=\"none\"\n ></circle>\n</svg>","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 { Directive, TemplateRef, inject } from \"@angular/core\";\n\n/**\n * Context provided to custom option templates.\n */\nexport interface SelectOptionContext<T = unknown> {\n /** The option item data */\n $implicit: T;\n /** The option item data (explicit reference) */\n item: T;\n /** Index of the option in the list */\n index: number;\n /** Whether this option is currently selected */\n selected: boolean;\n /** Whether this option is disabled */\n disabled: boolean;\n}\n\n/**\n * Context provided to custom value templates (for displaying selected value in trigger).\n */\nexport interface SelectValueContext<T = unknown> {\n /** The selected item data */\n $implicit: T;\n /** The selected item data (explicit reference) */\n item: T;\n /** The label string for the selected item */\n label: string;\n}\n\n/**\n * Directive for custom option template rendering in the dropdown.\n *\n * @example\n * ```html\n * <tedi-select [options]=\"options\">\n * <ng-template tediSelectOption let-item>\n * <div class=\"custom-option\">\n * <strong>{{ item.title }}</strong>\n * <span>{{ item.description }}</span>\n * </div>\n * </ng-template>\n * </tedi-select>\n * ```\n */\n@Directive({\n selector: \"[tediSelectOption]\",\n standalone: true,\n})\nexport class SelectOptionTemplateDirective<T = unknown> {\n template = inject<TemplateRef<SelectOptionContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: SelectOptionTemplateDirective<T>,\n ctx: unknown\n ): ctx is SelectOptionContext<T> {\n return true;\n }\n}\n\n/**\n * Directive for custom value template rendering (selected value display in trigger).\n * Used for single-select to display custom content like colors, icons, etc.\n *\n * @example\n * ```html\n * <tedi-select [options]=\"colors\" bindLabel=\"name\" bindValue=\"id\">\n * <ng-template tediSelectValue let-item>\n * <div class=\"color-swatch\" [style.background]=\"item.color\"></div>\n * </ng-template>\n * </tedi-select>\n * ```\n */\n@Directive({\n selector: \"[tediSelectValue]\",\n standalone: true,\n})\nexport class SelectValueTemplateDirective<T = unknown> {\n template = inject<TemplateRef<SelectValueContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: SelectValueTemplateDirective<T>,\n ctx: unknown\n ): ctx is SelectValueContext<T> {\n return true;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, OverlayModule } from \"@angular/cdk/overlay\";\nimport { CdkListbox, CdkListboxModule } from \"@angular/cdk/listbox\";\nimport {\n AfterContentChecked,\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n signal,\n viewChild,\n viewChildren,\n ViewEncapsulation,\n forwardRef,\n computed,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { IconComponent, TextComponent } from \"../../base\";\nimport { ClosingButtonComponent } from \"../../buttons\";\nimport { TediTranslationPipe } from \"../../../services\";\nimport { ComponentInputs } from \"../../../types\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { TagComponent } from \"../../tags/tag/tag.component\";\nimport { DropdownItemValueComponent } from \"../../overlay/dropdown/dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../../overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component\";\nimport {\n SelectOptionTemplateDirective,\n SelectValueTemplateDirective,\n SelectOptionContext,\n SelectValueContext,\n} from \"./select-templates.directive\";\nimport { InputSize, InputState } from \"../form-field/form-field.component\";\nexport type SelectInputSize = Exclude<InputSize, \"large\">;\n\nexport interface SelectOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n group?: string;\n [key: string]: unknown;\n}\n\nexport interface SelectOptionGroup<T = unknown> {\n label: string;\n options: SelectOption<T>[];\n}\n\nexport type GroupByFn<T = unknown> = (item: T) => string | undefined;\nexport type CompareWithFn<T = unknown> = (a: T, b: T) => boolean;\n\nexport enum SpecialOptionControls {\n SELECT_ALL = \"\\0SELECT_ALL\",\n SELECT_GROUP = \"\\0SELECT_GROUP_\",\n}\n\n@Component({\n selector: \"tedi-select\",\n imports: [\n CommonModule,\n OverlayModule,\n CdkListboxModule,\n ClosingButtonComponent,\n IconComponent,\n LabelComponent,\n FeedbackTextComponent,\n TextComponent,\n TagComponent,\n TediTranslationPipe,\n DropdownItemValueComponent,\n DropdownItemValueLabelComponent,\n ],\n templateUrl: \"./select.component.html\",\n styleUrl: \"./select.component.scss\",\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-select\",\n \"[class.tedi-select--multiselect]\": \"allowMultiple()\",\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent<T = unknown> implements AfterContentChecked, AfterViewChecked, ControlValueAccessor {\n /**\n * Unique identifier for the select input element.\n * Used for label association and accessibility.\n */\n inputId = input.required<string>();\n\n /**\n * Label text displayed above the select.\n */\n label = input<string>();\n\n /**\n * Whether the field is required.\n * @default false\n */\n required = input<boolean>(false);\n\n /**\n * Placeholder text shown when no value is selected.\n * @default \"\"\n */\n placeholder = input<string>(\"\");\n\n /**\n * Visual state of the input.\n * @default \"default\"\n */\n state = input<InputState>(\"default\");\n\n /**\n * Size variant of the select.\n * @default \"default\"\n */\n size = input<SelectInputSize>(\"default\");\n\n /**\n * Whether to show a clear button when a value is selected.\n * @default false\n */\n clearable = input<boolean>(false);\n\n /**\n * Element reference used to determine dropdown width.\n * When null, dropdown width matches the host element.\n */\n dropdownWidthRef = input<ElementRef | null>();\n\n /**\n * Configuration for the feedback text displayed below the select.\n */\n feedbackText = input<ComponentInputs<FeedbackTextComponent>>();\n\n /**\n * Array of options to display in the dropdown.\n * Can be an array of objects or primitive values.\n * @default []\n */\n options = input<T[]>([]);\n\n /**\n * Property name to use as the display label for object items.\n * @default \"label\"\n */\n bindLabel = input<string>(\"label\");\n\n /**\n * Property name to use as the value for object items.\n * When undefined, the entire object is used as the value.\n */\n bindValue = input<string | undefined>(undefined);\n\n /**\n * Whether multiple items can be selected.\n * @default false\n */\n allowMultiple = input<boolean>(false);\n\n /**\n * Property name or function used to group options.\n * When a string, uses that property from the item.\n * When a function, calls it with each item to determine the group.\n */\n groupBy = input<string | GroupByFn<T> | undefined>(undefined);\n\n /**\n * Whether to show a \"Select All\" option in multiselect mode.\n * @default false\n */\n showSelectAll = input<boolean>(false);\n\n /**\n * Whether group headers are selectable in multiselect mode.\n * Clicking a group header selects/deselects all options in that group.\n * @default false\n */\n selectableGroups = input<boolean>(false);\n\n /**\n * Whether selected tags are individually removable in multiselect mode.\n * @default false\n */\n isTagRemovable = input<boolean>(false);\n\n /**\n * Whether selected tags wrap to multiple rows in multiselect mode.\n * When false, overflow tags are hidden and a counter is shown.\n * @default false\n */\n multiRow = input<boolean>(false);\n\n /**\n * Function used to compare option values for equality.\n * Used to determine which options are selected.\n * @default (a, b) => a === b\n */\n compareWith = input<CompareWithFn>((a, b) => a === b);\n\n /**\n * Property name to check for disabled state on items.\n * @default \"disabled\"\n */\n disabledKey = input<string>(\"disabled\");\n\n /**\n * Text displayed when no options match the search term.\n */\n noOptionsMessage = input<string>();\n\n /**\n * Maximum height of the dropdown menu in pixels.\n * When not set, the dropdown height is calculated based on available viewport space.\n */\n maxDropdownHeight = input<number | undefined>();\n\n /**\n * Layout type for the dropdown options.\n * - `\"menu\"` (default): vertical list of options.\n * - `\"grid\"`: swatch grid layout for use with custom option templates\n * (e.g. color or icon pickers). Customizable via `--tedi-swatch-size`,\n * `--tedi-swatch-gap`, and `--tedi-swatch-columns` CSS properties.\n * @default \"menu\"\n */\n dropdownType = input<'menu' | 'grid'>('menu');\n\n /**\n * Whether the select has a search input for filtering options.\n * @default false\n */\n searchable = input<boolean>(false);\n\n /**\n * Custom search function for filtering options.\n * When provided, overrides the default label-based search.\n * Receives the search term and the option item (with all original properties), returns true to include the option.\n */\n searchFn = input<((term: string, item: T) => boolean) | undefined>();\n\n /**\n * Whether to clear the search input after an option is selected.\n * Only has a visible effect in multi-select mode — in single-select mode\n * the dropdown closes on selection, which already clears the search term.\n * @default false\n */\n clearSearchOnSelect = input<boolean>(false);\n\n /**\n * Emits whenever the selection changes from any source: option click,\n * tag removal, clear button, select-all, or group toggle.\n * Payload is the array of selected values in multi-select mode, or the\n * single selected value (or `null`) in single-select mode.\n */\n readonly selectionChange = output<T | T[] | null>();\n\n /**\n * Emits the current search term whenever the user types in the search input.\n * Only fires when `searchable` is `true`.\n */\n readonly searchChange = output<string>();\n\n /**\n * Emits when the dropdown panel opens.\n */\n readonly opened = output<void>();\n\n /**\n * Emits when the dropdown panel closes.\n */\n readonly closed = output<void>();\n\n /**\n * Emits when the user clicks the clear button.\n * Fires alongside `selectionChange`, which carries the new (empty) value.\n */\n readonly cleared = output<void>();\n\n readonly SpecialOptionControls = SpecialOptionControls;\n\n readonly dropdownPositions: ConnectedPosition[] = [\n // Open below, expand downward\n {\n originX: \"start\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n },\n // Fallback: open above, expand upward\n {\n originX: \"start\",\n originY: \"top\",\n overlayX: \"start\",\n overlayY: \"bottom\",\n },\n ];\n\n listboxId = computed(() => this.inputId() + \"-listbox\");\n labelId = computed(() => this.inputId() + \"-label\");\n\n isOpen = signal(false);\n selectedValues = signal<unknown[]>([]);\n disabled = signal(false);\n dropdownWidth = signal<number | null>(null);\n dropdownMaxHeight = signal<number | null>(null);\n visibleTagsCount = signal<number | null>(null);\n searchTerm = signal<string>(\"\");\n searchFocused = signal<boolean>(false);\n\n hiddenTagsCount = computed(() => {\n const visible = this.visibleTagsCount();\n const total = this.selectedValues().length;\n if (visible === null || visible >= total) return 0;\n return total - visible;\n });\n\n listboxRef = viewChild(CdkListbox, { read: ElementRef });\n cdkListboxRef = viewChild(CdkListbox);\n connectedOverlay = viewChild(CdkConnectedOverlay);\n triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });\n searchInputRef = viewChild<ElementRef>(\"searchInput\");\n multiselectContainerRef = viewChild<ElementRef>(\"multiselectContainer\");\n tagRefs = viewChildren(\"tagElement\", { read: ElementRef });\n hostRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n // Template queries for custom rendering\n optionTemplate = contentChild(SelectOptionTemplateDirective);\n valueTemplate = contentChild(SelectValueTemplateDirective);\n\n normalizedOptions = computed<SelectOption<T>[]>(() => {\n const items = this.options();\n if (!items || items.length === 0) return [];\n\n return items.map((item) => {\n if (typeof item === \"string\" || typeof item === \"number\") {\n return {\n value: item as unknown,\n label: String(item),\n disabled: false,\n group: undefined,\n } as SelectOption<T>;\n }\n\n const itemRecord = item as Record<string, unknown>;\n const bindLabel = this.bindLabel();\n const bindValue = this.bindValue();\n const disabledKey = this.disabledKey();\n const groupBy = this.groupBy();\n\n const label = String(itemRecord[bindLabel] ?? item);\n const value = bindValue ? itemRecord[bindValue] : item;\n const disabled = !!itemRecord[disabledKey];\n let group: string | undefined;\n\n if (typeof groupBy === \"string\") {\n group = itemRecord[groupBy] as string | undefined;\n } else if (typeof groupBy === \"function\") {\n group = groupBy(item);\n }\n\n return { ...itemRecord, value, label, disabled, group } as SelectOption<T>;\n });\n });\n\n filteredOptions = computed<SelectOption<T>[]>(() => {\n const options = this.normalizedOptions();\n const trimmed = this.searchTerm().trim();\n\n if (!trimmed) {\n return options;\n }\n\n const term = trimmed.toLowerCase();\n const searchFn = this.searchFn();\n\n if (searchFn) {\n return options.filter((option) => searchFn(term, option as unknown as T));\n }\n\n return options.filter((option) =>\n option.label.toLowerCase().includes(term)\n );\n });\n\n optionGroups = computed<SelectOptionGroup<T>[]>(() => {\n const options = this.filteredOptions();\n const groups: SelectOptionGroup<T>[] = [];\n\n options.forEach((option) => {\n const groupLabel = option.group ?? \"\";\n const existingGroup = groups.find((g) => g.label === groupLabel);\n\n if (existingGroup) {\n existingGroup.options.push(option);\n } else {\n groups.push({ label: groupLabel, options: [option] });\n }\n });\n\n return groups;\n });\n\n selectedOptions = computed<SelectOption<T>[]>(() => {\n const values = this.selectedValues();\n const options = this.normalizedOptions();\n const compareWith = this.compareWith();\n\n return options.filter((option) =>\n values.some((val) => compareWith(option.value, val))\n );\n });\n\n visibleSelectedValues = computed<unknown[]>(() => {\n const selected = this.selectedValues();\n const filtered = this.filteredOptions();\n const compareWith = this.compareWith();\n\n return selected.filter((val) =>\n filtered.some((opt) => compareWith(opt.value, val))\n );\n });\n\n selectedLabels = computed<string[]>(() => {\n return this.selectedOptions().map((option) => option.label);\n });\n\n showSingleSelectedValue = computed<boolean>(() => {\n return !this.searchTerm() && !!this.selectedValues().length && !this.allowMultiple();\n });\n\n allOptionsSelected = computed<boolean>(() => {\n const options = this.searchTerm().trim()\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const selected = this.selectedValues();\n const compareWith = this.compareWith();\n\n return (\n enabledOptions.length > 0 &&\n enabledOptions.every((option) =>\n selected.some((val) => compareWith(option.value, val))\n )\n );\n });\n\n someOptionsSelected = computed<boolean>(() => {\n const options = this.searchTerm().trim()\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const selected = this.selectedValues();\n const compareWith = this.compareWith();\n\n const selectedCount = enabledOptions.filter((option) =>\n selected.some((val) => compareWith(option.value, val))\n ).length;\n\n return selectedCount > 0 && selectedCount < enabledOptions.length;\n });\n\n ngAfterContentChecked(): void {\n this.setDropdownWidth();\n }\n\n ngAfterViewChecked(): void {\n if (this.allowMultiple() && !this.multiRow()) {\n this.calculateVisibleTags();\n }\n if (this.isOpen()) {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n }\n }\n\n @HostListener(\"window:resize\")\n onWindowResize(): void {\n this.setDropdownWidth();\n if (this.allowMultiple() && !this.multiRow()) {\n this.visibleTagsCount.set(null);\n }\n }\n\n @HostListener(\"document:click\", [\"$event\"])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n\n const target = event.target as HTMLElement;\n const hostElement = this.hostRef.nativeElement;\n const listboxElement = this.listboxRef()?.nativeElement;\n\n const clickedInside = hostElement.contains(target) || listboxElement?.contains(target);\n\n if (!clickedInside) {\n this.closeDropdown();\n }\n }\n\n focusListboxWhenVisible = effect(() => {\n if (this.isOpen() && this.searchable() && this.searchInputRef()) {\n this.searchInputRef()?.nativeElement.focus();\n } else if (this.isOpen() && this.listboxRef() && !this.searchable()) {\n this.listboxRef()?.nativeElement.focus();\n }\n });\n\n constructor() {\n /**\n * Workaround: Prevent CDK from resetting active item to the first selected\n * option whenever [cdkListboxValue] changes in multiselect mode. CDK calls\n * _setNextFocusToSelectedOption inside _setSelection, which moves focus\n * away from the user's current position after each selection toggle.\n * Tested against @angular/cdk 19. Revisit when CDK exposes a public API\n * to control this behavior.\n */\n effect(() => {\n const listbox = this.cdkListboxRef();\n if (listbox && this.allowMultiple()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (listbox as any)._setNextFocusToSelectedOption = () => { };\n }\n });\n }\n\n resetVisibleTagsOnSelectionChange = effect(() => {\n this.selectedValues();\n this.visibleTagsCount.set(null);\n });\n\n toggleIsOpen(close?: boolean): void {\n if (this.disabled() && !close) return;\n\n if (close) {\n this.closeDropdown();\n this.focusTrigger();\n } else {\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchTerm.set(input.value);\n this.searchChange.emit(input.value);\n\n if (!this.isOpen()) {\n this.openDropdown();\n }\n }\n\n onSearchFocus(): void {\n this.searchFocused.set(true);\n }\n\n onSearchBlur(): void {\n this.searchFocused.set(false);\n this.onTouched();\n }\n\n onTriggerClick(): void {\n if (this.disabled()) return;\n\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n } else {\n this.toggleIsOpen();\n }\n }\n\n onArrowClick(event: Event): void {\n event.stopPropagation();\n this.toggleIsOpen();\n }\n\n onTriggerEnter(): void {\n if (!this.isOpen()) {\n this.openDropdown();\n }\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Home\":\n case \"End\":\n event.preventDefault();\n if (this.isOpen()) {\n this.forwardToCdkListbox(event.key);\n } else {\n this.openDropdown();\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (this.isOpen()) {\n this.forwardToCdkListbox(event.key);\n } else {\n this.openDropdown();\n }\n break;\n case \" \":\n if (!this.isOpen()) {\n event.preventDefault();\n this.openDropdown();\n }\n break;\n case \"Escape\":\n case \"Tab\":\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n\n private static readonly KEY_CODES: Record<string, number> = {\n ArrowDown: 40,\n ArrowUp: 38,\n Home: 36,\n End: 35,\n Enter: 13,\n \" \": 32,\n };\n\n private forwardToCdkListbox(key: string): void {\n const listbox = this.cdkListboxRef();\n if (listbox) {\n const keyCode = SelectComponent.KEY_CODES[key] ?? 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (listbox as any)._handleKeydown(new KeyboardEvent(\"keydown\", { key, keyCode, bubbles: true }));\n }\n }\n\n private openDropdown(): void {\n if (this.isOpen()) return;\n this.calculateDropdownMaxHeight();\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n private calculateDropdownMaxHeight(): void {\n const inputMaxHeight = this.maxDropdownHeight();\n\n if (inputMaxHeight != null) {\n this.dropdownMaxHeight.set(inputMaxHeight);\n return;\n }\n\n const trigger = this.triggerRef()?.nativeElement;\n if (!trigger) {\n this.dropdownMaxHeight.set(null);\n return;\n }\n\n const triggerRect = trigger.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const margin = 16; // Margin from viewport edges\n\n // Calculate space below and above the trigger\n const spaceBelow = viewportHeight - triggerRect.bottom - margin;\n const spaceAbove = triggerRect.top - margin;\n\n // Use the larger available space\n const maxHeight = Math.max(spaceBelow, spaceAbove);\n\n this.dropdownMaxHeight.set(maxHeight);\n }\n\n private closeDropdown(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.searchTerm.set(\"\");\n this.dropdownMaxHeight.set(null);\n this.closed.emit();\n }\n\n handleValueChange(event: { value: readonly unknown[] }): void {\n const values = event.value;\n\n const selectAllIndex = values.findIndex(\n (v) => v === SpecialOptionControls.SELECT_ALL\n );\n const selectGroupValue = values.find(\n (v) =>\n typeof v === \"string\" &&\n v.startsWith(SpecialOptionControls.SELECT_GROUP)\n );\n\n if (selectAllIndex !== -1) {\n this.toggleSelectAll();\n this.onTouched();\n return;\n }\n\n if (selectGroupValue) {\n const groupLabel = (selectGroupValue as string).replace(\n SpecialOptionControls.SELECT_GROUP,\n \"\"\n );\n this.toggleGroupSelection(groupLabel);\n this.onTouched();\n return;\n }\n\n if (this.allowMultiple()) {\n let newSelection: unknown[];\n if (this.searchable() && this.searchTerm().trim()) {\n const filtered = this.filteredOptions();\n const compareWith = this.compareWith();\n const hiddenSelected = this.selectedValues().filter(\n (val) => !filtered.some((opt) => compareWith(opt.value, val))\n );\n newSelection = [...hiddenSelected, ...values];\n } else {\n newSelection = [...values];\n }\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n }\n } else {\n const selected = values[0] ?? null;\n this.selectedValues.set(selected != null ? [selected] : []);\n this.onChange(selected);\n this.selectionChange.emit(selected as T | null);\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n this.toggleIsOpen(true);\n }\n\n this.onTouched();\n }\n\n clear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n this.selectedValues.set([]);\n if (this.allowMultiple()) {\n this.onChange([]);\n this.selectionChange.emit([] as T[]);\n } else {\n this.onChange(null);\n this.selectionChange.emit(null);\n }\n this.cleared.emit();\n this.onTouched();\n this.focusTrigger();\n }\n\n deselect(event: Event, value: unknown): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (this.disabled()) return;\n\n const compareWith = this.compareWith();\n const newSelection = this.selectedValues().filter(\n (v) => !compareWith(v, value)\n );\n\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n this.onTouched();\n }\n\n isOptionSelected(optionValue: unknown): boolean {\n const compareWith = this.compareWith();\n return this.selectedValues().some((val) => compareWith(val, optionValue));\n }\n\n getLabel(value: unknown): string {\n const compareWith = this.compareWith();\n const option = this.normalizedOptions().find((o) =>\n compareWith(o.value, value)\n );\n return option?.label ?? String(value);\n }\n\n /**\n * Get the original item from the items array for a given option.\n * Used for custom templates that need access to the full item data.\n */\n getOriginalItem(option: SelectOption<T>): T {\n const compareWith = this.compareWith();\n const bindValue = this.bindValue();\n\n if (!bindValue) {\n return option.value as T;\n }\n\n // Find the original item by matching the value\n const items = this.options();\n const found = items.find((item) => {\n const itemRecord = item as Record<string, unknown>;\n return compareWith(itemRecord[bindValue], option.value);\n });\n\n return found ?? (option as unknown as T);\n }\n\n /** Create context object for custom option templates. */\n getOptionContext(option: SelectOption<T>, index: number): SelectOptionContext<T> {\n const item = this.getOriginalItem(option);\n return {\n $implicit: item,\n item,\n index,\n selected: this.isOptionSelected(option.value),\n disabled: option.disabled ?? false,\n };\n }\n\n /** Create context object for custom value templates. */\n getValueContext(option: SelectOption<T>): SelectValueContext<T> {\n const item = this.getOriginalItem(option);\n return { $implicit: item, item, label: option.label };\n }\n\n isGroupSelected(groupLabel: string): boolean {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return false;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n if (enabledGroupOptions.length === 0) return false;\n\n const compareWith = this.compareWith();\n const selected = this.selectedValues();\n\n return enabledGroupOptions.every((option) =>\n selected.some((val) => compareWith(option.value, val))\n );\n }\n\n isGroupIndeterminate(groupLabel: string): boolean {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return false;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n if (enabledGroupOptions.length === 0) return false;\n\n const compareWith = this.compareWith();\n const selected = this.selectedValues();\n\n const selectedCount = enabledGroupOptions.filter((option) =>\n selected.some((val) => compareWith(option.value, val))\n ).length;\n\n return selectedCount > 0 && selectedCount < enabledGroupOptions.length;\n }\n\n private focusTrigger(): void {\n if (this.searchable()) {\n this.searchInputRef()?.nativeElement.focus();\n } else {\n this.triggerRef()?.nativeElement.focus();\n }\n }\n\n private getAvailableTagWidth(): number {\n const trigger = this.triggerRef()?.nativeElement;\n if (!trigger) return 0;\n\n const triggerWidth = trigger.clientWidth;\n if (triggerWidth === 0) return 0;\n\n const triggerStyle = getComputedStyle(trigger);\n const padding = (parseFloat(triggerStyle.paddingLeft) || 0) + (parseFloat(triggerStyle.paddingRight) || 0);\n\n let nonTagWidth = 0;\n const arrow: HTMLElement | null = trigger.querySelector(\".tedi-select__arrow\");\n const clear: HTMLElement | null = trigger.querySelector(\".tedi-select__clear\");\n const searchInput: HTMLElement | null = trigger.querySelector(\".tedi-select__search-input\");\n if (arrow) nonTagWidth += arrow.offsetWidth + (parseFloat(getComputedStyle(arrow).marginLeft) || 0) + (parseFloat(getComputedStyle(arrow).paddingLeft) || 0);\n if (clear) nonTagWidth += clear.offsetWidth;\n if (searchInput) nonTagWidth += parseFloat(getComputedStyle(searchInput).minWidth) || 0;\n\n return triggerWidth - padding - nonTagWidth;\n }\n\n private calculateVisibleTags(): void {\n const tags = this.tagRefs();\n if (tags.length === 0 || this.visibleTagsCount() !== null) return;\n\n const availableWidth = this.getAvailableTagWidth();\n if (availableWidth <= 0) return;\n\n const gap = 8;\n const counterTagWidth = 40;\n let usedWidth = 0;\n let visibleCount = 0;\n\n for (let i = 0; i < tags.length; i++) {\n const tagWidth = tags[i].nativeElement.offsetWidth;\n const spaceNeeded = usedWidth + tagWidth + (visibleCount > 0 ? gap : 0);\n const hasMoreItems = i < tags.length - 1;\n const reservedSpace = hasMoreItems ? counterTagWidth + gap : 0;\n\n if (spaceNeeded + reservedSpace <= availableWidth) {\n usedWidth = spaceNeeded;\n visibleCount++;\n } else {\n break;\n }\n }\n\n if (visibleCount === 0 && tags.length > 0) {\n visibleCount = 1;\n }\n\n this.ngZone.run(() => {\n this.visibleTagsCount.set(visibleCount);\n });\n }\n\n private setDropdownWidth(): void {\n const widthRef = this.dropdownWidthRef();\n if (widthRef === null) {\n this.dropdownWidth.set(null);\n return;\n }\n\n const element = widthRef?.nativeElement ?? this.hostRef?.nativeElement;\n const computedWidth = element?.getBoundingClientRect()?.width ?? 0;\n this.dropdownWidth.set(computedWidth);\n }\n\n private toggleSelectAll(): void {\n const isSearching = !!this.searchTerm().trim();\n const options = isSearching\n ? this.filteredOptions()\n : this.normalizedOptions();\n const enabledOptions = options.filter((o) => !o.disabled);\n const compareWith = this.compareWith();\n\n if (this.allOptionsSelected()) {\n // Deselect: remove only the visible enabled options, keep the rest\n const newSelection = this.selectedValues().filter(\n (val) => !enabledOptions.some((o) => compareWith(val, o.value))\n );\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n } else {\n // Select: add visible enabled options to current selection\n const newSelection = [...this.selectedValues()];\n for (const option of enabledOptions) {\n if (!newSelection.some((val) => compareWith(val, option.value))) {\n newSelection.push(option.value);\n }\n }\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n }\n }\n\n private toggleGroupSelection(groupLabel: string): void {\n const group = this.optionGroups().find((g) => g.label === groupLabel);\n if (!group) return;\n\n const enabledGroupOptions = group.options.filter((o) => !o.disabled);\n const groupValues = enabledGroupOptions.map((o) => o.value);\n const isGroupSelected = this.isGroupSelected(groupLabel);\n const compareWith = this.compareWith();\n\n let newSelection: unknown[];\n\n if (isGroupSelected) {\n newSelection = this.selectedValues().filter(\n (val) => !groupValues.some((gv) => compareWith(val, gv))\n );\n } else {\n newSelection = [...this.selectedValues()];\n for (const gv of groupValues) {\n if (!newSelection.some((val) => compareWith(val, gv))) {\n newSelection.push(gv);\n }\n }\n }\n\n this.selectedValues.set(newSelection);\n this.onChange(newSelection);\n this.selectionChange.emit(newSelection as T[]);\n }\n\n onChange: (value: unknown) => void = () => { };\n onTouched: () => void = () => { };\n\n writeValue(value: unknown): void {\n if (this.allowMultiple()) {\n this.selectedValues.set(Array.isArray(value) ? value : []);\n } else {\n this.selectedValues.set(value != null ? [value] : []);\n }\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n if (isDisabled) {\n this.closeDropdown();\n }\n }\n}\n","@if (label()) {\n <label\n [id]=\"labelId()\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n (click)=\"onTriggerClick()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"searchable() ? null : inputId()\"\n class=\"tedi-select__trigger tedi-input\"\n [class.tedi-input--disabled]=\"disabled()\"\n [class.tedi-input--small]=\"size() === 'small'\"\n [class.tedi-input--error]=\"state() === 'error'\"\n [class.tedi-input--valid]=\"state() === 'valid'\"\n [class.tedi-select__trigger--searchable]=\"searchable()\"\n [class.tedi-select__trigger--search-focused]=\"searchFocused()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [attr.role]=\"searchable() ? null : 'combobox'\"\n [attr.aria-haspopup]=\"searchable() ? null : 'listbox'\"\n [attr.aria-expanded]=\"searchable() ? null : isOpen()\"\n [attr.aria-controls]=\"searchable() ? null : listboxId()\"\n [attr.aria-labelledby]=\"!searchable() && label() ? labelId() : null\"\n [tabindex]=\"searchable() || disabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown.enter)=\"onTriggerEnter()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n @if (searchable()) {\n <div class=\"tedi-select__search-wrapper\">\n @if (showSingleSelectedValue()) {\n <span class=\"tedi-select__selected-value\">\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n </span>\n }\n @if (allowMultiple() && selectedValues().length) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [class.tedi-select__search-input--hidden]=\"showSingleSelectedValue()\"\n [placeholder]=\"showSingleSelectedValue() ? '' : placeholder()\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"label() ? labelId() : null\"\n />\n }\n </div>\n } @else {\n <span class=\"tedi-select__label\">\n @if (selectedValues().length) {\n @if (allowMultiple()) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else {\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n }\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n }\n\n @if (clearable() && selectedValues().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n [ariaLabel]=\"'clear' | tediTranslate\"\n (click)=\"clear($event)\"\n (keydown.enter)=\"clear($event)\"\n (keydown.space)=\"clear($event)\"\n [attr.aria-describedby]=\"label() ? labelId() : null\"\n ></button>\n }\n\n <button\n class=\"tedi-select__arrow\"\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"onArrowClick($event)\"\n >\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template #multiselectTags>\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n #multiselectContainer\n >\n @if (multiRow()) {\n @for (value of selectedValues(); track value) {\n <tedi-tag\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n } @else {\n @for (value of selectedValues(); track value; let i = $index) {\n @if (visibleTagsCount() === null || i < visibleTagsCount()!) {\n <tedi-tag\n #tagElement\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n }\n @if (hiddenTagsCount() > 0) {\n <tedi-tag>+{{ hiddenTagsCount() }}</tedi-tag>\n }\n }\n @if (searchable()) {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-labelledby]=\"label() ? labelId() : null\"\n />\n }\n </div>\n</ng-template>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"dropdownPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"toggleIsOpen(true)\"\n>\n <div\n class=\"tedi-select__dropdown\"\n [style.width]=\"!!dropdownWidth() ? dropdownWidth() + 'px' : 'auto'\"\n [style.max-height]=\"dropdownMaxHeight() ? dropdownMaxHeight() + 'px' : null\"\n >\n <ul\n [id]=\"listboxId()\"\n class=\"tedi-select__options\"\n [class.tedi-select__options--multiselect]=\"allowMultiple()\"\n [class.tedi-select__options--swatch-grid]=\"dropdownType() === 'grid'\"\n cdkListbox\n [cdkListboxMultiple]=\"allowMultiple()\"\n [cdkListboxValue]=\"visibleSelectedValues()\"\n [cdkListboxNavigatesDisabledOptions]=\"false\"\n [cdkListboxUseActiveDescendant]=\"true\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n (keydown.tab)=\"toggleIsOpen(true)\"\n (keydown.escape)=\"toggleIsOpen(true)\"\n #listbox=\"cdkListbox\"\n >\n @if (filteredOptions().length) {\n @if (allowMultiple() && showSelectAll()) {\n <li\n class=\"tedi-dropdown-item\"\n [cdkOption]=\"SpecialOptionControls.SELECT_ALL\"\n >\n <tedi-dropdown-item-value type=\"checkbox\" [selected]=\"allOptionsSelected()\" [indeterminate]=\"someOptionsSelected()\">\n <tedi-dropdown-item-value-label>{{ \"select.select-all\" | tediTranslate }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n }\n\n @for (group of optionGroups(); track group.label) {\n @if (group.label.length > 0) {\n @if (allowMultiple() && selectableGroups()) {\n <li\n class=\"tedi-dropdown-item tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"SpecialOptionControls.SELECT_GROUP + group.label\"\n >\n <tedi-dropdown-item-value type=\"checkbox\" [selected]=\"isGroupSelected(group.label)\" [indeterminate]=\"isGroupIndeterminate(group.label)\">\n <tedi-dropdown-item-value-label>{{ group.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n } @else {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value; let i = $index) {\n <li\n class=\"tedi-dropdown-item\"\n [class.tedi-dropdown-item--selected]=\"!allowMultiple() && isOptionSelected(option.value)\"\n [class.tedi-dropdown-item--disabled]=\"option.disabled\"\n [class.tedi-dropdown-item--custom]=\"optionTemplate()\"\n [cdkOption]=\"option.value\"\n [cdkOptionDisabled]=\"option.disabled\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getOptionContext(option, i)\"\n />\n } @else {\n <tedi-dropdown-item-value\n [type]=\"allowMultiple() ? 'checkbox' : 'default'\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n }\n </li>\n }\n }\n } @else {\n <li class=\"tedi-dropdown-item tedi-select__no-options\">\n {{ noOptionsMessage() || (\"select.no-options\" | tediTranslate) }}\n </li>\n }\n </ul>\n </div>\n</ng-template>\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 { InjectionToken, Signal } from \"@angular/core\";\n\n/**\n * Interface implemented by controls that can be used inside `tedi-form-field`.\n * Allows the form field container to interact with the underlying control.\n */\nexport interface FormFieldControl<T = unknown> {\n /**\n * Current value of the control.\n */\n value: Signal<T>;\n /**\n * Whether the control is disabled.\n */\n disabled: Signal<boolean>;\n /** Reactive invalid state (driven by FormField) */\n invalid: Signal<boolean>;\n\n /** Called by FormField to update invalid state */\n setInvalidState(isInvalid: boolean): void;\n /**\n * Optional method used by the form field clear button.\n * If implemented, the form field can trigger clearing the value.\n */\n clearField?(): void;\n}\n\n/**\n * Injection token used by `tedi-form-field` to obtain\n * the associated control instance.\n */\nexport const TEDI_FORM_FIELD_CONTROL = new InjectionToken<FormFieldControl>(\n \"TEDI_FORM_FIELD_CONTROL\",\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n input,\n ViewEncapsulation,\n AfterContentInit,\n inject,\n DestroyRef,\n} from \"@angular/core\";\nimport { NgClass } from \"@angular/common\";\nimport {\n FormFieldControl,\n TEDI_FORM_FIELD_CONTROL,\n} from \"./form-field-control\";\nimport {\n IconColor,\n IconComponent,\n IconSize,\n IconType,\n IconVariant,\n} from \"../../../components/base/icon/icon.component\";\nimport { ClosingButtonComponent } from \"../../../components/buttons/closing-button/closing-button.component\";\nimport { SeparatorComponent } from \"../../../components/helpers/separator/separator.component\";\nimport { TediTranslationPipe } from \"../../../services/translation/translation.pipe\";\nimport { FeedbackTextComponent } from \"../feedback-text/feedback-text.component\";\nimport { NgControl } from \"@angular/forms\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nexport type InputSize = \"small\" | \"large\" | \"default\";\nexport type InputState = \"valid\" | \"error\" | \"default\";\ntype ValidationState = \"invalid\" | \"valid\" | \"neutral\";\n\nexport interface FormFieldIcon {\n name: string;\n size?: IconSize;\n color?: IconColor;\n type?: IconType;\n variant?: IconVariant;\n}\n\n@Component({\n selector: \"tedi-form-field\",\n standalone: true,\n templateUrl: \"./form-field.component.html\",\n styleUrl: \"./form-field.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgClass,\n IconComponent,\n ClosingButtonComponent,\n SeparatorComponent,\n TediTranslationPipe,\n ],\n host: {\n \"[class]\": \"hostClasses()\",\n },\n})\nexport class FormFieldComponent implements AfterContentInit {\n /**\n * The size of the form field.\n * @default \"default\"\n */\n size = input<InputSize>(\"default\");\n /**\n * Icon name or configuration object.\n */\n icon = input<string | FormFieldIcon | undefined>();\n /**\n * Whether the form field includes a clear button.\n * @default false\n */\n clearable = input<boolean>(false);\n /**\n * Custom CSS classes for the input.\n */\n inputClass = input<string | null>(null);\n\n @ContentChild(TEDI_FORM_FIELD_CONTROL)\n control?: FormFieldControl;\n\n @ContentChild(NgControl)\n ngControl?: NgControl;\n\n @ContentChild(FeedbackTextComponent)\n feedback?: FeedbackTextComponent;\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterContentInit() {\n this.ngControl?.control?.events\n ?.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateValidationState());\n\n this.updateValidationState();\n }\n\n private updateValidationState() {\n const invalid = !!this.ngControl?.invalid;\n const touched = !!this.ngControl?.touched;\n const dirty = !!this.ngControl?.dirty;\n const fieldInvalid = invalid && (touched || dirty);\n\n this.control?.setInvalidState(fieldInvalid);\n }\n\n readonly resolvedIcon = computed<FormFieldIcon | undefined>(() => {\n const icon = this.icon();\n if (!icon) return undefined;\n\n return typeof icon === \"string\" ? { name: icon } : icon;\n });\n\n readonly validationState = computed<ValidationState>(() => {\n const feedbackType = this.feedback?.type();\n const fieldInvalid = this.control?.invalid?.() ?? false;\n\n if (fieldInvalid || feedbackType === \"error\") return \"invalid\";\n if (feedbackType === \"valid\") return \"valid\";\n\n return \"neutral\";\n });\n\n showClearButton = computed(() => {\n const value = this.control?.value();\n return this.clearable() && !!value;\n });\n\n readonly isDisabled = computed(() => this.control?.disabled() ?? false);\n\n readonly hostClasses = computed(() => {\n return {\n \"tedi-form-field\": true,\n \"tedi-form-field--valid\": this.validationState() === \"valid\",\n \"tedi-form-field--invalid\": this.validationState() === \"invalid\",\n \"tedi-form-field--disabled\": this.control?.disabled(),\n \"tedi-form-field--small\": this.size() === \"small\",\n \"tedi-form-field--large\": this.size() === \"large\",\n \"tedi-form-field--with-icon\": this.clearable() || !!this.icon(),\n };\n });\n\n readonly inputClasses = computed(() => {\n const customClass = this.inputClass();\n\n return {\n \"tedi-form-field__input\": true,\n ...(customClass ? { [customClass]: true } : {}),\n };\n });\n\n clear() {\n this.control?.clearField?.();\n }\n}\n","<ng-content select=\"label[tedi-label]\"></ng-content>\n\n<div [ngClass]=\"inputClasses()\">\n <ng-content select=\"input[tedi-text-field]\"></ng-content>\n\n @if (clearable()) {\n <div\n class=\"tedi-form-field__buttons\"\n [class.tedi-form-field__buttons--hidden]=\"!showClearButton()\"\n [attr.aria-hidden]=\"!showClearButton() || null\"\n >\n <button\n class=\"tedi-form-field__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [ariaLabel]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n [tabIndex]=\"showClearButton() ? 0 : -1\"\n [disabled]=\"isDisabled() || !showClearButton()\"\n (click)=\"clear()\"\n ></button>\n\n @if (icon()) {\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n </div>\n }\n\n @if (resolvedIcon(); as icon) {\n <div class=\"tedi-form-field__icon\">\n <tedi-icon\n [name]=\"icon.name\"\n [size]=\"icon.size ?? (size() === 'small' ? 16 : 18)\"\n [color]=\"icon.color ?? 'secondary'\"\n [type]=\"icon.type ?? 'outlined'\"\n [variant]=\"icon.variant ?? 'outlined'\"\n [attr.aria-hidden]=\"true\"\n />\n </div>\n }\n</div>\n\n@if (feedback) {\n <div class=\"tedi-form-field__feedback\">\n <ng-content select=\"tedi-feedback-text\"></ng-content>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n ViewEncapsulation,\n forwardRef,\n signal,\n output,\n ElementRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport {\n FormFieldControl,\n TEDI_FORM_FIELD_CONTROL,\n} from \"../form-field/form-field-control\";\n\n@Component({\n selector: \"input[tedi-text-field]\",\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n {\n provide: TEDI_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => TextFieldComponent),\n },\n ],\n template: \"\",\n styleUrl: \"./text-field.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-text-field\",\n \"[class.tedi-text-field--arrows-hidden]\": \"arrowsHidden()\",\n \"[attr.aria-invalid]\": \"invalid() || null\",\n \"[value]\": \"value()\",\n \"(input)\": \"handleInputChange($event)\",\n \"(blur)\": \"handleBlur()\",\n },\n})\nexport class TextFieldComponent\n implements ControlValueAccessor, FormFieldControl\n{\n /**\n * Value of the input field. Supports two-way binding, use with form controls.\n */\n value = model<string>(\"\");\n /**\n * Whether to hide arrows for number inputs.\n * @default true\n */\n arrowsHidden = input<boolean>(true);\n /**\n * Callback triggered when the clear button is clicked.\n */\n readonly clear = output<void>();\n\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n readonly disabled = computed(() => this.formDisabled());\n\n readonly invalid = signal(false);\n\n setInvalidState(isInvalid: boolean) {\n this.invalid.set(isInvalid);\n }\n\n private formDisabled = signal(false);\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n private setValue(value: string) {\n this.el.nativeElement.value = value;\n this.value.set(value);\n }\n\n writeValue(value: string | null): void {\n this.setValue(value ?? \"\");\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n this.el.nativeElement.disabled = isDisabled;\n }\n\n handleInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n this.value.set(value);\n this.onChange(value);\n }\n\n handleBlur() {\n this.onTouched();\n }\n\n clearField() {\n if (this.disabled()) return;\n\n this.setValue(\"\");\n this.onChange(\"\");\n this.clear.emit();\n this.onTouched();\n }\n}\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', `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 viewChildren,\n AfterViewInit,\n OnDestroy,\n input,\n inject,\n HostListener,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\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 private readonly liveAnnouncer = inject(LiveAnnouncer);\n\n readonly track = viewChild.required<ElementRef<HTMLDivElement>>(\"track\");\n readonly slideElements = viewChildren<ElementRef<HTMLDivElement>>(\"slide\");\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 /**\n * Checks if a slide at the given rendered index is currently visible in the viewport.\n * Used to determine which slides should be accessible to screen readers.\n */\n isSlideVisible(renderedIndex: number): boolean {\n const activeIndex = this.renderedActiveIndex();\n const slidesPerView = Math.ceil(this.currentSlidesPerView());\n return renderedIndex >= activeIndex && renderedIndex < activeIndex + slidesPerView;\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 pendingFocus = 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(\"scroll\")\n onScroll() {\n // Prevent any scroll triggered by focus (e.g., VoiceOver navigation)\n this.host.nativeElement.scrollLeft = 0;\n this.host.nativeElement.scrollTop = 0;\n }\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 this.announceSlideChange();\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 this.announceSlideChange();\n }\n\n goToIndex(index: number, options?: { focusSlide?: boolean }) {\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 if (options?.focusSlide) {\n // Focus after transition completes so DOM positions are stable\n this.pendingFocus = true;\n } else {\n this.announceSlideChange();\n }\n }\n\n /**\n * Focuses the currently active slide for screen reader users.\n * Uses preventScroll to avoid breaking carousel layout.\n */\n focusActiveSlide(): void {\n setTimeout(() => {\n const activeIndex = this.renderedActiveIndex();\n const slideElement = this.slideElements()[activeIndex];\n if (slideElement) {\n slideElement.nativeElement.focus({ preventScroll: true });\n }\n });\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 if (this.pendingFocus) {\n this.pendingFocus = false;\n this.focusActiveSlide();\n }\n }\n\n lockNavigation() {\n this.locked = true;\n setTimeout(() => (this.locked = false), this.transitionMs());\n }\n\n /**\n * Announces the current slide position to screen readers via LiveAnnouncer.\n * Called after navigation to inform users of the slide change.\n */\n announceSlideChange(): void {\n setTimeout(() => {\n const slideNumber = this.slideIndex() + 1;\n const totalSlides = this.slides().length;\n const message = this.translationService.translate(\n \"carousel.slide\",\n slideNumber,\n totalSlides\n );\n\n this.liveAnnouncer.announce(message, \"polite\");\n }, 100);\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 #slide\n class=\"tedi-carousel__slide\"\n [attr.role]=\"isSlideVisible($index) ? '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]=\"isSlideVisible($index) ? null : 'true'\"\n [attr.tabindex]=\"isSlideVisible($index) ? '-1' : null\"\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, { focusSlide: true });\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 ViewEncapsulation,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Component({\n selector: \"tedi-filter-group\",\n standalone: true,\n template: `<ng-content />`,\n styleUrl: \"./filter-group.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterGroupComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-filter-group\",\n \"[attr.role]\":\n \"isManaged() ? (allowMultiple() ? 'group' : 'radiogroup') : null\",\n \"[attr.aria-label]\": \"label()\",\n },\n})\nexport class FilterGroupComponent implements ControlValueAccessor {\n /**\n * Multi-select mode allows multiple filters to be selected simultaneously.\n * When false, only one filter can be selected at a time (radio-like behavior).\n * Value is treated as `string[]` when true, `string | null` otherwise.\n * @default false\n */\n readonly allowMultiple = input<boolean>(false);\n /**\n * Selected value (single-select) or values (multi-select). Two-way bound.\n * Use `string | null` when `allowMultiple` is false, `string[]` when true.\n */\n readonly value = model<string | string[] | null>(null);\n /**\n * Accessible label for the group.\n */\n readonly label = input<string>();\n\n readonly isManaged = signal(false);\n readonly disabled = signal(false);\n\n private readonly multiValues = computed<string[]>(() => {\n const v = this.value();\n return Array.isArray(v) ? v : [];\n });\n private readonly singleValue = computed<string | null>(() => {\n const v = this.value();\n return typeof v === \"string\" ? v : null;\n });\n\n private onChange: (value: string | null | string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string | null | string[]): void {\n if (this.allowMultiple()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else {\n this.value.set(typeof value === \"string\" ? value : null);\n }\n }\n\n registerOnChange(fn: (value: string | null | string[]) => void): void {\n this.onChange = fn;\n this.isManaged.set(true);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n selectFilter(value: string): void {\n if (this.allowMultiple()) {\n const current = this.multiValues();\n const next = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value];\n this.value.set(next);\n this.onChange(next);\n } else {\n const next = this.singleValue() === value ? null : value;\n this.value.set(next);\n this.onChange(next);\n }\n this.onTouched();\n }\n\n isSelected(value: string): boolean {\n if (this.allowMultiple()) {\n return this.multiValues().includes(value);\n }\n return this.singleValue() === value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n} from \"@angular/core\";\n\nexport type StatusIndicatorType = \"success\" | \"danger\" | \"warning\" | \"inactive\";\nexport type StatusIndicatorSize = \"sm\" | \"lg\";\nexport type StatusIndicatorPosition = \"default\" | \"top-right\";\n\n@Component({\n selector: \"tedi-status-indicator\",\n standalone: true,\n template: \"\",\n styleUrl: \"./status-indicator.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-status-indicator\",\n \"[class.tedi-status-indicator--success]\": \"type() === 'success'\",\n \"[class.tedi-status-indicator--danger]\": \"type() === 'danger'\",\n \"[class.tedi-status-indicator--warning]\": \"type() === 'warning'\",\n \"[class.tedi-status-indicator--inactive]\": \"type() === 'inactive'\",\n \"[class.tedi-status-indicator--sm]\": \"size() === 'sm'\",\n \"[class.tedi-status-indicator--lg]\": \"size() === 'lg'\",\n \"[class.tedi-status-indicator--bordered]\": \"hasBorder()\",\n \"[class.tedi-status-indicator--top-right]\": \"position() === 'top-right'\",\n \"[attr.role]\": \"label() ? 'img' : null\",\n \"[attr.aria-hidden]\": \"!label()\",\n \"[attr.aria-label]\": \"label() || null\",\n },\n})\nexport class StatusIndicatorComponent {\n /**\n * Accessible label for the indicator. When provided, the indicator is\n * exposed to assistive technology with `role=\"img\"`. When omitted, the\n * indicator is treated as decorative (`aria-hidden=\"true\"`).\n */\n readonly label = input<string>();\n /**\n * The status type, which determines the indicator color.\n * @default success\n */\n readonly type = input<StatusIndicatorType>(\"success\");\n /**\n * The size of the indicator.\n * @default sm\n */\n readonly size = input<StatusIndicatorSize>(\"sm\");\n /**\n * Whether the indicator has a white border ring.\n * @default false\n */\n readonly hasBorder = input<boolean>(false);\n /**\n * Controls positioning of the indicator.\n * - `'default'` — inline, no absolute positioning\n * - `'top-right'` — absolutely positioned at the top-right corner of the parent\n * @default default\n */\n readonly position = input<StatusIndicatorPosition>(\"default\");\n}\n","import { CommonModule, NgClass } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n computed,\n inject,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { StatusIndicatorComponent } from \"../status-indicator/status-indicator.component\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\n\nexport type StatusBadgeColor =\n | \"neutral\"\n | \"brand\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"transparent\";\nexport type StatusBadgeVariant = \"filled\" | \"filled-bordered\" | \"bordered\";\nexport type StatusBadgeSize = \"default\" | \"large\";\nexport type StatusBadgeStatus = \"danger\" | \"success\" | \"warning\" | \"inactive\";\n\n@Component({\n selector: \"tedi-status-badge\",\n standalone: true,\n imports: [IconComponent, StatusIndicatorComponent, CommonModule, NgClass],\n templateUrl: \"./status-badge.component.html\",\n styleUrl: \"./status-badge.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusBadgeComponent {\n readonly idGenerator = inject(_IdGenerator);\n readonly uniqueId = this.idGenerator.getId(\"tedi-status-badge\");\n /**\n * The text to be displayed inside the StatusBadge.\n */\n text = input<string>(\"\");\n /**\n * Additional classes to apply custom styles to the StatusBadge.\n */\n class = input<string>();\n /**\n * Provides the full text or description when the Badge represents an abbreviation.\n * This is typically shown as a tooltip on hover.\n */\n title = input<string>();\n /**\n * ARIA role attribute for accessibility.\n */\n role = input<string>();\n /**\n * Specifies the color scheme of the StatusBadge.\n * @default neutral\n */\n color = input<StatusBadgeColor>(\"neutral\");\n /**\n * Determines the style or visual type of the StatusBadge.\n * @default filled\n */\n variant = input<StatusBadgeVariant>(\"filled\");\n /**\n * Specifies the size of the StatusBadge.\n * @default default\n */\n size = input<StatusBadgeSize>(\"default\");\n /**\n * StatusBadge status indicator.\n */\n status = input<StatusBadgeStatus>();\n /**\n * The name of the icon to be displayed inside the StatusBadge. The icon is rendered using the `Icon` component.\n */\n icon = input<string>(\"\");\n\n classes = computed(() => {\n const classList = [\"tedi-status-badge\"];\n\n if (this.color()) {\n classList.push(`tedi-status-badge--color-${this.color()}`);\n }\n\n if (this.variant()) {\n classList.push(`tedi-status-badge--variant-${this.variant()}`);\n }\n\n if (this.size() === \"large\") {\n classList.push(\"tedi-status-badge--large\");\n }\n\n const hasText = !!this.text()?.trim();\n const hasIcon = !!this.icon()?.trim();\n if (hasIcon && !hasText) {\n classList.push(\"tedi-status-badge__icon-only\");\n }\n\n const customClass = this.class();\n if (customClass) {\n classList.push(customClass);\n }\n\n return classList;\n });\n\n ariaLive = computed(() => {\n if (this.role() === \"alert\") {\n return \"assertive\";\n }\n if (this.role() === \"status\") {\n return \"polite\";\n }\n return null;\n });\n}\n","@if (title()) {\n <abbr\n [ngClass]=\"classes()\"\n [attr.id]=\"uniqueId\"\n [attr.title]=\"title()\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n >\n <ng-container *ngTemplateOutlet=\"statusBadgeContent\"></ng-container>\n </abbr>\n} @else {\n <div\n [ngClass]=\"classes()\"\n [attr.id]=\"uniqueId\"\n [attr.role]=\"role()\"\n [attr.aria-live]=\"ariaLive()\"\n >\n <ng-container *ngTemplateOutlet=\"statusBadgeContent\"></ng-container>\n </div>\n}\n\n<ng-template #statusBadgeContent>\n @if (status()) {\n <tedi-status-indicator\n [type]=\"status()!\"\n [size]=\"size() === 'large' ? 'lg' : 'sm'\"\n [hasBorder]=\"true\"\n position=\"top-right\"\n />\n }\n\n @if (icon()) {\n <tedi-icon class=\"tedi-status-badge__icon\" [name]=\"icon()\" [size]=\"16\" />\n }\n\n @if (text()) {\n <span class=\"tedi-status-badge__text\">{{ text() }}</span>\n }\n</ng-template>\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediFilterContent]\",\n standalone: true,\n})\nexport class FilterContentDirective {}\n","import { Directive, input } from \"@angular/core\";\n\n@Directive({\n selector: \"[tediFilterPrepend]\",\n standalone: true,\n})\nexport class FilterPrependDirective {\n /**\n * Whether to hide the prepend content when the filter is selected.\n * When true, the prepend is replaced by a check icon on selection.\n * @default true\n */\n readonly hideWhenSelected = input(true);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n contentChild,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from \"@angular/core\";\nimport { FilterGroupComponent } from \"./filter-group.component\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ButtonComponent } from \"../buttons\";\nimport { IconComponent } from \"../base/icon/icon.component\";\nimport { StatusBadgeComponent } from \"../tags/status-badge/status-badge.component\";\nimport { SeparatorComponent } from \"../helpers/separator/separator.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 { DropdownItemValueComponent } from \"../overlay/dropdown/dropdown-item-value/dropdown-item-value.component\";\nimport { DropdownItemValueLabelComponent } from \"../overlay/dropdown/dropdown-item-value/dropdown-item-value-label.component\";\nimport { FormFieldComponent } from \"../form/form-field/form-field.component\";\nimport { TextFieldComponent } from \"../form/text-field/text-field.component\";\nimport { FilterContentDirective } from \"./filter-content.directive\";\nimport { FilterPrependDirective } from \"./filter-prepend.directive\";\nimport { TediTranslationService } from \"../../services/translation/translation.service\";\n\nexport type FilterVariant = \"primary\" | \"secondary\";\nexport type FilterSize = \"default\" | \"large\";\n\nexport interface FilterOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: \"tedi-filter\",\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ButtonComponent,\n IconComponent,\n StatusBadgeComponent,\n SeparatorComponent,\n DropdownComponent,\n DropdownTriggerDirective,\n DropdownContentComponent,\n DropdownItemValueComponent,\n DropdownItemValueLabelComponent,\n FormFieldComponent,\n TextFieldComponent,\n FilterContentDirective,\n ],\n templateUrl: \"./filter.component.html\",\n styleUrl: \"./filter.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterComponent),\n multi: true,\n },\n ],\n host: {\n class: \"tedi-filter\",\n \"[class.tedi-filter--primary]\": \"variant() === 'primary'\",\n \"[class.tedi-filter--secondary]\": \"variant() === 'secondary'\",\n \"[class.tedi-filter--large]\": \"size() === 'large'\",\n \"[class.tedi-filter--selected]\": \"isSelected()\",\n \"[class.tedi-filter--disabled]\": \"isDisabled()\",\n },\n})\nexport class FilterComponent implements ControlValueAccessor {\n /**\n * Filter label text.\n */\n readonly text = input<string>(\"\");\n /**\n * Visual variant of the filter.\n * @default primary\n */\n readonly variant = input<FilterVariant>(\"primary\");\n /**\n * Size of the filter.\n * @default default\n */\n readonly size = input<FilterSize>(\"default\");\n /**\n * Whether the filter is selected (boolean toggle mode, used when no options are provided).\n * @default false\n */\n readonly selected = model<boolean>(false);\n /**\n * Enables multi-select mode. When true, value is treated as `string[]`; when false,\n * value is treated as `string`. Has no effect when no options are provided.\n * @default false\n */\n readonly allowMultiple = input<boolean>(false);\n /**\n * Options for the dropdown. Enables single-select mode, or multi-select mode when\n * combined with `allowMultiple`.\n */\n readonly options = input<FilterOption[]>([]);\n /**\n * Selected value (single-select) or values (multi-select). Two-way bound.\n * Use `string` when `allowMultiple` is false, `string[]` when true.\n */\n readonly value = model<string | string[]>(\"\");\n /**\n * Show the search field in the dropdown.\n * @default false\n */\n readonly showSearch = input<boolean>(false);\n /**\n * Whether the dropdown search field has a clear (×) button.\n * Only applies when `showSearch` is true.\n * @default true\n */\n readonly searchClearable = input<boolean>(true);\n /**\n * Whether to clear the search field after an option is selected (or toggled in multi-select).\n * Useful in multi-select flows where the user picks several options consecutively.\n * @default false\n */\n readonly clearSearchOnSelect = input<boolean>(false);\n /**\n * Show \"Select all\" option in the dropdown.\n * @default false\n */\n readonly showSelectAll = input<boolean>(false);\n /**\n * Show \"Clear selection\" action in the dropdown.\n * @default false\n */\n readonly showClear = input<boolean>(false);\n /**\n * Override for the \"Select all\" option label. Defaults to the translated string.\n */\n readonly selectAllLabel = input<string | undefined>(undefined);\n /**\n * Override for the \"Clear selection\" action label. Defaults to the translated string.\n */\n readonly clearLabel = input<string | undefined>(undefined);\n /**\n * Emitted when the clear button is clicked in a custom content dropdown.\n */\n readonly cleared = output<void>();\n /**\n * When true, the filter label is preserved as a prefix when a value is selected.\n * E.g. \"Teenus: Optometristi vastuvõtt\" instead of just \"Optometristi vastuvõtt\".\n * @default false\n */\n readonly preserveLabel = input<boolean>(false);\n /**\n * Append dropdown to given selector.\n * Use 'body' to append at the end of DOM or empty string to append next to trigger.\n * @default \"\"\n */\n readonly appendTo = input(\"\");\n /**\n * Whether the filter is disabled. Also set automatically when used with a disabled FormControl\n * or when nested in a disabled FilterGroup.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n\n readonly dropdown = viewChild<DropdownComponent>(\"dropdown\");\n private readonly dropdownPanel =\n viewChild<ElementRef<HTMLElement>>(\"dropdownPanel\");\n private readonly optionsList =\n viewChild<ElementRef<HTMLElement>>(\"optionsList\");\n private readonly triggerBtn =\n viewChild<ElementRef<HTMLButtonElement>>(\"triggerBtn\");\n\n private readonly filterGroup = inject(FilterGroupComponent, {\n optional: true,\n });\n private readonly translationService = inject(TediTranslationService);\n private readonly customContent = contentChild(FilterContentDirective);\n private readonly filterPrepend = contentChild(FilterPrependDirective);\n readonly hasCustomContent = computed(() => !!this.customContent());\n readonly hasOptions = computed(() => this.options().length > 0);\n readonly isMultiSelect = computed(\n () => this.hasOptions() && this.allowMultiple(),\n );\n readonly isSingleSelect = computed(\n () => this.hasOptions() && !this.allowMultiple(),\n );\n readonly hasDropdown = computed(\n () => this.hasOptions() || this.hasCustomContent(),\n );\n\n readonly singleValue = computed<string>(() => {\n const v = this.value();\n return typeof v === \"string\" ? v : \"\";\n });\n readonly multiValues = computed<string[]>(() => {\n const v = this.value();\n return Array.isArray(v) ? v : [];\n });\n\n private readonly defaultSelectAllLabel = this.translationService.track(\n \"select.select-all\",\n );\n private readonly defaultClearLabel = this.translationService.track(\n \"filter.clear-selection\",\n );\n readonly resolvedSelectAllLabel = computed(\n () => this.selectAllLabel() ?? this.defaultSelectAllLabel(),\n );\n readonly resolvedClearLabel = computed(\n () => this.clearLabel() ?? this.defaultClearLabel(),\n );\n\n private readonly idGenerator = inject(_IdGenerator);\n private readonly baseId = this.idGenerator.getId(\"tedi-filter\");\n\n private readonly formDisabled = signal(false);\n readonly isDisabled = computed(\n () =>\n this.disabled() ||\n this.formDisabled() ||\n !!this.filterGroup?.disabled(),\n );\n readonly searchTerm = signal(\"\");\n readonly activeOptionIndex = signal<number>(-1);\n private suppressNextOptionsFocusAutoSelect = false;\n\n readonly activeDescendantId = computed(() => {\n const idx = this.activeOptionIndex();\n if (idx === -1) return null;\n return idx < this.filteredOptions().length\n ? this.getOptionId(idx)\n : null;\n });\n\n readonly iconSize = computed(() => (this.size() === \"large\" ? 24 : 18));\n\n readonly isGrouped = computed(\n () => !!this.filterGroup && this.filterGroup.isManaged(),\n );\n\n readonly isGroupedRadio = computed(\n () => this.isGrouped() && !this.filterGroup!.allowMultiple(),\n );\n\n readonly hidePrepend = computed(\n () =>\n this.isSelected() &&\n (this.filterPrepend()?.hideWhenSelected() ?? true),\n );\n\n readonly isSelected = computed(() => {\n if (this.isGrouped()) {\n return this.filterGroup!.isSelected(this.singleValue());\n }\n if (this.isMultiSelect()) {\n return this.multiValues().length > 0;\n }\n if (this.isSingleSelect()) {\n return this.singleValue() !== \"\";\n }\n return this.selected();\n });\n\n readonly selectedCount = computed(() => this.multiValues().length);\n\n readonly selectedLabel = computed(() => {\n const val = this.singleValue();\n if (!val) return null;\n return this.options().find((opt) => opt.value === val)?.label ?? null;\n });\n\n readonly displayText = computed(() => {\n if (this.isSingleSelect()) {\n const label = this.selectedLabel();\n if (label && this.preserveLabel()) {\n return this.text() + \": \" + label;\n }\n return label ?? this.text();\n }\n return this.text();\n });\n\n readonly filteredOptions = computed(() => {\n const term = this.searchTerm().toLowerCase();\n if (!term) return this.options();\n return this.options().filter((opt) =>\n opt.label.toLowerCase().includes(term),\n );\n });\n\n readonly allFilteredSelected = computed(() => {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n if (filtered.length === 0) return false;\n const vals = this.multiValues();\n return filtered.every((opt) => vals.includes(opt.value));\n });\n\n readonly someFilteredSelected = computed(() => {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n const vals = this.multiValues();\n const selectedCount = filtered.filter((opt) =>\n vals.includes(opt.value),\n ).length;\n return selectedCount > 0 && selectedCount < filtered.length;\n });\n\n private onChange: (value: boolean | string | string[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n writeValue(value: boolean | string | string[]): void {\n if (this.isMultiSelect()) {\n this.value.set(Array.isArray(value) ? value : []);\n } else if (this.isSingleSelect()) {\n this.value.set(typeof value === \"string\" ? value : \"\");\n } else {\n this.selected.set(!!value);\n }\n }\n\n registerOnChange(fn: (value: boolean | string | string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.isGrouped()) {\n this.filterGroup!.selectFilter(this.singleValue());\n return;\n }\n const newValue = !this.selected();\n this.selected.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n\n getOptionId(index: number): string {\n return `${this.baseId}-option-${index}`;\n }\n\n isOptionSelected(value: string): boolean {\n if (this.isSingleSelect()) {\n return this.singleValue() === value;\n }\n return this.multiValues().includes(value);\n }\n\n selectOption(value: string): void {\n const newValue = this.singleValue() === value ? \"\" : value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n this.dropdown()?.hideDropdown();\n this.triggerBtn()?.nativeElement.focus();\n }\n\n toggleOption(value: string): void {\n const current = this.multiValues();\n const newValues = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value];\n this.value.set(newValues);\n this.onChange(newValues);\n this.onTouched();\n if (this.clearSearchOnSelect()) {\n this.searchTerm.set(\"\");\n }\n }\n\n toggleSelectAll(): void {\n const filtered = this.filteredOptions().filter((opt) => !opt.disabled);\n let newValues: string[];\n if (this.allFilteredSelected()) {\n const filteredValues = new Set(filtered.map((opt) => opt.value));\n newValues = this.multiValues().filter((v) => !filteredValues.has(v));\n } else {\n const current = new Set(this.multiValues());\n filtered.forEach((opt) => current.add(opt.value));\n newValues = [...current];\n }\n this.value.set(newValues);\n this.onChange(newValues);\n this.onTouched();\n }\n\n clearSelection(): void {\n this.value.set([]);\n this.onChange([]);\n this.onTouched();\n }\n\n clearSingleSelection(): void {\n this.value.set(\"\");\n this.onChange(\"\");\n this.onTouched();\n }\n\n onCustomClear(): void {\n this.cleared.emit();\n }\n\n onSearchClear(): void {\n this.searchTerm.set(\"\");\n }\n\n focusDropdownContent(keyboard = false, focusLast = false): void {\n setTimeout(() => {\n if (!this.dropdown()?.floatUiComponent().state) return;\n if (!keyboard) {\n this.suppressNextOptionsFocusAutoSelect = true;\n this.activeOptionIndex.set(-1);\n }\n const focusable = this.getTabStops();\n if (focusLast) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n });\n }\n\n handleDropdownKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case \"Escape\":\n event.preventDefault();\n this.dropdown()?.hideDropdown();\n this.triggerBtn()?.nativeElement.focus();\n break;\n\n case \"Tab\":\n this.handleTabKey(event);\n break;\n }\n }\n\n onOptionsFocus(): void {\n if (this.suppressNextOptionsFocusAutoSelect) {\n this.suppressNextOptionsFocusAutoSelect = false;\n return;\n }\n if (this.activeOptionIndex() === -1) {\n this.activeOptionIndex.set(this.findNextEnabledIndex(-1, 1));\n }\n }\n\n onOptionsBlur(): void {\n this.activeOptionIndex.set(-1);\n this.suppressNextOptionsFocusAutoSelect = false;\n }\n\n onOptionsMousedown(): void {\n this.suppressNextOptionsFocusAutoSelect = true;\n this.activeOptionIndex.set(-1);\n }\n\n onOptionsKeydown(event: KeyboardEvent): void {\n const options = this.filteredOptions();\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = this.findNextEnabledIndex(\n this.activeOptionIndex(),\n 1,\n );\n if (next !== -1) this.setActiveOption(next);\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n const prev = this.findNextEnabledIndex(\n this.activeOptionIndex(),\n -1,\n );\n if (prev !== -1) this.setActiveOption(prev);\n break;\n }\n\n case \"Home\":\n event.preventDefault();\n this.setActiveOption(this.findNextEnabledIndex(-1, 1));\n break;\n\n case \"End\":\n event.preventDefault();\n this.setActiveOption(\n this.findNextEnabledIndex(options.length, -1),\n );\n break;\n\n case \"Enter\":\n case \" \": {\n event.preventDefault();\n const idx = this.activeOptionIndex();\n const option = options[idx];\n if (option && !option.disabled) {\n if (this.isSingleSelect()) {\n this.selectOption(option.value);\n } else {\n this.toggleOption(option.value);\n }\n }\n break;\n }\n }\n }\n\n private handleTabKey(event: KeyboardEvent): void {\n const tabStops = this.getTabStops();\n if (!tabStops.length) return;\n\n const currentIndex = tabStops.indexOf(\n document.activeElement as HTMLElement,\n );\n\n if (event.shiftKey && currentIndex <= 0) {\n event.preventDefault();\n tabStops[tabStops.length - 1].focus();\n } else if (!event.shiftKey && currentIndex === tabStops.length - 1) {\n event.preventDefault();\n tabStops[0].focus();\n }\n }\n\n private findNextEnabledIndex(from: number, direction: 1 | -1): number {\n const options = this.filteredOptions();\n let index = from + direction;\n while (index >= 0 && index < options.length) {\n if (!options[index].disabled) return index;\n index += direction;\n }\n return -1;\n }\n\n private setActiveOption(index: number): void {\n this.activeOptionIndex.set(index);\n const container = this.optionsList()?.nativeElement;\n if (!container || index === -1) return;\n const items = container.querySelectorAll<HTMLElement>(\n \".tedi-filter-dropdown__item\",\n );\n items[index]?.scrollIntoView({ block: \"nearest\" });\n }\n\n private getTabStops(): HTMLElement[] {\n const panel = this.dropdownPanel()?.nativeElement;\n if (!panel) return [];\n return Array.from(\n panel.querySelectorAll<HTMLElement>(\n 'input:not([disabled]):not([tabindex=\"-1\"]), button:not([disabled]), [role=\"option\"][tabindex=\"0\"], [role=\"listbox\"][tabindex=\"0\"], [role=\"checkbox\"][tabindex=\"0\"]',\n ),\n );\n }\n}\n","@if (hasDropdown()) {\n <tedi-dropdown #dropdown [appendTo]=\"appendTo()\" position=\"bottom-start\">\n <button\n #triggerBtn\n tedi-dropdown-trigger\n ariaHaspopup=\"dialog\"\n class=\"tedi-filter__button\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n (click)=\"focusDropdownContent()\"\n (keydown.arrowDown)=\"focusDropdownContent(true)\"\n (keydown.arrowUp)=\"focusDropdownContent(true, true)\"\n >\n <ng-container *ngTemplateOutlet=\"buttonContent\" />\n </button>\n <tedi-dropdown-content>\n <div\n #dropdownPanel\n class=\"tedi-filter-dropdown\"\n [class.tedi-filter-dropdown--custom]=\"hasCustomContent()\"\n role=\"dialog\"\n [attr.aria-label]=\"text()\"\n (keydown)=\"handleDropdownKeydown($event)\"\n >\n @if (hasCustomContent()) {\n <div class=\"tedi-filter-dropdown__custom-content\">\n <ng-content select=\"[tediFilterContent]\" />\n </div>\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"onCustomClear()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n } @else if (isSingleSelect()) {\n @if (showSearch()) {\n <ng-container *ngTemplateOutlet=\"searchField\" />\n }\n\n <div\n #optionsList\n class=\"tedi-filter-dropdown__options\"\n role=\"listbox\"\n [attr.aria-label]=\"text()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (focus)=\"onOptionsFocus()\"\n (blur)=\"onOptionsBlur()\"\n (mousedown)=\"onOptionsMousedown()\"\n (keydown)=\"onOptionsKeydown($event)\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div\n class=\"tedi-filter-dropdown__item\"\n [class.tedi-filter-dropdown__item--disabled]=\"option.disabled\"\n [class.tedi-filter-dropdown__item--focused]=\"activeOptionIndex() === i\"\n [class.tedi-filter-dropdown__item--selected]=\"isOptionSelected(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [id]=\"getOptionId(i)\"\n (click)=\"!option.disabled && selectOption(option.value)\"\n >\n <tedi-dropdown-item-value\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n }\n </div>\n\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"clearSingleSelection()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n } @else {\n @if (showSearch()) {\n <ng-container *ngTemplateOutlet=\"searchField\" />\n }\n\n @if (showSelectAll() && filteredOptions().length > 0) {\n <div\n class=\"tedi-filter-dropdown__item tedi-filter-dropdown__item--select-all\"\n role=\"checkbox\"\n [attr.aria-checked]=\"allFilteredSelected() ? 'true' : someFilteredSelected() ? 'mixed' : 'false'\"\n (click)=\"toggleSelectAll()\"\n (keydown.enter)=\"toggleSelectAll()\"\n (keydown.space)=\"$event.preventDefault(); toggleSelectAll()\"\n tabindex=\"0\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"allFilteredSelected()\"\n [indeterminate]=\"someFilteredSelected()\"\n >\n <tedi-dropdown-item-value-label>{{ resolvedSelectAllLabel() }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n <tedi-separator />\n }\n\n <div\n #optionsList\n class=\"tedi-filter-dropdown__options\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"text()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (focus)=\"onOptionsFocus()\"\n (blur)=\"onOptionsBlur()\"\n (mousedown)=\"onOptionsMousedown()\"\n (keydown)=\"onOptionsKeydown($event)\"\n >\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div\n class=\"tedi-filter-dropdown__item\"\n [class.tedi-filter-dropdown__item--disabled]=\"option.disabled\"\n [class.tedi-filter-dropdown__item--focused]=\"activeOptionIndex() === i\"\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [id]=\"getOptionId(i)\"\n (click)=\"!option.disabled && toggleOption(option.value)\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{ option.label }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n }\n </div>\n\n @if (showClear()) {\n <tedi-separator />\n <div class=\"tedi-filter-dropdown__clear\">\n <button\n tedi-button\n variant=\"neutral\"\n size=\"small\"\n type=\"button\"\n (click)=\"clearSelection()\"\n >\n <tedi-icon name=\"refresh\" [size]=\"18\" color=\"brand\" />\n <span>{{ resolvedClearLabel() }}</span>\n </button>\n </div>\n }\n }\n </div>\n </tedi-dropdown-content>\n </tedi-dropdown>\n} @else {\n <button\n class=\"tedi-filter__button\"\n type=\"button\"\n [disabled]=\"isDisabled()\"\n [attr.role]=\"isGroupedRadio() ? 'radio' : null\"\n [attr.aria-checked]=\"isGroupedRadio() ? isSelected() : null\"\n [attr.aria-pressed]=\"isGroupedRadio() ? null : isSelected()\"\n (click)=\"toggle()\"\n >\n <ng-container *ngTemplateOutlet=\"buttonContent\" />\n </button>\n}\n\n<ng-template #buttonContent>\n @if (!hasDropdown() && isSelected()) {\n <tedi-icon class=\"tedi-filter__icon\" name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n\n <div class=\"tedi-filter__prepend\" [class.tedi-filter__prepend--hidden]=\"hidePrepend()\">\n <ng-content select=\"[tediFilterPrepend]\" />\n </div>\n\n <span class=\"tedi-filter__text\">{{ displayText() }}</span>\n\n <div class=\"tedi-filter__append\">\n <ng-content select=\"[tediFilterAppend]\" />\n </div>\n\n @if (isMultiSelect() && isSelected() && selectedCount() > 0) {\n <tedi-status-badge class=\"tedi-filter__count\" [text]=\"'' + selectedCount()\" color=\"brand\" />\n }\n\n @if (hasDropdown()) {\n <tedi-icon class=\"tedi-filter__icon\" name=\"arrow_drop_down\" variant=\"filled\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n</ng-template>\n\n<ng-template #searchField>\n <div class=\"tedi-filter-dropdown__search\">\n <tedi-form-field icon=\"search\" [clearable]=\"searchClearable()\">\n <input\n tedi-text-field\n type=\"text\"\n role=\"searchbox\"\n [attr.aria-label]=\"text()\"\n [(value)]=\"searchTerm\"\n (clear)=\"onSearchClear()\"\n />\n </tedi-form-field>\n </div>\n <tedi-separator />\n</ng-template>\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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n signal,\n viewChild,\n} from \"@angular/core\";\n\nexport type ScrollFadeSize = 0 | 10 | 20;\nexport type ScrollFadePosition = \"top\" | \"bottom\" | \"both\";\nexport type ScrollFadeScrollbar = \"default\" | \"custom\";\n\n@Component({\n standalone: true,\n selector: \"tedi-scroll-fade\",\n templateUrl: \"./scroll-fade.component.html\",\n styleUrl: \"./scroll-fade.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"classes()\",\n },\n})\nexport class ScrollFadeComponent implements AfterViewInit {\n /** Size of the fade gradient in percentages. */\n readonly fadeSize = input<ScrollFadeSize>(20);\n\n /** Which edges show the fade. */\n readonly fadePosition = input<ScrollFadePosition>(\"both\");\n\n /** Scrollbar style. */\n readonly scrollBar = input<ScrollFadeScrollbar>(\"custom\");\n\n /** Emitted when scrolled to the top. */\n readonly scrolledToTop = output<void>();\n\n /** Emitted when scrolled to the bottom. */\n readonly scrolledToBottom = output<void>();\n\n private readonly innerRef = viewChild.required<ElementRef<HTMLDivElement>>(\"inner\");\n\n private readonly fade = signal({ top: false, bottom: false });\n\n readonly classes = computed(() => {\n const classList = [\"tedi-scroll-fade\"];\n const { top, bottom } = this.fade();\n const pos = this.fadePosition();\n const size = this.fadeSize();\n\n if (top && (pos === \"both\" || pos === \"top\")) {\n classList.push(`tedi-scroll-fade--top-${size}`);\n }\n\n if (bottom && (pos === \"both\" || pos === \"bottom\")) {\n classList.push(`tedi-scroll-fade--bottom-${size}`);\n }\n\n return classList.join(\" \");\n });\n\n readonly innerClasses = computed(() => {\n const classList = [\"tedi-scroll-fade__inner\"];\n\n if (this.scrollBar() === \"custom\") {\n classList.push(\"tedi-scroll-fade__inner--custom-scroll\");\n }\n\n return classList.join(\" \");\n });\n\n onScroll(): void {\n const el = this.innerRef().nativeElement;\n this.updateFade(el.scrollTop, el.scrollHeight, el.clientHeight);\n }\n\n ngAfterViewInit(): void {\n const el = this.innerRef().nativeElement;\n this.updateFade(el.scrollTop, el.scrollHeight, el.clientHeight);\n }\n\n private updateFade(scrollTop: number, scrollHeight: number, clientHeight: number): void {\n const atTop = scrollTop === 0;\n const atBottom = Math.abs(scrollHeight - scrollTop - clientHeight) <= 1;\n\n if (atTop) {\n this.scrolledToTop.emit();\n }\n\n if (atBottom) {\n this.scrolledToBottom.emit();\n }\n\n this.fade.set({ top: !atTop, bottom: !atBottom });\n }\n}\n","<div #inner [class]=\"innerClasses()\" (scroll)=\"onScroll()\">\n <ng-content />\n</div>\n","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\" [preventOverflow]=\"true\" appendTo=\"\">\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\" [preventOverflow]=\"true\" appendTo=\"\">\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\" [preventOverflow]=\"true\" appendTo=\"\">\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 private isTouch = false;\n\n constructor() {\n effect(() => {\n const element = this.interactiveElement();\n if (!element) return;\n\n element.setAttribute(\"aria-describedby\", this.tooltip.descriptionId);\n });\n }\n\n @HostListener(\"touchstart\")\n onTouchStart() {\n this.isTouch = true;\n }\n\n @HostListener(\"touchend\")\n onTouchEnd() {\n this.tooltip.toggleTooltip();\n setTimeout(() => (this.isTouch = false), 300);\n }\n\n @HostListener(\"click\")\n onClick() {\n if (this.isTouch) return;\n\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 (this.isTouch) return;\n\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 (this.isTouch) return;\n\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 (this.isTouch) return;\n\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.isTouch) return;\n if (this.tooltip.isContentHovered()) return;\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 booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\n\n@Component({\n selector: \"tedi-horizontal-stepper-item\",\n imports: [IconComponent, TediTranslationPipe],\n templateUrl: \"./horizontal-stepper-item.component.html\",\n styleUrl: \"./horizontal-stepper-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-horizontal-stepper-item]\": \"true\",\n \"[class.tedi-horizontal-stepper-item--selected]\": \"selected()\",\n \"[class.tedi-horizontal-stepper-item--completed]\":\n \"completed() && !error()\",\n \"[class.tedi-horizontal-stepper-item--error]\": \"error()\",\n \"[class.tedi-horizontal-stepper-item--disabled]\": \"disabled()\",\n },\n})\nexport class HorizontalStepperItemComponent {\n label = input.required<string>();\n description = input<string>();\n completed = input(false, { transform: booleanAttribute });\n error = input(false, { transform: booleanAttribute });\n selected = input(false, { transform: booleanAttribute });\n /**\n * Prevents the step from being clicked or focused. Use for future steps\n * the user shouldn't reach yet (e.g. when validation runs step-by-step).\n * Leave completed steps enabled so users can navigate back to them.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Emits when the user clicks the step. Does not emit when the step is\n * selected (it's already the current step) or disabled.\n */\n stepSelect = output();\n\n /** @internal Set by parent HorizontalStepperComponent */\n _stepNumber = signal(0);\n\n protected onClick(): void {\n if (this.selected() || this.disabled()) return;\n this.stepSelect.emit();\n }\n}\n","<button\n class=\"tedi-horizontal-stepper-item__step\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [attr.aria-current]=\"selected() ? 'step' : null\"\n (click)=\"onClick()\"\n>\n <span class=\"tedi-horizontal-stepper-item__indicator\">\n @if (completed() && !error()) {\n <tedi-icon\n name=\"check\"\n color=\"white\"\n [size]=\"18\"\n [label]=\"'stepper.completed' | tediTranslate\"\n />\n } @else if (error()) {\n <tedi-icon\n name=\"exclamation\"\n color=\"white\"\n [size]=\"18\"\n [label]=\"'stepper.error' | tediTranslate\"\n />\n } @else {\n <span class=\"tedi-horizontal-stepper-item__number\">{{ _stepNumber() }}</span>\n }\n </span>\n <span class=\"tedi-horizontal-stepper-item__content\">\n <span class=\"tedi-horizontal-stepper-item__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"tedi-horizontal-stepper-item__description\">{{ description() }}</span>\n }\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { HorizontalStepperItemComponent } from \"./horizontal-stepper-item/horizontal-stepper-item.component\";\nimport { BreakpointFlag } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type HorizontalStepperBackground = \"default\" | \"transparent\";\n\n@Component({\n selector: \"tedi-horizontal-stepper\",\n templateUrl: \"./horizontal-stepper.component.html\",\n styleUrl: \"./horizontal-stepper.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class.tedi-horizontal-stepper]\": \"true\",\n \"[class.tedi-horizontal-stepper--transparent]\":\n \"background() === 'transparent'\",\n \"[class.tedi-horizontal-stepper--compact]\": \"compact() === true\",\n \"[class.tedi-horizontal-stepper--compact-sm]\": \"compact() === 'sm'\",\n \"[class.tedi-horizontal-stepper--compact-md]\": \"compact() === 'md'\",\n \"[class.tedi-horizontal-stepper--compact-lg]\": \"compact() === 'lg'\",\n \"[class.tedi-horizontal-stepper--compact-xl]\": \"compact() === 'xl'\",\n \"[class.tedi-horizontal-stepper--compact-xxl]\": \"compact() === 'xxl'\",\n role: \"navigation\",\n \"[attr.aria-label]\": \"ariaLabel()\",\n },\n})\nexport class HorizontalStepperComponent {\n ariaLabel = input<string>();\n background = input<HorizontalStepperBackground>(\"default\");\n /**\n * Collapse labels so only indicators plus the selected step's label are visible.\n * `true` — always collapsed. A breakpoint (`'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`) — collapsed below that breakpoint. @default 'sm'\n */\n compact = input<BreakpointFlag>(\"sm\");\n\n items = contentChildren(HorizontalStepperItemComponent);\n\n private assignStepNumbers = effect(() => {\n this.items().forEach((item, index) => {\n item._stepNumber.set(index + 1);\n });\n });\n}\n","<ng-content />\n","import { Observable } from \"rxjs\";\nimport { DialogRef } from \"@angular/cdk/dialog\";\n\n/**\n * Reference to a modal opened via `ModalService`.\n * Provides methods to close the modal and observe its lifecycle.\n */\nexport class ModalRef<R = unknown> {\n constructor(private readonly dialogRef: DialogRef<R>) {}\n\n /** Close the modal, optionally returning a result. */\n close(result?: R): void {\n this.dialogRef.close(result);\n }\n\n /** Observable that emits when the modal is closed, with the optional result value. */\n get closed(): Observable<R | undefined> {\n return this.dialogRef.closed;\n }\n\n /** Observable that emits when the backdrop is clicked. */\n get backdropClick(): Observable<MouseEvent> {\n return this.dialogRef.backdropClick;\n }\n\n /** Observable that emits on keyboard events within the modal. */\n get keydownEvents(): Observable<KeyboardEvent> {\n return this.dialogRef.keydownEvents;\n }\n\n /** Update the modal's width and height. */\n updateSize(width?: string, height?: string): this {\n this.dialogRef.updateSize(width, height);\n return this;\n }\n}\n","import { InjectionToken, Signal } from \"@angular/core\";\nimport { BreakpointFlag } from \"../../../services/breakpoint/breakpoint.service\";\n\nexport type ModalSize = \"default\" | \"small\";\nexport type ModalWidthPreset = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ModalWidth = ModalWidthPreset | (string & {});\nexport type ModalPosition = \"center\" | \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type ModalScrollBehavior = \"content\" | \"page\";\nexport type ModalFullscreen = BreakpointFlag;\n\nexport interface ModalConfig<D = unknown> {\n /** Data to pass to the modal content component. Accessible via `inject(MODAL_DATA)`. */\n data?: D;\n /** Modal size variant. @default 'default' */\n size?: ModalSize;\n /** Modal width — preset ('xs'–'xl') or custom CSS value (e.g. '800px'). @default 'sm' */\n width?: ModalWidth;\n /** Position of the modal. @default 'center' */\n position?: ModalPosition;\n /** Scroll behavior when content overflows. 'content' scrolls inside the modal, 'page' scrolls the overlay. @default 'content' */\n scrollBehavior?: ModalScrollBehavior;\n /** Whether clicking the backdrop closes the modal. @default true */\n closeOnBackdropClick?: boolean;\n /** Whether pressing Escape closes the modal. @default true */\n closeOnEscape?: boolean;\n /** Whether to show a close button in the header. @default true */\n showClose?: boolean;\n /** Fullscreen mode. `true` = always fullscreen, a breakpoint (`'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`) = fullscreen below that breakpoint. @default false */\n fullscreen?: ModalFullscreen;\n /** Max-width cap (e.g. '75%', '60vw'). Overrides the default 95vw limit. */\n maxWidth?: string;\n /** ARIA label for the dialog. */\n ariaLabel?: string;\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string;\n}\n\n/** Injection token for data passed to a modal opened via ModalService. */\nexport const MODAL_DATA = new InjectionToken<unknown>(\"TediModalData\");\n\n/**\n * Injection token exposing the current modal's `size` variant as a signal.\n * Provided by both the template-based `<tedi-modal>` and `ModalService` so\n * child components (notably `<tedi-modal-header>`) can derive size-aware\n * defaults without duplicating the variant in their own inputs.\n */\nexport const MODAL_SIZE = new InjectionToken<Signal<ModalSize>>(\"TediModalSize\");\n","import { Injectable, inject, signal } from \"@angular/core\";\nimport { Dialog, DialogRef } from \"@angular/cdk/dialog\";\nimport { GlobalPositionStrategy, Overlay } from \"@angular/cdk/overlay\";\nimport { ComponentType } from \"@angular/cdk/portal\";\nimport { ModalRef } from \"./modal-ref\";\nimport {\n ModalConfig,\n ModalFullscreen,\n ModalPosition,\n ModalScrollBehavior,\n MODAL_DATA,\n MODAL_SIZE,\n} from \"./modal.types\";\n\nconst WIDTH_PRESETS: readonly string[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\n\n@Injectable({ providedIn: \"root\" })\nexport class ModalService {\n private readonly dialog = inject(Dialog);\n private readonly overlay = inject(Overlay);\n\n /**\n * Open a modal dialog with the given component as content.\n *\n * @param component Component to render inside the modal.\n * @param config Modal configuration (size, width, position, data, etc.).\n * @returns A `ModalRef` to control and observe the modal.\n *\n * @example\n * ```ts\n * const ref = this.modalService.open(MyFormComponent, {\n * data: { userId: 123 },\n * width: 'md',\n * position: 'center',\n * });\n *\n * ref.closed.subscribe(result => console.log('Modal closed with:', result));\n * ```\n */\n open<R = unknown, D = unknown>(\n component: ComponentType<unknown>,\n config: ModalConfig<D> = {},\n ): ModalRef<R> {\n const {\n data,\n size = \"default\",\n width = \"sm\",\n position = \"center\",\n scrollBehavior = \"content\",\n closeOnBackdropClick = true,\n closeOnEscape = true,\n fullscreen = false,\n maxWidth,\n ariaLabel,\n ariaLabelledBy,\n } = config;\n\n const panelClasses = this.buildPanelClasses(size, width, position, scrollBehavior, fullscreen);\n const isPresetWidth = WIDTH_PRESETS.includes(width);\n\n const dialogRef = this.dialog.open<R, D>(component, {\n data,\n panelClass: panelClasses,\n backdropClass: \"tedi-modal-backdrop\",\n hasBackdrop: true,\n disableClose: true,\n ariaLabel,\n ariaLabelledBy,\n ariaModal: true,\n autoFocus: \"first-tabbable\",\n restoreFocus: true,\n positionStrategy: this.buildPositionStrategy(position, scrollBehavior),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n providers: (ref) => [\n { provide: ModalRef, useValue: new ModalRef<R>(ref) },\n { provide: MODAL_DATA, useValue: data },\n { provide: MODAL_SIZE, useValue: signal(size) },\n ],\n });\n\n if (!isPresetWidth) {\n dialogRef.overlayRef.overlayElement.style.width = width;\n }\n\n if (maxWidth) {\n dialogRef.overlayRef.overlayElement.style.setProperty(\"--_tedi-modal-max-width\", maxWidth);\n }\n\n this.setupDialogBehavior(dialogRef, scrollBehavior, closeOnBackdropClick, closeOnEscape);\n\n return new ModalRef<R>(dialogRef);\n }\n\n /** Close all open modals. */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n private buildPanelClasses(\n size: string,\n width: string,\n position: ModalPosition,\n scrollBehavior: ModalScrollBehavior,\n fullscreen: ModalFullscreen,\n ): string[] {\n const classes = [\n \"tedi-modal-dialog\",\n `tedi-modal-dialog--${size}`,\n ];\n\n if (WIDTH_PRESETS.includes(width)) {\n classes.push(`tedi-modal-dialog--${width}`);\n }\n\n if (position === \"top\" || position === \"bottom\") {\n classes.push(\"tedi-modal-dialog--center\", `tedi-modal-dialog--${position}`);\n } else {\n classes.push(`tedi-modal-dialog--${position}`);\n }\n\n if (scrollBehavior === \"page\") {\n classes.push(\"tedi-modal-dialog--scroll-page\");\n }\n\n if (fullscreen === true) {\n classes.push(\"tedi-modal-dialog--fullscreen\");\n } else if (typeof fullscreen === \"string\") {\n classes.push(`tedi-modal-dialog--fullscreen-${fullscreen}`);\n }\n\n return classes;\n }\n\n private setupDialogBehavior<R>(\n dialogRef: DialogRef<R>,\n scrollBehavior: ModalScrollBehavior,\n closeOnBackdropClick: boolean,\n closeOnEscape: boolean,\n ): void {\n if (scrollBehavior === \"page\") {\n const host = dialogRef.overlayRef.hostElement;\n host.style.overflow = \"auto\";\n host.style.paddingBlock = \"var(--layout-grid-gutters-16)\";\n }\n\n if (closeOnBackdropClick) {\n dialogRef.backdropClick.subscribe(() => dialogRef.close());\n }\n\n if (closeOnEscape) {\n dialogRef.keydownEvents.subscribe((event) => {\n if (event.key === \"Escape\") {\n dialogRef.close();\n }\n });\n }\n }\n\n private buildPositionStrategy(\n position: ModalPosition,\n scrollBehavior: ModalScrollBehavior,\n ): GlobalPositionStrategy {\n const global = this.overlay.position().global();\n\n if (position === \"left\") {\n return global.left(\"0\").top(\"0\");\n }\n\n if (position === \"right\") {\n return global.right(\"0\").top(\"0\");\n }\n\n if (position === \"top\") {\n return global.centerHorizontally().top(\"var(--modal-top-margin)\");\n }\n\n if (position === \"bottom\") {\n return global.centerHorizontally().bottom(\"var(--modal-top-margin)\");\n }\n\n if (scrollBehavior === \"page\") {\n return global.centerHorizontally().top(\"0\");\n }\n\n return global.centerHorizontally().centerVertically();\n }\n}\n","import { PaginationItem, PaginationItemType } from \"./pagination.types\";\n\nexport interface UsePaginationArgs {\n /** 1-based current page. */\n page: number;\n /** Total page count. */\n pageCount: number;\n /** Pages always shown at the very start and very end. */\n boundaryCount?: number;\n /** Pages shown on either side of the current page. */\n siblingCount?: number;\n}\n\nconst range = (start: number, end: number): number[] => {\n if (end < start) return [];\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n};\n\n/**\n * Computes the ordered list of pagination items (previous, page-buttons,\n * ellipsis, next).\n *\n * The algorithm targets a stable slot count: for any `pageCount` larger than\n * the window size, the returned list always has the same number of page\n * entries (`boundaryCount * 2 + siblingCount * 2 + 3`). As the current page\n * moves toward a boundary, the corresponding ellipsis is swapped for an extra\n * adjacent page number rather than collapsing the list — the visual row does\n * not expand or contract as the user navigates.\n */\nexport function usePagination({\n page,\n pageCount,\n boundaryCount = 1,\n siblingCount = 1,\n}: UsePaginationArgs): PaginationItem[] {\n if (pageCount <= 0) return [];\n\n const safeBoundary = Math.max(0, boundaryCount);\n const safeSibling = Math.max(0, siblingCount);\n const currentPage = Math.max(1, Math.min(pageCount, page));\n\n const windowSize = safeBoundary * 2 + safeSibling * 2 + 3;\n\n let pageList: (number | \"ellipsis\")[];\n\n if (pageCount <= windowSize) {\n pageList = range(1, pageCount);\n } else {\n const edgeRun = safeBoundary + safeSibling * 2 + 2;\n const startThreshold = safeBoundary + safeSibling + 2;\n const endThreshold = pageCount - safeBoundary - safeSibling - 1;\n\n if (currentPage <= startThreshold) {\n pageList = [\n ...range(1, edgeRun),\n \"ellipsis\",\n ...range(pageCount - safeBoundary + 1, pageCount),\n ];\n } else if (currentPage >= endThreshold) {\n pageList = [\n ...range(1, safeBoundary),\n \"ellipsis\",\n ...range(pageCount - edgeRun + 1, pageCount),\n ];\n } else {\n pageList = [\n ...range(1, safeBoundary),\n \"ellipsis\",\n ...range(currentPage - safeSibling, currentPage + safeSibling),\n \"ellipsis\",\n ...range(pageCount - safeBoundary + 1, pageCount),\n ];\n }\n }\n\n const items: PaginationItem[] = [\n {\n type: \"previous\" as PaginationItemType,\n page: currentPage > 1 ? currentPage - 1 : null,\n selected: false,\n disabled: currentPage <= 1,\n },\n ...pageList.map<PaginationItem>((entry) =>\n entry === \"ellipsis\"\n ? { type: \"ellipsis\", page: null, selected: false, disabled: true }\n : {\n type: \"page\",\n page: entry,\n selected: entry === currentPage,\n disabled: false,\n },\n ),\n {\n type: \"next\",\n page: currentPage < pageCount ? currentPage + 1 : null,\n selected: false,\n disabled: currentPage >= pageCount,\n },\n ];\n\n return items;\n}\n","import { Directive } from \"@angular/core\";\n\n/**\n * Marker directive that lets consumers fully replace the default\n * \"X results\" label inside `<tedi-pagination>`.\n *\n * @example\n * ```html\n * <tedi-pagination [pageCount]=\"10\" [totalItems]=\"1000\">\n * <span tediPaginationResults>1000+ tulemust</span>\n * </tedi-pagination>\n * ```\n */\n@Directive({\n selector: \"[tediPaginationResults]\",\n standalone: true,\n})\nexport class TediPaginationResultsDirective {}\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n inject,\n AfterViewInit,\n ElementRef,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n SkipSelf,\n Signal,\n effect,\n} from \"@angular/core\";\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport { CdkTrapFocus } from \"@angular/cdk/a11y\";\nimport { ModalRef } from \"./modal-ref\";\nimport { MODAL_SIZE } from \"./modal.types\";\nimport type {\n ModalSize,\n ModalWidth,\n ModalPosition\n} from \"./modal.types\";\n\n/**\n * Modal component that works in two modes:\n *\n * **Service mode** When opened via `ModalService.open()`, acts as a\n * lightweight layout wrapper. CDK Dialog handles overlay, backdrop, focus trap,\n * scroll blocking, and keyboard events.\n *\n * **Standalone mode** (deprecated): When used directly in a template with `[(open)]`,\n * manages its own overlay, scroll lock, and focus. Migrate to `ModalService.open()`.\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 providers: [\n {\n provide: MODAL_SIZE,\n // In service mode the template `size` input stays at its default — the\n // real variant lives on the cdk-overlay-pane and is provided by\n // ModalService via the dialog injector. Delegate to that when present.\n useFactory: (\n modal: ModalComponent,\n parentSize: Signal<ModalSize> | null,\n ) => (modal.serviceMode && parentSize ? parentSize : modal.size),\n deps: [\n ModalComponent,\n [new Optional(), new SkipSelf(), MODAL_SIZE],\n ],\n },\n ],\n})\nexport class ModalComponent implements AfterViewInit, OnDestroy {\n /** @deprecated Is modal open? Only used in standalone (deprecated) mode. */\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 /** @deprecated Whether clicking the backdrop closes the modal. Only used in standalone mode. */\n readonly closeOnBackdropClick = input(true);\n\n private readonly document = inject(DOCUMENT);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n /**\n * When a ModalRef is available, this component is inside a CDK Dialog\n * and should act as a layout-only wrapper.\n */\n readonly serviceMode = !!inject(ModalRef, { optional: true });\n\n private prevBodyOverflow: string = \"\";\n private prevFocusedElement: HTMLElement | null = null;\n\n private readonly isPresetWidth = computed(() =>\n ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"] as string[]).includes(this.width()),\n );\n\n /** Custom width for non-preset widths (legacy mode only). */\n readonly customWidth = computed(() =>\n !this.serviceMode && !this.isPresetWidth() ? this.width() : null,\n );\n\n readonly classes = computed(() => {\n const classList = [\"tedi-modal\"];\n\n if (this.serviceMode) {\n classList.push(\"tedi-modal--service\");\n } else {\n classList.push(`tedi-modal--${this.size()}`);\n\n if (this.isPresetWidth()) {\n classList.push(`tedi-modal--${this.width()}`);\n }\n\n if (this.position() === \"top\") {\n classList.push(\"tedi-modal--center\", \"tedi-modal--top\");\n } else {\n classList.push(`tedi-modal--${this.position()}`);\n }\n\n if (this.open()) {\n classList.push(\"tedi-modal--open\");\n }\n }\n\n return classList.join(\" \");\n });\n\n constructor() {\n if (this.serviceMode) return;\n\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 (this.serviceMode) return;\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.document.body.appendChild(this.host.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.serviceMode) return;\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 /** @internal */\n onBackdropClick(): void {\n if (this.closeOnBackdropClick()) {\n this.open.set(false);\n }\n }\n\n private handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.open.set(false);\n }\n };\n}\n","@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\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","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n computed,\n input,\n inject,\n} from \"@angular/core\";\nimport {\n ClosingButtonComponent,\n ClosingButtonSize,\n} from \"../../../buttons/closing-button/closing-button.component\";\nimport { ModalComponent } from \"../modal.component\";\nimport { ModalRef } from \"../modal-ref\";\nimport { MODAL_SIZE } from \"../modal.types\";\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 host: {\n class: \"tedi-modal-header\",\n },\n})\nexport class ModalHeaderComponent {\n /** Should show closing button? */\n readonly showClose = input(true);\n\n /**\n * Size of the close button. When unset, the close button size tracks the\n * modal's own `size` variant (default → standard close button, small →\n * compact close button). Set explicitly to override that default.\n */\n readonly closeButtonSize = input<ClosingButtonSize | undefined>(undefined);\n\n /** @deprecated Injected when used inside the old template-based tedi-modal. */\n private readonly modal = inject(ModalComponent, { optional: true });\n\n /** Injected when opened via ModalService. */\n private readonly modalRef = inject(ModalRef, { optional: true });\n\n /** Read from the surrounding modal so the close button can auto-shrink in small modals. */\n private readonly modalSize = inject(MODAL_SIZE, { optional: true });\n\n /**\n * Effective close-button size: explicit input wins, otherwise derive from\n * the surrounding modal's `size` variant (small modal → small button).\n */\n protected readonly effectiveCloseButtonSize = computed<ClosingButtonSize>(() => {\n const explicit = this.closeButtonSize();\n if (explicit) return explicit;\n return this.modalSize?.() === \"small\" ? \"small\" : \"default\";\n });\n\n closeModal() {\n if (this.modalRef) {\n this.modalRef.close();\n } else if (this.modal) {\n this.modal.open.set(false);\n }\n }\n}\n","<div class=\"tedi-modal-header__head\">\n <ng-content select=\"h1,h2,h3,h4,h5,h6\" />\n @if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-modal-header__close\"\n [size]=\"effectiveCloseButtonSize()\"\n (click)=\"closeModal()\"\n ></button>\n }\n</div>\n<ng-content select=\"[tedi-modal-description]\" />\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-content\",\n imports: [],\n templateUrl: \"./modal-content.component.html\",\n styleUrl: \"../modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-modal-content\",\n },\n})\nexport class ModalContentComponent {}\n","<ng-content />\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { CdkVirtualScrollViewport, ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { MODAL_DATA } from \"../../../overlay/modal/modal.types\";\nimport { ModalRef } from \"../../../overlay/modal/modal-ref\";\nimport { ModalComponent } from \"../../../overlay/modal/modal.component\";\nimport { ModalHeaderComponent } from \"../../../overlay/modal/modal-header/modal-header.component\";\nimport { ModalContentComponent } from \"../../../overlay/modal/modal-content/modal-content.component\";\n\nexport interface PaginationOptionPickerOption {\n /** Value emitted when this option is selected. */\n value: number;\n /** Visible label inside the row. */\n label: string;\n /** Full accessible name for the row's button. */\n ariaLabel: string;\n}\n\nexport interface PaginationOptionPickerModalData {\n /** Available options to choose from. */\n options: PaginationOptionPickerOption[];\n /** Currently selected value — drives the active styling and scroll-into-view target. */\n selectedValue: number;\n /** Optional heading rendered inside the modal header. Hidden when omitted. */\n title?: string;\n}\n\nconst ITEM_SIZE_PX = 48;\n\n@Component({\n selector: \"tedi-pagination-option-picker-modal\",\n standalone: true,\n imports: [\n ModalComponent,\n ModalHeaderComponent,\n ModalContentComponent,\n ScrollingModule,\n ],\n templateUrl: \"./pagination-option-picker-modal.component.html\",\n styleUrl: \"./pagination-option-picker-modal.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"tedi-pagination-option-picker-modal\",\n },\n})\nexport class PaginationOptionPickerModalComponent implements AfterViewInit {\n private readonly modalRef = inject<ModalRef<number>>(ModalRef);\n protected readonly data = inject<PaginationOptionPickerModalData>(MODAL_DATA);\n\n protected readonly itemSize = ITEM_SIZE_PX;\n protected readonly ready = signal(false);\n private readonly viewport = viewChild.required(CdkVirtualScrollViewport);\n\n ngAfterViewInit(): void {\n const selectedIndex = this.data.options.findIndex(\n (option) => option.value === this.data.selectedValue,\n );\n if (selectedIndex < 0) {\n this.ready.set(true);\n return;\n }\n\n // CDK virtual scroll sizes its internal spacer element through a\n // microtask-scheduled CD pass — until that runs, the viewport's\n // `scrollHeight` is 0 and `scrollToOffset` clamps to the top. Poll with\n // rAF until the scroll area has reached `dataLength * itemSize`, then\n // perform the actual scroll. The retry cap stops us spinning forever if\n // something prevents the spacer from sizing.\n // Until then the viewport is `visibility: hidden`, so the user never sees\n // the brief flash of page 1 before we land on the selected row.\n const targetHeight = this.data.options.length * ITEM_SIZE_PX;\n let attempts = 0;\n const attempt = () => {\n const viewport = this.viewport();\n const scrollHeight = viewport.elementRef.nativeElement.scrollHeight;\n if (scrollHeight + 1 < targetHeight && attempts < 20) {\n attempts++;\n requestAnimationFrame(attempt);\n return;\n }\n viewport.checkViewportSize();\n const viewportSize = viewport.getViewportSize();\n const offset = Math.max(\n 0,\n (selectedIndex + 0.5) * ITEM_SIZE_PX - viewportSize / 2,\n );\n viewport.scrollToOffset(offset, \"auto\");\n this.ready.set(true);\n };\n requestAnimationFrame(attempt);\n }\n\n protected trackByValue(_: number, option: PaginationOptionPickerOption): number {\n return option.value;\n }\n\n protected selectValue(value: number): void {\n this.modalRef.close(value);\n }\n}\n","<tedi-modal>\n <tedi-modal-header closeButtonSize=\"small\">\n @if (data.title) {\n <h2>{{ data.title }}</h2>\n }\n </tedi-modal-header>\n <tedi-modal-content>\n <cdk-virtual-scroll-viewport\n class=\"tedi-pagination-option-picker-modal__viewport\"\n [class.tedi-pagination-option-picker-modal__viewport--ready]=\"ready()\"\n [itemSize]=\"itemSize\"\n [style.--_tedi-pagination-option-picker-count]=\"data.options.length\"\n minBufferPx=\"240\"\n maxBufferPx=\"480\"\n >\n <button\n *cdkVirtualFor=\"let option of data.options; trackBy: trackByValue; let last = last\"\n type=\"button\"\n class=\"tedi-pagination-option-picker-modal__item\"\n [class.tedi-pagination-option-picker-modal__item--selected]=\"option.value === data.selectedValue\"\n [class.tedi-pagination-option-picker-modal__item--last]=\"last\"\n [attr.aria-current]=\"option.value === data.selectedValue ? 'true' : null\"\n [attr.aria-label]=\"option.ariaLabel\"\n (click)=\"selectValue(option.value)\"\n >\n <span\n class=\"tedi-pagination-option-picker-modal__radio\"\n [class.tedi-pagination-option-picker-modal__radio--selected]=\"option.value === data.selectedValue\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"tedi-pagination-option-picker-modal__label\">{{ option.label }}</span>\n </button>\n </cdk-virtual-scroll-viewport>\n </tedi-modal-content>\n</tedi-modal>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonComponent, ButtonVariant } from \"../../buttons/button/button.component\";\nimport { IconComponent } from \"../../base/icon/icon.component\";\nimport { SelectComponent } from \"../../form/select/select.component\";\nimport { TediTranslationService } from \"../../../services/translation/translation.service\";\nimport { BreakpointService } from \"../../../services/breakpoint/breakpoint.service\";\nimport { ModalService } from \"../../overlay/modal/modal.service\";\nimport { generateUUID } from \"../../../helpers/generate-uuid\";\nimport { usePagination } from \"./pagination.utils\";\nimport {\n PaginationBackground,\n PaginationDividerPosition,\n PaginationItem,\n PaginationLabels,\n PaginationVisibility,\n} from \"./pagination.types\";\nimport { TediPaginationResultsDirective } from \"./pagination-results.directive\";\nimport {\n PaginationOptionPickerModalComponent,\n PaginationOptionPickerModalData,\n PaginationOptionPickerOption,\n} from \"./pagination-option-picker-modal/pagination-option-picker-modal.component\";\n\n@Component({\n selector: \"tedi-pagination\",\n standalone: true,\n imports: [FormsModule, ButtonComponent, IconComponent, SelectComponent],\n templateUrl: \"./pagination.component.html\",\n styleUrl: \"./pagination.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n \"[class]\": \"hostClasses()\",\n \"data-name\": \"tedi-pagination\",\n },\n})\nexport class PaginationComponent {\n /** Total number of pages. */\n readonly pageCount = input.required<number>();\n\n /**\n * Current page (1-based). Two-way bindable with `[(page)]` or used\n * one-way with `[page]` + `(pageChange)`.\n * @default 1\n */\n readonly page = model<number>(1);\n\n /**\n * Total number of items across all pages. When set, the \"{count} results\"\n * label is rendered to the left of the nav. Can be replaced entirely by\n * projecting `[tediPaginationResults]` content.\n */\n readonly totalItems = input<number | undefined>(undefined);\n\n /**\n * Current page size. Two-way bindable with `[(pageSize)]` or used\n * one-way with `[pageSize]` + `(pageSizeChange)`.\n */\n readonly pageSize = model<number | undefined>(undefined);\n\n /** Options for the page-size select. Empty/undefined hides the select. */\n readonly pageSizeOptions = input<number[]>([]);\n\n /** Pages always shown at the start and end. @default 1 */\n readonly boundaryCount = input<number>(1);\n\n /** Pages shown on either side of the current page. @default 1 */\n readonly siblingCount = input<number>(1);\n\n /** Override any of the default text labels / aria labels. */\n readonly labels = input<Partial<PaginationLabels> | undefined>(undefined);\n\n /**\n * Background variant. `transparent` removes the surface fill and divider —\n * use it when pagination sits on a non-white container.\n * @default 'white'\n */\n readonly background = input<PaginationBackground>(\"white\");\n\n /**\n * Where the divider line sits relative to the pagination row.\n * `'none'` removes the divider entirely. The `transparent` background\n * variant overrides this and never renders a divider.\n * @default 'top'\n */\n readonly dividerPosition = input<PaginationDividerPosition>(\"top\");\n\n /**\n * Hide the \"X results\" label even when `totalItems` is set or content is\n * projected via `[tediPaginationResults]`. Pass a breakpoint name to hide\n * only below that breakpoint.\n * @default false\n */\n readonly hideResults = input<PaginationVisibility>(false);\n\n /**\n * Hide the page-size dropdown even when `pageSizeOptions` is non-empty.\n * Pass a breakpoint name to hide only below that breakpoint.\n * @default false\n */\n readonly hidePageSize = input<PaginationVisibility>(false);\n\n /**\n * Hide the pager (prev/next + page list). Pass a breakpoint name to hide\n * only below that breakpoint.\n * @default false\n */\n readonly hidePager = input<PaginationVisibility>(false);\n\n /**\n * Hide the prev/next arrow buttons inside the pager. Pass a breakpoint\n * name to hide only below that breakpoint. The page list / mobile picker\n * stays visible.\n * @default false\n */\n readonly hideArrows = input<PaginationVisibility>(false);\n\n /**\n * Keep prev/next arrows rendered (but disabled) at the first/last page\n * instead of removing them from the DOM. Useful when the pager should\n * have a stable footprint regardless of position.\n * @default false\n */\n readonly disableArrowsAtBoundary = input<boolean>(false);\n\n /**\n * Variant for the prev/next arrow buttons — accepts any `tedi-button`\n * variant. Defaults to `neutral` for icon-only arrows; pair with\n * `showArrowLabels` to render a regular button (e.g. `primary` with text).\n * @default 'neutral'\n */\n readonly arrowVariant = input<ButtonVariant>(\"neutral\");\n\n /**\n * Render the `previous` / `next` labels as visible button text next to\n * the arrow icon. When false (default) the buttons are icon-only and the\n * labels are exposed only via `aria-label`.\n * @default false\n */\n readonly showArrowLabels = input<boolean>(false);\n\n /**\n * Material Symbols icon name for the previous-page arrow.\n * @default 'arrow_back'\n */\n readonly previousIcon = input<string>(\"arrow_back\");\n\n /**\n * Material Symbols icon name for the next-page arrow.\n * @default 'arrow_forward'\n */\n readonly nextIcon = input<string>(\"arrow_forward\");\n\n /**\n * Show a heading inside the mobile page-jump / page-size picker modals.\n * Uses the `pageTitle` / `pageSizeTitle` labels.\n * @default true\n */\n readonly showModalTitle = input<boolean>(true);\n\n /** Emits whenever the user navigates to a different page. */\n readonly pageChange = output<number>();\n\n /** Emits when the user picks a different page size. */\n readonly pageSizeChange = output<number>();\n\n /** Detects the `[tediPaginationResults]` content-projection slot, if any. */\n protected readonly customResults = contentChild(TediPaginationResultsDirective);\n\n private readonly translationService = inject(TediTranslationService);\n private readonly breakpointService = inject(BreakpointService);\n private readonly modalService = inject(ModalService);\n\n /** True below `md` — pager swaps to the compact `current / total` picker. */\n protected readonly useCompactPicker = this.breakpointService.isBelowBreakpoint(\"md\");\n protected readonly pageSizeInputId = `tedi-pagination-page-size-${generateUUID()}`;\n\n protected readonly hostClasses = computed(() => {\n const classes = [\n \"tedi-pagination\",\n `tedi-pagination--bg-${this.background()}`,\n `tedi-pagination--divider-${this.dividerPosition()}`,\n ];\n if (!this.showPager()) classes.push(\"tedi-pagination--no-pager\");\n if (!this.showResults()) classes.push(\"tedi-pagination--no-results\");\n if (!this.showPageSizeSelect()) classes.push(\"tedi-pagination--no-page-size\");\n if (!this.showArrows()) classes.push(\"tedi-pagination--no-arrows\");\n return classes.join(\" \");\n });\n\n protected readonly currentPage = computed(() => {\n const total = this.pageCount();\n if (total <= 0) return 1;\n return Math.max(1, Math.min(total, this.page()));\n });\n\n protected readonly items = computed<PaginationItem[]>(() =>\n usePagination({\n page: this.currentPage(),\n pageCount: this.pageCount(),\n boundaryCount: this.boundaryCount(),\n siblingCount: this.siblingCount(),\n }),\n );\n\n private static readonly EMPTY_NAV_ITEM: PaginationItem = {\n type: \"page\",\n page: null,\n selected: false,\n disabled: true,\n };\n\n protected readonly previousItem = computed(\n () => this.items()[0] ?? PaginationComponent.EMPTY_NAV_ITEM,\n );\n protected readonly nextItem = computed(\n () => this.items()[this.items().length - 1] ?? PaginationComponent.EMPTY_NAV_ITEM,\n );\n protected readonly pageItems = computed(() => this.items().slice(1, -1));\n\n protected readonly mergedLabels = computed<PaginationLabels>(() => {\n const t = this.translationService;\n const overrides = this.labels() ?? {};\n return {\n ariaLabel: overrides.ariaLabel ?? t.translate(\"pagination.title\"),\n previous: overrides.previous ?? t.translate(\"pagination.prev-page\"),\n next: overrides.next ?? t.translate(\"pagination.next-page\"),\n pageAriaLabel:\n overrides.pageAriaLabel ?? ((p) => t.translate(\"pagination.page\", p, false)),\n currentPageAriaLabel:\n overrides.currentPageAriaLabel ?? ((p) => t.translate(\"pagination.page\", p, true)),\n results: overrides.results ?? ((count) => t.translate(\"pagination.results\", count)),\n pageSize: overrides.pageSize ?? t.translate(\"pagination.page-size\"),\n pageStatus:\n overrides.pageStatus ??\n ((p, total) => t.translate(\"pagination.page-status\", p, total)),\n pageTitle: overrides.pageTitle ?? t.translate(\"pagination.page-title\"),\n pageSizeTitle:\n overrides.pageSizeTitle ?? t.translate(\"pagination.page-size-title\"),\n };\n });\n\n private readonly currentBreakpoint = this.breakpointService.currentBreakpoint();\n private static readonly BREAKPOINT_ORDER = [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"xxl\",\n ] as const;\n\n protected readonly isResultsHidden = computed(() =>\n this.resolveVisibility(this.hideResults()),\n );\n protected readonly isPageSizeHidden = computed(() =>\n this.resolveVisibility(this.hidePageSize()),\n );\n protected readonly isPagerHidden = computed(() =>\n this.resolveVisibility(this.hidePager()),\n );\n protected readonly areArrowsHidden = computed(() =>\n this.resolveVisibility(this.hideArrows()),\n );\n\n protected readonly showResults = computed(\n () =>\n !this.isResultsHidden() &&\n (this.customResults() != null || this.totalItems() !== undefined),\n );\n protected readonly showPageSizeSelect = computed(\n () => !this.isPageSizeHidden() && this.pageSizeOptions().length > 0,\n );\n protected readonly showPager = computed(\n () => !this.isPagerHidden() && this.pageCount() > 1,\n );\n\n /**\n * Whether the prev/next arrows should render at all. When false they're\n * removed from the DOM. At the first/last page, individual arrows are\n * additionally gated by `disableArrowsAtBoundary` — see `showPrevious`\n * / `showNext`.\n */\n protected readonly showArrows = computed(() => !this.areArrowsHidden());\n\n /**\n * Whether the previous-arrow button is rendered. Removed at the first\n * page unless `disableArrowsAtBoundary` keeps it as a disabled button.\n */\n protected readonly showPrevious = computed(\n () =>\n this.showArrows() &&\n (this.disableArrowsAtBoundary() || !this.previousItem().disabled),\n );\n\n /**\n * Whether the next-arrow button is rendered. Removed at the last page\n * unless `disableArrowsAtBoundary` keeps it as a disabled button.\n */\n protected readonly showNext = computed(\n () =>\n this.showArrows() &&\n (this.disableArrowsAtBoundary() || !this.nextItem().disabled),\n );\n\n private resolveVisibility(value: PaginationVisibility): boolean {\n if (typeof value === \"boolean\") return value;\n const current = this.currentBreakpoint();\n if (!current) return false;\n const order = PaginationComponent.BREAKPOINT_ORDER;\n return order.indexOf(current) < order.indexOf(value);\n }\n\n protected readonly pageSizeSelectOptions = computed(() =>\n this.pageSizeOptions().map((option) => ({\n value: option,\n label: String(option),\n })),\n );\n\n protected readonly mobileTriggerLabel = computed(\n () => `${this.currentPage()} / ${this.pageCount()}`,\n );\n\n /**\n * Accessible name for the mobile trigger button. Starts with the visible\n * text (`{current} / {total}`) so WCAG 2.5.3 (Label in Name) is satisfied\n * for voice-control users.\n */\n protected readonly mobileTriggerAriaLabel = computed(\n () => `${this.mobileTriggerLabel()}, ${this.mergedLabels().ariaLabel}`,\n );\n\n protected readonly mobilePageSizeAriaLabel = computed(\n () => `${this.pageSize() ?? \"\"}, ${this.mergedLabels().pageSize}`,\n );\n\n /** Whether the mobile page-jump picker modal is currently open. */\n protected readonly isMobileModalOpen = signal(false);\n /** Whether the mobile page-size picker modal is currently open. */\n protected readonly isPageSizeModalOpen = signal(false);\n\n protected readonly statusText = computed(() =>\n this.pageCount() > 1\n ? this.mergedLabels().pageStatus(this.currentPage(), this.pageCount())\n : \"\",\n );\n\n constructor() {\n effect(() => {\n const total = this.pageCount();\n const current = this.page();\n if (total > 0 && current > total) {\n this.page.set(total);\n } else if (current < 1) {\n this.page.set(1);\n }\n });\n }\n\n protected handlePageChange(nextPage: number | null): void {\n if (nextPage == null) return;\n const total = this.pageCount();\n if (nextPage < 1 || nextPage > total || nextPage === this.currentPage()) return;\n this.page.set(nextPage);\n this.pageChange.emit(nextPage);\n }\n\n protected handlePageSizeChange(value: number | null): void {\n if (value == null || value === this.pageSize()) return;\n this.pageSize.set(value);\n this.pageSizeChange.emit(value);\n }\n\n protected openMobilePicker(): void {\n const labels = this.mergedLabels();\n const options: PaginationOptionPickerOption[] = Array.from(\n { length: this.pageCount() },\n (_, i) => {\n const page = i + 1;\n const isSelected = page === this.currentPage();\n return {\n value: page,\n label: String(page),\n ariaLabel: isSelected\n ? labels.currentPageAriaLabel(page)\n : labels.pageAriaLabel(page),\n };\n },\n );\n\n this.isMobileModalOpen.set(true);\n const ref = this.openPickerModal({\n data: {\n options,\n selectedValue: this.currentPage(),\n title: this.showModalTitle() ? labels.pageTitle : undefined,\n },\n ariaLabel: labels.ariaLabel,\n });\n\n ref.closed.subscribe((selected) => {\n this.isMobileModalOpen.set(false);\n if (typeof selected === \"number\") {\n this.handlePageChange(selected);\n }\n });\n }\n\n protected openPageSizePicker(): void {\n const labels = this.mergedLabels();\n const current = this.pageSize();\n const options: PaginationOptionPickerOption[] = this.pageSizeOptions().map((size) => ({\n value: size,\n label: String(size),\n ariaLabel: `${labels.pageSize}, ${size}`,\n }));\n\n this.isPageSizeModalOpen.set(true);\n const ref = this.openPickerModal({\n data: {\n options,\n selectedValue: current ?? options[0]?.value ?? 0,\n title: this.showModalTitle() ? labels.pageSizeTitle : undefined,\n },\n ariaLabel: labels.pageSize,\n });\n\n ref.closed.subscribe((selected) => {\n this.isPageSizeModalOpen.set(false);\n if (typeof selected === \"number\") {\n this.handlePageSizeChange(selected);\n }\n });\n }\n\n private openPickerModal(args: {\n data: PaginationOptionPickerModalData;\n ariaLabel: string;\n }) {\n return this.modalService.open<number, PaginationOptionPickerModalData>(\n PaginationOptionPickerModalComponent,\n {\n data: args.data,\n width: \"360px\",\n position: \"bottom\",\n ariaLabel: args.ariaLabel,\n },\n );\n }\n}\n","<span\n class=\"tedi-pagination__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ statusText() }}\n</span>\n\n<div class=\"tedi-pagination__slot-start\">\n @if (showResults()) {\n @if (customResults()) {\n <ng-content select=\"[tediPaginationResults]\" />\n } @else {\n <span class=\"tedi-pagination__results\">\n {{ mergedLabels().results(totalItems()!) }}\n </span>\n }\n }\n</div>\n\n<div class=\"tedi-pagination__slot-center\">\n @if (showPager()) {\n <nav class=\"tedi-pagination__nav\" [attr.aria-label]=\"mergedLabels().ariaLabel\">\n @if (showPrevious()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"arrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--previous\"\n [attr.aria-label]=\"showArrowLabels() ? null : mergedLabels().previous\"\n [disabled]=\"previousItem().disabled\"\n (click)=\"handlePageChange(previousItem().page)\"\n >\n <tedi-icon [name]=\"previousIcon()\" />\n @if (showArrowLabels()) {\n <span>{{ mergedLabels().previous }}</span>\n }\n </button>\n }\n\n @if (!useCompactPicker()) {\n <ul class=\"tedi-pagination__list\">\n @for (item of pageItems(); track $index) {\n @if (item.type === \"ellipsis\") {\n <li\n class=\"tedi-pagination__item tedi-pagination__item--ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </li>\n } @else {\n <li class=\"tedi-pagination__item\">\n <button\n type=\"button\"\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--selected]=\"item.selected\"\n [attr.aria-label]=\"\n item.selected\n ? mergedLabels().currentPageAriaLabel(item.page!)\n : mergedLabels().pageAriaLabel(item.page!)\n \"\n [attr.aria-current]=\"item.selected ? 'page' : null\"\n (click)=\"handlePageChange(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n }\n }\n </ul>\n }\n @if (useCompactPicker()) {\n <button\n type=\"button\"\n class=\"tedi-pagination__mobile-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isMobileModalOpen()\"\n [attr.aria-label]=\"mobileTriggerAriaLabel()\"\n (click)=\"openMobilePicker()\"\n >\n <span class=\"tedi-pagination__mobile-trigger-label\" aria-hidden=\"true\">\n <strong>{{ currentPage() }}</strong>\n <span>/</span>\n <span>{{ pageCount() }}</span>\n </span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n }\n\n @if (showNext()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"arrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--next\"\n [attr.aria-label]=\"showArrowLabels() ? null : mergedLabels().next\"\n [disabled]=\"nextItem().disabled\"\n (click)=\"handlePageChange(nextItem().page)\"\n >\n @if (showArrowLabels()) {\n <span>{{ mergedLabels().next }}</span>\n }\n <tedi-icon [name]=\"nextIcon()\" />\n </button>\n }\n </nav>\n }\n</div>\n\n<div class=\"tedi-pagination__slot-end\">\n @if (showPageSizeSelect()) {\n <div class=\"tedi-pagination__page-size\">\n @if (useCompactPicker()) {\n <span class=\"tedi-pagination__page-size-label\">\n {{ mergedLabels().pageSize }}\n </span>\n <button\n type=\"button\"\n class=\"tedi-pagination__page-size-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isPageSizeModalOpen()\"\n [attr.aria-label]=\"mobilePageSizeAriaLabel()\"\n (click)=\"openPageSizePicker()\"\n >\n <span aria-hidden=\"true\">{{ pageSize() }}</span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n } @else {\n <label class=\"tedi-pagination__page-size-label\" [attr.for]=\"pageSizeInputId\">\n {{ mergedLabels().pageSize }}\n </label>\n <tedi-select\n class=\"tedi-pagination__page-size-select\"\n [inputId]=\"pageSizeInputId\"\n size=\"small\"\n [options]=\"pageSizeSelectOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"handlePageSizeChange($event)\"\n />\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from \"@angular/core\";\n\n@Component({\n selector: \"tedi-dropdown-item-value-meta\",\n template: `<ng-content />`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: \"tedi-dropdown-item-value__meta\",\n },\n})\nexport class DropdownItemValueMetaComponent {}\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 host: {\n class: \"tedi-modal-footer\",\n },\n})\nexport class ModalFooterComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n OnInit,\n model,\n inject,\n} from \"@angular/core\";\nimport { _IdGenerator } from \"@angular/cdk/a11y\";\nimport { AccordionComponent } from \"../accordion/accordion.component\";\n\n/**\n * A single item inside a `tedi-accordion`. Owns the item's state (expanded)\n * and the inputs shared by header and content (selected, showIconCard,\n * defaultExpanded).\n *\n * Header-related configuration lives on `tedi-accordion-item-header`; body\n * styling lives on `tedi-accordion-item-content`.\n *\n * Use together with the header and content children:\n *\n * ```html\n * <tedi-accordion-item>\n * <tedi-accordion-item-header>\n * <span tedi-accordion-title>Title</span>\n * </tedi-accordion-item-header>\n * <tedi-accordion-item-content>Content</tedi-accordion-item-content>\n * </tedi-accordion-item>\n * ```\n *\n * The optional `[tedi-accordion-icon-card]` slot is projected as a direct\n * child of the item (not inside the header), because it occupies its own\n * column in the item's grid layout.\n */\n@Component({\n selector: \"tedi-accordion-item\",\n standalone: true,\n templateUrl: \"./accordion-item.component.html\",\n styleUrl: \"./accordion-item.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AccordionItemComponent implements OnInit {\n readonly idGenerator = inject(_IdGenerator);\n readonly contentId = this.idGenerator.getId(\"tedi-accordion-content\");\n readonly headerId = this.idGenerator.getId(\"tedi-accordion-header\");\n\n /**\n * Whether the accordion item is expanded initially.\n * Does not control the expanded state after initialization.\n */\n defaultExpanded = input(false);\n /**\n * Enables the icon-card layout variant. Affects both header and content\n * styling, so it lives on the item.\n */\n showIconCard = input(false);\n /**\n * Marks the accordion item as selected.\n */\n selected = input(false);\n\n expanded = model(false);\n\n private readonly accordion = inject(AccordionComponent, { optional: true });\n\n ngOnInit() {\n this.setExpanded(this.defaultExpanded());\n }\n\n toggle() {\n this.setExpanded(!this.expanded());\n }\n\n setExpanded(value: boolean) {\n this.expanded.set(value);\n this.accordion?.onItemToggled(this);\n }\n}\n","<div\n class=\"tedi-accordion__item\"\n [class.tedi-accordion__item--selected]=\"selected()\"\n [class.tedi-accordion__item--expanded]=\"expanded()\"\n>\n @if (showIconCard()) {\n <ng-content select=\"[tedi-accordion-icon-card]\"></ng-content>\n }\n\n <ng-content select=\"tedi-accordion-item-header\"></ng-content>\n\n <ng-content select=\"tedi-accordion-item-content\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n contentChildren,\n} from \"@angular/core\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion\",\n standalone: true,\n template: \"<ng-content />\",\n styleUrl: \"./accordion.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionComponent {\n /**\n * Whether the accordion allows multiple items to be expanded at the same time.\n * If false, opening one item will collapse the others automatically.\n */\n allowMultiple = input(false);\n\n items = contentChildren(AccordionItemComponent);\n\n onItemToggled(activeItem: AccordionItemComponent) {\n if (this.allowMultiple()) return;\n\n if (activeItem.expanded()) {\n this.items().forEach((item) => {\n if (item !== activeItem) {\n item.setExpanded(false);\n }\n });\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { IconComponent } from \"../../../base/icon/icon.component\";\nimport { TextComponent } from \"../../../base/text/text.component\";\nimport { LinkComponent } from \"../../../navigation/link/link.component\";\nimport { TediTranslationPipe } from \"../../../../services/translation/translation.pipe\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion-item-header\",\n standalone: true,\n templateUrl: \"./accordion-item-header.component.html\",\n styleUrl: \"./accordion-item-header.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n IconComponent,\n TextComponent,\n LinkComponent,\n TediTranslationPipe,\n ],\n host: {\n \"[class.tedi-accordion-item-header]\": \"true\",\n \"[class.tedi-accordion-item-header--hoverable]\": \"headerClickable()\",\n \"[class.tedi-accordion-item-header--expanded]\": \"expanded()\",\n \"[class.tedi-accordion-item-header--with-icon-card]\":\n \"item.showIconCard()\",\n \"[class]\": \"headerClass() ?? ''\",\n },\n})\nexport class AccordionItemHeaderComponent {\n protected readonly item = inject(AccordionItemComponent);\n\n /**\n * If false, disables header toggling and enables using interactive elements in the accordion header.\n */\n headerClickable = input(true);\n /**\n * Sets how the accordion title stretches horizontally.\n * `hug` - container sizes to its content.\n * `fill` - container expands to available space, moving any trailing elements to the end.\n */\n titleLayout = input<\"hug\" | \"fill\">(\"hug\");\n /** Label shown when accordion is collapsed */\n openLabel = input<string>(\"open\");\n /** Label shown when accordion is expanded */\n closeLabel = input<string>(\"close\");\n /**\n * Controls whether the expand/collapse label is shown.\n */\n showExpandLabel = input(true);\n /**\n * Controls whether the default expand/collapse action is shown.\n */\n showDefaultExpandAction = input(true);\n /**\n * Position of the expand action relative to the header content.\n */\n expandActionPosition = input<\"start\" | \"end\">(\"end\");\n /**\n * Custom CSS classes for the accordion header.\n */\n headerClass = input<string | null>(null);\n\n readonly headerId = this.item.headerId;\n readonly contentId = this.item.contentId;\n readonly expanded = this.item.expanded;\n\n readonly expandLabel = computed(() =>\n this.expanded() ? this.closeLabel() : this.openLabel(),\n );\n\n readonly showStartExpandAction = computed(\n () =>\n this.showDefaultExpandAction() && this.expandActionPosition() === \"start\",\n );\n\n readonly showEndExpandAction = computed(\n () =>\n this.showDefaultExpandAction() && this.expandActionPosition() === \"end\",\n );\n\n toggle() {\n this.item.toggle();\n }\n}\n","@if (headerClickable()) {\n <button\n [id]=\"headerId\"\n type=\"button\"\n class=\"tedi-accordion-item-header__trigger\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n >\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </button>\n} @else {\n <div [id]=\"headerId\" class=\"tedi-accordion-item-header__trigger\">\n <ng-container *ngTemplateOutlet=\"headerContent\"></ng-container>\n </div>\n}\n\n<ng-template #headerContent>\n <div class=\"tedi-accordion-item-header__start\">\n <ng-content select=\"[tedi-accordion-start-action]\"></ng-content>\n\n <ng-content select=\"[tedi-accordion-before-title]\"></ng-content>\n\n <span\n class=\"tedi-accordion-item-header__title\"\n [class.tedi-accordion-item-header__title--grow]=\"titleLayout() === 'fill'\"\n >\n <span class=\"tedi-accordion-item-header__title-main\">\n @if (showStartExpandAction()) {\n <ng-container *ngTemplateOutlet=\"collapseButton\"></ng-container>\n }\n\n <span tedi-text color=\"secondary\" modifiers=\"normal\">\n <ng-content select=\"[tedi-accordion-title]\"></ng-content>\n </span>\n </span>\n\n <ng-content select=\"[tedi-accordion-start-description]\"></ng-content>\n </span>\n\n <ng-content select=\"[tedi-accordion-after-title]\"></ng-content>\n </div>\n\n <ng-content select=\"[tedi-accordion-end-description]\"></ng-content>\n\n @if (showEndExpandAction()) {\n <ng-container *ngTemplateOutlet=\"collapseButton\"></ng-container>\n }\n\n <ng-content select=\"[tedi-accordion-end-action]\"></ng-content>\n</ng-template>\n\n<ng-template #collapseButton>\n @if (headerClickable()) {\n <div\n tedi-text\n modifiers=\"normal\"\n class=\"tedi-accordion-item-header__expand-indicator\"\n [class.tedi-accordion-item-header__expand-indicator--with-label]=\"\n showExpandLabel()\n \"\n >\n {{ (showExpandLabel() ? expandLabel() : \"\") | tediTranslate }}\n <ng-container *ngTemplateOutlet=\"expandIcon\"></ng-container>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"tedi-accordion-item-header__toggle-button\"\n tedi-link\n [underline]=\"false\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-label]=\"\n !showExpandLabel() ? (expandLabel() | tediTranslate) : null\n \"\n >\n @if (showExpandLabel()) {\n {{ expandLabel() | tediTranslate }}\n }\n <ng-container *ngTemplateOutlet=\"expandIcon\"></ng-container>\n </button>\n }\n</ng-template>\n\n<ng-template #expandIcon>\n <tedi-icon\n aria-hidden=\"true\"\n name=\"expand_more\"\n class=\"tedi-accordion-item-header__icon\"\n [class.tedi-accordion-item-header__icon--expanded]=\"expanded()\"\n [class.tedi-accordion-item-header__icon--no-label]=\"!showExpandLabel()\"\n />\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from \"@angular/core\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@Component({\n selector: \"tedi-accordion-item-content\",\n standalone: true,\n templateUrl: \"./accordion-item-content.component.html\",\n styleUrl: \"./accordion-item-content.component.scss\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n \"[class.tedi-accordion-item-content]\": \"true\",\n \"[class.tedi-accordion-item-content--with-icon-card]\": \"item.showIconCard()\",\n \"[class]\": \"contentClass() ?? ''\",\n \"[id]\": \"contentId\",\n \"[attr.role]\": \"expanded() ? 'region' : null\",\n \"[attr.aria-labelledby]\": \"headerId\",\n \"[attr.aria-hidden]\": \"!expanded()\",\n \"[attr.inert]\": \"!expanded() ? '' : null\",\n },\n})\nexport class AccordionItemContentComponent {\n protected readonly item = inject(AccordionItemComponent);\n\n /**\n * Custom CSS classes for the accordion content.\n */\n contentClass = input<string | null>(null);\n\n readonly headerId = this.item.headerId;\n readonly contentId = this.item.contentId;\n readonly expanded = this.item.expanded;\n}\n","<div class=\"tedi-accordion-item-content__inner\">\n <ng-content></ng-content>\n</div>\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 makeEnvironmentProviders,\n} from \"@angular/core\";\nimport { TEDI_THEME_DEFAULT_TOKEN } from \"../tokens/theme.token\";\nimport {\n Theme,\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\";\n\nexport interface TediConfig {\n theme?: Theme;\n language?: Language;\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 ]);\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextGroupId","i1","i1.SideNavService"],"mappings":"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"}