@helsevestikt/hviktor-angular 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helsevestikt-hviktor-angular.mjs","sources":["../../../projects/hviktor/src/alert/alert.component.ts","../../../projects/hviktor/src/avatar/avatar.component.ts","../../../projects/hviktor/src/badge/badge-position.component.ts","../../../projects/hviktor/src/badge/badge.component.ts","../../../projects/hviktor/src/breadcrumbs/breadcrumbs.component.ts","../../../projects/hviktor/src/button/button.directive.ts","../../../projects/hviktor/src/card/card-block.directive.ts","../../../projects/hviktor/src/card/card.component.ts","../../../projects/hviktor/src/chip/chip-button.directive.ts","../../../projects/hviktor/src/chip/chip-label.directive.ts","../../../projects/hviktor/src/details/details-content.component.ts","../../../projects/hviktor/src/details/details-summary.component.ts","../../../projects/hviktor/src/details/details.component.ts","../../../projects/hviktor/src/dialog/dialog-block.directive.ts","../../../projects/hviktor/src/dialog/dialog.directive.ts","../../../projects/hviktor/src/divider/divider.directive.ts","../../../projects/hviktor/src/forms/form/form.directive.ts","../../../projects/hviktor/src/forms/error-summary/error-summary.component.ts","../../../projects/hviktor/src/helpers/field-observer.ts","../../../projects/hviktor/src/forms/field/field-affix.component.ts","../../../projects/hviktor/src/forms/field/field-affixes.component.ts","../../../projects/hviktor/src/forms/field/field-counter.component.ts","../../../projects/hviktor/src/forms/field/field-description.directive.ts","../../../projects/hviktor/src/forms/field/field-optional.directive.ts","../../../projects/hviktor/src/forms/field/field-validation.directive.ts","../../../projects/hviktor/src/forms/field/field.component.ts","../../../projects/hviktor/src/forms/fieldset/fieldset.directive.ts","../../../projects/hviktor/src/forms/input/input.directive.ts","../../../projects/hviktor/src/forms/validation/control-invalid/control-invalid.directive.ts","../../../projects/hviktor/src/forms/validation/validation-message/validation-message.directive.ts","../../../projects/hviktor/src/forms/validators/validator-bundle.ts","../../../projects/hviktor/src/forms/validators/validators.ts","../../../projects/hviktor/src/forms/kits.ts","../../../projects/hviktor/src/heading/heading.directive.ts","../../../projects/hviktor/src/icon/icon.component.ts","../../../projects/hviktor/src/label/label.directive.ts","../../../projects/hviktor/src/link/link.directive.ts","../../../projects/hviktor/src/list/list.directive.ts","../../../projects/hviktor/src/pagination/pagination.component.ts","../../../projects/hviktor/src/paragraph/paragraph.directive.ts","../../../projects/hviktor/src/popover/popover.component.ts","../../../projects/hviktor/src/search/search-clear.directive.ts","../../../projects/hviktor/src/search/search.component.ts","../../../projects/hviktor/src/select/select.directive.ts","../../../projects/hviktor/src/skeleton/skeleton.component.ts","../../../projects/hviktor/src/skip-link/skip-link.directive.ts","../../../projects/hviktor/src/spinner/spinner.component.ts","../../../projects/hviktor/src/table/table.directive.ts","../../../projects/hviktor/src/table/table-sort.directive.ts","../../../projects/hviktor/src/tabs/tab-panel.component.ts","../../../projects/hviktor/src/tabs/tab.component.ts","../../../projects/hviktor/src/tabs/tabs.component.ts","../../../projects/hviktor/src/tag/tag.component.ts","../../../projects/hviktor/src/toggle-group/toggle-group.component.ts","../../../projects/hviktor/src/toggle-group/toggle-group-item.directive.ts","../../../projects/hviktor/src/tooltip/tooltip.directive.ts","../../../projects/hviktor/src/public-api.ts","../../../projects/hviktor/src/helsevestikt-hviktor-angular.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n/**\n * Alert provides users with information that is especially important for them to see and understand.\n * The component is designed to capture users' attention.\n * The text in the alert should be short and clear.\n *\n * @example\n * ```html\n * <hvi-alert color=\"warning\">\n * Dette er et advarselsvarsel!\n * </hvi-alert>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/alert/code/\n */\n@Component({\n selector: 'hvi-alert',\n standalone: true,\n template: `<ng-content />`,\n host: {\n class: 'ds-alert',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviAlert {\n /** Sets the type of alert by changing the color and */\n @Input() color?: 'info' | 'success' | 'warning' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Avatar displays an image, initials, or icon for a person, entity, or profile.\n *\n * @example\n * ```html\n * <hvi-avatar\n * ariaLabel=\"Ola Nordmann\"\n * variant=\"circle\"\n * initials=\"ON\"\n * size=\"md\"\n * color=\"brand1\">\n * </hvi-avatar>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/avatar/code/\n */\n@Component({\n selector: 'hvi-avatar',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-avatar',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel ?? null',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-initials]': 'initials ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviAvatar {\n /** The name of the person the avatar represents */\n @Input() ariaLabel?: string;\n\n /** The shape of the avatar */\n @Input() variant?: 'circle' | 'square';\n\n /** Initials displayed inside the avatar */\n @Input() initials?: string;\n\n /** The size of the avatar */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /** The color theme of the avatar */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge-position',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge--position',\n '[attr.data-overlap]': 'overlap',\n '[attr.data-placement]': 'placement',\n },\n})\nexport class HviBadgePosition {\n /** Overlap of the badge */\n @Input() overlap: 'rectangle' | 'circle' = 'rectangle';\n\n /** Placement of the badge */\n @Input() placement: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-count]': 'count ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviBadge {\n /** The variants of the badge */\n @Input() variant?: 'base' | 'tinted';\n\n /** count text of the badge*/\n @Input() count?: string;\n\n /** The color theme of the badge */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import { Component, Input } from '@angular/core';\n\nexport interface BreadcrumbItem {\n label: string;\n href: string;\n ariaLabel?: string;\n}\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <nav hviBreadcrumbs\n * ariaLabel=\"Du er her:\"\n * [backLink]=\"{\n * label: 'Nivå 3',\n * href: '#',\n * ariaLabel: 'Tilbake til Nivå 3'\n * }\"\n * [items]=\"[\n * { label: 'Nivå 1', href: '#' },\n * { label: 'Nivå 2', href: '#' },\n * { label: 'Nivå 3', href: '#' },\n * { label: 'Nivå 4', href: '#' }\n * ]\"\n * ></nav>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/breadcrumbs/overview\n */\n\n@Component({\n selector: 'nav[hviBreadcrumbs]',\n standalone: true,\n template: `\n <!-- Back link (optional) -->\n @if (backLink) {\n <a class=\"ds-link\" [href]=\"backLink.href\" [attr.aria-label]=\"backLink.ariaLabel ?? null\">\n {{ backLink.label }}\n </a>\n }\n\n <ol>\n @for (item of items; let last = $last; track item) {\n <li>\n <a\n class=\"ds-link\"\n [href]=\"item.href\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n {{ item.label }}\n </a>\n </li>\n }\n </ol>\n `,\n host: {\n class: 'ds-breadcrumbs',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel ?? null',\n },\n})\nexport class HviBreadcrumbs {\n /** Accessible label for the breadcrumb navigation */\n @Input() ariaLabel = 'Du er her:';\n\n /** Optional back link object */\n @Input() backLink?: {\n label: string;\n href: string;\n ariaLabel?: string;\n };\n\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n/**\n * @summary\n * Button allows users to perform actions.\n *\n * @example\n * ```html\n * <button hviButton color=\"brand1\" variant=\"primary\" size=\"md\">\n * Click me\n * </button>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/button/code/\n */\n@Directive({\n selector: 'button[hviButton], a[hviButton]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.type]': 'type',\n '[attr.data-size]': 'size',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[attr.data-fullwidth]': 'fullWidth ? \"\" : null',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.aria-busy]': 'loading ? \"true\" : null',\n },\n})\nexport class HviButton {\n /** The size of the button */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** Used to change the appearance of the button. */\n @Input() variant?: 'primary' | 'secondary' | 'tertiary';\n\n /** The type of button */\n @Input() type?: 'button' | 'submit' | 'reset';\n\n /** The color of the button */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n\n /** If you have only an icon in the button, you can set icon=\"true\" to make it square.\n * If you have other content, such as text, the button will automatically have space around the icon.\n */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Sets the button in a loading state.\n * Loading indicators such as spinners must be added manually, e.g., with hvi-spinner\n */\n @Input({ transform: booleanAttribute }) loading = false;\n\n /** Makes the button full width */\n @Input({ transform: booleanAttribute }) fullWidth = false;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Use multiple <div hviCardBlock> elements if you want to divide the card with separators or add images or video that extend to the edge.\n * Note that when you use <div hviCardBlock>, all content must be placed inside a <div hviCardBlock> and not directly in the Card.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <div hviCardBlock>\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </div>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/code#with-sections\n */\n@Directive({\n selector: '[hviCardBlock]',\n standalone: true,\n host: { class: 'ds-card__block' },\n})\nexport class HviCardBlock {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Card highlight information or tasks that are related.\n * The component comes in two variants and can contain text, images, text fields, buttons, and links.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/overview\n */\n@Component({\n selector: 'hvi-card',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-card',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[style.max-width]': 'maxWidth',\n },\n})\nexport class HviCard {\n /** Sets the background of the card */\n @Input() variant?: 'default' | 'tinted';\n\n /** The color theme of the card */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral';\n\n /** Maximum width of the card, for example '320px' or '20rem' */\n @Input() maxWidth?: string;\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n@Directive({\n selector: 'button[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n '[attr.data-removable]': 'removable ? \"true\" : null',\n },\n})\nexport class HviChipButton {\n /** Whether the chip is removable*/\n @Input({ transform: booleanAttribute }) removable = false;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'label[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n },\n})\nexport class HviChipLabel {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-content',\n template: `<ng-content />`,\n})\nexport class HviDetailsContent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-summary',\n template: `<ng-content />`,\n})\nexport class HviDetailsSummary {}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport '@u-elements/u-details';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hvi-details>\n * <hvi-details-summary>\n * <p size=\"md\">Detaljer</p>\n * </hvi-details-summary>\n * <hvi-details-content>\n * <p>Her er innholdet i detaljene.</p>\n * </hvi-details-content>\n * </hvi-details>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/details/overview\n */\n\n@Component({\n selector: 'hvi-details',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n template: ` <u-details\n #detailsRef\n class=\"ds-details\"\n [attr.data-variant]=\"variant\"\n [attr.defaultOpen]=\"defaultOpen || undefined\"\n [attr.open]=\"open || undefined\"\n (toggle)=\"onToggle($event)\"\n >\n <u-summary>\n <ng-content select=\"hvi-details-summary\" />\n </u-summary>\n <div>\n <ng-content select=\"hvi-details-content\" />\n </div>\n </u-details>`,\n host: {},\n})\nexport class HviDetails {\n /** Variant of the details component */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Control open state of the details component */\n @Input() open: true | false = false;\n\n /** Set default open state of the details component */\n @Input() defaultOpen: true | false = false;\n\n /** Event handler for toggle event */\n @Input() onToggle: (event: Event) => void = () => {};\n\n handleToggle(event: Event) {\n console.log('Toggled!', event);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviDialogBlock]',\n standalone: true,\n host: {\n class: 'ds-dialog__block',\n },\n})\nexport class HviDialogBlock {}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n} from '@angular/core';\n\n/**\n * @summary\n * Dialog allows you to create both modal and non-modal dialogs based on the HTML dialog element.\n * You have to connect the <dialog> element to a trigger yourself, and handle opening and closing the dialog with JavaScript.\n *\n * @example\n * HTML:\n * ```html\n * <dialog hviDialog [id]=\"exampleDialog\" [open]=\"dialogOpen()\" (openChange)=\"toggleDialog($event)\">\n * <h3 hviHeading size=\"md\">Example dialog</h3>\n * <p hviParagraph>This is an example of a dialog component.</p>\n * <button hviButton variant=\"primary\" (click)=\"closeDialog()\">Close dialog</button>\n * </dialog>\n * ```\n *\n * TypeScript:\n * ```ts\n * export class DialogExampleComponent {\n * readonly dialogOpen = signal(false);\n * toggleDialog(nextState?: boolean): void {\n * if (typeof nextState === 'boolean') {\n * this.dialogOpen.set(nextState);\n * return;\n * }\n * this.dialogOpen.update((current) => !current);\n * }\n * }\n *\n * Documentation: https://designsystemet.no/en/components/docs/dialog/code/\n */\n@Directive({\n selector: 'dialog[hviDialog]',\n standalone: true,\n host: {\n class: 'ds-dialog',\n id: '{{ id }}',\n },\n})\nexport class HviDialog {\n @Input() id?: string;\n @Input()\n set open(value: boolean) {\n this.setOpen(Boolean(value));\n }\n\n get open(): boolean {\n return this.element.open;\n }\n\n @Input() modal = true;\n\n @Output() readonly openChange = new EventEmitter<boolean>();\n\n private readonly element = inject(ElementRef<HTMLDialogElement>).nativeElement;\n\n openModal(): void {\n this.setOpen(true);\n }\n\n close(): void {\n this.setOpen(false);\n }\n\n @HostListener('close')\n handleClose(): void {\n this.openChange.emit(false);\n }\n\n @HostListener('cancel', ['$event'])\n handleCancel(event: Event): void {\n event.preventDefault();\n this.setOpen(false);\n }\n\n private setOpen(shouldOpen: boolean): void {\n if (shouldOpen) {\n if (this.element.open) {\n return;\n }\n\n if (this.modal) {\n this.element.showModal();\n } else {\n this.element.show();\n }\n\n this.openChange.emit(true);\n return;\n }\n\n if (!this.element.open) {\n return;\n }\n\n this.element.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hr hviDivider />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/divider/overview\n */\n\n@Directive({\n selector: 'hr[hviDivider]',\n standalone: true,\n host: {\n class: 'ds-divider',\n 'aria-hidden': 'true',\n },\n})\nexport class HviDivider {}\n","import { Directive, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n/**\n * @summary\n * Adds submit handling for Angular reactive forms:\n * - Tracks submitted state\n * - Marks all controls as touched on submit\n * - Optionally focuses an ErrorSummary when invalid\n *\n * @example\n * ```html\n * <[hviForm]></[hviForm]>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/form/code\n */\n\n@Directive({\n selector: 'form[hviForm]',\n standalone: true,\n})\nexport class HviForm {\n /** Emits when the form has been submitted */\n @Output() hviSubmitted = new EventEmitter<void>();\n\n /** True after first submit attempt */\n submitted = false;\n\n /** Optional focus target (e.g. HviErrorSummaryComponent) */\n @Input() focusOnInvalid?: { focus?: () => void } | null;\n\n // Optional injection: present when the form uses [formGroup] and ReactiveFormsModule is in scope\n private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event): void {\n this.submitted = true;\n this.hviSubmitted.emit();\n\n const form = this.formGroupDir?.form;\n if (!form) return;\n\n form.markAllAsTouched();\n\n if (form.invalid) {\n event.preventDefault();\n queueMicrotask(() => this.focusOnInvalid?.focus?.());\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { HviForm } from '../form/form.directive';\nimport type { HviValidationMessages } from '../validation/validation-message';\n\n/**\n * Item model used by manual error summaries. Provide `message` and `href` for each invalid field.\n */\nexport type HviErrorSummaryItem = {\n /** Text shown in the list */\n message: string;\n /** Link target (should be \"#<field-id>\") */\n href: string;\n};\n\nexport type HviErrorSummaryMessages = Record<string, HviValidationMessages>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\nlet errorSummaryIdCounter = 0;\nconst nextErrorSummaryHeadingId = () => `hvi-error-summary-heading-${++errorSummaryIdCounter}`;\n\n/**\n * @summary\n * ErrorSummary lists blocking validation errors so users can quickly find and fix them.\n *\n * @remarks\n * Modes:\n * - Manual: provide `[errors]` as `{ message, href }[]`.\n * - Auto (recommended): provide `[form]` + `[messages]` (and optionally `[idMap]`) to derive errors from invalid\n * controls in a reactive form.\n *\n * Auto mode should be rendered inside `<form hviForm ...>` so it can follow submit visibility (`showWhen`) and\n * be focused automatically via `[focusOnInvalid]`.\n *\n * Each item link must point to a field id (e.g. `href=\"#firstName\"`). Prefer `id === formControlName`.\n *\n * @example\n * Manual mode:\n * ```html\n * <hvi-error-summary\n * [errors]=\"[\n * { message: 'Fornavn må være minst 2 tegn', href: '#firstName' },\n * { message: 'Telefonnummer kan kun inneholde siffer', href: '#phone' }\n * ]\"\n * />\n * ```\n *\n * @example\n * Auto mode (HTML + TS):\n *\n * ```html\n * HTML:\n * <form hviForm [formGroup]=\"form\" [focusOnInvalid]=\"summary\">\n * <hvi-error-summary #summary [form]=\"form\" [messages]=\"messages\" showWhen=\"submitted\" />\n *\n * <hvi-field>\n * <label hviLabel for=\"firstName\" weight=\"medium\">Fornavn</label>\n * <input hviInput id=\"firstName\" formControlName=\"firstName\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"firstName\" [messages]=\"messages.firstName\"></p>\n * </hvi-field>\n *\n * <hvi-field>\n * <label hviLabel for=\"phone\" weight=\"medium\">Telefon</label>\n * <input hviInput id=\"phone\" type=\"tel\" formControlName=\"phone\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"phone\" [messages]=\"messages.phone\"></p>\n * </hvi-field>\n *\n * <button hviButton type=\"submit\" variant=\"primary\">Send inn</button>\n * </form>\n * ```\n *\n * ```ts\n * TS:\n * form = new FormGroup({\n * firstName: new FormControl('', [Validators.required, Validators.minLength(2)]),\n * phone: new FormControl('', [Validators.required, Validators.pattern(/^\\d+$/)]),\n * });\n *\n * messages = {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' },\n * } as const;\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/error-summary/code\n */\n@Component({\n selector: 'hvi-error-summary',\n standalone: true,\n template: `\n <div\n #container\n class=\"ds-error-summary\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"headingId\"\n [hidden]=\"!shouldShow\"\n >\n @switch (headingLevel) {\n @case (1) {\n <h1 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h1>\n }\n @case (2) {\n <h2 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h2>\n }\n @case (3) {\n <h3 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h3>\n }\n @case (4) {\n <h4 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h4>\n }\n @case (5) {\n <h5 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h5>\n }\n @default {\n <h6 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h6>\n }\n }\n\n <ul class=\"ds-list\">\n @for (err of computedErrors; track err.href) {\n <li>\n <a\n class=\"ds-link\"\n data-color=\"neutral\"\n [href]=\"err.href\"\n (click)=\"onLinkClick($event, err.href)\"\n >{{ err.message }}</a\n >\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class HviErrorSummary {\n /** Heading text shown above the list */\n @Input() heading = 'For å gå videre må du rette opp følgende feil:';\n\n /** Heading level for the heading element (1-6). Defaults to 2 per DS */\n @Input() headingLevel: 1 | 2 | 3 | 4 | 5 | 6 = 2;\n\n /**\n * Manual mode: items displayed in the summary.\n * If non-empty, manual mode takes precedence over auto mode.\n */\n @Input() errors: HviErrorSummaryItem[] = [];\n\n /** Auto mode: reactive form to derive errors from */\n @Input() form?: FormGroup;\n\n /**\n * Auto mode: messages per controlName.\n * Example:\n * {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' }\n * }\n */\n @Input() messages?: HviErrorSummaryMessages;\n\n /**\n * Auto mode: map controlName -> element id.\n * Default is `id === controlName`.\n */\n @Input() idMap?: Record<string, string>;\n\n /** Auto mode: error key priority (first match wins) */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n /** Used for aria-labelledby on the container */\n @Input() headingId = nextErrorSummaryHeadingId();\n\n /** When to show errors from the form controls */\n @Input() showWhen: 'submitted' | 'touched' | 'always' = 'submitted';\n\n @ViewChild('container', { static: true }) private container?: ElementRef<HTMLElement>;\n\n focus(): void {\n this.container?.nativeElement.focus();\n }\n\n /**\n * Handles click on error links to prevent Angular Router navigation\n * and instead focus/scroll to the target element.\n */\n onLinkClick(event: MouseEvent, href: string): void {\n event.preventDefault();\n\n const id = href.startsWith('#') ? href.slice(1) : href;\n const target = document.getElementById(id);\n\n if (target) {\n target.focus();\n target.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n\n get computedErrors(): HviErrorSummaryItem[] {\n // 1) Manual mode wins\n if (this.errors?.length) return this.errors;\n\n // 2) Auto mode\n const form = this.form;\n const messages = this.messages;\n if (!form || !messages) return [];\n\n const items: HviErrorSummaryItem[] = [];\n\n for (const controlName of Object.keys(form.controls)) {\n const ctrl = form.controls[controlName];\n if (!ctrl?.invalid) continue;\n\n const errs = ctrl.errors ?? {};\n const msgMap = messages[controlName] ?? {};\n\n const message = this.pickMessage(errs, msgMap);\n if (!message) continue;\n\n const id = this.idMap?.[controlName] ?? controlName;\n items.push({ message, href: `#${id}` });\n }\n\n return items;\n }\n\n private pickMessage(errors: Record<string, unknown>, messages: HviValidationMessages): string {\n for (const key of this.errorPriority) {\n if (errors[key] && messages[key]) return messages[key]!;\n }\n for (const key of Object.keys(errors)) {\n if (messages[key]) return messages[key]!;\n }\n return Object.keys(errors).length ? 'Ugyldig verdi' : '';\n }\n\n private readonly hviForm = inject(HviForm, { optional: true });\n\n get shouldShow(): boolean {\n if (this.computedErrors.length === 0) return false;\n\n switch (this.showWhen) {\n case 'always':\n return true;\n\n case 'touched':\n // show when any invalid control is touched OR the form has been submitted\n return (this.hviForm?.submitted ?? false) || this.anyInvalidTouched();\n\n case 'submitted':\n default:\n return this.hviForm?.submitted ?? false;\n }\n }\n\n private anyInvalidTouched(): boolean {\n const form = this.form;\n if (!form) return false;\n\n for (const name of Object.keys(form.controls)) {\n const c = form.controls[name];\n if (c?.invalid && c.touched) return true;\n }\n return false;\n }\n}\n","// Copied from https://github.com/digdir/designsystemet/blob/main/packages/react/src/components/field/field-observer.ts\n\nexport function fieldObserver(fieldElement: HTMLElement | null) {\n if (!fieldElement) return;\n\n const elements = new Map<Element, string | null>();\n const typeCounter = new Map<string, number>(); // Track count for each data-field type\n const uuid = `:${Date.now().toString(36)}${Math.random().toString(36).slice(2, 5)}`;\n let input: Element | null = null;\n let describedby = '';\n\n const process = (mutations: Partial<MutationRecord>[]) => {\n const changed: Node[] = [];\n const removed: Node[] = [];\n\n // Merge MutationRecords\n for (const mutation of mutations) {\n if (mutation.attributeName) changed.push(mutation.target ?? fieldElement);\n changed.push(...(mutation.addedNodes || []));\n removed.push(...(mutation.removedNodes || []));\n }\n\n // Register elements\n for (const el of changed) {\n if (!isElement(el)) continue;\n\n if (isLabel(el)) elements.set(el, el.htmlFor);\n else if (el.hasAttribute('data-field')) elements.set(el, el.id);\n else if (isInputLike(el) && !el.hidden) {\n input = el;\n describedby = el.getAttribute('aria-describedby') || '';\n }\n }\n\n // Reset removed elements\n for (const el of removed) {\n if (!isElement(el)) continue;\n\n if (input === el) input = null;\n if (elements.has(el)) {\n setAttr(el, isLabel(el) ? 'for' : 'id', elements.get(el));\n elements.delete(el);\n }\n }\n\n // Connect elements\n const describedbyIds = describedby ? describedby.split(' ') : []; // Keep original aria-describedby\n const inputId = input?.id || uuid;\n\n // Reset type counters since we reprocess all elements\n typeCounter.clear();\n\n for (const [el, value] of elements) {\n const descriptionType = el.getAttribute('data-field');\n let id: string;\n\n if (descriptionType) {\n // Increment type counter for this type\n const count = (typeCounter.get(descriptionType) || 0) + 1;\n typeCounter.set(descriptionType, count);\n id = `${inputId}:${descriptionType}:${count}`;\n } else {\n id = inputId;\n }\n\n if (!value) setAttr(el, isLabel(el) ? 'for' : 'id', id); // Ensure we have a value\n if (!describedbyIds.includes(el.id)) {\n if (descriptionType === 'validation')\n describedbyIds.unshift(el.id); // Validations to the front\n else if (descriptionType) describedbyIds.push(el.id); // Other descriptions to the back\n }\n }\n\n // Prune aria-describedby so it does not reference removed elements\n const prunedDescribedbyIds = describedbyIds.filter((id) => {\n if (!id) return false;\n if (id === inputId) return true;\n\n // Keep if it still exists anywhere in the document.\n // This preserves \"original aria-describedby\" entries that live outside the field subtree.\n return !!fieldElement.ownerDocument?.getElementById(id);\n });\n\n setAttr(input, 'id', inputId);\n setAttr(input, 'aria-describedby', prunedDescribedbyIds.join(' ').trim());\n };\n\n const observer = createOptimizedMutationObserver(process);\n observer.observe(fieldElement, {\n attributeFilter: ['id', 'for', 'aria-describedby'],\n attributes: true,\n childList: true,\n subtree: true,\n });\n\n process([{ addedNodes: fieldElement.querySelectorAll('*') }]); // Initial setup\n observer.takeRecords(); // Clear initial setup queue\n return () => observer.disconnect();\n}\n\n// Utilities\nexport const isElement = (node: Node) => node instanceof Element;\nexport const isLabel = (node: Node) => node instanceof HTMLLabelElement;\nexport const isInputLike = (node: unknown): node is HTMLInputElement =>\n node instanceof HTMLElement && 'validity' in node && !(node instanceof HTMLButtonElement); // Matches input, textarea, select and form accosiated custom elements\n\nconst setAttr = (el: Element | null, name: string, value?: string | null) =>\n value ? el?.setAttribute(name, value) : el?.removeAttribute(name);\n\n// Speed up MutationObserver by debouncing, clearing internal queue after changes and only running when page is visible\nfunction createOptimizedMutationObserver(callback: MutationCallback) {\n const queue: MutationRecord[] = [];\n const observer = new MutationObserver((mutations) => {\n if (!queue.length) requestAnimationFrame(process);\n queue.push(...mutations);\n });\n\n const process = () => {\n callback(queue, observer);\n queue.length = 0; // Reset queue\n observer.takeRecords(); // Clear queue due to DOM changes in callback\n };\n\n return observer;\n}\n","import { Component } from '@angular/core';\n\n/**\n * Decorative affix container displayed alongside a text input.\n *\n * @remarks\n * Used together with the `hvi-field-affixes` component to wrap leading and trailing adornments.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affix',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affix',\n '[aria-hidden]': 'true',\n },\n})\nexport class HviFieldAffix {}\n","import { Component } from '@angular/core';\n\n/**\n * Container for decorative affixes displayed alongside a text input.\n *\n * @remarks\n * Wraps leading and trailing adornments provided by `hvi-field-affix` components.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affixes',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affixes',\n },\n})\nexport class HviFieldAffixes {}\n","import {\n AfterViewInit,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\n\n/**\n * Counter component that displays remaining/exceeded character count for a field.\n *\n * @remarks\n * Shows a visual counter and provides accessible announcements via aria-live.\n * Must be used inside a `hvi-field` component alongside a textarea or input.\n *\n * The component automatically finds and tracks the input/textarea in the same field,\n * so you only need to provide the `limit` property.\n *\n * @example\n * Simple usage (auto-tracking):\n * ```html\n * <hvi-field>\n * <label hviLabel for=\"description\" weight=\"medium\">Beskrivelse</label>\n * <textarea hviInput id=\"description\" rows=\"3\" maxlength=\"100\"></textarea>\n * <hvi-field-counter [limit]=\"100\" />\n * </hvi-field>\n * ```\n *\n * @example\n * Manual tracking (for custom scenarios):\n * ```html\n * <hvi-field>\n * <label hviLabel for=\"description\" weight=\"medium\">Beskrivelse</label>\n * <textarea hviInput id=\"description\" rows=\"3\" #textarea></textarea>\n * <hvi-field-counter [limit]=\"100\" [count]=\"textarea.value.length\" />\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code\n */\n@Component({\n selector: 'hvi-field-counter',\n standalone: true,\n template: `\n <!-- Screen reader live region for dynamic updates -->\n <div class=\"ds-sr-only\" aria-live=\"polite\">{{ message() }}</div>\n\n <!-- Visible counter text -->\n <p class=\"ds-paragraph\" data-variant=\"default\" aria-hidden=\"true\">{{ message() }}</p>\n\n <!-- Screen reader hint (read when entering field) -->\n <div class=\"ds-sr-only\" aria-hidden=\"true\" data-field=\"description\">\n {{ formattedHint() }}\n </div>\n `,\n})\nexport class HviFieldCounter implements AfterViewInit {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Auto-tracked character count from the input/textarea in the same field */\n private readonly autoCount = signal(0);\n\n /**\n * Current character count. If not provided, the component will\n * automatically track the input/textarea in the same hvi-field.\n */\n count = input<number>();\n\n /** Maximum allowed characters */\n limit = input.required<number>();\n\n /** Label template when limit is exceeded. Use %d for the count. */\n over = input<string>('%d tegn for mye');\n\n /** Label template for remaining characters. Use %d for the count. */\n under = input<string>('%d tegn igjen');\n\n /** Hint text for screen readers about max characters. Use %d for the limit. */\n hint = input<string>('Maks %d tegn tillatt.');\n\n /** Effective count - uses manual count if provided, otherwise auto-tracked */\n private readonly effectiveCount = computed(() => this.count() ?? this.autoCount());\n\n /** Computed difference between limit and current count */\n remaining = computed(() => this.limit() - this.effectiveCount());\n\n /** Whether the limit has been exceeded */\n isOver = computed(() => this.remaining() < 0);\n\n /** The formatted message to display */\n message = computed(() => {\n const diff = Math.abs(this.remaining());\n const template = this.isOver() ? this.over() : this.under();\n return template.replace('%d', String(diff));\n });\n\n /** The formatted hint for screen readers */\n formattedHint = computed(() => this.hint().replace('%d', String(this.limit())));\n\n ngAfterViewInit(): void {\n // Only auto-track if count is not manually provided\n if (this.count() !== undefined) return;\n\n // Find the parent hvi-field\n const field = this.el.nativeElement.closest('.ds-field');\n if (!field) return;\n\n // Find input or textarea in the field\n const inputEl = field.querySelector('input, textarea') as\n | HTMLInputElement\n | HTMLTextAreaElement\n | null;\n if (!inputEl) return;\n\n // Set initial count\n this.autoCount.set(inputEl.value.length);\n\n // Listen for input events\n const onInput = () => this.autoCount.set(inputEl.value.length);\n inputEl.addEventListener('input', onInput);\n\n this.destroyRef.onDestroy(() => {\n inputEl.removeEventListener('input', onInput);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldDescription]',\n standalone: true,\n host: {\n 'data-field': 'description',\n },\n})\nexport class HviFieldDescription {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldOptional]',\n standalone: true,\n host: {\n 'data-field': 'optional',\n },\n})\nexport class HviFieldOptional {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldValidation]',\n standalone: true,\n host: {\n class: 'ds-validation-message',\n 'data-field': 'validation',\n },\n})\nexport class HviFieldValidation {}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input } from '@angular/core';\nimport { fieldObserver } from '../../helpers/field-observer';\n\n/**\n * Field is a helper component to automatically associate a field with hviLabel, hviFieldDescription and hviFieldValidation.\n *\n * @example\n * ```html\n * <hvi-field>\n * <label hviLabel>Name</label>\n * <span hviFieldDescription>Fill in your full name.</span>\n * <input type=\"text\" />\n * <span hviFieldValidation>This field is required.</span>\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/overview\n */\n@Component({\n selector: 'hvi-field',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-field',\n '[attr.data-position]': 'position ?? null',\n },\n})\nexport class HviField implements AfterViewInit {\n /** Position of toggle inputs (radio, checkbox, switch) in field */\n @Input() position?: 'start' | 'end';\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n const stop = fieldObserver(this.el.nativeElement);\n this.destroyRef.onDestroy(() => stop?.());\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Fieldset is used to group and label fields that naturally belong together, such as date fields or address fields.\n * The component helps organize information, make forms more manageable, and improve accessibility for screen readers.\n *\n * @example\n * ```html\n * <fieldset hviFieldset>\n * <legend hviLabel>Which framework do you like best?</legend>\n * <p hviParagraph>Your choice will help us improve the service.</p>\n * <hvi-field>\n * <input type=\"radio\" id=\"angular\" name=\"framework\" value=\"angular\" />\n * <label hviLabel for=\"angular\">Angular</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"react\" name=\"framework\" value=\"react\" />\n * <label hviLabel for=\"react\">React</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"vue\" name=\"framework\" value=\"vue\" />\n * <label hviLabel for=\"vue\">Vue</label>\n * </hvi-field>\n * </fieldset>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/fieldset/overview\n */\n@Directive({\n selector: 'fieldset[hviFieldset]',\n standalone: true,\n host: {\n class: 'ds-fieldset',\n },\n})\nexport class HviFieldset {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\ntype HviAriaRole = 'switch' | 'button' | 'checkbox' | 'radio' | 'textbox' | 'searchbox' | string;\n\n@Directive({\n selector: 'input[hviInput], textarea[hviInput]',\n standalone: true,\n host: {\n class: 'ds-input',\n '[attr.type]': 'type ?? null',\n '[attr.size]': 'size ?? null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.role]': 'role ?? null',\n },\n})\nexport class HviInput {\n /** Supported input types */\n @Input() type?:\n | 'number'\n | 'hidden'\n | 'color'\n | 'checkbox'\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week';\n\n /** Set size attribute on input element */\n @Input() size?: number;\n\n /** Set role, e.g. `switch` when `checkbox` or `radio` */\n @Input() role?: HviAriaRole;\n\n protected _disabled = false;\n protected _readOnly = false;\n\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @Input({ transform: booleanAttribute })\n set readonly(value: boolean) {\n this._readOnly = value;\n }\n\n private get isToggle(): boolean {\n return this.type === 'checkbox' || this.type === 'radio';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: Event): void {\n if (!this._readOnly || !this.isToggle) return;\n\n const keyboardEvent = event as KeyboardEvent;\n if (\n keyboardEvent.key === ' ' ||\n keyboardEvent.key === 'Spacebar' ||\n keyboardEvent.key === 'Enter'\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { HviForm } from '../../form';\n\n/**\n * @summary\n * Directive to set `aria-invalid` on form controls based on their validation state.\n *\n * Usage:\n * ```html\n * <input hviControlInvalid formControlName=\"email\" />\n * ```\n */\n\n@Directive({\n selector: '[hviControlInvalid]',\n standalone: true,\n})\nexport class HviControlInvalid {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n @HostBinding('attr.aria-invalid')\n get ariaInvalid(): string | null {\n const control = this.ngControl?.control;\n if (!control) return null;\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = control.invalid && (control.touched || submitted);\n\n return show ? 'true' : null;\n }\n}\n","import { Directive, Input, inject } from '@angular/core';\nimport { AbstractControl, ControlContainer } from '@angular/forms';\nimport { HviForm } from '../../form';\n\nexport type HviValidationMessages = Partial<Record<string, string>>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\n@Directive({\n selector: '[hviValidationMessage]',\n standalone: true,\n host: {\n // Sett tekstinnhold direkte på elementet (typisk <p hviFieldValidation ...>)\n '[textContent]': 'message',\n // Skjul elementet når det ikke er noen feilmelding\n '[hidden]': '!message',\n },\n})\nexport class HviValidationMessage {\n /**\n * Control name in the nearest parent FormGroup (matches formControlName).\n * Example: hviValidationMessage=\"firstName\"\n */\n @Input('hviValidationMessage') controlName!: string;\n\n /**\n * Map errorKey -> message, e.g. { required: 'Påkrevd', minlength: 'Minst 2 tegn' }\n */\n @Input() messages: HviValidationMessages = {};\n\n /**\n * Optional error priority order. Defaults to a sensible order.\n */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n private readonly container = inject(ControlContainer, { optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n private get control(): AbstractControl | null {\n const group = this.container?.control;\n if (!group || !this.controlName) return null;\n return group.get(this.controlName);\n }\n\n get message(): string {\n const ctrl = this.control;\n if (!ctrl) return '';\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = ctrl.invalid && (ctrl.touched || submitted);\n if (!show) return '';\n\n const errors = ctrl.errors ?? {};\n\n // 1) Prioritized keys first\n for (const key of this.errorPriority) {\n if (errors[key] && this.messages[key]) return this.messages[key]!;\n }\n\n // 2) Any remaining mapped key\n for (const key of Object.keys(errors)) {\n if (this.messages[key]) return this.messages[key]!;\n }\n\n return 'Ugyldig verdi';\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport type { HviValidationMessages } from '../validation';\n\n/**\n * A bundle that pairs a validator function with its error key and message.\n * This enables defining validation rules and messages in one place.\n */\nexport interface HviValidatorBundle {\n /** The Angular validator function */\n validator: ValidatorFn;\n /** The error key (e.g., 'required', 'minlength') */\n key: string;\n /** The user-facing error message */\n message: string;\n}\n\n/**\n * Result of processing validator bundles - ready to use with FormControl and hviValidationMessage.\n */\nexport interface HviValidatorConfig {\n /** Array of validator functions to pass to FormControl */\n validators: ValidatorFn[];\n /** Messages object to pass to hviValidationMessage */\n messages: HviValidationMessages;\n}\n\n/**\n * Extracts validators and messages from an array of validator bundles.\n *\n * @example\n * ```ts\n * const config = hviValidators([\n * hviRequired('Fornavn er påkrevd'),\n * hviMinLength(2, 'Fornavn må være minst 2 tegn'),\n * ]);\n *\n * form = new FormGroup({\n * firstName: new FormControl('', config.validators),\n * });\n *\n * // In template: [messages]=\"config.messages\"\n * ```\n */\nexport function hviValidators(bundles: HviValidatorBundle[]): HviValidatorConfig {\n return {\n validators: bundles.map((b) => b.validator),\n messages: bundles.reduce(\n (acc, b) => ({ ...acc, [b.key]: b.message }),\n {} as HviValidationMessages,\n ),\n };\n}\n\n/**\n * Extracts only the validator functions from bundles.\n * Useful when you need just the validators for a FormControl.\n */\nexport function hviExtractValidators(bundles: HviValidatorBundle[]): ValidatorFn[] {\n return bundles.map((b) => b.validator);\n}\n\n/**\n * Extracts only the messages from bundles.\n * Useful when you need just the messages object.\n */\nexport function hviExtractMessages(bundles: HviValidatorBundle[]): HviValidationMessages {\n return bundles.reduce((acc, b) => ({ ...acc, [b.key]: b.message }), {} as HviValidationMessages);\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { HviValidatorBundle } from './validator-bundle';\n\n/**\n * Creates a required validator bundle.\n *\n * @example\n * ```ts\n * hviRequired('Dette feltet er påkrevd')\n * ```\n */\nexport function hviRequired(message: string): HviValidatorBundle {\n return { validator: Validators.required, key: 'required', message };\n}\n\n/**\n * Creates a requiredTrue validator bundle (for checkboxes that must be checked).\n *\n * @example\n * ```ts\n * hviRequiredTrue('Du må godta vilkårene')\n * ```\n */\nexport function hviRequiredTrue(message: string): HviValidatorBundle {\n return { validator: Validators.requiredTrue, key: 'required', message };\n}\n\n/**\n * Creates a minLength validator bundle.\n *\n * @example\n * ```ts\n * hviMinLength(2, 'Må være minst 2 tegn')\n * ```\n */\nexport function hviMinLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.minLength(length), key: 'minlength', message };\n}\n\n/**\n * Creates a maxLength validator bundle.\n *\n * @example\n * ```ts\n * hviMaxLength(100, 'Kan ikke være mer enn 100 tegn')\n * ```\n */\nexport function hviMaxLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.maxLength(length), key: 'maxlength', message };\n}\n\n/**\n * Creates an email validator bundle.\n *\n * @example\n * ```ts\n * hviEmail('Ugyldig e-postadresse')\n * ```\n */\nexport function hviEmail(message: string): HviValidatorBundle {\n return { validator: Validators.email, key: 'email', message };\n}\n\n/**\n * Creates a pattern validator bundle.\n *\n * @example\n * ```ts\n * hviPattern(/^\\d+$/, 'Kan kun inneholde tall')\n * ```\n */\nexport function hviPattern(pattern: string | RegExp, message: string): HviValidatorBundle {\n return { validator: Validators.pattern(pattern), key: 'pattern', message };\n}\n\n/**\n * Creates a min value validator bundle.\n *\n * @example\n * ```ts\n * hviMin(0, 'Må være minst 0')\n * ```\n */\nexport function hviMin(min: number, message: string): HviValidatorBundle {\n return { validator: Validators.min(min), key: 'min', message };\n}\n\n/**\n * Creates a max value validator bundle.\n *\n * @example\n * ```ts\n * hviMax(100, 'Kan ikke være mer enn 100')\n * ```\n */\nexport function hviMax(max: number, message: string): HviValidatorBundle {\n return { validator: Validators.max(max), key: 'max', message };\n}\n\n/**\n * Creates a custom validator bundle with a specified error key.\n * Use this for custom validators or validators not covered by the built-in functions.\n *\n * @example\n * ```ts\n * // Custom validator that checks if value matches a specific format\n * const norwegianPhoneValidator: ValidatorFn = (control) => {\n * const valid = /^(\\+47)?\\d{8}$/.test(control.value);\n * return valid ? null : { norwegianPhone: true };\n * };\n *\n * hviCustom('norwegianPhone', norwegianPhoneValidator, 'Ugyldig norsk telefonnummer')\n * ```\n */\nexport function hviCustom(\n key: string,\n validator: ValidatorFn,\n message: string,\n): HviValidatorBundle {\n return { validator, key, message };\n}\n\n/**\n * Creates a nullValidator bundle (always valid, useful for conditional validation).\n * Note: This validator always passes, so the message will never be shown.\n */\nexport function hviNullValidator(): HviValidatorBundle {\n return { validator: Validators.nullValidator, key: 'null', message: '' };\n}\n","import { ReactiveFormsModule } from '@angular/forms';\n\nimport { HviForm } from './form';\nimport { HviControlInvalid, HviValidationMessage } from './validation';\n\nimport {\n HviField,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldCounter,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldValidation,\n} from './field';\n\nimport { HviErrorSummary } from './error-summary';\nimport { HviFieldset } from './fieldset';\nimport { HviInput } from './input';\n\n// 1) Bare field-byggesteiner\nexport const HviFieldKit = [\n HviField,\n HviFieldValidation,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldCounter,\n] as const;\n\n// 2) Reactive forms + invalid/validation glue + submit behavior\nexport const HviValidationKit = [\n ReactiveFormsModule,\n HviForm,\n HviControlInvalid,\n HviValidationMessage,\n] as const;\n\n// 3) “Alt du trenger for DS forms”\nexport const HviForms = [\n ...HviValidationKit,\n ...HviFieldKit,\n HviInput,\n HviFieldset,\n HviErrorSummary,\n] as const;\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Heading is used to structure content and create hierarchy on a page.\n *\n * @example\n * ```html\n * <h1 hviHeading size=\"xl\">This is a heading</h1>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/heading/overview\n */\n@Directive({\n selector:\n 'h1[hviHeading], h2[hviHeading], h3[hviHeading], h4[hviHeading], h5[hviHeading], h6[hviHeading]',\n standalone: true,\n host: {\n class: 'ds-heading',\n '[attr.data-size]': 'size',\n },\n})\nexport class HviHeading {\n /** The size of the heading */\n @Input() size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IconColor, IconName, IconSize } from './icon.types';\n\n@Component({\n selector: 'hvi-icon',\n standalone: true,\n template: '',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'hvi-icon',\n '[attr.data-size]': 'size',\n '[attr.data-color]': 'color',\n '[attr.aria-hidden]': 'ariaHidden',\n },\n styles: [\n `\n hvi-icon {\n display: inline-block;\n }\n svg {\n display: inline-block;\n }\n\n hvi-icon[data-size='sm'] svg {\n width: 16px;\n height: 16px;\n }\n hvi-icon[data-size='md'] svg {\n width: 24px;\n height: 24px;\n }\n hvi-icon[data-size='lg'] svg {\n width: 32px;\n height: 32px;\n }\n hvi-icon[data-size='xl'] svg {\n width: 40px;\n height: 40px;\n }\n\n hvi-icon svg path {\n fill: currentColor;\n }\n hvi-icon[data-color='danger'] svg path {\n fill: var(--ds-color-danger-base-default);\n }\n `,\n ],\n})\nexport class HviIcon implements OnChanges {\n @Input({ required: true }) icon!: IconName;\n @Input() color?: IconColor;\n @Input() size: IconSize = 'md';\n @Input({ transform: booleanAttribute }) ariaHidden = false;\n\n private readonly http = inject(HttpClient);\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n ngOnChanges(): void {\n this.loadIcon();\n }\n\n private loadIcon() {\n this.http\n .get(`/assets/icons/${this.icon}.svg`, {\n responseType: 'text',\n })\n .subscribe({\n next: (svg) => {\n this.elementRef.nativeElement.innerHTML = svg;\n this.cdr.markForCheck();\n },\n error: (err) => {\n console.error('Failed to load icon:', this.icon, err);\n },\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Label functions as a clear and accessible text label that tells the user what an associated form element is about.\n *\n * @example\n * ```html\n * <label hviLabel weight=\"semibold\">Name</label>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/label/overview\n */\n@Directive({\n selector: 'label[hviLabel], legend[hviLabel]',\n standalone: true,\n host: {\n class: 'ds-label',\n '[attr.data-weight]': 'weight ?? null',\n },\n})\nexport class HviLabel {\n /** The font weight of the label */\n @Input() weight?: 'regular' | 'medium' | 'semibold';\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <a hviLink />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/input/overview\n */\n\n@Directive({\n selector: 'a[hviLink]',\n standalone: true,\n host: {\n class: 'ds-link',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviLink {\n /** Used to change the appearance of the link. */\n @Input() color?: 'default' | 'neutral' = 'default';\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @summary\n * List directive description.\n *\n * @example\n * ```html\n * <ol hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ol>\n *\n * <ul hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ul>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/input/code\n */\n\n@Directive({\n selector: 'ol[hviList], ul[hviList]',\n standalone: true,\n host: {\n class: 'ds-list',\n },\n})\nexport class HviList {}\n","import {\n booleanAttribute,\n Component,\n computed,\n EventEmitter,\n Input,\n numberAttribute,\n Output,\n signal,\n} from '@angular/core';\n\n/** Type for hvert element i pagineringslisten */\nexport type PaginationItem =\n | { type: 'page'; page: number }\n | { type: 'ellipsis' }\n | { type: 'previous' }\n | { type: 'next' };\n\n/** Event som emitteres ved sideendring */\nexport interface PageChangeEvent {\n page: number;\n previousPage: number;\n}\n\n/**\n * @summary\n * Pagination er en liste med knapper som brukes for å navigere mellom\n * ulike sider med innhold, for eksempel søkeresultater eller tabeller.\n *\n * @example\n * ```html\n * <hvi-pagination\n * [totalItems]=\"100\"\n * [pageSize]=\"10\"\n * [(currentPage)]=\"currentPage\"\n * />\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/pagination/code}\n */\n@Component({\n selector: 'hvi-pagination',\n standalone: true,\n template: `\n <nav [attr.aria-label]=\"ariaLabel\" class=\"ds-pagination\">\n <ul>\n <!-- Forrige -->\n <li>\n <button\n class=\"ds-button\"\n data-variant=\"tertiary\"\n type=\"button\"\n [attr.aria-label]=\"previousLabel\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrevious()\"\n >\n {{ showPreviousNextLabels ? previousLabel : '' }}\n </button>\n </li>\n\n <!-- Sidetall -->\n @for (item of paginationItems(); track $index) {\n @if (item.type === 'page') {\n <li>\n <button\n class=\"ds-button\"\n [attr.data-variant]=\"item.page === _currentPage() ? 'primary' : 'tertiary'\"\n type=\"button\"\n [attr.aria-label]=\"'Side ' + item.page\"\n [attr.aria-current]=\"item.page === _currentPage() ? 'page' : null\"\n (click)=\"goToPage(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n } @else if (item.type === 'ellipsis') {\n <li></li>\n }\n }\n\n <!-- Neste -->\n <li>\n <button\n class=\"ds-button\"\n data-variant=\"tertiary\"\n type=\"button\"\n [attr.aria-label]=\"nextLabel\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n >\n {{ showPreviousNextLabels ? nextLabel : '' }}\n </button>\n </li>\n </ul>\n </nav>\n `,\n host: {\n class: 'hvi-pagination',\n },\n})\nexport class HviPagination {\n /** Totalt antall elementer som pagineres */\n @Input({ transform: numberAttribute, required: true })\n set totalItems(value: number) {\n this._totalItems.set(value);\n }\n\n /** Antall elementer per side */\n @Input({ transform: numberAttribute })\n set pageSize(value: number) {\n this._pageSize.set(value);\n }\n\n /** Nåværende side (1-indeksert) */\n @Input({ transform: numberAttribute })\n set currentPage(value: number) {\n this._currentPage.set(value);\n }\n\n /** Antall sider som skal vises rundt nåværende side */\n @Input({ transform: numberAttribute }) siblingCount = 1;\n\n /** Vis alltid første og siste side */\n @Input({ transform: booleanAttribute }) showEdges = true;\n\n /** Vis \"Forrige\" og \"Neste\" tekst på knappene */\n @Input({ transform: booleanAttribute }) showPreviousNextLabels = true;\n\n /** Aria-label for hele navigasjonen */\n @Input() ariaLabel = 'Sidenavigering';\n\n /** Tekst for forrige-knappen */\n @Input() previousLabel = 'Forrige';\n\n /** Tekst for neste-knappen */\n @Input() nextLabel = 'Neste';\n\n /** Event som emitteres når siden endres */\n @Output() currentPageChange = new EventEmitter<number>();\n\n /** Event som emitteres med mer detaljer om sideendring */\n @Output() pageChange = new EventEmitter<PageChangeEvent>();\n\n // Internal signals\n readonly _totalItems = signal(0);\n readonly _pageSize = signal(10);\n readonly _currentPage = signal(1);\n\n /** Beregnet totalt antall sider */\n readonly totalPages = computed(() => {\n return Math.max(1, Math.ceil(this._totalItems() / this._pageSize()));\n });\n\n /** Er vi på første side? */\n readonly isFirstPage = computed(() => this._currentPage() <= 1);\n\n /** Er vi på siste side? */\n readonly isLastPage = computed(() => this._currentPage() >= this.totalPages());\n\n /** Beregner hvilke elementer som skal vises i pagineringen */\n readonly paginationItems = computed<PaginationItem[]>(() => {\n const current = this._currentPage();\n const total = this.totalPages();\n const siblings = this.siblingCount;\n\n if (total <= 1) return [];\n\n const items: PaginationItem[] = [];\n\n // Beregn range rundt nåværende side\n const leftSibling = Math.max(current - siblings, 1);\n const rightSibling = Math.min(current + siblings, total);\n\n const showLeftEllipsis = this.showEdges && leftSibling > 2;\n const showRightEllipsis = this.showEdges && rightSibling < total - 1;\n\n // Første side (hvis showEdges)\n if (this.showEdges && leftSibling > 1) {\n items.push({ type: 'page', page: 1 });\n if (showLeftEllipsis) {\n items.push({ type: 'ellipsis' });\n }\n }\n\n // Sider rundt nåværende\n for (let page = leftSibling; page <= rightSibling; page++) {\n items.push({ type: 'page', page });\n }\n\n // Siste side (hvis showEdges)\n if (this.showEdges && rightSibling < total) {\n if (showRightEllipsis) {\n items.push({ type: 'ellipsis' });\n }\n items.push({ type: 'page', page: total });\n }\n\n return items;\n });\n\n /** Gå til en spesifikk side */\n goToPage(page: number): void {\n const previousPage = this._currentPage();\n const newPage = Math.max(1, Math.min(page, this.totalPages()));\n\n if (newPage !== previousPage) {\n this._currentPage.set(newPage);\n this.currentPageChange.emit(newPage);\n this.pageChange.emit({ page: newPage, previousPage });\n }\n }\n\n /** Gå til forrige side */\n goToPrevious(): void {\n if (!this.isFirstPage()) {\n this.goToPage(this._currentPage() - 1);\n }\n }\n\n /** Gå til neste side */\n goToNext(): void {\n if (!this.isLastPage()) {\n this.goToPage(this._currentPage() + 1);\n }\n }\n\n /** Gå til første side */\n goToFirst(): void {\n this.goToPage(1);\n }\n\n /** Gå til siste side */\n goToLast(): void {\n this.goToPage(this.totalPages());\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Paragraph is used for continuous text and is typically applied in articles, components, help text, and similar content.\n *\n * @example\n * ```html\n * <p hviParagraph variant=\"long\" size=\"md\">\n * This is a paragraph with body text that can be adjusted in size and variant.\n * </p>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/paragraph/overview\n */\n@Directive({\n selector: 'p[hviParagraph]',\n standalone: true,\n host: {\n class: 'ds-paragraph',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n },\n})\nexport class HviParagraph {\n /** Adjusts the style for the length of the paragraph */\n @Input() variant?: 'long' | 'default' | 'short';\n\n /** Paragraph is available in several text sizes to suit different needs */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\nconst arrowPseudoElement = {\n name: 'ArrowPseudoElement',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n switch (placement.split('-')[0]) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', placement.split('-')[0]);\n elements.floating.style.setProperty('--ds-popover-arrow-x', arrowX);\n elements.floating.style.setProperty('--ds-popover-arrow-y', arrowY);\n return data;\n },\n};\n\n/**\n * @summary\n * Popover vises over andre elementer i grensesnittet og er koblet til et spesifikt element.\n * Den brukes til å vise tilleggsinformasjon, interaktive elementer eller korte forklaringer uten å navigere bort fra siden.\n *\n * @example\n * ```html\n * <button hviButton popovertarget=\"popover1\">Open popover</button>\n * <hvi-popover id=\"popover1\"> Popover content </hvi-popover>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/popover/code}\n */\n@Component({\n selector: 'hvi-popover',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-popover',\n '[attr.popover]': 'type',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviPopover implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private cleanupAutoUpdate?: () => void;\n private boundHandleClick?: (event: MouseEvent) => void;\n private boundHandleKeydown?: (event: KeyboardEvent) => void;\n\n /** Popover type - 'manual' krever manuell lukking, 'auto' lukkes ved klikk utenfor */\n @Input() type: 'auto' | 'manual' | 'hint' = 'manual';\n\n /** Visuell variant */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Farge-tema */\n @Input() color: 'neutral' | 'danger' | 'info' | 'success' | 'warning' = 'neutral';\n\n /** Plassering av popover relativt til trigger */\n @Input() placement: Placement = 'top';\n\n /** Aktiver automatisk repositjonering hvis det ikke er plass */\n @Input() autoPlacement = true;\n\n /** Event når popover åpnes */\n @Output() opened = new EventEmitter<void>();\n\n /** Event når popover lukkes */\n @Output() closed = new EventEmitter<void>();\n\n private get popoverElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get triggerElement(): HTMLElement | null {\n const id = this.popoverElement.id;\n return id ? document.querySelector(`[popovertarget=\"${id}\"]`) : null;\n }\n\n ngOnInit() {\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.stopAutoUpdate();\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const popover = this.popoverElement;\n\n // Click utenfor lukker popover\n this.boundHandleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[popovertarget=\"${popover.id}\"]`);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n\n if (isTrigger) {\n event.preventDefault();\n popover.togglePopover?.();\n }\n if (isOutside && popover.matches(':popover-open')) {\n popover.togglePopover?.();\n }\n };\n\n // Escape lukker popover\n this.boundHandleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !popover.matches(':popover-open')) return;\n event.preventDefault();\n popover.togglePopover?.();\n };\n\n addEventListener('click', this.boundHandleClick);\n addEventListener('keydown', this.boundHandleKeydown);\n\n // Toggle events\n popover.addEventListener('beforetoggle', this.handleBeforeToggle);\n popover.addEventListener('toggle', this.handleToggle);\n }\n\n private removeEventListeners() {\n if (this.boundHandleClick) {\n removeEventListener('click', this.boundHandleClick);\n }\n if (this.boundHandleKeydown) {\n removeEventListener('keydown', this.boundHandleKeydown);\n }\n this.popoverElement.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.popoverElement.removeEventListener('toggle', this.handleToggle);\n }\n\n private handleBeforeToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.updatePosition();\n }\n };\n\n private handleToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.startAutoUpdate();\n this.opened.emit();\n } else {\n this.stopAutoUpdate();\n this.closed.emit();\n }\n };\n\n private updatePosition() {\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n computePosition(trigger, popover, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [\n offset((data) => {\n const styles = getComputedStyle(data.elements.floating, '::before');\n return parseFloat(styles.height) || 12;\n }),\n ...(this.autoPlacement ? [flip({ fallbackAxisSideDirection: 'start' }), shift()] : []),\n arrowPseudoElement,\n ],\n }).then(({ x, y }) => {\n popover.style.translate = `${x}px ${y}px`;\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, popover, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/**\n * @summary\n * SearchClear is a button directive for clearing the search input.\n * It automatically finds the input field inside the parent `hvi-search` component and clears it.\n *\n * @example\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/search}\n */\n@Directive({\n selector: 'button[hviSearchClear]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.data-icon]': '\"true\"',\n '[attr.data-variant]': '\"tertiary\"',\n type: 'reset',\n },\n})\nexport class HviSearchClear {\n private readonly elementRef = inject(ElementRef<HTMLButtonElement>);\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n // Prevent default reset behavior (only works in forms anyway)\n event.preventDefault();\n\n const searchContainer = this.elementRef.nativeElement.closest('.ds-search');\n if (!searchContainer) return;\n\n const input = searchContainer.querySelector('input') as HTMLInputElement | null;\n if (input) {\n input.value = '';\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.focus();\n }\n }\n}\n","import { Component } from '@angular/core';\n\n/**\n * @summary\n * Search allows users to quickly find relevant content on a website or in an application.\n * The component consists of a search field, with or without a search button.\n *\n * Use `hviInput` with `type=\"search\"` for the input field.\n * Use `hviSearchClear` for the clear button.\n * Use `hviButton` for the submit button.\n *\n * Important: Add an empty `placeholder=\"\"` on the input if you have a clear button.\n *\n * @example\n * Basic search with clear and submit button:\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * ```\n *\n * @example\n * Search without submit button:\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * </hvi-search>\n * ```\n *\n * @example\n * Search with label using hvi-field:\n * ```html\n * <hvi-field>\n * <label hviLabel>Søk etter katter</label>\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" name=\"cat-search\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * </hvi-field>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/search}\n */\n@Component({\n selector: 'hvi-search',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-search',\n },\n})\nexport class HviSearch {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\n/**\n * @summary\n * Select allows users to choose an option from a list.\n *\n * @example\n * ```html\n * <select hviSelect width=\"auto\" id=\"select\">\n * <option value=\"\" disabled=\"\" selected=\"\">Select an option</option>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * </select>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/select/code\n */\n\n@Directive({\n selector: 'select[hviSelect]',\n standalone: true,\n host: {\n class: 'ds-select ds-input',\n '[attr.data-width]': 'width',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n },\n})\nexport class HviSelect {\n /** Defines the width of Select, where \"auto\" matches the content width. */\n @Input() width?: 'full' | 'auto';\n\n protected _readOnly = false;\n protected _disabled = false;\n\n /** Disabled Select. */\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** Readonly Select. */\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!this._readOnly) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Skeleton component description.\n *\n * @example\n * ```html\n * <hvi-skeleton variant=\"rectangle\" width=\"100px\" height=\"20px\"></hvi-skeleton>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/skeleton/code}\n */\n\n@Component({\n selector: 'hvi-skeleton',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-skeleton',\n '[attr.aria-hidden]': 'true',\n '[attr.data-variant]': 'variant',\n '[style.width]': 'width',\n '[style.height]': 'height',\n },\n})\nexport class HviSkeleton {\n @Input() variant: 'rectangle' | 'circle' | 'text' = 'rectangle';\n @Input() width?: string;\n @Input() height?: string;\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/**\n * @summary\n * SkipLink hjelper folk som bruker tastaturnavigasjon til å navigere,\n * slik at de enkelt kan gå til det viktigste innholdet på en side.\n *\n * @example\n * ```html\n * <a hviSkipLink href=\"#main-content\">Hopp til hovedinnhold</a>\n *\n * <main id=\"main-content\" tabindex=\"-1\">\n * Hovedinnhold her\n * </main>\n * ```\n *\n * @see {@link https://designsystemet.no/komponenter/skip-link}\n */\n@Directive({\n selector: 'a[hviSkipLink]',\n standalone: true,\n host: {\n class: 'ds-skip-link',\n },\n})\nexport class HviSkipLink {\n private el = inject(ElementRef<HTMLAnchorElement>);\n\n /**\n * Handles click to prevent Angular Router navigation\n * and instead focus/scroll to the target element.\n */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const href = this.el.nativeElement.getAttribute('href');\n if (!href?.startsWith('#')) return;\n\n event.preventDefault();\n\n const id = href.slice(1);\n const target = document.getElementById(id);\n\n if (target) {\n target.focus();\n target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/** Available sizes for the Spinner */\nexport type SpinnerSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * @summary\n * Spinner brukes for å indikere at innhold eller en handling er i ferd med å laste,\n * og at brukeren må vente før de kan fortsette.\n *\n * @example\n * ```html\n * <hvi-spinner label=\"Laster...\" />\n * <hvi-spinner label=\"Henter data\" size=\"lg\" />\n * ```\n *\n * @see {@link https://designsystemet.no/komponenter/spinner}\n */\n@Component({\n selector: 'hvi-spinner',\n standalone: true,\n template: `\n <svg\n [attr.aria-label]=\"label\"\n class=\"ds-spinner\"\n role=\"img\"\n viewBox=\"0 0 50 50\"\n [attr.data-size]=\"size\"\n >\n <circle class=\"ds-spinner__background\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\" />\n <circle class=\"ds-spinner__circle\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\" />\n </svg>\n `,\n host: {\n style: 'display: contents;',\n },\n})\nexport class HviSpinner {\n /** Accessible label describing what is loading */\n @Input({ required: true }) label!: string;\n\n /** Size of the spinner */\n @Input() size?: SpinnerSize;\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n EventEmitter,\n Input,\n numberAttribute,\n Output,\n signal,\n} from '@angular/core';\n\n/** Sorteringsretninger for tabell-kolonner */\nexport type SortDirection = 'none' | 'ascending' | 'descending';\n\n/** Event som emitteres ved sorteringsendring */\nexport interface TableSortEvent {\n field: string;\n direction: SortDirection;\n}\n\n/** Event som emitteres ved sideendring */\nexport interface TablePageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n/**\n * @summary\n * Table brukes for å vise strukturert informasjon på en ryddig og oversiktlig måte.\n * Tabeller kan gjøre det enklere for brukerne å skanne og sammenligne informasjon.\n *\n * @example\n * ```html\n * <!-- Enkel bruk med innebygd sortering og søk -->\n * <table hviTable [value]=\"persons\" [globalFilterFields]=\"['navn', 'epost']\" #table=\"hviTable\">\n * <caption>\n * <input type=\"search\" (input)=\"table.filterGlobal($event.target.value)\" />\n * </caption>\n * <thead>\n * <tr>\n * <th hviSortableColumn=\"navn\">\n * <button>Navn</button>\n * </th>\n * <th>Epost</th>\n * </tr>\n * </thead>\n * <tbody>\n * @for (person of table.filteredValue(); track person.id) {\n * <tr>\n * <td>{{ person.navn }}</td>\n * <td>{{ person.epost }}</td>\n * </tr>\n * }\n * </tbody>\n * </table>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/table/code}\n */\n@Directive({\n selector: '[hviTable]',\n standalone: true,\n exportAs: 'hviTable',\n host: {\n class: 'ds-table',\n '[attr.data-zebra]': 'zebra || null',\n '[attr.data-border]': 'border || null',\n '[attr.data-hover]': 'hover || null',\n '[attr.data-sticky-header]': 'stickyHeader || null',\n },\n})\nexport class HviTable<T = unknown> {\n /** Gir tabellen zebrastriper (annenhver rad har alternativ bakgrunn) */\n @Input({ transform: booleanAttribute }) zebra = false;\n\n /** Gir tabellen en avrundet kant rundt */\n @Input({ transform: booleanAttribute }) border = false;\n\n /** Gir tabellen hover-effekt på rader */\n @Input({ transform: booleanAttribute }) hover = false;\n\n /** Gjør tabellens header sticky (fester seg til toppen ved scrolling) */\n @Input({ transform: booleanAttribute }) stickyHeader = false;\n\n /** Data som skal vises i tabellen */\n @Input()\n set value(data: T[] | null | undefined) {\n this._value.set(data ?? []);\n }\n\n /** Felt som data skal sorteres etter (valgfri initial verdi) */\n @Input()\n set sortField(field: string | null | undefined) {\n if (field) {\n this._sortField.set(field);\n }\n }\n\n /** Sorteringsretning: 1 = ascending, -1 = descending, 0 = none */\n @Input()\n set sortOrder(order: number) {\n this._sortOrder.set(order);\n }\n\n /** Felt som global søk skal søke i */\n @Input() globalFilterFields: string[] = [];\n\n /** Aktiver paginering */\n @Input({ transform: booleanAttribute }) paginator = false;\n\n /** Antall rader per side (når paginator er aktivert) */\n @Input({ transform: numberAttribute })\n set rows(value: number) {\n this._rows.set(value);\n }\n\n /** Indeks for første rad som vises (0-basert) */\n @Input({ transform: numberAttribute })\n set first(value: number) {\n this._first.set(value);\n }\n\n /** Event som emitteres når sortering endres */\n @Output() sortChange = new EventEmitter<TableSortEvent>();\n\n /** Event som emitteres når side endres */\n @Output() pageChange = new EventEmitter<TablePageEvent>();\n\n /** Event som emitteres med nåværende side (1-basert, for two-way binding) */\n @Output() currentPageChange = new EventEmitter<number>();\n\n // Internal signals\n private _value = signal<T[]>([]);\n private _sortField = signal<string | null>(null);\n private _sortOrder = signal<number>(0); // 0 = none, 1 = asc, -1 = desc\n private _globalFilter = signal<string | null>(null);\n private _rows = signal(10);\n private _first = signal(0);\n\n /** Kun sortert data (uten søk) - for bakoverkompatibilitet */\n readonly sortedValue = computed(() => {\n return this.applySorting(this._value());\n });\n\n /** Filtrert og sortert data - bruk denne i template */\n readonly filteredValue = computed(() => {\n const data = this._value();\n const filtered = this.applyGlobalFilter(data);\n return this.applySorting(filtered);\n });\n\n /** Paginert, filtrert og sortert data - bruk denne når paginator er aktivert */\n readonly paginatedValue = computed(() => {\n const data = this.filteredValue();\n if (!this.paginator) return data;\n\n const first = this._first();\n const rows = this._rows();\n return data.slice(first, first + rows);\n });\n\n /** Antall rader etter søk */\n readonly totalFilteredRecords = computed(() => this.filteredValue().length);\n\n /** Antall rader totalt (før søk) */\n readonly totalRecords = computed(() => this._value().length);\n\n /** Totalt antall sider */\n readonly pageCount = computed(() => {\n if (!this.paginator) return 1;\n return Math.max(1, Math.ceil(this.totalFilteredRecords() / this._rows()));\n });\n\n /** Nåværende side (1-basert) */\n readonly currentPage = computed(() => {\n return Math.floor(this._first() / this._rows()) + 1;\n });\n\n /** Er vi på første side? */\n readonly isFirstPage = computed(() => this._first() === 0);\n\n /** Er vi på siste side? */\n readonly isLastPage = computed(() => {\n return this._first() + this._rows() >= this.totalFilteredRecords();\n });\n\n /** Nåværende sorteringsfelt */\n readonly currentSortField = computed(() => this._sortField());\n\n /** Nåværende sorteringsretning som SortDirection */\n readonly currentSortDirection = computed<SortDirection>(() => {\n const order = this._sortOrder();\n if (order === 1) return 'ascending';\n if (order === -1) return 'descending';\n return 'none';\n });\n\n /** Nåværende søkeverdi */\n readonly currentGlobalFilter = computed(() => this._globalFilter());\n\n /**\n * Global søk - søker på tvers av alle felt i globalFilterFields.\n * @param value Søkeverdi\n */\n filterGlobal(value: string | null): void {\n this._globalFilter.set(value?.trim() || null);\n }\n\n /**\n * Nullstiller søk.\n */\n clearFilter(): void {\n this._globalFilter.set(null);\n }\n\n /**\n * Nullstiller hele tabellen (sortering og søk).\n */\n clear(): void {\n this._sortField.set(null);\n this._sortOrder.set(0);\n this._globalFilter.set(null);\n this._first.set(0);\n }\n\n // ========== Paginering ==========\n\n /**\n * Gå til en spesifikk side (1-basert).\n */\n goToPage(page: number): void {\n const totalPages = this.pageCount();\n const validPage = Math.max(1, Math.min(page, totalPages));\n const newFirst = (validPage - 1) * this._rows();\n\n if (newFirst !== this._first()) {\n this._first.set(newFirst);\n this.emitPageEvent();\n }\n }\n\n /**\n * Gå til første side.\n */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Gå til siste side.\n */\n goToLastPage(): void {\n this.goToPage(this.pageCount());\n }\n\n /**\n * Gå til forrige side.\n */\n goToPreviousPage(): void {\n if (!this.isFirstPage()) {\n this.goToPage(this.currentPage() - 1);\n }\n }\n\n /**\n * Gå til neste side.\n */\n goToNextPage(): void {\n if (!this.isLastPage()) {\n this.goToPage(this.currentPage() + 1);\n }\n }\n\n /**\n * Endre antall rader per side.\n */\n setRows(rows: number): void {\n this._rows.set(rows);\n this._first.set(0); // Reset til første side\n this.emitPageEvent();\n }\n\n private emitPageEvent(): void {\n this.pageChange.emit({\n first: this._first(),\n rows: this._rows(),\n page: this.currentPage(),\n pageCount: this.pageCount(),\n });\n this.currentPageChange.emit(this.currentPage());\n }\n\n /**\n * Sorterer tabellen etter et felt.\n * Kalles av hviSortableColumn directive.\n */\n sort(field: string): void {\n const currentField = this._sortField();\n const currentOrder = this._sortOrder();\n\n let newOrder: number;\n\n if (currentField === field) {\n // Samme felt - sykl gjennom: asc → desc → none\n if (currentOrder === 1) {\n newOrder = -1;\n } else if (currentOrder === -1) {\n newOrder = 0;\n } else {\n newOrder = 1;\n }\n } else {\n // Nytt felt - start med ascending\n newOrder = 1;\n }\n\n this._sortField.set(newOrder === 0 ? null : field);\n this._sortOrder.set(newOrder);\n\n const direction: SortDirection =\n newOrder === 1 ? 'ascending' : newOrder === -1 ? 'descending' : 'none';\n\n this.sortChange.emit({ field, direction });\n }\n\n /**\n * Henter sorteringsretning for et spesifikt felt.\n * Brukes av hviSortableColumn for å vise riktig aria-sort.\n */\n getSortDirection(field: string): SortDirection {\n if (this._sortField() !== field) {\n return 'none';\n }\n return this.currentSortDirection();\n }\n\n // ========== Private methods ==========\n\n private applyGlobalFilter(data: T[]): T[] {\n const globalFilter = this._globalFilter();\n const globalFields = this.globalFilterFields;\n\n if (!globalFilter || globalFields.length === 0 || data.length === 0) {\n return data;\n }\n\n const searchTerm = globalFilter.toLowerCase();\n\n return data.filter((item) => {\n return globalFields.some((field) => {\n const value = this.getFieldValue(item, field);\n return String(value ?? '')\n .toLowerCase()\n .includes(searchTerm);\n });\n });\n }\n\n private applySorting(data: T[]): T[] {\n const field = this._sortField();\n const order = this._sortOrder();\n\n if (!field || order === 0 || data.length === 0) {\n return data;\n }\n\n return [...data].sort((a, b) => {\n const valueA = this.getFieldValue(a, field);\n const valueB = this.getFieldValue(b, field);\n\n let comparison = 0;\n\n if (valueA == null && valueB == null) {\n comparison = 0;\n } else if (valueA == null) {\n comparison = -1;\n } else if (valueB == null) {\n comparison = 1;\n } else if (typeof valueA === 'string' && typeof valueB === 'string') {\n comparison = valueA.localeCompare(valueB, 'nb');\n } else if (typeof valueA === 'number' && typeof valueB === 'number') {\n comparison = valueA - valueB;\n } else {\n comparison = String(valueA).localeCompare(String(valueB), 'nb');\n }\n\n return order * comparison;\n });\n }\n\n /**\n * Henter verdi fra et objekt basert på felt-path (støtter nested: \"user.name\")\n */\n private getFieldValue(obj: T, field: string): unknown {\n const keys = field.split('.');\n let value: unknown = obj;\n\n for (const key of keys) {\n if (value == null) return null;\n value = (value as Record<string, unknown>)[key];\n }\n\n return value;\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { HviTable, SortDirection } from './table.directive';\n\n/**\n * @summary\n * Directive for sorterbare tabell-header celler.\n * Kommuniserer automatisk med parent HviTable for å håndtere sortering.\n *\n * @example\n * ```html\n * <table hviTable [value]=\"persons\" #table>\n * <thead>\n * <tr>\n * <th hviSortableColumn=\"navn\">\n * <button>Navn</button>\n * </th>\n * <th>Epost</th>\n * </tr>\n * </thead>\n * <tbody>\n * @for (person of table.sortedValue(); track person.id) {\n * <tr>\n * <td>{{ person.navn }}</td>\n * <td>{{ person.epost }}</td>\n * </tr>\n * }\n * </tbody>\n * </table>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/table/code}\n */\n@Directive({\n selector: 'th[hviSortableColumn]',\n standalone: true,\n host: {\n '[attr.aria-sort]': 'sortDirection',\n },\n})\nexport class HviSortableColumn {\n private table = inject(HviTable, { optional: true });\n\n /**\n * Feltet som denne kolonnen sorterer etter.\n * Må matche property-navn i data-objektene.\n */\n @Input({ required: true, alias: 'hviSortableColumn' }) field!: string;\n\n /**\n * Henter sorteringsretning fra parent table.\n */\n get sortDirection(): SortDirection {\n return this.table?.getSortDirection(this.field) ?? 'none';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n // Bare håndter klikk på button inne i th\n if (target.tagName === 'BUTTON' || target.closest('button')) {\n this.table?.sort(this.field);\n }\n }\n}\n\n// Re-export SortDirection for convenience\nexport type { SortDirection } from './table.directive';\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport '@u-elements/u-tabs';\n\n/**\n * TabPanel inneholder innholdet som vises når en tilhørende Tab er aktiv.\n *\n * @example\n * ```html\n * <hvi-tab-panel value=\"tab1\">\n * Innhold for tab 1\n * </hvi-tab-panel>\n * ```\n */\n@Component({\n selector: 'hvi-tab-panel',\n standalone: true,\n template: `\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n})\nexport class HviTabPanel {\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n /** When this value is selected, render this TabPanel. Must match the value of a Tab. */\n @Input({ required: true }) value!: string;\n}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport '@u-elements/u-tabs';\n\n/**\n * Tab er en enkelt fane som kan klikkes for å vise tilhørende TabPanel.\n *\n * @example\n * ```html\n * <hvi-tab value=\"tab1\">Tab 1</hvi-tab>\n * ```\n */\n@Component({\n selector: 'hvi-tab',\n standalone: true,\n template: `\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n})\nexport class HviTab {\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n /** Unique value that will be set in the Tabs components state when the tab is activated */\n @Input({ required: true }) value!: string;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport '@u-elements/u-tabs';\nimport { HviTabPanel } from './tab-panel.component';\nimport { HviTab } from './tab.component';\n\n/**\n * Tabs lar brukerne navigere mellom relaterte deler av innholdet,\n * der én del vises om gangen.\n *\n * @example\n * ```html\n * <hvi-tabs defaultValue=\"tab1\">\n * <hvi-tab value=\"tab1\">Tab 1</hvi-tab>\n * <hvi-tab value=\"tab2\">Tab 2</hvi-tab>\n * <hvi-tab-panel value=\"tab1\">Content 1</hvi-tab-panel>\n * <hvi-tab-panel value=\"tab2\">Content 2</hvi-tab-panel>\n * </hvi-tabs>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/tabs/overview}\n */\n@Component({\n selector: 'hvi-tabs',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <u-tabs #uTabsRef class=\"ds-tabs\">\n <u-tablist>\n @for (tab of tabs; track tab.value) {\n <u-tab [attr.data-value]=\"tab.value\">\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\" />\n </u-tab>\n }\n </u-tablist>\n @for (panel of panels; track panel.value) {\n <u-tabpanel [attr.data-value]=\"panel.value\">\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </u-tabpanel>\n }\n </u-tabs>\n <!-- Hidden slot to capture content -->\n <div style=\"display: none\">\n <ng-content />\n </div>\n `,\n host: {},\n})\nexport class HviTabs implements AfterContentInit {\n @ViewChild('uTabsRef') uTabsRef!: ElementRef;\n @ContentChildren(HviTab) tabs!: QueryList<HviTab>;\n @ContentChildren(HviTabPanel) panels!: QueryList<HviTabPanel>;\n\n /** Controlled state for Tabs component */\n @Input() value?: string;\n\n /** Default selected tab value */\n @Input() defaultValue?: string;\n\n /** Callback when selected tab changes */\n @Output() valueChange = new EventEmitter<string>();\n\n ngAfterContentInit() {\n // Wait for view to be ready\n setTimeout(() => {\n this.setupTabs();\n });\n }\n\n private setupTabs() {\n const uTabs = this.uTabsRef?.nativeElement;\n if (!uTabs) return;\n\n if (this.defaultValue) {\n const tabsArray = this.tabs.toArray();\n const index = tabsArray.findIndex((t) => t.value === this.defaultValue);\n if (index >= 0) {\n uTabs.selectedIndex = index;\n }\n }\n\n // Listen for tab clicks\n uTabs.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n const tab = target.closest('u-tab');\n if (tab) {\n const value = tab.getAttribute('data-value');\n if (value) {\n this.valueChange.emit(value);\n }\n }\n });\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.\n *\n * @example\n * ```html\n * <hvi-tag variant=\"outline\" size=\"sm\" color=\"info\">Small info tag</hvi-tag>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/tag/code\n */\n\n@Component({\n selector: 'hvi-tag',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-tag',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviTag {\n /** The variants of the tag */\n @Input() variant?: 'default' | 'outline';\n\n /** The sizes of the tag */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** The color theme of the tag */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { HviToggleGroupItem } from './toggle-group-item.directive';\n\nlet nextGroupId = 0;\n\n/**\n * @summary\n * ToggleGroup collects related options. The component consists of a group of\n * buttons that are connected, where only one button can be selected at a time.\n *\n * @example\n * ```html\n * <hvi-toggle-group [(value)]=\"selected\" variant=\"primary\">\n * <button hviToggleGroupItem value=\"innboks\">Innboks</button>\n * <button hviToggleGroupItem value=\"utkast\">Utkast</button>\n * <button hviToggleGroupItem value=\"sendt\">Sendt</button>\n * </hvi-toggle-group>\n * ```\n *\n * @example\n * With reactive forms:\n * ```html\n * <hvi-toggle-group formControlName=\"view\" variant=\"secondary\">\n * <button hviToggleGroupItem value=\"list\">Liste</button>\n * <button hviToggleGroupItem value=\"grid\">Rutenett</button>\n * </hvi-toggle-group>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/toggle-group}\n */\n@Component({\n selector: 'hvi-toggle-group',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-toggle-group',\n role: 'radiogroup',\n '[attr.data-variant]': '_variant()',\n '[tabindex]': '0',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HviToggleGroup),\n multi: true,\n },\n ],\n})\nexport class HviToggleGroup implements ControlValueAccessor {\n @ContentChildren(forwardRef(() => HviToggleGroupItemToken) as never)\n private items!: QueryList<HviToggleGroupItem>;\n\n private readonly registeredItems: HviToggleGroupItem[] = [];\n\n /** The variant of the toggle group */\n readonly _variant = signal<'primary' | 'secondary'>('primary');\n\n /** Form element name */\n readonly _name = signal(`togglegroup-name-${++nextGroupId}`);\n\n /** The currently selected value */\n private readonly _value = signal<string | undefined>(undefined);\n\n /** Event emitted when value changes */\n @Output() valueChange = new EventEmitter<string>();\n\n // ControlValueAccessor callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n @Input()\n set value(val: string | undefined) {\n this._value.set(val);\n this.updateItemStates();\n }\n\n @Input()\n set variant(val: 'primary' | 'secondary') {\n this._variant.set(val);\n }\n\n @Input()\n set name(val: string) {\n if (val) this._name.set(val);\n }\n\n /** Register an item with this group */\n registerItem(item: HviToggleGroupItem): void {\n this.registeredItems.push(item);\n // Update state if this item matches current value\n if (this._value() === item.value) {\n item.setSelected(true);\n }\n }\n\n /** Unregister an item from this group */\n unregisterItem(item: HviToggleGroupItem): void {\n const index = this.registeredItems.indexOf(item);\n if (index > -1) {\n this.registeredItems.splice(index, 1);\n }\n }\n\n /** Select an item and update all states */\n selectItem(item: HviToggleGroupItem): void {\n this._value.set(item.value);\n this.updateItemStates();\n this.valueChange.emit(item.value);\n this.onChange(item.value);\n this.onTouched();\n }\n\n /** Handle keyboard navigation (roving tabindex) */\n handleKeydown(event: KeyboardEvent, currentItem: HviToggleGroupItem): void {\n const items = this.registeredItems;\n const currentIndex = items.indexOf(currentItem);\n\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex = (currentIndex + 1) % items.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex = (currentIndex - 1 + items.length) % items.length;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n case ' ':\n case 'Enter':\n this.selectItem(currentItem);\n event.preventDefault();\n return;\n default:\n return;\n }\n\n if (nextIndex !== null) {\n event.preventDefault();\n const nextItem = items[nextIndex];\n nextItem.focus();\n this.selectItem(nextItem);\n }\n }\n\n private updateItemStates(): void {\n const currentValue = this._value();\n for (const item of this.registeredItems) {\n item.setSelected(item.value === currentValue);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this._value.set(value);\n this.updateItemStates();\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\n// Token for forward reference to avoid circular dependency\nexport const HviToggleGroupItemToken = Symbol('HviToggleGroupItem');\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { HviToggleGroup } from './toggle-group.component';\n\nlet nextId = 0;\n\n/**\n * @summary\n * ToggleGroupItem is a button directive for use inside HviToggleGroup.\n *\n * @example\n * ```html\n * <hvi-toggle-group [(value)]=\"selected\">\n * <button hviToggleGroupItem value=\"option1\">Option 1</button>\n * <button hviToggleGroupItem value=\"option2\">Option 2</button>\n * </hvi-toggle-group>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/toggle-group}\n */\n@Directive({\n selector: 'button[hviToggleGroupItem]',\n standalone: true,\n host: {\n class: 'ds-button',\n type: 'button',\n role: 'radio',\n '[id]': 'id',\n '[attr.value]': 'value',\n '[attr.name]': 'group._name()',\n '[attr.aria-checked]': 'isSelected()',\n '[attr.aria-current]': 'isSelected()',\n '[attr.data-variant]': 'computedVariant()',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.data-roving-tabindex-item]': '\"true\"',\n '[tabindex]': 'isSelected() ? 0 : -1',\n '(click)': 'onClick()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class HviToggleGroupItem implements OnInit, OnDestroy {\n readonly group = inject(HviToggleGroup);\n private readonly elementRef = inject(ElementRef<HTMLButtonElement>);\n\n /** Unique ID for this item */\n readonly id = `togglegroup-item-${++nextId}`;\n\n /** The value of this toggle item */\n @Input({ required: true }) value!: string;\n\n /** Toggle icon-only styling */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Internal signal for tracking selection state */\n private readonly _isSelected = signal(false);\n\n /** Whether this item is currently selected */\n readonly isSelected = this._isSelected.asReadonly();\n\n /** Computed variant based on selection state */\n readonly computedVariant = computed(() => {\n return this._isSelected() ? this.group._variant() : 'tertiary';\n });\n\n ngOnInit(): void {\n this.group.registerItem(this);\n }\n\n ngOnDestroy(): void {\n this.group.unregisterItem(this);\n }\n\n /** Update the selected state (called by parent group) */\n setSelected(selected: boolean): void {\n this._isSelected.set(selected);\n }\n\n /** Focus this item's button element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n protected onClick(): void {\n this.group.selectItem(this);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n this.group.handleKeydown(event, this);\n }\n}\n","import { Directive, ElementRef, inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\n/** Placement for tooltip arrow positioning */\ntype TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\n/** Plugin for positioning the tooltip arrow pseudo-element */\nconst tooltipArrowPlugin = {\n name: 'TooltipArrowPlugin',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n const basePlacement = placement.split('-')[0] as TooltipPlacement;\n\n switch (basePlacement) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', basePlacement);\n elements.floating.style.setProperty('--dsc-tooltip-arrow-x', arrowX);\n elements.floating.style.setProperty('--dsc-tooltip-arrow-y', arrowY);\n return data;\n },\n};\n\nlet tooltipIdCounter = 0;\n\n/**\n * @summary\n * Tooltip viser kort informasjon når brukeren holder musepekeren over\n * eller fokuserer på et element. Den brukes til sekundær informasjon,\n * for eksempel til å forklare hva et symbol betyr.\n *\n * @example\n * ```html\n * <button hviButton hviTooltip=\"Kopier\">📋</button>\n * <span hviTooltip=\"Organisasjonsnummer\">Org.nr.</span>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/tooltip/code}\n */\n@Directive({\n selector: '[hviTooltip]',\n standalone: true,\n})\nexport class HviTooltip implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n private tooltipElement: HTMLElement | null = null;\n private tooltipId = `hvi-tooltip-${++tooltipIdCounter}`;\n private cleanupAutoUpdate?: () => void;\n private showTimeout?: ReturnType<typeof setTimeout>;\n private hideTimeout?: ReturnType<typeof setTimeout>;\n private isOpen = false;\n\n // Event listener cleanup functions\n private listeners: (() => void)[] = [];\n\n /** Tooltip content */\n @Input({ required: true }) hviTooltip = '';\n\n /** Placement of the tooltip relative to the trigger */\n @Input() tooltipPlacement: Placement = 'top';\n\n /** Enable auto placement when there's not enough space */\n @Input() tooltipAutoPlacement = true;\n\n /**\n * Override ARIA attribute type.\n * - 'describedby': tooltip describes the element (default for elements with text)\n * - 'labelledby': tooltip labels the element (default for icon-only buttons)\n */\n @Input() tooltipType?: 'describedby' | 'labelledby';\n\n /** Delay before showing tooltip (ms) */\n @Input() tooltipShowDelay = 150;\n\n /** Delay before hiding tooltip (ms) */\n @Input() tooltipHideDelay = 0;\n\n private get hostElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n ngOnInit() {\n this.createTooltipElement();\n this.setupTriggerAttributes();\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.cleanup();\n }\n\n private createTooltipElement() {\n this.tooltipElement = this.renderer.createElement('span');\n\n if (!this.tooltipElement) return;\n\n this.renderer.setAttribute(this.tooltipElement, 'id', this.tooltipId);\n this.renderer.setAttribute(this.tooltipElement, 'role', 'tooltip');\n this.renderer.setAttribute(this.tooltipElement, 'popover', 'manual');\n this.renderer.addClass(this.tooltipElement, 'ds-tooltip');\n this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n // Set initial content\n this.tooltipElement.textContent = this.hviTooltip;\n\n // Append to body to avoid overflow issues\n this.renderer.appendChild(document.body, this.tooltipElement);\n }\n\n private setupTriggerAttributes() {\n const host = this.hostElement;\n\n // Set popovertarget attributes\n this.renderer.setAttribute(host, 'popovertarget', this.tooltipId);\n this.renderer.setAttribute(host, 'popovertargetaction', 'show');\n\n // Determine ARIA attribute type\n const ariaType = this.tooltipType ?? this.detectAriaType();\n\n if (ariaType === 'labelledby') {\n this.renderer.setAttribute(host, 'aria-labelledby', this.tooltipId);\n } else {\n this.renderer.setAttribute(host, 'aria-describedby', this.tooltipId);\n }\n }\n\n private detectAriaType(): 'describedby' | 'labelledby' {\n const host = this.hostElement;\n const hasText = host.textContent?.trim();\n const hasAriaLabel = host.hasAttribute('aria-label');\n\n // If element has no visible text and no aria-label, use labelledby\n if (!hasText && !hasAriaLabel) {\n return 'labelledby';\n }\n\n return 'describedby';\n }\n\n private setupEventListeners() {\n const host = this.hostElement;\n\n // Mouse events\n this.listeners.push(\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\n this.renderer.listen(host, 'mouseleave', () => this.scheduleHide()),\n\n // Focus events\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\n this.renderer.listen(host, 'focusout', () => this.scheduleHide()),\n\n // Keyboard events\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isOpen) {\n this.hide();\n }\n }),\n );\n\n // Global escape handler\n this.listeners.push(\n this.renderer.listen('document', 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isOpen) {\n this.hide();\n }\n }),\n );\n }\n\n private scheduleShow() {\n this.clearTimeouts();\n\n if (this.tooltipShowDelay > 0) {\n this.showTimeout = setTimeout(() => this.show(), this.tooltipShowDelay);\n } else {\n this.show();\n }\n }\n\n private scheduleHide() {\n this.clearTimeouts();\n\n if (this.tooltipHideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.tooltipHideDelay);\n } else {\n this.hide();\n }\n }\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private show() {\n if (!this.tooltipElement || this.isOpen) return;\n\n // Update content in case it changed\n this.tooltipElement.textContent = this.hviTooltip;\n\n // Show the popover\n this.tooltipElement.showPopover?.();\n this.isOpen = true;\n\n // Position and show\n this.updatePosition();\n this.startAutoUpdate();\n\n // Fade in\n requestAnimationFrame(() => {\n if (this.tooltipElement) {\n this.renderer.setStyle(this.tooltipElement, 'opacity', '1');\n }\n });\n }\n\n private hide() {\n if (!this.tooltipElement || !this.isOpen) return;\n\n // Fade out\n this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n // Hide after transition\n setTimeout(() => {\n this.tooltipElement?.hidePopover?.();\n this.isOpen = false;\n this.stopAutoUpdate();\n }, 150); // Match CSS transition duration\n }\n\n private updatePosition() {\n const trigger = this.hostElement;\n const tooltip = this.tooltipElement;\n\n if (!trigger || !tooltip) return;\n\n computePosition(trigger, tooltip, {\n placement: this.tooltipPlacement,\n strategy: 'fixed',\n middleware: [\n offset(8), // Arrow size + small gap\n ...(this.tooltipAutoPlacement ? [flip(), shift({ padding: 8 })] : []),\n tooltipArrowPlugin,\n ],\n }).then(({ x, y }) => {\n if (this.tooltipElement) {\n this.renderer.setStyle(this.tooltipElement, 'translate', `${x}px ${y}px`);\n }\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.hostElement;\n const tooltip = this.tooltipElement;\n\n if (!trigger || !tooltip) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, tooltip, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n private cleanup() {\n this.clearTimeouts();\n this.stopAutoUpdate();\n\n // Remove event listeners\n this.listeners.forEach((unlisten) => unlisten());\n this.listeners = [];\n\n // Remove tooltip element\n if (this.tooltipElement) {\n this.tooltipElement.hidePopover?.();\n this.tooltipElement.remove();\n this.tooltipElement = null;\n }\n }\n}\n","/*\n * Public API Surface of hviktor\n */\n\nexport * from './alert';\nexport * from './avatar';\nexport * from './badge';\nexport * from './breadcrumbs';\nexport * from './button';\nexport * from './card';\nexport * from './chip';\nexport * from './details';\nexport * from './dialog';\nexport * from './divider';\nexport * from './forms';\nexport * from './heading';\nexport * from './icon';\nexport * from './label';\nexport * from './link';\nexport * from './list';\nexport * from './pagination';\nexport * from './paragraph';\nexport * from './popover';\nexport * from './search';\nexport * from './select';\nexport * from './skeleton';\nexport * from './skip-link';\nexport * from './spinner';\nexport * from './table';\nexport * from './tabs';\nexport * from './tag';\nexport * from './toggle-group';\nexport * from './tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ERROR_PRIORITY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helsevestikt-hviktor-angular.mjs","sources":["../../../projects/hviktor/src/alert/alert.component.ts","../../../projects/hviktor/src/avatar/avatar.component.ts","../../../projects/hviktor/src/avatar-stack/avatar-stack.directive.ts","../../../projects/hviktor/src/badge/badge-position.component.ts","../../../projects/hviktor/src/badge/badge.component.ts","../../../projects/hviktor/src/breadcrumbs/breadcrumbs.component.ts","../../../projects/hviktor/src/button/button.directive.ts","../../../projects/hviktor/src/card/card-block.directive.ts","../../../projects/hviktor/src/card/card.component.ts","../../../projects/hviktor/src/chip/chip-button.directive.ts","../../../projects/hviktor/src/chip/chip-label.directive.ts","../../../projects/hviktor/src/details/details-content.component.ts","../../../projects/hviktor/src/details/details-summary.component.ts","../../../projects/hviktor/src/details/details.component.ts","../../../projects/hviktor/src/dialog/dialog-block.directive.ts","../../../projects/hviktor/src/dialog/dialog.directive.ts","../../../projects/hviktor/src/divider/divider.directive.ts","../../../projects/hviktor/src/dropdown/dropdown.component.ts","../../../projects/hviktor/src/forms/form/form.directive.ts","../../../projects/hviktor/src/forms/error-summary/error-summary.component.ts","../../../projects/hviktor/src/helpers/field-observer.ts","../../../projects/hviktor/src/forms/field/field-affix.component.ts","../../../projects/hviktor/src/forms/field/field-affixes.component.ts","../../../projects/hviktor/src/forms/field/field-counter.component.ts","../../../projects/hviktor/src/forms/field/field-description.directive.ts","../../../projects/hviktor/src/forms/field/field-optional.directive.ts","../../../projects/hviktor/src/forms/field/field-validation.directive.ts","../../../projects/hviktor/src/forms/field/field.component.ts","../../../projects/hviktor/src/forms/fieldset/fieldset.directive.ts","../../../projects/hviktor/src/forms/input/input.directive.ts","../../../projects/hviktor/src/forms/validation/control-invalid/control-invalid.directive.ts","../../../projects/hviktor/src/forms/validation/validation-message/validation-message.directive.ts","../../../projects/hviktor/src/forms/validators/validator-bundle.ts","../../../projects/hviktor/src/forms/validators/validators.ts","../../../projects/hviktor/src/forms/kits.ts","../../../projects/hviktor/src/heading/heading.directive.ts","../../../projects/hviktor/src/icon/icon.component.ts","../../../projects/hviktor/src/label/label.directive.ts","../../../projects/hviktor/src/link/link.directive.ts","../../../projects/hviktor/src/list/list.directive.ts","../../../projects/hviktor/src/logo/logos/logo-dots.ts","../../../projects/hviktor/src/logo/logo-shared.ts","../../../projects/hviktor/src/logo/logos/logo-hbe.ts","../../../projects/hviktor/src/logo/logos/logo-hbe-hus.ts","../../../projects/hviktor/src/logo/logos/logo-hfd.ts","../../../projects/hviktor/src/logo/logos/logo-hfo.ts","../../../projects/hviktor/src/logo/logos/logo-hst.ts","../../../projects/hviktor/src/logo/logos/logo-hst-sus.ts","../../../projects/hviktor/src/logo/logos/logo-hve.ts","../../../projects/hviktor/src/logo/logos/logo-hvikt.ts","../../../projects/hviktor/src/logo/logos/logo-sav.ts","../../../projects/hviktor/src/logo/logo-paths.ts","../../../projects/hviktor/src/logo/logo.component.ts","../../../projects/hviktor/src/pagination/pagination.component.ts","../../../projects/hviktor/src/paragraph/paragraph.directive.ts","../../../projects/hviktor/src/popover/popover.component.ts","../../../projects/hviktor/src/tag/tag.component.ts","../../../projects/hviktor/src/required-tag/required-tag.component.ts","../../../projects/hviktor/src/search/search-clear.directive.ts","../../../projects/hviktor/src/search/search.component.ts","../../../projects/hviktor/src/select/select.directive.ts","../../../projects/hviktor/src/skeleton/skeleton.component.ts","../../../projects/hviktor/src/skip-link/skip-link.directive.ts","../../../projects/hviktor/src/spinner/spinner.component.ts","../../../projects/hviktor/src/table/table.directive.ts","../../../projects/hviktor/src/table/table-sort.directive.ts","../../../projects/hviktor/src/tabs/tab-panel.component.ts","../../../projects/hviktor/src/tabs/tab.component.ts","../../../projects/hviktor/src/tabs/tabs.component.ts","../../../projects/hviktor/src/textfield/textfield.component.ts","../../../projects/hviktor/src/toggle-group/toggle-group.component.ts","../../../projects/hviktor/src/toggle-group/toggle-group-item.directive.ts","../../../projects/hviktor/src/tooltip/tooltip.directive.ts","../../../projects/hviktor/src/public-api.ts","../../../projects/hviktor/src/helsevestikt-hviktor-angular.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n/**\n * Alert provides users with information that is especially important for them to see and understand.\n * The component is designed to capture users' attention.\n * The text in the alert should be short and clear.\n *\n * @example\n * ```html\n * <hvi-alert color=\"warning\">\n * Dette er et advarselsvarsel!\n * </hvi-alert>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/alert/code/\n */\n@Component({\n selector: 'hvi-alert',\n standalone: true,\n template: `<ng-content />`,\n host: {\n class: 'ds-alert',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviAlert {\n /** Sets the type of alert by changing the color and */\n @Input() color?: 'info' | 'success' | 'warning' | 'danger';\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Avatar displays an image, initials, or icon for a person, entity, or profile.\n *\n * @example\n * ```html\n * <hvi-avatar\n * ariaLabel=\"Ola Nordmann\"\n * variant=\"circle\"\n * initials=\"ON\"\n * size=\"md\"\n * color=\"brand1\">\n * </hvi-avatar>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/avatar/code/\n */\n@Component({\n selector: 'hvi-avatar',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-avatar',\n role: 'img',\n '[attr.aria-label]': 'ariaLabel ?? null',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-initials]': 'initials ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviAvatar {\n /** The name of the person the avatar represents */\n @Input() ariaLabel?: string;\n\n /** The shape of the avatar */\n @Input() variant?: 'circle' | 'square';\n\n /** Initials displayed inside the avatar */\n @Input() initials?: string;\n\n /** The size of the avatar */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg';\n\n /** The color theme of the avatar */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * @summary\n * AvatarStack stabler en samling Avatar elementer\n *\n * @example\n * ```html\n * <hvi-avatar-stack></hvi-avatar-stack>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/avatar-stack/code}\n */\n\n@Directive({\n selector: 'figure[hviAvatarStack]',\n standalone: true,\n host: {\n class: 'ds-avatar-stack',\n '[attr.data-variant]': 'variant',\n '[attr.data-expandable]': 'expandable',\n '[attr.data-suffix]': 'suffix',\n '[attr.data-avatar-stack-gap]': 'gap',\n },\n})\nexport class HviAvatarStack {\n /** variant */\n @Input() variant?: 'square' | 'circle';\n\n /** Plassering av popover relativt til trigger */\n\n @Input() expandable?: 'true' | 'fixed';\n\n @Input() suffix?: string;\n\n @Input() gap?: string;\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge-position',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge--position',\n '[attr.data-overlap]': 'overlap',\n '[attr.data-placement]': 'placement',\n },\n})\nexport class HviBadgePosition {\n /** Overlap of the badge */\n @Input() overlap: 'rectangle' | 'circle' = 'rectangle';\n\n /** Placement of the badge */\n @Input() placement: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'hvi-badge',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-badge',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-count]': 'count ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviBadge {\n /** The variants of the badge */\n @Input() variant?: 'base' | 'tinted';\n\n /** count text of the badge*/\n @Input() count?: string;\n\n /** The color theme of the badge */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import { Component, Input } from '@angular/core';\n\nexport interface BreadcrumbItem {\n label: string;\n href: string;\n ariaLabel?: string;\n}\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <nav hviBreadcrumbs\n * ariaLabel=\"Du er her:\"\n * [backLink]=\"{\n * label: 'Nivå 3',\n * href: '#',\n * ariaLabel: 'Tilbake til Nivå 3'\n * }\"\n * [items]=\"[\n * { label: 'Nivå 1', href: '#' },\n * { label: 'Nivå 2', href: '#' },\n * { label: 'Nivå 3', href: '#' },\n * { label: 'Nivå 4', href: '#' }\n * ]\"\n * ></nav>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/breadcrumbs/overview\n */\n\n@Component({\n selector: 'nav[hviBreadcrumbs]',\n standalone: true,\n template: `\n <!-- Back link (optional) -->\n @if (backLink) {\n <a class=\"ds-link\" [href]=\"backLink.href\" [attr.aria-label]=\"backLink.ariaLabel ?? null\">\n {{ backLink.label }}\n </a>\n }\n\n <ol>\n @for (item of items; let last = $last; track item) {\n <li>\n <a\n class=\"ds-link\"\n [href]=\"item.href\"\n [attr.aria-label]=\"item.ariaLabel ?? null\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n {{ item.label }}\n </a>\n </li>\n }\n </ol>\n `,\n host: {\n class: 'ds-breadcrumbs',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel ?? null',\n },\n})\nexport class HviBreadcrumbs {\n /** Accessible label for the breadcrumb navigation */\n @Input() ariaLabel = 'Du er her:';\n\n /** Optional back link object */\n @Input() backLink?: {\n label: string;\n href: string;\n ariaLabel?: string;\n };\n\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n/**\n * @summary\n * Button allows users to perform actions.\n *\n * @example\n * ```html\n * <button hviButton color=\"brand1\" variant=\"primary\" size=\"md\">\n * Click me\n * </button>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/button/code/\n */\n@Directive({\n selector: 'button[hviButton], a[hviButton]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.type]': 'type',\n '[attr.data-size]': 'size',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[attr.data-fullwidth]': 'fullWidth ? \"\" : null',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.aria-busy]': 'loading ? \"true\" : null',\n },\n})\nexport class HviButton {\n /** The size of the button */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** Used to change the appearance of the button. */\n @Input() variant?: 'primary' | 'secondary' | 'tertiary';\n\n /** The type of button */\n @Input() type?: 'button' | 'submit' | 'reset';\n\n /** The color of the button */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral' | 'danger';\n\n /** If you have only an icon in the button, you can set icon=\"true\" to make it square.\n * If you have other content, such as text, the button will automatically have space around the icon.\n */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Sets the button in a loading state.\n * Loading indicators such as spinners must be added manually, e.g., with hvi-spinner\n */\n @Input({ transform: booleanAttribute }) loading = false;\n\n /** Makes the button full width */\n @Input({ transform: booleanAttribute }) fullWidth = false;\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Use multiple <div hviCardBlock> elements if you want to divide the card with separators or add images or video that extend to the edge.\n * Note that when you use <div hviCardBlock>, all content must be placed inside a <div hviCardBlock> and not directly in the Card.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <div hviCardBlock>\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </div>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/code#with-sections\n */\n@Directive({\n selector: '[hviCardBlock]',\n standalone: true,\n host: { class: 'ds-card__block' },\n})\nexport class HviCardBlock {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Card highlight information or tasks that are related.\n * The component comes in two variants and can contain text, images, text fields, buttons, and links.\n *\n * @example\n * ```html\n * <hvi-card variant=\"tinted\" color=\"brand1\" maxWidth=\"400px\">\n * <h2>This is a card</h2>\n * <p>The content of the card goes here.</p>\n * </hvi-card>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/card/overview\n */\n@Component({\n selector: 'hvi-card',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-card',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n '[style.max-width]': 'maxWidth',\n },\n})\nexport class HviCard {\n /** Sets the background of the card */\n @Input() variant?: 'default' | 'tinted';\n\n /** The color theme of the card */\n @Input() color?: 'accent' | 'brand1' | 'brand2' | 'brand3' | 'neutral';\n\n /** Maximum width of the card, for example '320px' or '20rem' */\n @Input() maxWidth?: string;\n}\n","import { booleanAttribute, Directive, Input } from '@angular/core';\n\n@Directive({\n selector: 'button[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n '[attr.data-removable]': 'removable ? \"true\" : null',\n },\n})\nexport class HviChipButton {\n /** Whether the chip is removable*/\n @Input({ transform: booleanAttribute }) removable = false;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'label[hviChip]',\n standalone: true,\n host: {\n class: 'ds-chip',\n },\n})\nexport class HviChipLabel {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-content',\n template: `<ng-content />`,\n})\nexport class HviDetailsContent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'hvi-details-summary',\n template: `<ng-content />`,\n})\nexport class HviDetailsSummary {}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport '@u-elements/u-details';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hvi-details>\n * <hvi-details-summary>\n * <p size=\"md\">Detaljer</p>\n * </hvi-details-summary>\n * <hvi-details-content>\n * <p>Her er innholdet i detaljene.</p>\n * </hvi-details-content>\n * </hvi-details>\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/details/overview\n */\n\n@Component({\n selector: 'hvi-details',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n template: ` <u-details\n #detailsRef\n class=\"ds-details\"\n [attr.data-variant]=\"variant\"\n [attr.defaultOpen]=\"defaultOpen || undefined\"\n [attr.open]=\"open || undefined\"\n (toggle)=\"onToggle($event)\"\n >\n <u-summary>\n <ng-content select=\"hvi-details-summary\" />\n </u-summary>\n <div>\n <ng-content select=\"hvi-details-content\" />\n </div>\n </u-details>`,\n host: {},\n})\nexport class HviDetails {\n /** Variant of the details component */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Control open state of the details component */\n @Input() open: true | false = false;\n\n /** Set default open state of the details component */\n @Input() defaultOpen: true | false = false;\n\n /** Event handler for toggle event */\n @Input() onToggle: (event: Event) => void = () => {};\n\n handleToggle(event: Event) {\n console.log('Toggled!', event);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviDialogBlock]',\n standalone: true,\n host: {\n class: 'ds-dialog__block',\n },\n})\nexport class HviDialogBlock {}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n} from '@angular/core';\n\n/**\n * @summary\n * Dialog allows you to create both modal and non-modal dialogs based on the HTML dialog element.\n * You have to connect the <dialog> element to a trigger yourself, and handle opening and closing the dialog with JavaScript.\n *\n * @example\n * HTML:\n * ```html\n * <dialog hviDialog [id]=\"exampleDialog\" [open]=\"dialogOpen()\" (openChange)=\"toggleDialog($event)\">\n * <h3 hviHeading size=\"md\">Example dialog</h3>\n * <p hviParagraph>This is an example of a dialog component.</p>\n * <button hviButton variant=\"primary\" (click)=\"closeDialog()\">Close dialog</button>\n * </dialog>\n * ```\n *\n * TypeScript:\n * ```ts\n * export class DialogExampleComponent {\n * readonly dialogOpen = signal(false);\n * toggleDialog(nextState?: boolean): void {\n * if (typeof nextState === 'boolean') {\n * this.dialogOpen.set(nextState);\n * return;\n * }\n * this.dialogOpen.update((current) => !current);\n * }\n * }\n *\n * Documentation: https://designsystemet.no/en/components/docs/dialog/code/\n */\n@Directive({\n selector: 'dialog[hviDialog]',\n standalone: true,\n host: {\n class: 'ds-dialog',\n id: '{{ id }}',\n },\n})\nexport class HviDialog {\n @Input() id?: string;\n @Input()\n set open(value: boolean) {\n this.setOpen(Boolean(value));\n }\n\n get open(): boolean {\n return this.element.open;\n }\n\n @Input() modal = true;\n\n @Output() readonly openChange = new EventEmitter<boolean>();\n\n private readonly element = inject(ElementRef<HTMLDialogElement>).nativeElement;\n\n openModal(): void {\n this.setOpen(true);\n }\n\n close(): void {\n this.setOpen(false);\n }\n\n @HostListener('close')\n handleClose(): void {\n this.openChange.emit(false);\n }\n\n @HostListener('cancel', ['$event'])\n handleCancel(event: Event): void {\n event.preventDefault();\n this.setOpen(false);\n }\n\n private setOpen(shouldOpen: boolean): void {\n if (shouldOpen) {\n if (this.element.open) {\n return;\n }\n\n if (this.modal) {\n this.element.showModal();\n } else {\n this.element.show();\n }\n\n this.openChange.emit(true);\n return;\n }\n\n if (!this.element.open) {\n return;\n }\n\n this.element.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <hr hviDivider />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/divider/overview\n */\n\n@Directive({\n selector: 'hr[hviDivider]',\n standalone: true,\n host: {\n class: 'ds-divider',\n 'aria-hidden': 'true',\n },\n})\nexport class HviDivider {}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { autoUpdate, computePosition, flip, offset, shift, type Placement } from '@floating-ui/dom';\n\n/**\n * @summary\n * Dropdown er en generisk nedtrekksliste. Den legger grunnmuren for å bygge menyer og lister..\n *\n * @example\n * ```html\n * <button hviButton popovertarget=\"myDropdown\">Åpne dropdown</button\n * <hvi-dropdown id=\"myDropdown\" popover>\n * <ul>\n * <li>\n * <button hviButton variant=\"tertiary\">Menylenke</button>\n * </li>\n * <li>\n * <button hviButton variant=\"tertiary\">Menylenke</button>\n * </li>\n * </ul>\n * </hvi-dropdown>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/dropdown/code}\n */\n\n@Component({\n selector: 'hvi-dropdown',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-popover ds-dropdown',\n '[attr.data-id]': 'id',\n '[attr.data-variant]': 'variant',\n },\n})\nexport class HviDropdown implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private cleanupAutoUpdate?: () => void;\n private boundHandleClick?: (event: MouseEvent) => void;\n private boundHandleKeydown?: (event: KeyboardEvent) => void;\n\n /**ID to target the popover */\n @Input() id?: string;\n\n /** variant */\n @Input() variant?: 'default' | 'tertiary';\n\n /** Plassering av popover relativt til trigger */\n @Input() dropdownPlacement: Placement = 'bottom-end';\n\n /** Aktiver automatisk repositjonering hvis det ikke er plass */\n @Input() autoPlacement = true;\n\n /** Event når popover åpnes */\n @Output() opened = new EventEmitter<void>();\n\n /** Event når popover lukkes */\n @Output() closed = new EventEmitter<void>();\n\n private get dropdownElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get triggerElement(): HTMLElement | null {\n const id = this.dropdownElement.id;\n return id ? document.querySelector(`[popovertarget=\"${id}\"]`) : null;\n }\n\n ngOnInit() {\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.stopAutoUpdate();\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const dropdown = this.dropdownElement;\n\n // Click utenfor lukker popover\n this.boundHandleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[popovertarget=\"${dropdown.id}\"]`);\n const isOutside = !isTrigger && !dropdown.contains(el as Node);\n\n if (isTrigger) {\n event.preventDefault();\n dropdown.togglePopover?.();\n }\n if (isOutside && dropdown.matches(':popover-open')) {\n dropdown.togglePopover?.();\n }\n };\n\n // Escape lukker popover\n this.boundHandleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !dropdown.matches(':popover-open')) return;\n event.preventDefault();\n dropdown.togglePopover?.();\n };\n\n addEventListener('click', this.boundHandleClick);\n addEventListener('keydown', this.boundHandleKeydown);\n\n // Toggle events\n dropdown.addEventListener('beforetoggle', this.handleBeforeToggle);\n dropdown.addEventListener('toggle', this.handleToggle);\n }\n\n private removeEventListeners() {\n if (this.boundHandleClick) {\n removeEventListener('click', this.boundHandleClick);\n }\n if (this.boundHandleKeydown) {\n removeEventListener('keydown', this.boundHandleKeydown);\n }\n this.dropdownElement.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.dropdownElement.removeEventListener('toggle', this.handleToggle);\n }\n\n private handleBeforeToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.updatePosition();\n }\n };\n\n private handleToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.startAutoUpdate();\n this.opened.emit();\n } else {\n this.stopAutoUpdate();\n this.closed.emit();\n }\n };\n\n private updatePosition() {\n const trigger = this.triggerElement;\n const dropdown = this.dropdownElement;\n\n if (!trigger || !dropdown) return;\n\n computePosition(trigger, dropdown, {\n placement: this.dropdownPlacement,\n strategy: 'fixed',\n middleware: [\n offset((data) => {\n const styles = getComputedStyle(data.elements.floating, '::before');\n return parseFloat(styles.height) || 12;\n }),\n ...(this.autoPlacement ? [flip({ fallbackAxisSideDirection: 'start' }), shift()] : []),\n ],\n }).then(({ x, y }) => {\n dropdown.style.translate = `${x}px ${y}px`;\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.triggerElement;\n const popover = this.dropdownElement;\n\n if (!trigger || !popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, popover, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n}\n","import { Directive, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n/**\n * @summary\n * Adds submit handling for Angular reactive forms:\n * - Tracks submitted state\n * - Marks all controls as touched on submit\n * - Optionally focuses an ErrorSummary when invalid\n *\n * @example\n * ```html\n * <[hviForm]></[hviForm]>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/form/code\n */\n\n@Directive({\n selector: 'form[hviForm]',\n standalone: true,\n})\nexport class HviForm {\n /** Emits when the form has been submitted */\n @Output() hviSubmitted = new EventEmitter<void>();\n\n /** True after first submit attempt */\n submitted = false;\n\n /** Optional focus target (e.g. HviErrorSummaryComponent) */\n @Input() focusOnInvalid?: { focus?: () => void } | null;\n\n // Optional injection: present when the form uses [formGroup] and ReactiveFormsModule is in scope\n private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event): void {\n this.submitted = true;\n this.hviSubmitted.emit();\n\n const form = this.formGroupDir?.form;\n if (!form) return;\n\n form.markAllAsTouched();\n\n if (form.invalid) {\n event.preventDefault();\n queueMicrotask(() => this.focusOnInvalid?.focus?.());\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { HviForm } from '../form/form.directive';\nimport type { HviValidationMessages } from '../validation/validation-message';\n\n/**\n * Item model used by manual error summaries. Provide `message` and `href` for each invalid field.\n */\nexport type HviErrorSummaryItem = {\n /** Text shown in the list */\n message: string;\n /** Link target (should be \"#<field-id>\") */\n href: string;\n};\n\nexport type HviErrorSummaryMessages = Record<string, HviValidationMessages>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\nlet errorSummaryIdCounter = 0;\nconst nextErrorSummaryHeadingId = () => `hvi-error-summary-heading-${++errorSummaryIdCounter}`;\n\n/**\n * @summary\n * ErrorSummary lists blocking validation errors so users can quickly find and fix them.\n *\n * @remarks\n * Modes:\n * - Manual: provide `[errors]` as `{ message, href }[]`.\n * - Auto (recommended): provide `[form]` + `[messages]` (and optionally `[idMap]`) to derive errors from invalid\n * controls in a reactive form.\n *\n * Auto mode should be rendered inside `<form hviForm ...>` so it can follow submit visibility (`showWhen`) and\n * be focused automatically via `[focusOnInvalid]`.\n *\n * Each item link must point to a field id (e.g. `href=\"#firstName\"`). Prefer `id === formControlName`.\n *\n * @example\n * Manual mode:\n * ```html\n * <hvi-error-summary\n * [errors]=\"[\n * { message: 'Fornavn må være minst 2 tegn', href: '#firstName' },\n * { message: 'Telefonnummer kan kun inneholde siffer', href: '#phone' }\n * ]\"\n * />\n * ```\n *\n * @example\n * Auto mode (HTML + TS):\n *\n * ```html\n * HTML:\n * <form hviForm [formGroup]=\"form\" [focusOnInvalid]=\"summary\">\n * <hvi-error-summary #summary [form]=\"form\" [messages]=\"messages\" showWhen=\"submitted\" />\n *\n * <hvi-field>\n * <label hviLabel for=\"firstName\" weight=\"medium\">Fornavn</label>\n * <input hviInput id=\"firstName\" formControlName=\"firstName\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"firstName\" [messages]=\"messages.firstName\"></p>\n * </hvi-field>\n *\n * <hvi-field>\n * <label hviLabel for=\"phone\" weight=\"medium\">Telefon</label>\n * <input hviInput id=\"phone\" type=\"tel\" formControlName=\"phone\" hviControlInvalid />\n * <p hviFieldValidation hviValidationMessage=\"phone\" [messages]=\"messages.phone\"></p>\n * </hvi-field>\n *\n * <button hviButton type=\"submit\" variant=\"primary\">Send inn</button>\n * </form>\n * ```\n *\n * ```ts\n * TS:\n * form = new FormGroup({\n * firstName: new FormControl('', [Validators.required, Validators.minLength(2)]),\n * phone: new FormControl('', [Validators.required, Validators.pattern(/^\\d+$/)]),\n * });\n *\n * messages = {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' },\n * } as const;\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/error-summary/code\n */\n@Component({\n selector: 'hvi-error-summary',\n standalone: true,\n template: `\n <div\n #container\n class=\"ds-error-summary\"\n tabindex=\"-1\"\n [attr.aria-labelledby]=\"headingId\"\n [hidden]=\"!shouldShow\"\n >\n @switch (headingLevel) {\n @case (1) {\n <h1 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h1>\n }\n @case (2) {\n <h2 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h2>\n }\n @case (3) {\n <h3 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h3>\n }\n @case (4) {\n <h4 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h4>\n }\n @case (5) {\n <h5 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h5>\n }\n @default {\n <h6 class=\"ds-heading\" [id]=\"headingId\">{{ heading }}</h6>\n }\n }\n\n <ul class=\"ds-list\">\n @for (err of computedErrors; track err.href) {\n <li>\n <a\n class=\"ds-link\"\n data-color=\"neutral\"\n [href]=\"err.href\"\n (click)=\"onLinkClick($event, err.href)\"\n >{{ err.message }}</a\n >\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class HviErrorSummary {\n /** Heading text shown above the list */\n @Input() heading = 'For å gå videre må du rette opp følgende feil:';\n\n /** Heading level for the heading element (1-6). Defaults to 2 per DS */\n @Input() headingLevel: 1 | 2 | 3 | 4 | 5 | 6 = 2;\n\n /**\n * Manual mode: items displayed in the summary.\n * If non-empty, manual mode takes precedence over auto mode.\n */\n @Input() errors: HviErrorSummaryItem[] = [];\n\n /** Auto mode: reactive form to derive errors from */\n @Input() form?: FormGroup;\n\n /**\n * Auto mode: messages per controlName.\n * Example:\n * {\n * firstName: { required: 'Fornavn er påkrevd', minlength: 'Fornavn må være minst 2 tegn' },\n * phone: { required: 'Telefon er påkrevd', pattern: 'Telefonnummer kan kun inneholde siffer' }\n * }\n */\n @Input() messages?: HviErrorSummaryMessages;\n\n /**\n * Auto mode: map controlName -> element id.\n * Default is `id === controlName`.\n */\n @Input() idMap?: Record<string, string>;\n\n /** Auto mode: error key priority (first match wins) */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n /** Used for aria-labelledby on the container */\n @Input() headingId = nextErrorSummaryHeadingId();\n\n /** When to show errors from the form controls */\n @Input() showWhen: 'submitted' | 'touched' | 'always' = 'submitted';\n\n @ViewChild('container', { static: true }) private container?: ElementRef<HTMLElement>;\n\n focus(): void {\n this.container?.nativeElement.focus();\n }\n\n /**\n * Handles click on error links to prevent Angular Router navigation\n * and instead focus/scroll to the target element.\n */\n onLinkClick(event: MouseEvent, href: string): void {\n event.preventDefault();\n\n const id = href.startsWith('#') ? href.slice(1) : href;\n const target = document.getElementById(id);\n\n if (target) {\n target.focus();\n target.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n\n get computedErrors(): HviErrorSummaryItem[] {\n // 1) Manual mode wins\n if (this.errors?.length) return this.errors;\n\n // 2) Auto mode\n const form = this.form;\n const messages = this.messages;\n if (!form || !messages) return [];\n\n const items: HviErrorSummaryItem[] = [];\n\n for (const controlName of Object.keys(form.controls)) {\n const ctrl = form.controls[controlName];\n if (!ctrl?.invalid) continue;\n\n const errs = ctrl.errors ?? {};\n const msgMap = messages[controlName] ?? {};\n\n const message = this.pickMessage(errs, msgMap);\n if (!message) continue;\n\n const id = this.idMap?.[controlName] ?? controlName;\n items.push({ message, href: `#${id}` });\n }\n\n return items;\n }\n\n private pickMessage(errors: Record<string, unknown>, messages: HviValidationMessages): string {\n for (const key of this.errorPriority) {\n if (errors[key] && messages[key]) return messages[key]!;\n }\n for (const key of Object.keys(errors)) {\n if (messages[key]) return messages[key]!;\n }\n return Object.keys(errors).length ? 'Ugyldig verdi' : '';\n }\n\n private readonly hviForm = inject(HviForm, { optional: true });\n\n get shouldShow(): boolean {\n if (this.computedErrors.length === 0) return false;\n\n switch (this.showWhen) {\n case 'always':\n return true;\n\n case 'touched':\n // show when any invalid control is touched OR the form has been submitted\n return (this.hviForm?.submitted ?? false) || this.anyInvalidTouched();\n\n case 'submitted':\n default:\n return this.hviForm?.submitted ?? false;\n }\n }\n\n private anyInvalidTouched(): boolean {\n const form = this.form;\n if (!form) return false;\n\n for (const name of Object.keys(form.controls)) {\n const c = form.controls[name];\n if (c?.invalid && c.touched) return true;\n }\n return false;\n }\n}\n","// Copied from https://github.com/digdir/designsystemet/blob/main/packages/react/src/components/field/field-observer.ts\n\nexport function fieldObserver(fieldElement: HTMLElement | null) {\n if (!fieldElement) return;\n\n const elements = new Map<Element, string | null>();\n const typeCounter = new Map<string, number>(); // Track count for each data-field type\n const uuid = `:${Date.now().toString(36)}${Math.random().toString(36).slice(2, 5)}`;\n let input: Element | null = null;\n let describedby = '';\n\n const process = (mutations: Partial<MutationRecord>[]) => {\n const changed: Node[] = [];\n const removed: Node[] = [];\n\n // Merge MutationRecords\n for (const mutation of mutations) {\n if (mutation.attributeName) changed.push(mutation.target ?? fieldElement);\n changed.push(...(mutation.addedNodes || []));\n removed.push(...(mutation.removedNodes || []));\n }\n\n // Register elements\n for (const el of changed) {\n if (!isElement(el)) continue;\n\n if (isLabel(el)) elements.set(el, el.htmlFor);\n else if (el.hasAttribute('data-field')) elements.set(el, el.id);\n else if (isInputLike(el) && !el.hidden) {\n input = el;\n describedby = el.getAttribute('aria-describedby') || '';\n }\n }\n\n // Reset removed elements\n for (const el of removed) {\n if (!isElement(el)) continue;\n\n if (input === el) input = null;\n if (elements.has(el)) {\n setAttr(el, isLabel(el) ? 'for' : 'id', elements.get(el));\n elements.delete(el);\n }\n }\n\n // Connect elements\n const describedbyIds = describedby ? describedby.split(' ') : []; // Keep original aria-describedby\n const inputId = input?.id || uuid;\n\n // Reset type counters since we reprocess all elements\n typeCounter.clear();\n\n for (const [el, value] of elements) {\n const descriptionType = el.getAttribute('data-field');\n let id: string;\n\n if (descriptionType) {\n // Increment type counter for this type\n const count = (typeCounter.get(descriptionType) || 0) + 1;\n typeCounter.set(descriptionType, count);\n id = `${inputId}:${descriptionType}:${count}`;\n } else {\n id = inputId;\n }\n\n if (!value) setAttr(el, isLabel(el) ? 'for' : 'id', id); // Ensure we have a value\n if (!describedbyIds.includes(el.id)) {\n if (descriptionType === 'validation')\n describedbyIds.unshift(el.id); // Validations to the front\n else if (descriptionType) describedbyIds.push(el.id); // Other descriptions to the back\n }\n }\n\n // Prune aria-describedby so it does not reference removed elements\n const prunedDescribedbyIds = describedbyIds.filter((id) => {\n if (!id) return false;\n if (id === inputId) return true;\n\n // Keep if it still exists anywhere in the document.\n // This preserves \"original aria-describedby\" entries that live outside the field subtree.\n return !!fieldElement.ownerDocument?.getElementById(id);\n });\n\n setAttr(input, 'id', inputId);\n setAttr(input, 'aria-describedby', prunedDescribedbyIds.join(' ').trim());\n };\n\n const observer = createOptimizedMutationObserver(process);\n observer.observe(fieldElement, {\n attributeFilter: ['id', 'for', 'aria-describedby'],\n attributes: true,\n childList: true,\n subtree: true,\n });\n\n process([{ addedNodes: fieldElement.querySelectorAll('*') }]); // Initial setup\n observer.takeRecords(); // Clear initial setup queue\n return () => observer.disconnect();\n}\n\n// Utilities\nexport const isElement = (node: Node) => node instanceof Element;\nexport const isLabel = (node: Node) => node instanceof HTMLLabelElement;\nexport const isInputLike = (node: unknown): node is HTMLInputElement =>\n node instanceof HTMLElement && 'validity' in node && !(node instanceof HTMLButtonElement); // Matches input, textarea, select and form accosiated custom elements\n\nconst setAttr = (el: Element | null, name: string, value?: string | null) =>\n value ? el?.setAttribute(name, value) : el?.removeAttribute(name);\n\n// Speed up MutationObserver by debouncing, clearing internal queue after changes and only running when page is visible\nfunction createOptimizedMutationObserver(callback: MutationCallback) {\n const queue: MutationRecord[] = [];\n const observer = new MutationObserver((mutations) => {\n if (!queue.length) requestAnimationFrame(process);\n queue.push(...mutations);\n });\n\n const process = () => {\n callback(queue, observer);\n queue.length = 0; // Reset queue\n observer.takeRecords(); // Clear queue due to DOM changes in callback\n };\n\n return observer;\n}\n","import { Component } from '@angular/core';\n\n/**\n * Decorative affix container displayed alongside a text input.\n *\n * @remarks\n * Used together with the `hvi-field-affixes` component to wrap leading and trailing adornments.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affix',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affix',\n '[aria-hidden]': 'true',\n },\n})\nexport class HviFieldAffix {}\n","import { Component } from '@angular/core';\n\n/**\n * Container for decorative affixes displayed alongside a text input.\n *\n * @remarks\n * Wraps leading and trailing adornments provided by `hvi-field-affix` components.\n *\n * @example\n * ```html\n * <hvi-field-affixes>\n * <hvi-field-affix>NOK</hvi-field-affix>\n * <input hviInput type=\"text\" placeholder=\"Amount\" />\n * <hvi-field-affix>per month</hvi-field-affix>\n * </hvi-field-affixes>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code#prefixsuffix\n */\n@Component({\n selector: 'hvi-field-affixes',\n template: `<ng-content />`,\n host: {\n class: 'ds-field-affixes',\n },\n})\nexport class HviFieldAffixes {}\n","import {\n AfterViewInit,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\n\n/**\n * Counter component that displays remaining/exceeded character count for a field.\n *\n * @remarks\n * Shows a visual counter and provides accessible announcements via aria-live.\n * Must be used inside a `hvi-field` component alongside a textarea or input.\n *\n * The component automatically finds and tracks the input/textarea in the same field,\n * so you only need to provide the `limit` property.\n *\n * @example\n * Simple usage (auto-tracking):\n * ```html\n * <hvi-field>\n * <label hviLabel for=\"description\" weight=\"medium\">Beskrivelse</label>\n * <textarea hviInput id=\"description\" rows=\"3\" maxlength=\"100\"></textarea>\n * <hvi-field-counter [limit]=\"100\" />\n * </hvi-field>\n * ```\n *\n * @example\n * Manual tracking (for custom scenarios):\n * ```html\n * <hvi-field>\n * <label hviLabel for=\"description\" weight=\"medium\">Beskrivelse</label>\n * <textarea hviInput id=\"description\" rows=\"3\" #textarea></textarea>\n * <hvi-field-counter [limit]=\"100\" [count]=\"textarea.value.length\" />\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/code\n */\n@Component({\n selector: 'hvi-field-counter',\n standalone: true,\n template: `\n <!-- Screen reader live region for dynamic updates -->\n <div class=\"ds-sr-only\" aria-live=\"polite\">{{ message() }}</div>\n\n <!-- Visible counter text -->\n <p class=\"ds-paragraph\" data-variant=\"default\" aria-hidden=\"true\">{{ message() }}</p>\n\n <!-- Screen reader hint (read when entering field) -->\n <div class=\"ds-sr-only\" aria-hidden=\"true\" data-field=\"description\">\n {{ formattedHint() }}\n </div>\n `,\n})\nexport class HviFieldCounter implements AfterViewInit {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Auto-tracked character count from the input/textarea in the same field */\n private readonly autoCount = signal(0);\n\n /**\n * Current character count. If not provided, the component will\n * automatically track the input/textarea in the same hvi-field.\n */\n count = input<number>();\n\n /** Maximum allowed characters */\n limit = input.required<number>();\n\n /** Label template when limit is exceeded. Use %d for the count. */\n over = input<string>('%d tegn for mye');\n\n /** Label template for remaining characters. Use %d for the count. */\n under = input<string>('%d tegn igjen');\n\n /** Hint text for screen readers about max characters. Use %d for the limit. */\n hint = input<string>('Maks %d tegn tillatt.');\n\n /** Effective count - uses manual count if provided, otherwise auto-tracked */\n private readonly effectiveCount = computed(() => this.count() ?? this.autoCount());\n\n /** Computed difference between limit and current count */\n remaining = computed(() => this.limit() - this.effectiveCount());\n\n /** Whether the limit has been exceeded */\n isOver = computed(() => this.remaining() < 0);\n\n /** The formatted message to display */\n message = computed(() => {\n const diff = Math.abs(this.remaining());\n const template = this.isOver() ? this.over() : this.under();\n return template.replace('%d', String(diff));\n });\n\n /** The formatted hint for screen readers */\n formattedHint = computed(() => this.hint().replace('%d', String(this.limit())));\n\n ngAfterViewInit(): void {\n // Only auto-track if count is not manually provided\n if (this.count() !== undefined) return;\n\n // Find the parent hvi-field\n const field = this.el.nativeElement.closest('.ds-field');\n if (!field) return;\n\n // Find input or textarea in the field\n const inputEl = field.querySelector('input, textarea') as\n | HTMLInputElement\n | HTMLTextAreaElement\n | null;\n if (!inputEl) return;\n\n // Set initial count\n this.autoCount.set(inputEl.value.length);\n\n // Listen for input events\n const onInput = () => this.autoCount.set(inputEl.value.length);\n inputEl.addEventListener('input', onInput);\n\n this.destroyRef.onDestroy(() => {\n inputEl.removeEventListener('input', onInput);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldDescription]',\n standalone: true,\n host: {\n 'data-field': 'description',\n },\n})\nexport class HviFieldDescription {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldOptional]',\n standalone: true,\n host: {\n 'data-field': 'optional',\n },\n})\nexport class HviFieldOptional {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[hviFieldValidation]',\n standalone: true,\n host: {\n class: 'ds-validation-message',\n 'data-field': 'validation',\n },\n})\nexport class HviFieldValidation {}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, Input } from '@angular/core';\nimport { fieldObserver } from '../../helpers/field-observer';\n\n/**\n * Field is a helper component to automatically associate a field with hviLabel, hviFieldDescription and hviFieldValidation.\n *\n * @example\n * ```html\n * <hvi-field>\n * <label hviLabel>Name</label>\n * <span hviFieldDescription>Fill in your full name.</span>\n * <input type=\"text\" />\n * <span hviFieldValidation>This field is required.</span>\n * </hvi-field>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/field/overview\n */\n@Component({\n selector: 'hvi-field',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-field',\n '[attr.data-position]': 'position ?? null',\n },\n})\nexport class HviField implements AfterViewInit {\n /** Position of toggle inputs (radio, checkbox, switch) in field */\n @Input() position?: 'start' | 'end';\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n ngAfterViewInit(): void {\n const stop = fieldObserver(this.el.nativeElement);\n this.destroyRef.onDestroy(() => stop?.());\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Fieldset is used to group and label fields that naturally belong together, such as date fields or address fields.\n * The component helps organize information, make forms more manageable, and improve accessibility for screen readers.\n *\n * @example\n * ```html\n * <fieldset hviFieldset>\n * <legend hviLabel>Which framework do you like best?</legend>\n * <p hviParagraph>Your choice will help us improve the service.</p>\n * <hvi-field>\n * <input type=\"radio\" id=\"angular\" name=\"framework\" value=\"angular\" />\n * <label hviLabel for=\"angular\">Angular</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"react\" name=\"framework\" value=\"react\" />\n * <label hviLabel for=\"react\">React</label>\n * </hvi-field>\n * <hvi-field>\n * <input type=\"radio\" id=\"vue\" name=\"framework\" value=\"vue\" />\n * <label hviLabel for=\"vue\">Vue</label>\n * </hvi-field>\n * </fieldset>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/fieldset/overview\n */\n@Directive({\n selector: 'fieldset[hviFieldset]',\n standalone: true,\n host: {\n class: 'ds-fieldset',\n },\n})\nexport class HviFieldset {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\ntype HviAriaRole = 'switch' | 'button' | 'checkbox' | 'radio' | 'textbox' | 'searchbox' | string;\n\n@Directive({\n selector: 'input[hviInput], textarea[hviInput]',\n standalone: true,\n host: {\n class: 'ds-input',\n '[attr.type]': 'type ?? null',\n '[attr.size]': 'size ?? null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.role]': 'role ?? null',\n },\n})\nexport class HviInput {\n /** Supported input types */\n @Input() type?:\n | 'number'\n | 'hidden'\n | 'color'\n | 'checkbox'\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'password'\n | 'radio'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week';\n\n /** Set size attribute on input element */\n @Input() size?: number;\n\n /** Set role, e.g. `switch` when `checkbox` or `radio` */\n @Input() role?: HviAriaRole;\n\n protected _disabled = false;\n protected _readOnly = false;\n\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @Input({ transform: booleanAttribute })\n set readonly(value: boolean) {\n this._readOnly = value;\n }\n\n private get isToggle(): boolean {\n return this.type === 'checkbox' || this.type === 'radio';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly && this.isToggle) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: Event): void {\n if (!this._readOnly || !this.isToggle) return;\n\n const keyboardEvent = event as KeyboardEvent;\n if (\n keyboardEvent.key === ' ' ||\n keyboardEvent.key === 'Spacebar' ||\n keyboardEvent.key === 'Enter'\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { HviForm } from '../../form';\n\n/**\n * @summary\n * Directive to set `aria-invalid` on form controls based on their validation state.\n *\n * Usage:\n * ```html\n * <input hviControlInvalid formControlName=\"email\" />\n * ```\n */\n\n@Directive({\n selector: '[hviControlInvalid]',\n standalone: true,\n})\nexport class HviControlInvalid {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n @HostBinding('attr.aria-invalid')\n get ariaInvalid(): string | null {\n const control = this.ngControl?.control;\n if (!control) return null;\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = control.invalid && (control.touched || submitted);\n\n return show ? 'true' : null;\n }\n}\n","import { Directive, Input, inject } from '@angular/core';\nimport { AbstractControl, ControlContainer } from '@angular/forms';\nimport { HviForm } from '../../form';\n\nexport type HviValidationMessages = Partial<Record<string, string>>;\n\nconst DEFAULT_ERROR_PRIORITY = [\n 'required',\n 'minlength',\n 'maxlength',\n 'email',\n 'pattern',\n 'min',\n 'max',\n] as const;\n\n@Directive({\n selector: '[hviValidationMessage]',\n standalone: true,\n host: {\n // Sett tekstinnhold direkte på elementet (typisk <p hviFieldValidation ...>)\n '[textContent]': 'message',\n // Skjul elementet når det ikke er noen feilmelding\n '[hidden]': '!message',\n },\n})\nexport class HviValidationMessage {\n /**\n * Control name in the nearest parent FormGroup (matches formControlName).\n * Example: hviValidationMessage=\"firstName\"\n */\n @Input('hviValidationMessage') controlName!: string;\n\n /**\n * Map errorKey -> message, e.g. { required: 'Påkrevd', minlength: 'Minst 2 tegn' }\n */\n @Input() messages: HviValidationMessages = {};\n\n /**\n * Optional error priority order. Defaults to a sensible order.\n */\n @Input() errorPriority: readonly string[] = DEFAULT_ERROR_PRIORITY;\n\n private readonly container = inject(ControlContainer, { optional: true });\n private readonly hviForm = inject(HviForm, { optional: true });\n\n private get control(): AbstractControl | null {\n const group = this.container?.control;\n if (!group || !this.controlName) return null;\n return group.get(this.controlName);\n }\n\n get message(): string {\n const ctrl = this.control;\n if (!ctrl) return '';\n\n const submitted = this.hviForm?.submitted ?? false;\n const show = ctrl.invalid && (ctrl.touched || submitted);\n if (!show) return '';\n\n const errors = ctrl.errors ?? {};\n\n // 1) Prioritized keys first\n for (const key of this.errorPriority) {\n if (errors[key] && this.messages[key]) return this.messages[key]!;\n }\n\n // 2) Any remaining mapped key\n for (const key of Object.keys(errors)) {\n if (this.messages[key]) return this.messages[key]!;\n }\n\n return 'Ugyldig verdi';\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport type { HviValidationMessages } from '../validation';\n\n/**\n * A bundle that pairs a validator function with its error key and message.\n * This enables defining validation rules and messages in one place.\n */\nexport interface HviValidatorBundle {\n /** The Angular validator function */\n validator: ValidatorFn;\n /** The error key (e.g., 'required', 'minlength') */\n key: string;\n /** The user-facing error message */\n message: string;\n}\n\n/**\n * Result of processing validator bundles - ready to use with FormControl and hviValidationMessage.\n */\nexport interface HviValidatorConfig {\n /** Array of validator functions to pass to FormControl */\n validators: ValidatorFn[];\n /** Messages object to pass to hviValidationMessage */\n messages: HviValidationMessages;\n}\n\n/**\n * Extracts validators and messages from an array of validator bundles.\n *\n * @example\n * ```ts\n * const config = hviValidators([\n * hviRequired('Fornavn er påkrevd'),\n * hviMinLength(2, 'Fornavn må være minst 2 tegn'),\n * ]);\n *\n * form = new FormGroup({\n * firstName: new FormControl('', config.validators),\n * });\n *\n * // In template: [messages]=\"config.messages\"\n * ```\n */\nexport function hviValidators(bundles: HviValidatorBundle[]): HviValidatorConfig {\n return {\n validators: bundles.map((b) => b.validator),\n messages: bundles.reduce(\n (acc, b) => ({ ...acc, [b.key]: b.message }),\n {} as HviValidationMessages,\n ),\n };\n}\n\n/**\n * Extracts only the validator functions from bundles.\n * Useful when you need just the validators for a FormControl.\n */\nexport function hviExtractValidators(bundles: HviValidatorBundle[]): ValidatorFn[] {\n return bundles.map((b) => b.validator);\n}\n\n/**\n * Extracts only the messages from bundles.\n * Useful when you need just the messages object.\n */\nexport function hviExtractMessages(bundles: HviValidatorBundle[]): HviValidationMessages {\n return bundles.reduce((acc, b) => ({ ...acc, [b.key]: b.message }), {} as HviValidationMessages);\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { HviValidatorBundle } from './validator-bundle';\n\n/**\n * Creates a required validator bundle.\n *\n * @example\n * ```ts\n * hviRequired('Dette feltet er påkrevd')\n * ```\n */\nexport function hviRequired(message: string): HviValidatorBundle {\n return { validator: Validators.required, key: 'required', message };\n}\n\n/**\n * Creates a requiredTrue validator bundle (for checkboxes that must be checked).\n *\n * @example\n * ```ts\n * hviRequiredTrue('Du må godta vilkårene')\n * ```\n */\nexport function hviRequiredTrue(message: string): HviValidatorBundle {\n return { validator: Validators.requiredTrue, key: 'required', message };\n}\n\n/**\n * Creates a minLength validator bundle.\n *\n * @example\n * ```ts\n * hviMinLength(2, 'Må være minst 2 tegn')\n * ```\n */\nexport function hviMinLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.minLength(length), key: 'minlength', message };\n}\n\n/**\n * Creates a maxLength validator bundle.\n *\n * @example\n * ```ts\n * hviMaxLength(100, 'Kan ikke være mer enn 100 tegn')\n * ```\n */\nexport function hviMaxLength(length: number, message: string): HviValidatorBundle {\n return { validator: Validators.maxLength(length), key: 'maxlength', message };\n}\n\n/**\n * Creates an email validator bundle.\n *\n * @example\n * ```ts\n * hviEmail('Ugyldig e-postadresse')\n * ```\n */\nexport function hviEmail(message: string): HviValidatorBundle {\n return { validator: Validators.email, key: 'email', message };\n}\n\n/**\n * Creates a pattern validator bundle.\n *\n * @example\n * ```ts\n * hviPattern(/^\\d+$/, 'Kan kun inneholde tall')\n * ```\n */\nexport function hviPattern(pattern: string | RegExp, message: string): HviValidatorBundle {\n return { validator: Validators.pattern(pattern), key: 'pattern', message };\n}\n\n/**\n * Creates a min value validator bundle.\n *\n * @example\n * ```ts\n * hviMin(0, 'Må være minst 0')\n * ```\n */\nexport function hviMin(min: number, message: string): HviValidatorBundle {\n return { validator: Validators.min(min), key: 'min', message };\n}\n\n/**\n * Creates a max value validator bundle.\n *\n * @example\n * ```ts\n * hviMax(100, 'Kan ikke være mer enn 100')\n * ```\n */\nexport function hviMax(max: number, message: string): HviValidatorBundle {\n return { validator: Validators.max(max), key: 'max', message };\n}\n\n/**\n * Creates a custom validator bundle with a specified error key.\n * Use this for custom validators or validators not covered by the built-in functions.\n *\n * @example\n * ```ts\n * // Custom validator that checks if value matches a specific format\n * const norwegianPhoneValidator: ValidatorFn = (control) => {\n * const valid = /^(\\+47)?\\d{8}$/.test(control.value);\n * return valid ? null : { norwegianPhone: true };\n * };\n *\n * hviCustom('norwegianPhone', norwegianPhoneValidator, 'Ugyldig norsk telefonnummer')\n * ```\n */\nexport function hviCustom(\n key: string,\n validator: ValidatorFn,\n message: string,\n): HviValidatorBundle {\n return { validator, key, message };\n}\n\n/**\n * Creates a nullValidator bundle (always valid, useful for conditional validation).\n * Note: This validator always passes, so the message will never be shown.\n */\nexport function hviNullValidator(): HviValidatorBundle {\n return { validator: Validators.nullValidator, key: 'null', message: '' };\n}\n","import { ReactiveFormsModule } from '@angular/forms';\n\nimport { HviForm } from './form';\nimport { HviControlInvalid, HviValidationMessage } from './validation';\n\nimport {\n HviField,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldCounter,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldValidation,\n} from './field';\n\nimport { HviErrorSummary } from './error-summary';\nimport { HviFieldset } from './fieldset';\nimport { HviInput } from './input';\n\n// 1) Bare field-byggesteiner\nexport const HviFieldKit = [\n HviField,\n HviFieldValidation,\n HviFieldDescription,\n HviFieldOptional,\n HviFieldAffix,\n HviFieldAffixes,\n HviFieldCounter,\n] as const;\n\n// 2) Reactive forms + invalid/validation glue + submit behavior\nexport const HviValidationKit = [\n ReactiveFormsModule,\n HviForm,\n HviControlInvalid,\n HviValidationMessage,\n] as const;\n\n// 3) “Alt du trenger for DS forms”\nexport const HviForms = [\n ...HviValidationKit,\n ...HviFieldKit,\n HviInput,\n HviFieldset,\n HviErrorSummary,\n] as const;\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Heading is used to structure content and create hierarchy on a page.\n *\n * @example\n * ```html\n * <h1 hviHeading size=\"xl\">This is a heading</h1>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/heading/overview\n */\n@Directive({\n selector:\n 'h1[hviHeading], h2[hviHeading], h3[hviHeading], h4[hviHeading], h5[hviHeading], h6[hviHeading]',\n standalone: true,\n host: {\n class: 'ds-heading',\n '[attr.data-size]': 'size',\n },\n})\nexport class HviHeading {\n /** The size of the heading */\n @Input() size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IconColor, IconName, IconSize } from './icon.types';\n\n@Component({\n selector: 'hvi-icon',\n standalone: true,\n template: '',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'hvi-icon',\n '[attr.data-size]': 'size',\n '[attr.data-color]': 'color',\n '[attr.aria-hidden]': 'ariaHidden',\n },\n styles: [\n `\n hvi-icon {\n display: inline-block;\n }\n svg {\n display: inline-block;\n }\n\n hvi-icon[data-size='sm'] svg {\n width: 16px;\n height: 16px;\n }\n hvi-icon[data-size='md'] svg {\n width: 24px;\n height: 24px;\n }\n hvi-icon[data-size='lg'] svg {\n width: 32px;\n height: 32px;\n }\n hvi-icon[data-size='xl'] svg {\n width: 40px;\n height: 40px;\n }\n\n hvi-icon svg path {\n fill: currentColor;\n }\n hvi-icon[data-color='danger'] svg path {\n fill: var(--ds-color-danger-base-default);\n }\n `,\n ],\n})\nexport class HviIcon implements OnChanges {\n @Input({ required: true }) icon!: IconName;\n @Input() color?: IconColor;\n @Input() size: IconSize = 'md';\n @Input({ transform: booleanAttribute }) ariaHidden = false;\n\n private readonly http = inject(HttpClient);\n private readonly elementRef = inject(ElementRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n ngOnChanges(): void {\n this.loadIcon();\n }\n\n private loadIcon() {\n this.http\n .get(`/assets/icons/${this.icon}.svg`, {\n responseType: 'text',\n })\n .subscribe({\n next: (svg) => {\n this.elementRef.nativeElement.innerHTML = svg;\n this.cdr.markForCheck();\n },\n error: (err) => {\n console.error('Failed to load icon:', this.icon, err);\n },\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Label functions as a clear and accessible text label that tells the user what an associated form element is about.\n *\n * @example\n * ```html\n * <label hviLabel weight=\"semibold\">Name</label>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/label/overview\n */\n@Directive({\n selector: 'label[hviLabel], legend[hviLabel]',\n standalone: true,\n host: {\n class: 'ds-label',\n '[attr.data-weight]': 'weight ?? null',\n },\n})\nexport class HviLabel {\n /** The font weight of the label */\n @Input() weight?: 'regular' | 'medium' | 'semibold';\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Info\n *\n * Eksempel på bruk:\n * ```html\n * <a hviLink />\n * ```\n *\n * Dokumentasjon: https://designsystemet.no/no/components/docs/input/overview\n */\n\n@Directive({\n selector: 'a[hviLink]',\n standalone: true,\n host: {\n class: 'ds-link',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviLink {\n /** Used to change the appearance of the link. */\n @Input() color?: 'default' | 'neutral' = 'default';\n}\n","import { Directive } from '@angular/core';\n\n/**\n * @summary\n * List directive description.\n *\n * @example\n * ```html\n * <ol hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ol>\n *\n * <ul hviList>\n * <li>First item</li>\n * <li>Second item</li>\n * <li>Third item</li>\n * </ul>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/input/code\n */\n\n@Directive({\n selector: 'ol[hviList], ul[hviList]',\n standalone: true,\n host: {\n class: 'ds-list',\n },\n})\nexport class HviList {}\n","import { LogoDefinition } from '../logo-types';\n\nexport const LOGO_DOTS: LogoDefinition = {\n viewBox: '0 0 65 65',\n width: 65,\n height: 65,\n label: 'Helse Vest logo',\n paths: [\n // Accent dots\n // Top\n {\n d: 'M39.9945 9.52374C39.9945 13.6821 36.6286 17.0493 32.4743 17.0493C28.3201 17.0493 24.9594 13.6839 24.9594 9.52374C24.9594 5.36354 28.3216 2 32.4725 2C36.6234 2 39.9926 5.3672 39.9926 9.52374H39.9945Z',\n fill: 'accent',\n },\n // Center\n {\n d: 'M39.9945 32.482C39.9945 36.6331 36.6286 40.0021 32.4743 40.0021C28.3201 40.0021 24.9594 36.6331 24.9594 32.482C24.9594 28.331 28.3216 24.9531 32.4743 24.9531C36.627 24.9531 39.9945 28.3221 39.9945 32.482Z',\n fill: 'accent',\n },\n // Right\n {\n d: 'M62.9656 32.482C62.9656 36.6331 59.5978 40.0021 55.447 40.0021C51.2961 40.0021 47.9283 36.6331 47.9283 32.482C47.9283 28.331 51.2943 24.9531 55.447 24.9531C59.5997 24.9531 62.9656 28.3221 62.9656 32.482Z',\n fill: 'accent',\n },\n // Bottom\n {\n d: 'M39.9945 55.4799C39.9945 59.6346 36.6286 63 32.4743 63C28.3201 63 24.9594 59.6328 24.9594 55.4799C24.9594 51.327 28.3216 47.9492 32.4743 47.9492C36.627 47.9492 39.9945 51.3234 39.9945 55.4799Z',\n fill: 'accent',\n },\n // Themed dot\n {\n d: 'M17.0373 32.482C17.0373 36.6331 13.6732 40.0021 9.51863 40.0021C5.36409 40.0021 2 36.6331 2 32.482C2 28.331 5.36775 24.9531 9.51863 24.9531C13.6695 24.9531 17.0373 28.3221 17.0373 32.482Z',\n fill: 'themed',\n },\n ],\n};\n","import { LogoDefinition, LogoPath } from './logo-types';\n\n// ---------------------------------------------------------------------------\n// Shared paths for \"dots-first\" layout (used by all logos except HVE, SAV, HBE-HUS, HST-SUS and the dots-only logo)\n// Layout: [dots] [HELSE] [company name]\n// ---------------------------------------------------------------------------\n\n/** Accent dots — leading position (dots-first layout) */\nconst DOTS: LogoPath[] = [\n // Top\n {\n d: 'M39.9945 9.52374C39.9945 13.6821 36.6286 17.0493 32.4743 17.0493C28.3201 17.0493 24.9594 13.6839 24.9594 9.52374C24.9594 5.36354 28.3216 2 32.4725 2C36.6234 2 39.9926 5.3672 39.9926 9.52374H39.9945Z',\n fill: 'accent',\n },\n // Center\n {\n d: 'M39.9945 32.482C39.9945 36.6331 36.6286 40.0021 32.4743 40.0021C28.3201 40.0021 24.9594 36.6331 24.9594 32.482C24.9594 28.331 28.3216 24.9531 32.4743 24.9531C36.627 24.9531 39.9945 28.3221 39.9945 32.482Z',\n fill: 'accent',\n },\n // Right\n {\n d: 'M62.9656 32.482C62.9656 36.6331 59.5978 40.0021 55.447 40.0021C51.2961 40.0021 47.9283 36.6331 47.9283 32.482C47.9283 28.331 51.2943 24.9531 55.447 24.9531C59.5997 24.9531 62.9656 28.3221 62.9656 32.482Z',\n fill: 'accent',\n },\n // Bottom\n {\n d: 'M39.9945 55.4799C39.9945 59.6346 36.6286 63 32.4743 63C28.3201 63 24.9594 59.6328 24.9594 55.4799C24.9594 51.327 28.3216 47.9492 32.4743 47.9492C36.627 47.9492 39.9945 51.3234 39.9945 55.4799Z',\n fill: 'accent',\n },\n];\n\n/** Themed dot — dots-first layout */\nconst THEMED_DOT: LogoPath[] = [\n {\n d: 'M17.0373 32.482C17.0373 36.6331 13.6732 40.0021 9.51863 40.0021C5.36409 40.0021 2 36.6331 2 32.482C2 28.331 5.36775 24.9531 9.51863 24.9531C13.6695 24.9531 17.0373 28.3221 17.0373 32.482Z',\n fill: 'themed',\n },\n];\n\n/** Text \"HELSE\" — dots-first layout */\nconst HELSE: LogoPath[] = [\n // H\n {\n d: 'M100.095 44.2324V33.3638H86.1084V44.2324H83.1603V20.4799H86.1084V30.6648H100.095V20.4799H103.043V44.2324H100.095Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M110.883 44.2324V20.4799H124.222V22.9633H113.831V30.8808H122.424V33.3641H113.831V41.7494H124.546V44.2327H110.883V44.2324Z',\n fill: 'themed',\n },\n // L\n {\n d: 'M130.263 44.2324V20.4799H133.211V41.7494H143.818V44.2327H130.263V44.2324Z',\n fill: 'themed',\n },\n // S\n {\n d: 'M160.035 24.5105C158.812 23.7907 158.309 23.5388 157.554 23.2869C156.655 22.999 155.216 22.783 154.282 22.783C151.585 22.783 149.751 24.1146 149.751 26.1301C149.751 27.8936 150.794 28.793 155.612 31.3483C157.23 32.2121 158.488 33.0039 159.351 33.7597C160.502 34.7314 161.185 36.3509 161.185 38.0785C161.185 42.145 158.165 44.7003 153.383 44.7003C151.765 44.7003 150.254 44.4124 148.996 43.9085C148.097 43.5486 147.486 43.1887 145.94 42.145L147.45 39.8057C148.78 40.7054 149.355 41.0293 150.182 41.3532C151.225 41.7491 152.376 41.9651 153.598 41.9651C156.403 41.9651 158.093 40.6334 158.093 38.3661C158.093 37.6823 157.985 37.1064 157.733 36.6745C157.338 35.9547 156.655 35.2709 155.72 34.7311C155.324 34.5151 153.994 33.8313 151.765 32.6077C148.205 30.7002 146.695 28.8287 146.695 26.3814C146.695 22.6028 149.824 20.0835 154.534 20.0835C155.9 20.0835 157.302 20.2634 158.524 20.6593C159.495 20.9832 160.071 21.2711 161.401 22.0629L160.035 24.5099V24.5105Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M167.262 44.2324V20.4799H180.602V22.9633H170.21V30.8808H178.804V33.3641H170.21V41.7494H180.925V44.2327H167.262V44.2324Z',\n fill: 'themed',\n },\n];\n\n/** Builds a dots-first logo: [dots] [themed dot] [HELSE] [unique company text] */\nexport function buildLogo(\n label: string,\n companyPaths: LogoPath[],\n viewBox = '0 0 240 65',\n width = 240,\n height = 65,\n): LogoDefinition {\n return {\n viewBox,\n width,\n height,\n label,\n paths: [...DOTS, ...THEMED_DOT, ...HELSE, ...companyPaths],\n };\n}\n","import { buildLogo } from '../logo-shared';\nimport { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HBE: LogoDefinition = buildLogo(\n 'Helse Bergen logo',\n [\n // B\n {\n d: 'M207.347 43.9684H197.525V19.8636H206.251C209.391 19.8636 210.962 20.2654 212.276 21.4707C213.444 22.4934 214.175 24.21 214.175 25.7802C214.175 27.1316 213.663 28.556 212.787 29.5784C211.728 30.7836 210.743 31.2219 208.844 31.3315C212.495 31.4046 214.795 33.7786 214.795 37.5402C214.795 41.704 212.166 43.9684 207.347 43.9684ZM205.339 23.5157H202.345V29.7248H205.083C207.676 29.7248 209.063 28.6291 209.063 26.584C209.063 24.6483 207.676 23.516 205.339 23.516V23.5157ZM205.339 33.6325H202.345V40.2798H205.339C206.763 40.2798 207.42 40.1703 208.113 39.8416C209.136 39.3302 209.756 38.271 209.756 37.0292C209.756 34.8378 208.186 33.6325 205.339 33.6325Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M219.323 43.9684V19.8636H234.001V23.7714H223.924V29.7245H232.175V33.6322H223.924V40.0604H234.476V43.9681H219.323L219.323 43.9684Z',\n fill: 'themed',\n },\n // R\n {\n d: 'M251.417 43.9684L245.904 34.3265H243.604V43.9684H239.003V19.8636H247.036C250.541 19.8636 252.148 20.3019 253.572 21.6533C254.886 22.8586 255.543 24.6117 255.543 26.8762C255.543 28.7389 255.105 30.2361 254.229 31.4049C253.316 32.5736 252.476 33.085 250.468 33.6328L256.456 43.9687H251.417V43.9684ZM246.598 23.7714H243.604V30.4187H246.598C249.519 30.4187 250.797 29.3961 250.797 26.9855C250.797 24.6845 249.592 23.7714 246.598 23.7714Z',\n fill: 'themed',\n },\n // G\n {\n d: 'M277.78 43.6397C275.224 44.2241 273.727 44.4433 271.719 44.4433C263.723 44.4433 258.173 39.3299 258.173 31.8794C258.173 28.227 259.56 25.0497 262.153 22.6757C264.635 20.4115 267.41 19.4619 271.573 19.4619C273.325 19.4619 275.078 19.6445 276.611 20.0098C277.78 20.302 278.51 20.5576 280.189 21.2878L279.094 25.1228C278.218 24.7941 277.56 24.5749 277.122 24.4288C275.406 23.8445 273.69 23.5523 272.157 23.5523C266.753 23.5523 262.992 26.8759 262.992 31.6602C262.992 36.5907 267.118 40.3526 272.485 40.3526C273.581 40.3526 274.201 40.243 275.625 39.8413V33.1939H280.226V43.0551L277.78 43.6394V43.6397Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M286.178 43.9684V19.8636H300.856V23.7714H290.779V29.7245H299.03V33.6322H290.779V40.0604H301.331V43.9681H286.178L286.178 43.9684Z',\n fill: 'themed',\n },\n // N\n {\n d: 'M321.923 44.1876L311.59 28.5925L310.787 27.1316C310.641 26.8394 310.568 26.6933 310.458 26.2915V43.9684H306.077V19.8636H311.371L321.119 35.13C321.813 36.2257 322.105 36.9927 322.397 37.7597V19.8636H326.743V44.1876H321.923Z',\n fill: 'themed',\n },\n ],\n '0 0 330 65',\n 330,\n 65,\n);\n","import { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HBE_HUS: LogoDefinition = {\n viewBox: '0 0 348 65',\n width: 348,\n height: 65,\n label: 'Haukeland universitetssjukehus logo',\n paths: [\n // Accent dots\n {\n d: 'M38.6034 9.41943C38.6034 13.3194 35.4433 16.4766 31.5395 16.4766C27.6358 16.4766 24.4756 13.3194 24.4756 9.41943C24.4756 5.51943 27.6358 2.36229 31.5395 2.36229C35.4433 2.36229 38.6034 5.51943 38.6034 9.41943Z',\n fill: 'accent',\n },\n {\n d: 'M38.6034 30.9623C38.6034 34.8623 35.4433 38.0194 31.5395 38.0194C27.6358 38.0194 24.4756 34.8623 24.4756 30.9623C24.4756 27.0623 27.6358 23.9052 31.5395 23.9052C35.4433 23.9052 38.6034 27.0623 38.6034 30.9623Z',\n fill: 'accent',\n },\n {\n d: 'M60.198 30.9623C60.198 34.8623 57.0379 38.0194 53.1341 38.0194C49.2304 38.0194 46.0702 34.8623 46.0702 30.9623C46.0702 27.0623 49.2304 23.9052 53.1341 23.9052C57.0379 23.9052 60.198 27.0623 60.198 30.9623Z',\n fill: 'accent',\n },\n {\n d: 'M38.6034 52.5361C38.6034 56.4361 35.4433 59.5932 31.5395 59.5932C27.6358 59.5932 24.4756 56.4361 24.4756 52.5361C24.4756 48.6361 27.6358 45.479 31.5395 45.479C35.4433 45.479 38.6034 48.6361 38.6034 52.5361Z',\n fill: 'accent',\n },\n // Themed dot\n {\n d: 'M17.0088 30.9623C17.0088 34.8623 13.8487 38.0194 9.94491 38.0194C6.04116 38.0194 2.88098 34.8623 2.88098 30.9623C2.88098 27.0623 6.04116 23.9052 9.94491 23.9052C13.8487 23.9052 17.0088 27.0623 17.0088 30.9623Z',\n fill: 'themed',\n },\n // HELSE\n {\n d: 'M95.2078 38.0504V27.867H82.1024V38.0504H79.345V15.8266H82.1024V25.3599H95.2078V15.8266H97.9652V38.0504H95.2078Z',\n fill: 'themed',\n },\n {\n d: 'M105.308 38.0504V15.8266H117.825V18.148H108.096V25.5456H116.152V27.867H108.096V35.7289H118.135V38.0504H105.308Z',\n fill: 'themed',\n },\n { d: 'M123.464 38.0504V15.8266H126.221V35.7289H136.166V38.0504H123.464Z', fill: 'themed' },\n {\n d: 'M151.378 19.5718C150.232 18.8909 149.767 18.6742 149.055 18.4266C148.218 18.148 146.855 17.9623 145.988 17.9623C143.447 17.9623 141.743 19.2004 141.743 21.0885C141.743 22.729 142.734 23.5647 147.227 25.9789C148.745 26.7837 149.922 27.5266 150.728 28.2385C151.812 29.1361 152.432 30.6528 152.432 32.2932C152.432 36.1004 149.612 38.4837 145.12 38.4837C143.602 38.4837 142.177 38.2051 140.999 37.7409C140.163 37.4004 139.574 37.0599 138.118 36.1004L139.543 33.9028C140.782 34.7385 141.34 35.048 142.115 35.3575C143.106 35.729 144.16 35.9147 145.306 35.9147C147.939 35.9147 149.519 34.6766 149.519 32.5409C149.519 31.8909 149.427 31.3647 149.179 30.9623C148.807 30.2813 148.156 29.6623 147.289 29.1361C146.917 28.9194 145.678 28.3004 143.571 27.1551C140.225 25.3599 138.831 23.6266 138.831 21.3361C138.831 17.8075 141.774 15.4551 146.173 15.4551C147.444 15.4551 148.776 15.6099 149.922 15.9813C150.821 16.2909 151.378 16.5385 152.618 17.2813L151.378 19.5718Z',\n fill: 'themed',\n },\n {\n d: 'M158.133 38.0504V15.8266H170.649V18.148H160.89V25.5456H168.945V27.867H160.89V35.7289H170.928V38.0504H158.133Z',\n fill: 'themed',\n },\n // BERGEN\n {\n d: 'M192.956 38.0504H183.879V15.8266H191.934C194.846 15.8266 196.272 16.198 197.511 17.3123C198.595 18.2409 199.277 19.8504 199.277 21.2742C199.277 22.5123 198.812 23.8432 198.007 24.7718C197.015 25.8861 196.117 26.2885 194.382 26.3813C197.759 26.4432 199.865 28.6409 199.865 32.1075C199.834 35.9456 197.418 38.0504 192.956 38.0504ZM191.128 19.1694H188.371V24.8956H190.912C193.297 24.8956 194.598 23.8742 194.598 21.9861C194.537 20.2218 193.266 19.1694 191.128 19.1694ZM191.128 28.517H188.371V34.6456H191.128C192.43 34.6456 193.049 34.5528 193.7 34.2432C194.629 33.7789 195.218 32.7885 195.218 31.6432C195.187 29.6313 193.731 28.517 191.128 28.517Z',\n fill: 'themed',\n },\n {\n d: 'M204.017 38.0504V15.8266H217.556V19.417H208.262V24.8956H215.883V28.4861H208.262V34.398H217.99V37.9885L204.017 38.0504Z',\n fill: 'themed',\n },\n {\n d: 'M233.636 38.0504L228.555 29.167H226.417V38.0504H222.173V15.8266H229.577C232.799 15.8266 234.287 16.2289 235.619 17.467C236.827 18.5813 237.447 20.1909 237.447 22.2956C237.447 23.998 237.044 25.3909 236.239 26.4742C235.402 27.5575 234.627 28.0218 232.769 28.517L238.283 38.0504H233.636ZM229.175 19.417H226.417V25.5456H229.175C231.87 25.5456 233.047 24.5861 233.047 22.3885C233.078 20.2528 231.963 19.417 229.175 19.417Z',\n fill: 'themed',\n },\n {\n d: 'M257.957 37.7409C255.602 38.267 254.208 38.4837 252.349 38.4837C244.976 38.4837 239.832 33.7789 239.832 26.9075C239.832 23.5337 241.103 20.6242 243.519 18.4266C245.812 16.3528 248.384 15.4551 252.225 15.4551C253.836 15.4551 255.447 15.6099 256.873 15.9504C257.957 16.2289 258.639 16.4456 260.188 17.1266L259.165 20.6551C258.36 20.3456 257.74 20.1599 257.337 20.0051C255.757 19.479 254.177 19.2004 252.752 19.2004C247.764 19.2004 244.294 22.2647 244.294 26.6909C244.294 31.2409 248.105 34.7075 253.062 34.7075C254.084 34.7075 254.642 34.6147 255.974 34.2432V28.1147H260.219V37.2147L257.957 37.7409Z',\n fill: 'themed',\n },\n {\n d: 'M265.703 38.0504V15.8266H279.242V19.417H269.947V24.8956H277.569V28.4861H269.947V34.398H279.675V37.9885L265.703 38.0504Z',\n fill: 'themed',\n },\n {\n d: 'M298.698 38.2361L289.156 23.8742L288.412 22.5123C288.288 22.2337 288.196 22.1099 288.103 21.7385V38.0504H284.044V15.8266H288.939L297.924 29.9099C298.575 30.9313 298.822 31.6123 299.101 32.3242V15.8266H303.098V38.267H298.698V38.2361Z',\n fill: 'themed',\n },\n // Haukeland universitetssjukehus (second line)\n {\n d: 'M89.0734 59.098V53.0004H81.2039V59.098H79.5309V45.7266H81.2039V51.4528H89.0734V45.7266H90.7464V59.098H89.0734Z',\n fill: 'themed',\n },\n {\n d: 'M101.187 59.3456C99.9171 59.2528 99.4834 58.9432 99.3904 58.0766C98.9257 58.479 98.7088 58.6337 98.43 58.8194C97.8723 59.129 97.1287 59.3456 96.4781 59.3456C94.991 59.3456 94.0305 58.3861 94.0305 56.9313C94.0305 55.6004 94.7431 54.7028 96.0753 54.3932L99.2665 53.6504V51.979C99.2665 51.2361 98.7088 50.8337 97.5315 50.8337C96.5711 50.8337 96.1373 51.0813 96.1373 51.6385C96.1373 51.7313 96.1683 51.8242 96.2303 51.979L94.6811 52.2885C94.5262 52.0409 94.5262 51.948 94.5262 51.7313C94.5262 50.5242 95.8585 49.6885 97.8413 49.6885C99.7003 49.6885 100.847 50.5551 100.847 51.979V57.6123C100.878 57.8599 101.125 58.0147 101.59 58.1075L101.187 59.3456ZM99.2665 54.8885L95.8275 55.7861C95.6106 56.2194 95.5796 56.4051 95.5796 56.7766C95.5796 57.5194 96.0753 57.9837 96.8189 57.9837C97.5005 57.9837 97.9652 57.767 99.2975 56.8075V54.8885H99.2665Z',\n fill: 'themed',\n },\n {\n d: 'M110.327 59.098V57.2099C109.243 58.6956 108.065 59.4075 106.671 59.4075C105.06 59.4075 104.224 58.5099 104.224 56.8385V49.967H105.742V56.467C105.742 57.6123 106.052 58.0766 106.826 58.0766C107.787 58.0766 109.243 57.0551 110.296 55.6004V49.998H111.845V59.1599C111.876 59.098 110.327 59.098 110.327 59.098Z',\n fill: 'themed',\n },\n {\n d: 'M115.191 59.098V44.3337H116.709V59.098H115.191ZM120.551 59.098L116.771 54.1147L120.551 49.9361H122.534L118.63 54.1456L122.565 59.098H120.551Z',\n fill: 'themed',\n },\n {\n d: 'M125.013 54.3623C125.013 56.5908 126.159 57.9528 128.018 57.9528C128.823 57.9528 129.412 57.7361 130.403 57.0551L131.023 58.2623C129.66 59.098 128.885 59.3766 127.708 59.3766C125.168 59.3766 123.432 57.4266 123.432 54.548C123.432 51.6385 125.167 49.7194 127.77 49.7194C129.908 49.7194 131.302 51.2361 131.302 53.5266V54.4242L125.013 54.3623ZM127.646 51.0504C126.376 51.0504 125.477 51.8242 125.137 53.248H129.629C129.598 51.8242 128.885 51.0504 127.646 51.0504Z',\n fill: 'themed',\n },\n { d: 'M133.688 59.098V44.3337H135.206V59.098H133.688Z', fill: 'themed' },\n {\n d: 'M145.12 59.3456C143.85 59.2528 143.416 58.9432 143.323 58.0766C142.858 58.479 142.641 58.6337 142.363 58.8194C141.805 59.129 141.061 59.3456 140.411 59.3456C138.924 59.3456 137.963 58.3861 137.963 56.9313C137.963 55.6004 138.676 54.7028 140.008 54.3932L143.199 53.6504V51.979C143.199 51.2361 142.641 50.8337 141.464 50.8337C140.504 50.8337 140.07 51.0813 140.07 51.6385C140.07 51.7313 140.101 51.8242 140.163 51.979L138.614 52.2885C138.459 52.0409 138.459 51.948 138.459 51.7313C138.459 50.5242 139.791 49.6885 141.774 49.6885C143.633 49.6885 144.779 50.5551 144.779 51.979V57.6123C144.81 57.8599 145.058 58.0147 145.523 58.1075L145.12 59.3456ZM143.199 54.8885L139.76 55.7861C139.543 56.2194 139.512 56.4051 139.512 56.7766C139.512 57.5194 140.008 57.9837 140.752 57.9837C141.433 57.9837 141.898 57.767 143.23 56.8075L143.199 54.8885Z',\n fill: 'themed',\n },\n {\n d: 'M154.384 59.098V52.598C154.384 51.979 154.353 51.7932 154.229 51.5147C154.074 51.2052 153.733 51.0194 153.299 51.0194C152.37 51.0194 151.378 51.7004 149.767 53.4647V59.0671H148.249V49.9051H149.767V51.8242C150.387 51.1123 150.573 50.9266 151.038 50.5551C151.719 49.9671 152.649 49.6575 153.485 49.6575C155.096 49.6575 155.902 50.4932 155.902 52.1956V59.0671L154.384 59.098Z',\n fill: 'themed',\n },\n {\n d: 'M165.289 59.098V57.9528C164.484 58.8504 163.399 59.3766 162.253 59.3766C159.991 59.3766 158.411 57.4885 158.411 54.7956C158.411 51.8551 160.363 49.7194 163.09 49.7194C164.05 49.7194 164.701 49.9051 165.289 50.3385V44.3647H166.839V59.129L165.289 59.098ZM165.289 53.1242C165.289 52.4123 165.258 52.2266 165.104 51.917C164.856 51.4218 164.205 51.1432 163.245 51.1432C161.293 51.1432 160.053 52.5361 160.053 54.7337C160.053 56.5909 161.076 57.9218 162.501 57.9218C163.059 57.9218 163.709 57.7051 164.298 57.3028C164.639 57.0551 164.856 56.8385 165.289 56.3123C165.289 56.2813 165.289 53.1242 165.289 53.1242Z',\n fill: 'themed',\n },\n {\n d: 'M181.276 59.098V57.2099C180.192 58.6956 179.015 59.4075 177.62 59.4075C176.009 59.4075 175.173 58.5099 175.173 56.8385V49.967H176.691V56.467C176.691 57.6123 177.001 58.0766 177.775 58.0766C178.736 58.0766 180.192 57.0551 181.245 55.6004V49.998H182.794V59.1599H181.276V59.098Z',\n fill: 'themed',\n },\n {\n d: 'M192.337 59.098V52.598C192.337 51.979 192.306 51.7932 192.182 51.5147C192.027 51.2052 191.686 51.0194 191.252 51.0194C190.323 51.0194 189.332 51.7004 187.721 53.4647V59.0671H186.202V49.9051H187.721V51.8242C188.34 51.1123 188.526 50.9266 188.991 50.5551C189.672 49.9671 190.602 49.6575 191.438 49.6575C193.049 49.6575 193.855 50.4932 193.855 52.1956V59.0671L192.337 59.098Z',\n fill: 'themed',\n },\n {\n d: 'M198.038 47.7075C197.48 47.7075 197.046 47.2742 197.046 46.717C197.046 46.1599 197.48 45.7266 198.038 45.7266C198.595 45.7266 199.029 46.1599 199.029 46.717C199.029 47.2742 198.595 47.7075 198.038 47.7075ZM197.263 59.098V49.9361H198.781V59.098H197.263Z',\n fill: 'themed',\n },\n {\n d: 'M205.721 59.3456H204.327L200.857 49.9051H202.53L205.07 57.3337L205.101 57.7051L205.132 57.3647L207.611 49.9051H209.284L205.721 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M212.042 54.3623C212.042 56.5908 213.188 57.9528 215.047 57.9528C215.852 57.9528 216.441 57.7361 217.432 57.0551L218.052 58.2623C216.689 59.098 215.914 59.3766 214.737 59.3766C212.196 59.3766 210.461 57.4266 210.461 54.548C210.461 51.6385 212.196 49.7194 214.799 49.7194C216.937 49.7194 218.331 51.2361 218.331 53.5266V54.4242L212.042 54.3623ZM214.675 51.0504C213.405 51.0504 212.506 51.8242 212.165 53.248H216.658C216.658 51.8242 215.945 51.0504 214.675 51.0504Z',\n fill: 'themed',\n },\n {\n d: 'M225.147 51.5766C224.837 51.3289 224.682 51.2051 224.496 51.2051C223.939 51.2051 223.195 52.0408 222.328 53.6194V59.098H220.809V49.9361H222.328V51.6075C223.474 50.1528 224.032 49.7194 224.713 49.7194C225.054 49.7194 225.488 49.9361 225.891 50.3385L225.147 51.5766Z',\n fill: 'themed',\n },\n {\n d: 'M230.538 59.3456C230.166 59.3456 229.732 59.3147 229.268 59.2218C228.4 59.067 227.997 58.9123 227.099 58.448L227.718 57.179L228.183 57.4266C229.082 57.9218 229.949 58.0456 230.507 58.0456C231.436 58.0456 232.118 57.5504 232.118 56.8385C232.118 56.6218 232.025 56.3432 231.932 56.2194C231.56 55.6932 231.126 55.4147 229.515 54.7647C227.718 54.0218 227.13 53.4028 227.13 52.2885C227.13 50.679 228.462 49.6885 230.6 49.6885C230.972 49.6885 231.405 49.7194 231.777 49.7813C232.459 49.9051 232.799 50.029 233.574 50.4623L232.83 51.7004C232.242 51.329 231.994 51.2051 231.498 51.0813C231.126 50.9885 230.786 50.9266 230.445 50.9266C229.422 50.9266 228.741 51.3909 228.741 52.0718C228.741 52.2885 228.834 52.5051 228.958 52.629C229.329 53.0004 229.577 53.1242 231.219 53.8361C233.171 54.6409 233.698 55.2599 233.698 56.7147C233.729 58.3551 232.552 59.3456 230.538 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M237.478 47.7075C236.92 47.7075 236.486 47.2742 236.486 46.717C236.486 46.1599 236.92 45.7266 237.478 45.7266C238.036 45.7266 238.469 46.1599 238.469 46.717C238.469 47.2742 238.005 47.7075 237.478 47.7075ZM236.703 59.098V49.9361H238.221V59.098H236.703Z',\n fill: 'themed',\n },\n {\n d: 'M243.55 59.3456C242.497 59.3456 241.784 58.5099 241.784 57.3028V51.2051H240.235V50.3075L241.784 49.9361V47.2432H243.302V49.9051H245.719V51.1742H243.302V56.4051C243.302 56.498 243.333 57.2409 243.364 57.4266C243.395 57.6742 243.581 57.829 243.891 57.829C244.263 57.829 244.573 57.6742 245.223 57.179L245.843 58.2004C244.79 59.098 244.294 59.3456 243.55 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M248.693 54.3623C248.693 56.5908 249.84 57.9528 251.699 57.9528C252.504 57.9528 253.093 57.7361 254.084 57.0551L254.704 58.2623C253.341 59.098 252.566 59.3766 251.389 59.3766C248.848 59.3766 247.113 57.4266 247.113 54.548C247.113 51.6385 248.848 49.7194 251.451 49.7194C253.589 49.7194 254.983 51.2361 254.983 53.5266V54.4242L248.693 54.3623ZM251.327 51.0504C250.057 51.0504 249.158 51.8242 248.817 53.248H253.31C253.279 51.8242 252.566 51.0504 251.327 51.0504Z',\n fill: 'themed',\n },\n {\n d: 'M259.32 59.3456C258.267 59.3456 257.554 58.5099 257.554 57.3028V51.2051H256.005V50.3075L257.554 49.9361V47.2432H259.072V49.9051H261.489V51.1742H259.072V56.4051C259.072 56.498 259.103 57.2409 259.134 57.4266C259.165 57.6742 259.351 57.829 259.661 57.829C260.033 57.829 260.343 57.6742 260.993 57.179L261.613 58.2004C260.559 59.098 260.064 59.3456 259.32 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M266.601 59.3456C266.229 59.3456 265.795 59.3147 265.331 59.2218C264.463 59.067 264.06 58.9123 263.162 58.448L263.782 57.179L264.246 57.4266C265.145 57.9218 266.012 58.0456 266.57 58.0456C267.499 58.0456 268.181 57.5504 268.181 56.8385C268.181 56.6218 268.088 56.3432 267.995 56.2194C267.623 55.6932 267.19 55.4147 265.579 54.7647C263.782 54.0218 263.193 53.4028 263.193 52.2885C263.193 50.679 264.525 49.6885 266.663 49.6885C267.035 49.6885 267.469 49.7194 267.84 49.7813C268.522 49.9051 268.863 50.029 269.637 50.4623L268.894 51.7004C268.305 51.329 268.057 51.2051 267.561 51.0813C267.19 50.9885 266.849 50.9266 266.508 50.9266C265.486 50.9266 264.804 51.3909 264.804 52.0718C264.804 52.2885 264.897 52.5051 265.021 52.629C265.393 53.0004 265.641 53.1242 267.283 53.8361C269.234 54.6409 269.761 55.2599 269.761 56.7147C269.823 58.3551 268.615 59.3456 266.601 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M275.679 59.3456C275.307 59.3456 274.873 59.3147 274.408 59.2218C273.541 59.067 273.138 58.9123 272.24 58.448L272.859 57.179L273.324 57.4266C274.223 57.9218 275.09 58.0456 275.648 58.0456C276.577 58.0456 277.259 57.5504 277.259 56.8385C277.259 56.6218 277.166 56.3432 277.073 56.2194C276.701 55.6932 276.267 55.4147 274.656 54.7647C272.859 54.0218 272.271 53.4028 272.271 52.2885C272.271 50.679 273.603 49.6885 275.741 49.6885C276.113 49.6885 276.546 49.7194 276.918 49.7813C277.6 49.9051 277.94 50.029 278.715 50.4623L277.971 51.7004C277.383 51.329 277.135 51.2051 276.639 51.0813C276.267 50.9885 275.927 50.9266 275.586 50.9266C274.563 50.9266 273.882 51.3909 273.882 52.0718C273.882 52.2885 273.975 52.5051 274.099 52.629C274.47 53.0004 274.718 53.1242 276.36 53.8361C278.312 54.6409 278.839 55.2599 278.839 56.7147C278.87 58.3551 277.662 59.3456 275.679 59.3456Z',\n fill: 'themed',\n },\n {\n d: 'M282.278 62.6575C281.906 63.3075 281.72 63.5551 281.132 64.267L280.109 63.4313C280.791 62.4718 280.977 62.1932 281.287 61.5742C281.627 60.8932 281.782 60.2123 281.782 59.2218V49.9361H283.3V60.6147C282.867 61.6051 282.681 62.0075 282.278 62.6575ZM282.526 47.6766C281.968 47.6766 281.534 47.2432 281.534 46.6861C281.534 46.129 281.968 45.6956 282.526 45.6956C283.084 45.6956 283.517 46.129 283.517 46.6861C283.517 47.2432 283.084 47.6766 282.526 47.6766Z',\n fill: 'themed',\n },\n {\n d: 'M292.812 59.098V57.2099C291.728 58.6956 290.55 59.4075 289.156 59.4075C287.545 59.4075 286.708 58.5099 286.708 56.8385V49.967H288.227V56.467C288.227 57.6123 288.536 58.0766 289.311 58.0766C290.271 58.0766 291.728 57.0551 292.781 55.6004V49.998H294.33V59.1599H292.812V59.098Z',\n fill: 'themed',\n },\n {\n d: 'M297.645 59.098V44.3337H299.163V59.098H297.645ZM303.005 59.098L299.225 54.1147L303.005 49.9361H304.988L301.084 54.1456L305.019 59.098H303.005Z',\n fill: 'themed',\n },\n {\n d: 'M307.466 54.3623C307.466 56.5908 308.613 57.9528 310.472 57.9528C311.277 57.9528 311.866 57.7361 312.857 57.0551L313.477 58.2623C312.114 59.098 311.339 59.3766 310.162 59.3766C307.621 59.3766 305.886 57.4266 305.886 54.548C305.886 51.6385 307.621 49.7194 310.224 49.7194C312.362 49.7194 313.756 51.2361 313.756 53.5266V54.4242L307.466 54.3623ZM310.1 51.0504C308.83 51.0504 307.931 51.8242 307.59 53.248H312.083C312.052 51.8242 311.339 51.0504 310.1 51.0504Z',\n fill: 'themed',\n },\n {\n d: 'M322.152 59.098V52.598C322.152 51.979 322.121 51.7932 321.997 51.5147C321.842 51.2051 321.501 51.0194 321.099 51.0194C320.138 51.0194 319.147 51.7004 317.567 53.4647V59.067H316.049V44.3028H317.567V51.8242C318.186 51.1123 318.372 50.9266 318.806 50.5551C319.519 49.9671 320.417 49.6575 321.285 49.6575C322.896 49.6575 323.701 50.4932 323.701 52.1956V59.067L322.152 59.098Z',\n fill: 'themed',\n },\n {\n d: 'M333.089 59.098V57.2099C332.004 58.6956 330.827 59.4075 329.433 59.4075C327.822 59.4075 326.985 58.5099 326.985 56.8385V49.967H328.503V56.467C328.503 57.6123 328.813 58.0766 329.588 58.0766C330.548 58.0766 332.004 57.0551 333.058 55.6004V49.998H334.607V59.1599H333.089V59.098Z',\n fill: 'themed',\n },\n {\n d: 'M340.927 59.3456C340.555 59.3456 340.122 59.3147 339.657 59.2218C338.789 59.067 338.387 58.9123 337.488 58.448L338.108 57.179L338.573 57.4266C339.471 57.9218 340.339 58.0456 340.896 58.0456C341.826 58.0456 342.507 57.5504 342.507 56.8385C342.507 56.6218 342.414 56.3432 342.321 56.2194C341.95 55.6932 341.516 55.4147 339.905 54.7647C338.108 54.0218 337.519 53.4028 337.519 52.2885C337.519 50.679 338.851 49.6885 340.989 49.6885C341.361 49.6885 341.795 49.7194 342.166 49.7813C342.848 49.9051 343.189 50.029 343.963 50.4623L343.22 51.7004C342.631 51.329 342.383 51.2051 341.919 51.0813C341.547 50.9885 341.206 50.9266 340.865 50.9266C339.843 50.9266 339.161 51.3909 339.161 52.0718C339.161 52.2885 339.254 52.5051 339.378 52.629C339.75 53.0004 339.998 53.1242 341.64 53.8361C343.592 54.6409 344.118 55.2599 344.118 56.7147C344.149 58.3551 342.941 59.3456 340.927 59.3456Z',\n fill: 'themed',\n },\n ],\n};\n","import { buildLogo } from '../logo-shared';\nimport { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HFD: LogoDefinition = buildLogo(\n 'Helse Førde logo',\n [\n // F\n {\n d: 'M202.553 24.3372V30.5463H211.04V34.4175H202.553V44.5343H197.944V20.4295H212.905V24.3372H202.553H202.553Z',\n fill: 'themed',\n },\n // Ø\n {\n d: 'M227.72 45.0091C224.72 45.0091 221.977 44.1325 219.416 42.3429L216.856 44.9726L214.771 43.0368L217.514 40.5167C215.612 37.7774 214.88 35.5497 214.88 32.5183C214.88 25.0677 220.075 19.9909 227.647 19.9909C231.158 19.9909 233.828 20.831 235.987 22.5841L238.401 20.21L240.522 22.1093L237.926 24.5929C239.645 26.8209 240.522 29.4871 240.522 32.4817C240.522 39.8227 235.218 45.0091 227.72 45.0091ZM227.647 23.7894C223.148 23.7894 219.782 27.4783 219.782 32.4087C219.782 34.3445 220.148 35.7686 220.953 37.0837L232.658 25.7982C231.012 24.3738 229.549 23.7894 227.647 23.7894ZM234.487 27.9163L222.781 39.2383C224.281 40.5167 225.964 41.1741 227.793 41.1741C232.219 41.1741 235.621 37.4487 235.621 32.5183C235.621 30.619 235.328 29.4137 234.487 27.9163Z',\n fill: 'themed',\n },\n // R\n {\n d: 'M257.386 44.5343L251.862 34.8923H249.558V44.5343H244.949V20.4295H252.996C256.508 20.4295 258.117 20.8678 259.544 22.2192C260.861 23.4245 261.519 25.1776 261.519 27.4421C261.519 29.3048 261.08 30.802 260.202 31.9707C259.288 33.1395 258.446 33.6508 256.434 34.1987L262.434 44.5346L257.386 44.5343ZM252.557 24.3372H249.558V30.9846H252.557C255.483 30.9846 256.764 29.9619 256.764 27.5513C256.764 25.2503 255.557 24.3372 252.557 24.3372Z',\n fill: 'themed',\n },\n // D\n {\n d: 'M284.784 40.9915C282.552 43.3655 279.37 44.5343 275.017 44.5343H266.092V20.4295H275.054C279.626 20.4295 282.479 21.4522 284.857 23.9723C286.942 26.2003 288.112 29.268 288.112 32.409C288.112 35.6231 286.905 38.7276 284.783 40.9918L284.784 40.9915ZM280.358 25.9078C279.078 24.9581 277.212 24.4833 274.578 24.4833H270.92V40.4801H274.578C280.065 40.4801 283.138 37.5948 283.138 32.4452C283.138 29.7059 282.077 27.1858 280.358 25.9075L280.358 25.9078Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M292.32 44.5343V20.4295H307.025V24.3372H296.929V30.2903H305.196V34.1981H296.929V40.6262H307.5V44.534H292.32L292.32 44.5343Z',\n fill: 'themed',\n },\n ],\n '0 0 309 65',\n 309,\n 65,\n);\n","import { buildLogo } from '../logo-shared';\nimport { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HFO: LogoDefinition = buildLogo(\n 'Helse Fonna logo',\n [\n // F\n {\n d: 'M202.363 24.3372V30.5463H210.841V34.4175H202.363V44.5343H197.758V20.4295H212.705V24.3372H202.363H202.363Z',\n fill: 'themed',\n },\n // O\n {\n d: 'M227.506 45.0091C219.978 45.0091 214.679 39.8227 214.679 32.4817C214.679 25.0312 219.868 19.9912 227.506 19.9912C235.144 19.9912 240.296 25.0315 240.296 32.4817C240.296 39.8227 234.997 45.0091 227.506 45.0091ZM227.506 23.972C222.938 23.972 219.576 27.6241 219.576 32.4817C219.576 37.3759 222.938 40.9915 227.506 40.9915C232.037 40.9915 235.399 37.3756 235.399 32.4817C235.399 27.6244 232.038 23.972 227.506 23.972Z',\n fill: 'themed',\n },\n // N\n {\n d: 'M260.798 44.7534L250.456 29.1584L249.652 27.6974C249.506 27.4052 249.433 27.2591 249.323 26.8574V44.5343H244.938V20.4295H250.237L259.994 35.6958C260.688 36.7916 260.981 37.5586 261.273 38.3256V20.4295H265.622V44.7534H260.798Z',\n fill: 'themed',\n },\n // N\n {\n d: 'M287.622 44.7534L277.28 29.1584L276.476 27.6974C276.33 27.4052 276.257 27.2591 276.147 26.8574V44.5343H271.762V20.4295H277.06L286.818 35.6958C287.512 36.7916 287.805 37.5586 288.097 38.3256V20.4295H292.446V44.7534H287.622Z',\n fill: 'themed',\n },\n // A\n {\n d: 'M312.838 44.5343L310.938 38.5812H302.862L300.888 44.5343H296.064L304.798 20.4295H308.928L317.662 44.5343H312.838ZM306.882 25.9443L304.104 34.6732H309.695L306.882 25.9443Z',\n fill: 'themed',\n },\n ],\n '0 0 320 65',\n 320,\n 65,\n);\n","import { buildLogo } from '../logo-shared';\nimport { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HST: LogoDefinition = buildLogo(\n 'Helse Stavanger logo',\n [\n // S\n {\n d: 'M210.981 26.0356C208.424 24.9034 206.343 24.319 204.736 24.319C202.581 24.319 201.193 25.1955 201.193 26.5469C201.193 27.5696 201.777 28.1905 203.494 29.1036C207.183 31.0759 209.593 32.6099 210.725 33.7418C211.748 34.7645 212.369 36.3715 212.369 38.0516C212.369 42.3611 209.228 44.8813 203.896 44.8813C203.165 44.8813 202.435 44.8447 201.741 44.7352C200.025 44.516 199.221 44.2238 196.701 43.0551L195.13 42.3246L197.066 38.0878C198.819 39.0375 199.549 39.4027 200.499 39.7679C201.704 40.2062 203.019 40.4619 203.969 40.4619C206.087 40.4619 207.475 39.5123 207.475 38.0513C207.475 37.0286 206.927 36.3347 205.357 35.4581L201.631 33.3397C197.358 30.8926 196.043 29.2856 196.043 26.6562C196.043 25.4509 196.408 24.2091 196.993 23.2963C197.395 22.6754 198.015 22.0545 198.782 21.5066C200.536 20.3014 202.033 19.8996 204.845 19.8996C206.452 19.8996 207.877 20.0822 209.374 20.5205C210.543 20.8857 211.2 21.1414 212.807 21.9084L210.981 26.0356Z',\n fill: 'themed',\n },\n // T\n {\n d: 'M225.992 24.2094V44.4065H221.39V24.2094H214.159V20.3017H233.224V24.2094H225.992Z',\n fill: 'themed',\n },\n // A\n {\n d: 'M248.564 44.4065L246.664 38.4534H238.593L236.621 44.4065H231.8L240.528 20.3017H244.655L253.384 44.4065H248.564ZM242.611 25.8165L239.835 34.5453H245.423L242.611 25.8165Z',\n fill: 'themed',\n },\n // V\n {\n d: 'M264.598 45.1001H261.384L252.436 20.3014H257.476L262.991 36.5904C263.1 36.9556 263.21 37.3574 263.246 37.7226C263.246 37.3939 263.283 37.1382 263.465 36.5904L268.725 20.3014H273.546L264.598 45.1001Z',\n fill: 'themed',\n },\n // A\n {\n d: 'M289.397 44.4065L287.497 38.4534H279.426L277.454 44.4065H272.633L281.361 20.3017H285.488L294.217 44.4065H289.397ZM283.444 25.8165L280.668 34.5453H286.256L283.444 25.8165Z',\n fill: 'themed',\n },\n // N\n {\n d: 'M313.648 44.6256L303.312 29.0305L302.508 27.5696C302.362 27.2774 302.289 27.1313 302.18 26.7295V44.4065H297.797V20.3017H303.093L312.844 35.568C313.538 36.6637 313.83 37.4307 314.122 38.1977V20.3017H318.469V44.6256H313.648Z',\n fill: 'themed',\n },\n // G\n {\n d: 'M342.757 44.0777C340.2 44.6621 338.703 44.8813 336.694 44.8813C328.696 44.8813 323.144 39.7679 323.144 32.3174C323.144 28.665 324.532 25.4877 327.125 23.1137C329.609 20.8495 332.385 19.8999 336.548 19.8999C338.301 19.8999 340.055 20.0825 341.589 20.4478C342.757 20.7399 343.488 20.9956 345.168 21.7258L344.072 25.5608C343.195 25.2321 342.538 25.0129 342.1 24.8668C340.383 24.2824 338.666 23.9903 337.133 23.9903C331.728 23.9903 327.966 27.3139 327.966 32.0982C327.966 37.0286 332.092 40.7906 337.461 40.7906C338.557 40.7906 339.178 40.681 340.602 40.2793V33.6319H345.204V43.493L342.757 44.0777Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M351.158 44.4065V20.3017H365.84V24.2094H355.76V30.1625H364.014V34.0702H355.76V40.4984H366.315V44.4061H351.158L351.158 44.4065Z',\n fill: 'themed',\n },\n // R\n {\n d: 'M383.261 44.4065L377.747 34.7645H375.446V44.4065H370.844V20.3017H378.878C382.385 20.3017 383.992 20.74 385.416 22.0913C386.731 23.2966 387.389 25.0498 387.389 27.3142C387.389 29.177 386.95 30.6741 386.074 31.8429C385.161 33.0116 384.321 33.523 382.312 34.0708L388.302 44.4068H383.261V44.4065ZM378.441 24.2094H375.446V30.8567H378.441C381.362 30.8567 382.64 29.8341 382.64 27.4235C382.64 25.1225 381.435 24.2094 378.441 24.2094Z',\n fill: 'themed',\n },\n ],\n '0 0 391 65',\n 391,\n 65,\n);\n","import { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HST_SUS: LogoDefinition = {\n viewBox: '0 0 363 65',\n width: 363,\n height: 65,\n label: 'Stavanger universitetssjukehus logo',\n paths: [\n // Accent dots\n {\n d: 'M38.5511 9.41943C38.5511 13.3194 35.3952 16.4766 31.4967 16.4766C27.5983 16.4766 24.4424 13.3194 24.4424 9.41943C24.4424 5.51943 27.5983 2.36229 31.4967 2.36229C35.3952 2.36229 38.5511 5.51943 38.5511 9.41943Z',\n fill: 'accent',\n },\n {\n d: 'M38.5511 30.9623C38.5511 34.8623 35.3952 38.0194 31.4967 38.0194C27.5983 38.0194 24.4424 34.8623 24.4424 30.9623C24.4424 27.0623 27.5983 23.9051 31.4967 23.9051C35.3952 23.9051 38.5511 27.0623 38.5511 30.9623Z',\n fill: 'accent',\n },\n {\n d: 'M60.1164 30.9623C60.1164 34.8623 56.9605 38.0194 53.062 38.0194C49.1636 38.0194 46.0077 34.8623 46.0077 30.9623C46.0077 27.0623 49.1636 23.9051 53.062 23.9051C56.9605 23.9051 60.1164 27.0623 60.1164 30.9623Z',\n fill: 'accent',\n },\n {\n d: 'M38.5511 52.5361C38.5511 56.4361 35.3952 59.5932 31.4967 59.5932C27.5983 59.5932 24.4424 56.4361 24.4424 52.5361C24.4424 48.6361 27.5983 45.479 31.4967 45.479C35.3952 45.479 38.5511 48.6361 38.5511 52.5361Z',\n fill: 'accent',\n },\n // Themed dot\n {\n d: 'M16.9858 30.9623C16.9858 34.8623 13.8299 38.0194 9.93143 38.0194C6.03297 38.0194 2.87708 34.8623 2.87708 30.9623C2.87708 27.0623 6.03297 23.9051 9.93143 23.9051C13.8299 23.9051 16.9858 27.0623 16.9858 30.9623Z',\n fill: 'themed',\n },\n // HELSE\n {\n d: 'M94.4022 37.8145V27.6318H81.2913V37.8145H78.5277V15.5613H81.2913V25.1033H94.4022V15.5613H97.1658V37.8148L94.4022 37.8145Z',\n fill: 'themed',\n },\n {\n d: 'M104.514 37.8145V15.5613H117.018V17.8877H107.278V25.3057H115.333V27.6321H107.278V35.4881H117.321V37.8145H104.514Z',\n fill: 'themed',\n },\n {\n d: 'M122.681 37.8145V15.5613H125.444V35.4881H135.387V37.8145H122.68H122.681Z',\n fill: 'themed',\n },\n {\n d: 'M150.588 19.3375C149.442 18.663 148.97 18.4272 148.262 18.191C147.419 17.9214 146.071 17.719 145.195 17.719C142.667 17.719 140.948 18.9664 140.948 20.8548C140.948 22.507 141.926 23.3499 146.442 25.7437C147.959 26.5531 149.138 27.2947 149.947 28.0029C151.026 28.9132 151.666 30.4305 151.666 32.049C151.666 35.859 148.835 38.2531 144.352 38.2531C142.836 38.2531 141.42 37.9832 140.24 37.5112C139.398 37.1741 138.825 36.8367 137.376 35.859L138.791 33.6672C140.038 34.5104 140.578 34.8137 141.353 35.117C142.33 35.4878 143.409 35.6903 144.555 35.6903C147.184 35.6903 148.768 34.4426 148.768 32.3186C148.768 31.6779 148.667 31.1384 148.431 30.7339C148.06 30.0594 147.419 29.419 146.543 28.9132C146.173 28.7108 144.925 28.0701 142.836 26.9239C139.499 25.1367 138.084 23.3836 138.084 21.0906C138.084 17.5503 141.016 15.1902 145.431 15.1902C146.711 15.1902 148.026 15.3589 149.172 15.7297C150.082 16.033 150.621 16.3029 151.868 17.0449L150.588 19.3375Z',\n fill: 'themed',\n },\n {\n d: 'M157.363 37.8145V15.5613H169.867V17.8877H160.126V25.3057H168.182V27.6321H160.126V35.4881H170.17V37.8145H157.363Z',\n fill: 'themed',\n },\n // STAVANGER\n {\n d: 'M195.617 20.8548C193.258 19.8095 191.337 19.27 189.854 19.27C187.865 19.27 186.585 20.0794 186.585 21.3268C186.585 22.2709 187.124 22.8441 188.708 23.6869C192.112 25.5075 194.337 26.9239 195.382 27.9689C196.325 28.9129 196.898 30.3968 196.898 31.9475C196.898 35.9261 194 38.2528 189.079 38.2528C188.405 38.2528 187.731 38.2191 187.09 38.1179C185.506 37.9154 184.764 37.6458 182.439 36.5668L180.99 35.8924L182.776 31.9809C184.394 32.8578 185.068 33.1949 185.944 33.532C187.056 33.9365 188.27 34.1727 189.146 34.1727C191.101 34.1727 192.382 33.2961 192.382 31.9475C192.382 31.0035 191.876 30.3627 190.427 29.5536L186.989 27.5981C183.046 25.3389 181.833 23.8553 181.833 21.4277C181.833 20.315 182.17 19.1685 182.709 18.3257C183.079 17.7524 183.652 17.1792 184.36 16.6734C185.978 15.5607 187.36 15.1899 189.955 15.1899C191.438 15.1899 192.753 15.3586 194.135 15.7631C195.213 16.1002 195.82 16.3364 197.303 17.0442L195.618 20.8542L195.617 20.8548Z',\n fill: 'themed',\n },\n {\n d: 'M209.47 19.1688V37.8145H205.223V19.1688H198.55V15.561H216.143V19.1688H209.47Z',\n fill: 'themed',\n },\n {\n d: 'M230.3 37.8145L228.547 32.3186H221.098L219.279 37.8145H214.83L222.885 15.561H226.693L234.749 37.8145H230.3ZM224.806 20.6524L222.245 28.7108H227.401L224.806 20.6524Z',\n fill: 'themed',\n },\n {\n d: 'M245.096 38.4552H242.13L233.872 15.5613H238.524L243.613 30.5992C243.714 30.9363 243.815 31.3071 243.849 31.6445C243.849 31.3411 243.883 31.105 244.051 30.5992L248.905 15.5613H253.354L245.096 38.4552Z',\n fill: 'themed',\n },\n {\n d: 'M267.981 37.8145L266.228 32.3186H258.78L256.96 37.8145H252.511L260.566 15.561H264.375L272.43 37.8145H267.981ZM262.487 20.6524L259.926 28.7108H265.083L262.487 20.6524Z',\n fill: 'themed',\n },\n {\n d: 'M290.361 38.017L280.823 23.6198L280.081 22.2709C279.946 22.0013 279.879 21.8663 279.778 21.4955V37.8148H275.734V15.5613H280.621L289.619 29.6552C290.26 30.6667 290.529 31.3749 290.799 32.0828V15.5613H294.81V38.017H290.361H290.361Z',\n fill: 'themed',\n },\n {\n d: 'M317.223 37.5112C314.864 38.0507 313.482 38.2531 311.628 38.2531C304.247 38.2531 299.124 33.5326 299.124 26.6543C299.124 23.2827 300.405 20.349 302.798 18.1576C305.09 16.0671 307.651 15.1905 311.494 15.1905C313.112 15.1905 314.73 15.3592 316.145 15.6963C317.224 15.9659 317.898 16.202 319.448 16.8762L318.437 20.4165C317.628 20.1132 317.021 19.9107 316.617 19.7758C315.033 19.2363 313.449 18.9664 312.033 18.9664C307.045 18.9664 303.574 22.0347 303.574 26.4516C303.574 31.0035 307.382 34.4763 312.337 34.4763C313.348 34.4763 313.921 34.3751 315.235 34.0043V27.8677H319.482V36.9714L317.224 37.5109L317.223 37.5112Z',\n fill: 'themed',\n },\n {\n d: 'M324.976 37.8145V15.5613H338.525V19.1691H329.223V24.665H336.84V28.2728H329.223V34.207H338.963V37.8148L324.976 37.8145Z',\n fill: 'themed',\n },\n {\n d: 'M354.602 37.8145L349.513 28.9132H347.389V37.8145H343.142V15.5613H350.557C353.793 15.5613 355.276 15.9659 356.59 17.2135C357.804 18.3263 358.41 19.9445 358.41 22.035C358.41 23.7544 358.006 25.137 357.197 26.216C356.354 27.295 355.579 27.7671 353.725 28.2728L359.253 37.8148H354.602L354.602 37.8145ZM350.153 19.1688H347.389V25.3054H350.153C352.849 25.3054 354.029 24.3614 354.029 22.1359C354.029 20.0116 352.917 19.1688 350.153 19.1688Z',\n fill: 'themed',\n },\n // stavanger universitetssjukehus (subtitle)\n // s\n {\n d: 'M86.3441 47.9929C85.6529 47.5862 85.3683 47.4438 84.9416 47.3014C84.4336 47.1386 83.6205 47.0167 83.0917 47.0167C81.5673 47.0167 80.5305 47.7691 80.5305 48.9079C80.5305 49.9042 81.1199 50.4125 83.8435 51.8564C84.7581 52.3445 85.4698 52.7918 85.9577 53.2186C86.608 53.7677 86.9945 54.6826 86.9945 55.6589C86.9945 57.9568 85.2869 59.4004 82.5837 59.4004C81.6691 59.4004 80.8151 59.2376 80.1038 58.9528C79.5958 58.7495 79.2498 58.5461 78.3761 57.9565L79.2301 56.6348C79.9822 57.143 80.3074 57.3263 80.7749 57.5092C81.3643 57.733 82.0147 57.855 82.7059 57.855C84.2912 57.855 85.2467 57.1025 85.2467 55.8214C85.2467 55.4351 85.1857 55.1098 85.0434 54.8659C84.8197 54.4592 84.4336 54.0729 83.9051 53.7677C83.6814 53.6457 82.9293 53.2595 81.6691 52.568C79.6567 51.4902 78.8031 50.4329 78.8031 49.0502C78.8031 46.9151 80.5713 45.4916 83.2343 45.4916C84.0066 45.4916 84.7996 45.5932 85.4908 45.817C86.0394 45.9999 86.3649 46.1627 87.117 46.61L86.3447 47.9929H86.3441Z',\n fill: 'themed',\n },\n // t\n {\n d: 'M91.8326 59.4007C90.7757 59.4007 90.0644 58.5669 90.0644 57.347V51.2058H88.5195V50.3109L90.0644 49.9246V47.2405H91.5888V49.9246H94.0281V51.2058H91.5888V56.4522C91.5888 56.5336 91.6296 57.3062 91.6497 57.469C91.6903 57.7333 91.853 57.8757 92.1782 57.8757C92.5643 57.8757 92.8691 57.7129 93.5198 57.2251L94.15 58.2419C93.0727 59.1367 92.5647 59.401 91.8329 59.401L91.8326 59.4007Z',\n fill: 'themed',\n },\n // a\n {\n d: 'M102.769 59.4007C101.508 59.3193 101.061 58.994 100.98 58.1196C100.512 58.5263 100.309 58.6888 100.004 58.8516C99.4352 59.1769 98.7034 59.3803 98.0531 59.3803C96.5692 59.3803 95.5936 58.4245 95.5936 56.9604C95.5936 55.6183 96.3049 54.7235 97.6465 54.3982L100.838 53.6457V51.9783C100.838 51.2259 100.269 50.8396 99.0896 50.8396C98.1341 50.8396 97.687 51.1039 97.687 51.6326C97.687 51.7341 97.7075 51.8155 97.7684 51.9783L96.2236 52.3036C96.0812 52.0597 96.0608 51.9579 96.0608 51.7344C96.0608 50.5143 97.4024 49.6807 99.3742 49.6807C101.224 49.6807 102.383 50.5551 102.383 51.9786V57.6318C102.423 57.8757 102.667 58.0385 103.135 58.1199L102.769 59.4007ZM100.838 54.9269L97.3823 55.8217C97.1586 56.2488 97.1181 56.4522 97.1181 56.818C97.1181 57.5501 97.606 58.0178 98.3578 58.0178C99.049 58.0178 99.5165 57.794 100.838 56.8385V54.9269Z',\n fill: 'themed',\n },\n // v\n {\n d: 'M109.375 59.4007H107.973L104.517 49.9246H106.184L108.725 57.3873L108.766 57.7534L108.786 57.4077L111.286 49.9246H112.953L109.375 59.4007Z',\n fill: 'themed',\n },\n // a\n {\n d: 'M121.531 59.4007C120.271 59.3193 119.824 58.994 119.742 58.1196C119.275 58.5263 119.072 58.6888 118.767 58.8516C118.198 59.1769 117.466 59.3803 116.816 59.3803C115.332 59.3803 114.356 58.4245 114.356 56.9604C114.356 55.6183 115.067 54.7235 116.409 54.3982L119.6 53.6457V51.9783C119.6 51.2259 119.031 50.8396 117.852 50.8396C116.897 50.8396 116.449 51.1039 116.449 51.6326C116.449 51.7341 116.47 51.8155 116.531 51.9783L114.986 52.3036C114.844 52.0597 114.823 51.9579 114.823 51.7344C114.823 50.5143 116.165 49.6807 118.137 49.6807C119.986 49.6807 121.145 50.5551 121.145 51.9786V57.6318C121.186 57.8757 121.43 58.0385 121.897 58.1199L121.531 59.4007ZM119.6 54.9269L116.145 55.8217C115.921 56.2488 115.881 56.4522 115.881 56.818C115.881 57.5501 116.368 58.0178 117.12 58.0178C117.811 58.0178 118.279 57.794 119.6 56.8385V54.9269Z',\n fill: 'themed',\n },\n // n\n {\n d: 'M130.821 59.1364V52.6088C130.821 51.9988 130.78 51.7954 130.679 51.5311C130.537 51.2262 130.171 51.043 129.744 51.043C128.809 51.043 127.812 51.7344 126.207 53.5034V59.1361H124.682V49.9243H126.207V51.8561C126.837 51.1442 127.02 50.9612 127.467 50.5954C128.158 50.0057 129.073 49.6804 129.926 49.6804C131.553 49.6804 132.345 50.514 132.345 52.2427V59.1361H130.821L130.821 59.1364Z',\n fill: 'themed',\n },\n // g\n {\n d: 'M142.001 51.2058C142.367 51.7549 142.55 52.3649 142.55 53.1171C142.55 54.9878 140.903 56.5946 138.972 56.5946C138.85 56.5946 138.667 56.5741 138.403 56.5537C138.342 56.5537 138.241 56.5333 138.098 56.5333C137.244 57.2452 136.899 57.6516 136.899 57.9159C136.899 58.1601 137.102 58.2412 137.671 58.2412H141.106C142.814 58.2412 143.586 58.9123 143.586 60.3968C143.586 62.5523 141.371 64.2807 138.606 64.2807C136.675 64.2807 135.008 63.2639 135.008 62.0642C135.008 61.7998 135.11 61.4745 135.293 61.1084C135.557 60.6001 135.821 60.2541 136.513 59.5224C135.578 59.258 135.191 58.9528 135.191 58.4242C135.191 57.8345 135.761 57.143 137.001 56.1263C135.842 55.4958 135.232 54.4793 135.232 53.1982C135.232 51.1241 136.757 49.6801 138.911 49.6801C139.582 49.6801 139.968 49.7615 140.863 50.0664H142.265L143.932 49.924V51.2051H142.001V51.2058ZM141.107 59.6446H137.672L137.367 60.1123C136.777 61.0273 136.594 61.3934 136.594 61.7392C136.594 62.4306 137.509 62.9185 138.749 62.9185C140.619 62.9185 142.306 61.8203 142.306 60.58C142.306 59.9495 141.92 59.6446 141.107 59.6446H141.107ZM138.81 50.8396C137.692 50.8396 136.777 51.8768 136.777 53.1375C136.777 54.3982 137.691 55.4354 138.83 55.4354C139.988 55.4354 140.883 54.4391 140.883 53.1375C140.883 51.8564 139.968 50.8396 138.809 50.8396H138.81Z',\n fill: 'themed',\n },\n // e\n {\n d: 'M146.799 54.3982C146.799 56.6351 147.937 57.9976 149.807 57.9976C150.62 57.9976 151.21 57.7739 152.206 57.0827L152.815 58.2824C151.453 59.1364 150.681 59.4007 149.482 59.4007C146.92 59.4007 145.193 57.4485 145.193 54.5406C145.193 51.6125 146.92 49.6807 149.543 49.6807C151.697 49.6807 153.1 51.2058 153.1 53.5037V54.3985H146.798L146.799 54.3982ZM149.441 51.0634C148.161 51.0634 147.266 51.836 146.921 53.2595H151.433C151.413 51.836 150.702 51.0634 149.441 51.0634Z',\n fill: 'themed',\n },\n // r\n {\n d: 'M159.951 51.5921C159.645 51.3277 159.483 51.2262 159.3 51.2262C158.731 51.2262 157.999 52.0597 157.125 53.646V59.1364H155.601V49.9246H157.125V51.5921C158.264 50.128 158.833 49.6807 159.524 49.6807C159.869 49.6807 160.296 49.9045 160.703 50.3112L159.951 51.5921Z',\n fill: 'themed',\n },\n // u\n {\n d: 'M173.57 59.1364V57.2251C172.493 58.7095 171.293 59.4211 169.911 59.4211C168.305 59.4211 167.452 58.5263 167.452 56.8388V49.925H168.976V56.4525C168.976 57.5912 169.301 58.0589 170.074 58.0589C171.05 58.0589 172.513 57.0217 173.57 55.558V49.9253H175.115V59.137H173.57V59.1364Z',\n fill: 'themed',\n },\n // n\n {\n d: 'M184.669 59.1364V52.6088C184.669 51.9988 184.628 51.7954 184.526 51.5311C184.384 51.2262 184.018 51.043 183.591 51.043C182.656 51.043 181.66 51.7344 180.054 53.5034V59.1361H178.53V49.9243H180.054V51.8561C180.685 51.1442 180.868 50.9612 181.315 50.5954C182.006 50.0057 182.92 49.6804 183.774 49.6804C185.4 49.6804 186.193 50.514 186.193 52.2427V59.1361H184.668L184.669 59.1364Z',\n fill: 'themed',\n },\n // i\n {\n d: 'M190.381 47.7081C189.832 47.7081 189.385 47.2606 189.385 46.7118C189.385 46.163 189.833 45.7154 190.381 45.7154C190.93 45.7154 191.377 46.163 191.377 46.7118C191.377 47.2606 190.93 47.7081 190.381 47.7081ZM189.609 59.1364V49.9246H191.133V59.1364H189.609Z',\n fill: 'themed',\n },\n // v\n {\n d: 'M198.085 59.4007H196.683L193.227 49.9246H194.894L197.435 57.3873L197.476 57.7534L197.496 57.4077L199.996 49.9246H201.663L198.085 59.4007H198.085Z',\n fill: 'themed',\n },\n // e\n {\n d: 'M204.448 54.3982C204.448 56.6351 205.586 57.9976 207.456 57.9976C208.269 57.9976 208.858 57.7739 209.854 57.0827L210.464 58.2824C209.102 59.1364 208.33 59.4007 207.13 59.4007C204.569 59.4007 202.842 57.4485 202.842 54.5406C202.842 51.6125 204.569 49.6807 207.191 49.6807C209.346 49.6807 210.749 51.2058 210.749 53.5037V54.3985H204.447L204.448 54.3982ZM207.09 51.0634C205.81 51.0634 204.915 51.836 204.57 53.2595H209.082C209.062 51.836 208.35 51.0634 207.09 51.0634Z',\n fill: 'themed',\n },\n // r\n {\n d: 'M217.599 51.5921C217.294 51.3277 217.132 51.2262 216.949 51.2262C216.38 51.2262 215.648 52.0597 214.774 53.646V59.1364H213.25V49.9246H214.774V51.5921C215.913 50.128 216.482 49.6807 217.173 49.6807C217.518 49.6807 217.945 49.9045 218.352 50.3112L217.599 51.5921Z',\n fill: 'themed',\n },\n // s\n {\n d: 'M223.007 59.4007C222.62 59.4007 222.193 59.3599 221.726 59.2788C220.852 59.116 220.466 58.9736 219.551 58.5062L220.181 57.2251L220.649 57.469C221.563 57.9571 222.417 58.0995 222.986 58.0995C223.921 58.0995 224.613 57.5912 224.613 56.8793C224.613 56.6555 224.531 56.3912 224.43 56.2488C224.064 55.7202 223.637 55.4558 221.99 54.7848C220.202 54.0323 219.592 53.4021 219.592 52.2838C219.592 50.6774 220.934 49.681 223.088 49.681C223.474 49.681 223.881 49.7012 224.267 49.7826C224.958 49.9045 225.283 50.0469 226.056 50.474L225.304 51.7143C224.714 51.3485 224.45 51.2262 223.982 51.1042C223.617 51.0024 223.271 50.9414 222.925 50.9414C221.889 50.9414 221.218 51.4091 221.218 52.1006C221.218 52.3244 221.299 52.5277 221.442 52.6701C221.807 53.036 222.051 53.1784 223.718 53.8698C225.67 54.6833 226.218 55.3138 226.218 56.7574C226.218 58.4047 225.019 59.401 223.007 59.401L223.007 59.4007Z',\n fill: 'themed',\n },\n // i\n {\n d: 'M229.959 47.7081C229.41 47.7081 228.963 47.2606 228.963 46.7118C228.963 46.163 229.41 45.7154 229.959 45.7154C230.507 45.7154 230.955 46.163 230.955 46.7118C230.955 47.2606 230.507 47.7081 229.959 47.7081ZM229.187 59.1364V49.9246H230.711V59.1364H229.187Z',\n fill: 'themed',\n },\n // t\n {\n d: 'M236.077 59.4007C235.02 59.4007 234.309 58.5669 234.309 57.347V51.2058H232.764V50.3109L234.309 49.9246V47.2405H235.833V49.9246H238.273V51.2058H235.833V56.4522C235.833 56.5336 235.874 57.3062 235.894 57.469C235.935 57.7333 236.098 57.8757 236.423 57.8757C236.809 57.8757 237.114 57.7129 237.764 57.2251L238.395 58.2419C237.317 59.1367 236.809 59.401 236.078 59.401L236.077 59.4007Z',\n fill: 'themed',\n },\n // e\n {\n d: 'M241.22 54.3982C241.22 56.6351 242.358 57.9976 244.228 57.9976C245.042 57.9976 245.631 57.7739 246.627 57.0827L247.237 58.2824C245.875 59.1364 245.102 59.4007 243.903 59.4007C241.342 59.4007 239.614 57.4485 239.614 54.5406C239.614 51.6125 241.342 49.6807 243.964 49.6807C246.119 49.6807 247.521 51.2058 247.521 53.5037V54.3985H241.22L241.22 54.3982ZM243.863 51.0634C242.582 51.0634 241.688 51.836 241.342 53.2595H245.855C245.834 51.836 245.123 51.0634 243.863 51.0634Z',\n fill: 'themed',\n },\n // t\n {\n d: 'M251.892 59.4007C250.835 59.4007 250.124 58.5669 250.124 57.347V51.2058H248.579V50.3109L250.124 49.9246V47.2405H251.648V49.9246H254.087V51.2058H251.648V56.4522C251.648 56.5336 251.689 57.3062 251.709 57.469C251.75 57.7333 251.912 57.8757 252.238 57.8757C252.624 57.8757 252.928 57.7129 253.579 57.2251L254.209 58.2419C253.132 59.1367 252.624 59.401 251.892 59.401L251.892 59.4007Z',\n fill: 'themed',\n },\n // s\n {\n d: 'M259.21 59.4007C258.824 59.4007 258.397 59.3599 257.929 59.2788C257.055 59.116 256.669 58.9736 255.755 58.5062L256.385 57.2251L256.852 57.469C257.767 57.9571 258.621 58.0995 259.19 58.0995C260.125 58.0995 260.816 57.5912 260.816 56.8793C260.816 56.6555 260.735 56.3912 260.633 56.2488C260.267 55.7202 259.84 55.4558 258.194 54.7848C256.405 54.0323 255.795 53.4021 255.795 52.2838C255.795 50.6774 257.137 49.681 259.292 49.681C259.678 49.681 260.084 49.7012 260.47 49.7826C261.161 49.9045 261.487 50.0469 262.259 50.474L261.507 51.7143C260.918 51.3485 260.653 51.2262 260.186 51.1042C259.82 51.0024 259.474 50.9414 259.129 50.9414C258.092 50.9414 257.421 51.4091 257.421 52.1006C257.421 52.3244 257.503 52.5277 257.645 52.6701C258.011 53.036 258.255 53.1784 259.922 53.8698C261.873 54.6833 262.422 55.3138 262.422 56.7574C262.422 58.4047 261.223 59.401 259.21 59.401L259.21 59.4007Z',\n fill: 'themed',\n },\n // s\n {\n d: 'M268.296 59.4007C267.91 59.4007 267.483 59.3599 267.015 59.2788C266.141 59.116 265.755 58.9736 264.841 58.5062L265.471 57.2251L265.938 57.469C266.853 57.9571 267.707 58.0995 268.276 58.0995C269.211 58.0995 269.902 57.5912 269.902 56.8793C269.902 56.6555 269.821 56.3912 269.719 56.2488C269.354 55.7202 268.927 55.4558 267.28 54.7848C265.491 54.0323 264.882 53.4021 264.882 52.2838C264.882 50.6774 266.223 49.681 268.378 49.681C268.764 49.681 269.17 49.7012 269.557 49.7826C270.247 49.9045 270.573 50.0469 271.345 50.474L270.593 51.7143C270.004 51.3485 269.739 51.2262 269.272 51.1042C268.906 51.0024 268.56 50.9414 268.215 50.9414C267.178 50.9414 266.507 51.4091 266.507 52.1006C266.507 52.3244 266.589 52.5277 266.731 52.6701C267.097 53.036 267.341 53.1784 269.008 53.8698C270.959 54.6833 271.508 55.3138 271.508 56.7574C271.508 58.4047 270.309 59.401 268.296 59.401L268.296 59.4007Z',\n fill: 'themed',\n },\n // j\n {\n d: 'M274.923 62.7355C274.537 63.3861 274.354 63.6505 273.785 64.3419L272.769 63.488C273.459 62.5322 273.643 62.2474 273.947 61.6172C274.293 60.9257 274.435 60.2346 274.435 59.2583V49.9246H275.96V60.6614C275.533 61.6782 275.329 62.0645 274.923 62.7355H274.923ZM275.187 47.6877C274.639 47.6877 274.191 47.2401 274.191 46.6914C274.191 46.1426 274.639 45.695 275.187 45.695C275.736 45.695 276.183 46.1426 276.183 46.6914C276.183 47.2401 275.736 47.6877 275.187 47.6877Z',\n fill: 'themed',\n },\n // u\n {\n d: 'M285.493 59.1364V57.2251C284.416 58.7095 283.216 59.4211 281.834 59.4211C280.228 59.4211 279.375 58.5263 279.375 56.8388V49.925H280.899V56.4525C280.899 57.5912 281.224 58.0589 281.997 58.0589C282.973 58.0589 284.436 57.0217 285.493 55.558V49.9253H287.038V59.137H285.493V59.1364Z',\n fill: 'themed',\n },\n // k\n {\n d: 'M290.372 59.1364V44.3124H291.896V59.1364H290.372ZM295.738 59.1364L291.937 54.1339L295.738 49.9246H297.73L293.807 54.1543L297.75 59.1364H295.738H295.738Z',\n fill: 'themed',\n },\n // e\n {\n d: 'M300.211 54.3982C300.211 56.6351 301.349 57.9976 303.219 57.9976C304.032 57.9976 304.621 57.7739 305.617 57.0827L306.227 58.2824C304.865 59.1364 304.093 59.4007 302.893 59.4007C300.332 59.4007 298.604 57.4485 298.604 54.5406C298.604 51.6125 300.332 49.6807 302.954 49.6807C305.109 49.6807 306.512 51.2058 306.512 53.5037V54.3985H300.21L300.211 54.3982ZM302.853 51.0634C301.573 51.0634 300.678 51.836 300.332 53.2595H304.845C304.825 51.836 304.113 51.0634 302.853 51.0634Z',\n fill: 'themed',\n },\n // h\n {\n d: 'M314.968 59.1364V52.6088C314.968 51.9988 314.948 51.7954 314.826 51.5311C314.684 51.2262 314.338 51.043 313.911 51.043C312.956 51.043 311.96 51.7344 310.374 53.5034V59.1361H308.85V44.312H310.374V51.8564C311.005 51.1445 311.167 50.9615 311.615 50.5957C312.326 50.006 313.22 49.6807 314.094 49.6807C315.721 49.6807 316.513 50.5143 316.513 52.243V59.1364H314.968Z',\n fill: 'themed',\n },\n // u\n {\n d: 'M325.945 59.1364V57.2251C324.868 58.7095 323.668 59.4211 322.286 59.4211C320.68 59.4211 319.827 58.5263 319.827 56.8388V49.925H321.351V56.4525C321.351 57.5912 321.676 58.0589 322.449 58.0589C323.425 58.0589 324.888 57.0217 325.945 55.558V49.9253H327.49V59.137H325.945V59.1364Z',\n fill: 'themed',\n },\n // s\n {\n d: 'M333.812 59.4007C333.425 59.4007 332.999 59.3599 332.531 59.2788C331.657 59.116 331.271 58.9736 330.356 58.5062L330.986 57.2251L331.454 57.469C332.369 57.9571 333.223 58.0995 333.791 58.0995C334.727 58.0995 335.418 57.5912 335.418 56.8793C335.418 56.6555 335.336 56.3912 335.235 56.2488C334.869 55.7202 334.442 55.4558 332.796 54.7848C331.007 54.0323 330.397 53.4021 330.397 52.2838C330.397 50.6774 331.739 49.681 333.893 49.681C334.279 49.681 334.686 49.7012 335.072 49.7826C335.763 49.9045 336.089 50.0469 336.861 50.474L336.109 51.7143C335.519 51.3485 335.255 51.2262 334.787 51.1042C334.422 51.0024 334.076 50.9414 333.731 50.9414C332.694 50.9414 332.023 51.4091 332.023 52.1006C332.023 52.3244 332.104 52.5277 332.247 52.6701C332.612 53.036 332.856 53.1784 334.523 53.8698C336.475 54.6833 337.024 55.3138 337.024 56.7574C337.024 58.4047 335.824 59.401 333.812 59.401L333.812 59.4007Z',\n fill: 'themed',\n },\n ],\n};\n","import { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HVE: LogoDefinition = {\n viewBox: '0 0 240 61',\n width: 240,\n height: 61,\n label: 'Helse Vest logo',\n paths: [\n // Accent dots (center)\n {\n d: 'M136.787 7.41402C136.787 11.5106 133.46 14.8302 129.357 14.8302C125.254 14.8302 121.932 11.5106 121.932 7.41402C121.932 3.31748 125.259 0 129.357 0C133.456 0 136.787 3.31964 136.787 7.41402Z',\n fill: 'accent',\n },\n {\n d: 'M136.787 30.0374C136.787 34.1318 133.46 37.4493 129.357 37.4493C125.254 37.4493 121.932 34.1297 121.932 30.0374C121.932 25.9452 125.259 22.6188 129.357 22.6188C133.456 22.6188 136.787 25.9409 136.787 30.0374Z',\n fill: 'accent',\n },\n {\n d: 'M159.48 30.0374C159.48 34.1318 156.153 37.4493 152.053 37.4493C147.952 37.4493 144.625 34.1297 144.625 30.0374C144.625 25.9452 147.95 22.6188 152.053 22.6188C156.156 22.6188 159.48 25.9409 159.48 30.0374Z',\n fill: 'accent',\n },\n {\n d: 'M136.787 52.702C136.787 56.7942 133.46 60.116 129.357 60.116C125.254 60.116 121.932 56.7942 121.932 52.702C121.932 48.6098 125.259 45.2833 129.357 45.2833C133.456 45.2833 136.787 48.6033 136.787 52.702Z',\n fill: 'accent',\n },\n // Themed dot\n {\n d: 'M114.11 30.0374C114.11 34.1318 110.785 37.4493 106.682 37.4493C102.579 37.4493 99.2563 34.1297 99.2563 30.0374C99.2563 25.9452 102.581 22.6188 106.682 22.6188C110.783 22.6188 114.11 25.9409 114.11 30.0374Z',\n fill: 'themed',\n },\n // HELSE\n {\n d: 'M14.3338 40.0273V30.8515H2.49643V40.0273H0V19.9711H2.49643V28.5712H14.3338V19.9711H16.8302V40.0273H14.3338Z',\n fill: 'themed',\n },\n {\n d: 'M23.8173 40.0273V19.9711H35.1068V22.0675H26.3115V28.7529H33.5835V30.8493H26.3115V37.9287H35.3809V40.0251H23.8173V40.0273Z',\n fill: 'themed',\n },\n { d: 'M40.5774 40.0273V19.9711H43.0738V37.9309H52.0511V40.0273H40.5774Z', fill: 'themed' },\n {\n d: 'M66.1307 23.374C65.0962 22.768 64.6688 22.5535 64.0311 22.3411C63.2707 22.0982 62.0542 21.9165 61.2606 21.9165C58.979 21.9165 57.4253 23.0413 57.4253 24.744C57.4253 26.2322 58.3085 26.9914 62.3872 29.1491C63.757 29.8777 64.8222 30.5475 65.5523 31.1864C66.5253 32.0069 67.1038 33.3747 67.1038 34.8344C67.1038 38.2658 64.5482 40.4257 60.5002 40.4257C59.1303 40.4257 57.8525 40.1827 56.7873 39.7562C56.0269 39.4519 55.5095 39.1498 54.2013 38.2658L55.4788 36.292C56.6053 37.0534 57.092 37.327 57.7933 37.6003C58.6746 37.9331 59.6499 38.1148 60.6843 38.1148C63.058 38.1148 64.4893 36.99 64.4893 35.0752C64.4893 34.4974 64.3972 34.0139 64.1845 33.6483C63.8513 33.0423 63.2707 32.4644 62.4814 32.0069C62.1463 31.8256 61.0197 31.2477 59.1346 30.2148C56.1211 28.604 54.8433 27.0242 54.8433 24.9585C54.8433 21.7679 57.491 19.6405 61.4776 19.6405C62.6348 19.6405 63.8206 19.7937 64.8572 20.1265C65.6794 20.4001 66.1657 20.6431 67.2923 21.3126L66.1351 23.3783L66.1307 23.374Z',\n fill: 'themed',\n },\n {\n d: 'M72.6051 40.0273V19.9711H83.8947V22.0675H75.0994V28.7529H82.3713V30.8493H75.0994V37.9287H84.1687V40.0251H72.6051V40.0273Z',\n fill: 'themed',\n },\n // VEST\n {\n d: 'M182.5 40.6114H179.819L172.365 19.9773H176.565L181.161 33.5298C181.253 33.8341 181.343 34.169 181.373 34.4729C181.373 34.1996 181.406 33.9851 181.558 33.5298L185.939 19.9773H189.956L182.502 40.6114H182.5Z',\n fill: 'themed',\n },\n {\n d: 'M193.079 40.0338V19.9776H205.314V23.2295H196.915V28.1818H203.792V31.4337H196.915V36.7841H205.71V40.0338H193.079Z',\n fill: 'themed',\n },\n {\n d: 'M220.886 24.7505C218.753 23.8073 217.019 23.3214 215.681 23.3214C213.885 23.3214 212.728 24.0503 212.728 25.1751C212.728 26.0263 213.217 26.5426 214.646 27.3022C217.719 28.9433 219.726 30.2191 220.671 31.1601C221.523 32.0113 222.041 33.3484 222.041 34.7468C222.041 38.3336 219.424 40.43 214.979 40.43C214.372 40.43 213.763 40.3994 213.184 40.3074C211.755 40.1257 211.085 39.8831 208.985 38.909L207.676 38.303L209.287 34.7775C210.749 35.5674 211.356 35.8716 212.15 36.1759C213.153 36.5415 214.249 36.7535 215.04 36.7535C216.805 36.7535 217.962 35.9657 217.962 34.749C217.962 33.8978 217.504 33.3221 216.196 32.5913L213.092 30.8276C209.531 28.7922 208.435 27.4554 208.435 25.2671C208.435 24.2645 208.739 23.2316 209.226 22.4724C209.559 21.9561 210.079 21.4395 210.718 20.9842C212.178 19.9819 213.425 19.6473 215.77 19.6473C217.109 19.6473 218.295 19.8006 219.544 20.1636C220.518 20.4679 221.066 20.6802 222.407 21.3169L220.886 24.7505Z',\n fill: 'themed',\n },\n {\n d: 'M233.69 23.2295V40.0338H229.854V23.2295H223.829V19.9776H239.715V23.2295H233.69Z',\n fill: 'themed',\n },\n ],\n};\n","import { buildLogo } from '../logo-shared';\nimport { LogoDefinition } from '../logo-types';\n\nexport const LOGO_HVIKT: LogoDefinition = buildLogo(\n 'Helse Vest IKT logo',\n [\n // V\n {\n d: 'M203.757 44.9159H200.593L191.784 20.4796H196.746L202.175 36.5306C202.283 36.8905 202.391 37.2864 202.427 37.6463C202.427 37.3224 202.463 37.0704 202.643 36.5306L207.821 20.4796H212.567L203.757 44.9159Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M215.911 44.2324V20.4799H230.365V24.3306H220.442V30.1966H228.568V34.0473H220.442V40.3815H230.833V44.2321H215.911L215.911 44.2324Z',\n fill: 'themed',\n },\n // S\n {\n d: 'M248.415 26.1301C245.898 25.0144 243.848 24.4386 242.266 24.4386C240.145 24.4386 238.779 25.3023 238.779 26.6339C238.779 27.6417 239.354 28.2535 241.044 29.1532C244.675 31.0967 247.049 32.6083 248.163 33.7237C249.17 34.7314 249.781 36.315 249.781 37.9705C249.781 42.217 246.689 44.7003 241.44 44.7003C240.72 44.7003 240.001 44.6643 239.318 44.5564C237.629 44.3404 236.837 44.0525 234.356 42.9008L232.81 42.181L234.716 38.0062C236.442 38.9419 237.161 39.3018 238.096 39.6617C239.282 40.0936 240.577 40.3455 241.512 40.3455C243.597 40.3455 244.963 39.4098 244.963 37.9702C244.963 36.9625 244.424 36.2787 242.878 35.4149L239.21 33.3275C235.003 30.9161 233.709 29.3326 233.709 26.7416C233.709 25.5539 234.068 24.3303 234.644 23.4308C235.039 22.819 235.651 22.2072 236.406 21.6673C238.132 20.4797 239.606 20.0838 242.374 20.0838C243.956 20.0838 245.359 20.2637 246.833 20.6956C247.983 21.0555 248.631 21.3074 250.212 22.0632L248.415 26.1301Z',\n fill: 'themed',\n },\n // T\n {\n d: 'M263.194 24.3306V44.2324H258.663V24.3306H251.544V20.4799H270.313V24.3306H263.194Z',\n fill: 'themed',\n },\n // I\n { d: 'M283.545 44.2324V20.4799H286.493V44.2324H283.545Z', fill: 'themed' },\n // K\n {\n d: 'M294.331 44.2324V20.4799H297.28V44.2324H294.331ZM306.988 44.2324L297.496 32.2481L306.772 20.4799H310.152L300.875 32.0324L310.619 44.2324H306.988Z',\n fill: 'themed',\n },\n // T\n {\n d: 'M322.089 22.963V44.2324H319.141V22.963H311.231V20.4796H330V22.963H322.089Z',\n fill: 'themed',\n },\n ],\n '0 0 336 65',\n 336,\n 65,\n);\n","import { LogoDefinition } from '../logo-types';\n\nexport const LOGO_SAV: LogoDefinition = {\n viewBox: '0 0 496 65',\n width: 496,\n height: 65,\n label: 'Sjukehusapoteka Vest logo',\n paths: [\n // Accent dots\n {\n d: 'M40.2723 9.18294C40.2723 13.403 36.855 16.8201 32.6373 16.8201C28.4195 16.8201 25.0074 13.4048 25.0074 9.18294C25.0074 4.96104 28.4211 1.54761 32.6354 1.54761C36.8497 1.54761 40.2705 4.96475 40.2705 9.18294H40.2723Z',\n fill: 'accent',\n },\n {\n d: 'M40.2723 32.4818C40.2723 36.6944 36.855 40.1134 32.6373 40.1134C28.4195 40.1134 25.0074 36.6944 25.0074 32.4818C25.0074 28.2691 28.4211 24.8412 32.6373 24.8412C36.8534 24.8412 40.2723 28.2602 40.2723 32.4818Z',\n fill: 'accent',\n },\n {\n d: 'M63.5945 32.4818C63.5945 36.6944 60.1753 40.1134 55.961 40.1134C51.7467 40.1134 48.3275 36.6944 48.3275 32.4818C48.3275 28.2691 51.7449 24.8412 55.961 24.8412C60.1772 24.8412 63.5945 28.2602 63.5945 32.4818Z',\n fill: 'accent',\n },\n {\n d: 'M40.2723 55.8208C40.2723 60.0371 36.855 63.4524 32.6373 63.4524C28.4195 63.4524 25.0074 60.0352 25.0074 55.8208C25.0074 51.6063 28.4211 48.1783 32.6373 48.1783C36.8534 48.1783 40.2723 51.6026 40.2723 55.8208Z',\n fill: 'accent',\n },\n // Themed dot\n {\n d: 'M16.9645 32.4818C16.9645 36.6944 13.549 40.1134 9.33103 40.1134C5.11301 40.1134 1.69751 36.6944 1.69751 32.4818C1.69751 28.2691 5.11672 24.8412 9.33103 24.8412C13.5453 24.8412 16.9645 28.2602 16.9645 32.4818Z',\n fill: 'themed',\n },\n // SJUKEHUS\n // S\n {\n d: 'M98.6609 24.8668C97.4197 24.1363 96.9086 23.8807 96.142 23.625C95.2293 23.3328 93.7691 23.1137 92.8199 23.1137C90.0819 23.1137 88.2201 24.4651 88.2201 26.5104C88.2201 28.3001 89.2788 29.2128 94.1703 31.806C95.8131 32.6826 97.0908 33.4861 97.967 34.2531C99.1352 35.2393 99.8288 36.8828 99.8288 38.636C99.8288 42.7629 96.7623 45.3561 91.9073 45.3561C90.2645 45.3561 88.7312 45.0639 87.4535 44.5525C86.5408 44.1873 85.9202 43.8221 84.3505 42.7629L85.8837 40.3888C87.2345 41.3019 87.8186 41.6306 88.6582 41.9593C89.7169 42.3611 90.8851 42.5803 92.1263 42.5803C94.9738 42.5803 96.6896 41.2289 96.6896 38.9279C96.6896 38.2339 96.5801 37.6495 96.3245 37.2113C95.9229 36.4808 95.2293 35.7868 94.2802 35.239C93.8786 35.0198 92.5279 34.3259 90.2648 33.0841C86.6507 31.1483 85.1177 29.2491 85.1177 26.7654C85.1177 22.9308 88.2938 20.3741 93.0758 20.3741C94.463 20.3741 95.8864 20.5567 97.1276 20.9585C98.1133 21.2872 98.6974 21.5794 100.048 22.3829L98.6609 24.8662V24.8668Z',\n fill: 'themed',\n },\n // J\n {\n d: 'M107.131 49.8847C106.255 51.2726 105.707 51.9301 104.174 53.391L102.239 51.7474C103.918 49.8847 104.393 49.2273 104.904 48.278C105.597 46.8901 105.999 44.9543 105.999 42.7997V20.7765H108.992V45.5752C108.408 47.6206 108.08 48.3876 107.13 49.885L107.131 49.8847Z',\n fill: 'themed',\n },\n // U\n {\n d: 'M132.392 43.3473C130.603 44.8082 128.377 45.5752 125.785 45.5752C123.193 45.5752 120.93 44.8082 119.141 43.3473C117.133 41.7037 116.33 39.7683 116.33 36.6272V20.7765H119.323V35.7141C119.323 38.7091 119.543 39.5491 120.711 40.8274C121.915 42.1788 123.668 42.9093 125.749 42.9093C127.829 42.9093 129.582 42.1788 130.786 40.8274C131.954 39.5491 132.173 38.7091 132.173 35.7141V20.7765H135.167V36.6272C135.167 39.841 134.4 41.7037 132.392 43.3473H132.392Z',\n fill: 'themed',\n },\n // K\n {\n d: 'M142.505 44.8813V20.7765H145.498V44.8813H142.505ZM155.355 44.8813L145.717 32.7192L155.135 20.7765H158.567L149.148 32.5003L159.041 44.8813H155.355Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M163.35 44.8813V20.7765H176.893V23.2966H166.343V31.3316H175.068V33.8517H166.343V42.3614H177.221V44.8816L163.35 44.8813Z',\n fill: 'themed',\n },\n // H\n {\n d: 'M200.22 44.8813V33.8514H186.019V44.8813H183.026V20.7765H186.019V31.1124H200.22V20.7765H203.213V44.8813H200.22Z',\n fill: 'themed',\n },\n // U\n {\n d: 'M226.614 43.3473C224.825 44.8082 222.598 45.5752 220.006 45.5752C217.415 45.5752 215.151 44.8082 213.363 43.3473C211.355 41.7037 210.552 39.7683 210.552 36.6272V20.7765H213.545V35.7141C213.545 38.7091 213.764 39.5491 214.932 40.8274C216.137 42.1788 217.889 42.9093 219.97 42.9093C222.051 42.9093 223.803 42.1788 225.008 40.8274C226.176 39.5491 226.395 38.7091 226.395 35.7141V20.7765H229.389V36.6272C229.389 39.841 228.622 41.7037 226.614 43.3473Z',\n fill: 'themed',\n },\n // S\n {\n d: 'M248.883 24.8668C247.641 24.1363 247.13 23.8807 246.364 23.625C245.451 23.3328 243.991 23.1137 243.042 23.1137C240.304 23.1137 238.442 24.4651 238.442 26.5104C238.442 28.3001 239.5 29.2128 244.392 31.806C246.035 32.6826 247.313 33.4861 248.189 34.2531C249.357 35.2393 250.05 36.8828 250.05 38.636C250.05 42.7629 246.984 45.3561 242.129 45.3561C240.486 45.3561 238.953 45.0639 237.675 44.5525C236.763 44.1873 236.142 43.8221 234.572 42.7629L236.105 40.3888C237.456 41.3019 238.04 41.6306 238.88 41.9593C239.939 42.3611 241.107 42.5803 242.348 42.5803C245.195 42.5803 246.911 41.2289 246.911 38.9279C246.911 38.2339 246.802 37.6495 246.546 37.2113C246.145 36.4808 245.451 35.7868 244.502 35.239C244.1 35.0198 242.75 34.3259 240.486 33.0841C236.872 31.1483 235.339 29.2491 235.339 26.7654C235.339 22.9308 238.515 20.3741 243.297 20.3741C244.685 20.3741 246.108 20.5567 247.349 20.9585C248.335 21.2872 248.919 21.5794 250.27 22.3829L248.883 24.8662V24.8668Z',\n fill: 'themed',\n },\n // APOTEKA\n // A\n {\n d: 'M270.458 44.8813L267.975 37.7594H258.229L255.746 44.8813H252.534L261.514 20.0822H264.726L273.67 44.8813H270.458ZM263.12 23.9903L259.177 35.0201H267.026L263.12 23.9903Z',\n fill: 'themed',\n },\n // P\n {\n d: 'M284.658 36.0428C283.709 36.0428 283.125 35.9698 280.935 35.7506V44.8813H277.942V20.7765H285.498C288.419 20.7765 290.025 21.2878 291.376 22.6757C292.617 23.9541 293.237 25.6342 293.237 27.8986C293.237 32.9386 289.952 36.0431 284.659 36.0431L284.658 36.0428ZM288.783 24.3193C288.053 23.5888 286.994 23.2966 285.06 23.2966H280.935V33.2308C282.614 33.4134 283.308 33.4499 284.147 33.4499C285.498 33.4499 286.484 33.3038 287.287 32.9751C289.039 32.2447 290.134 30.3454 290.134 28.0809C290.134 26.5104 289.66 25.1956 288.784 24.3193H288.783Z',\n fill: 'themed',\n },\n // O\n {\n d: 'M308.205 45.3561C301.196 45.3561 296.085 40.0966 296.085 32.8287C296.085 25.5973 301.196 20.3382 308.205 20.3382C315.213 20.3382 320.288 25.5976 320.288 32.8287C320.288 40.0966 315.214 45.3561 308.205 45.3561ZM308.205 22.9676C303.349 22.9676 299.37 27.4235 299.37 32.8287C299.37 38.2708 303.349 42.7264 308.205 42.7264C313.023 42.7264 317.002 38.2705 317.002 32.8287C317.002 27.4235 313.023 22.9676 308.205 22.9676Z',\n fill: 'themed',\n },\n // T\n {\n d: 'M333.065 23.2963V44.8813H330.072V23.2963H322.041V20.7762H341.096V23.2963H333.065Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M345.404 44.8813V20.7765H358.947V23.2966H348.397V31.3316H357.122V33.8517H348.397V42.3614H359.276V44.8816L345.404 44.8813Z',\n fill: 'themed',\n },\n // K\n {\n d: 'M365.08 44.8813V20.7765H368.074V44.8813H365.08ZM377.93 44.8813L368.293 32.7192L377.711 20.7765H381.143L371.724 32.5003L381.617 44.8813H377.93Z',\n fill: 'themed',\n },\n // A\n {\n d: 'M400.162 44.8813L397.68 37.7594H387.933L385.451 44.8813H382.238L391.219 20.0822H394.431L403.375 44.8813H400.162ZM392.825 23.9903L388.882 35.0201H396.731L392.825 23.9903Z',\n fill: 'themed',\n },\n // VEST\n // V\n {\n d: 'M425.023 45.5752H421.811L412.867 20.7765H417.905L423.417 37.0655C423.526 37.4307 423.636 37.8325 423.672 38.1977C423.672 37.869 423.709 37.6133 423.891 37.0655L429.148 20.7765H433.967L425.023 45.5752Z',\n fill: 'themed',\n },\n // E\n {\n d: 'M437.362 44.8813V20.7765H452.037V24.6842H441.962V30.6373H450.212V34.545H441.962V40.9732H452.512V44.881H437.362L437.362 44.8813Z',\n fill: 'themed',\n },\n // S\n {\n d: 'M470.363 26.5104C467.807 25.3782 465.727 24.7938 464.12 24.7938C461.967 24.7938 460.58 25.6703 460.58 27.0217C460.58 28.0444 461.164 28.6653 462.879 29.5784C466.566 31.5507 468.976 33.0847 470.107 34.2166C471.13 35.2393 471.75 36.8463 471.75 38.5264C471.75 42.8359 468.611 45.3561 463.281 45.3561C462.551 45.3561 461.821 45.3195 461.127 45.21C459.412 44.9908 458.609 44.6986 456.09 43.5299L454.52 42.7994L456.455 38.5626C458.207 39.5122 458.937 39.8775 459.886 40.2427C461.091 40.681 462.405 40.9367 463.354 40.9367C465.471 40.9367 466.859 39.9871 466.859 38.5261C466.859 37.5034 466.311 36.8095 464.741 35.9329L461.018 33.8145C456.746 31.3674 455.432 29.7604 455.432 27.131C455.432 25.9257 455.797 24.6839 456.381 23.7711C456.783 23.1502 457.404 22.5293 458.17 21.9814C459.922 20.7762 461.419 20.3744 464.23 20.3744C465.836 20.3744 467.26 20.557 468.757 20.9953C469.925 21.3605 470.582 21.6162 472.188 22.3832L470.363 26.5104Z',\n fill: 'themed',\n },\n // T\n {\n d: 'M485.367 24.6842V44.8813H480.767V24.6842H473.539V20.7765H492.595V24.6842H485.367Z',\n fill: 'themed',\n },\n ],\n};\n","import { LogoDefinition } from './logo-types';\nimport { LOGO_DOTS } from './logos/logo-dots';\nimport { LOGO_HBE } from './logos/logo-hbe';\nimport { LOGO_HBE_HUS } from './logos/logo-hbe-hus';\nimport { LOGO_HFD } from './logos/logo-hfd';\nimport { LOGO_HFO } from './logos/logo-hfo';\nimport { LOGO_HST } from './logos/logo-hst';\nimport { LOGO_HST_SUS } from './logos/logo-hst-sus';\nimport { LOGO_HVE } from './logos/logo-hve';\nimport { LOGO_HVIKT } from './logos/logo-hvikt';\nimport { LOGO_SAV } from './logos/logo-sav';\n\n/** Available company identifiers for the logo component */\nexport type LogoCompany = keyof typeof LOGOS;\n\n/**\n * Path data and metadata for all logos.\n *\n * Individual logo definitions live in their own files (logo-hve.ts, logo-hvikt.ts, etc.)\n * to keep file sizes manageable. This registry assembles them.\n */\nexport const LOGOS = {\n dots: LOGO_DOTS,\n hvikt: LOGO_HVIKT,\n hve: LOGO_HVE,\n hbe: LOGO_HBE,\n 'hbe-hus': LOGO_HBE_HUS,\n hfd: LOGO_HFD,\n hfo: LOGO_HFO,\n hst: LOGO_HST,\n 'hst-sus': LOGO_HST_SUS,\n sav: LOGO_SAV,\n} satisfies Record<string, LogoDefinition>;\n","import { Component, computed, input } from '@angular/core';\nimport { LogoCompany, LOGOS } from './logo-paths';\nimport { LogoDefinition, LogoSize } from './logo-types';\n\n/**\n * Logo displays a Helse Vest company logo with automatic light/dark mode support.\n *\n * The themed paths (text and dark dot) use `currentColor` so they respond to the\n * CSS `color` property, while accent paths (blue dots) keep a fixed color.\n *\n * The component automatically responds to `data-color-scheme` set by the application\n * (via Designsystemet), so no manual mode switching is needed.\n *\n * @example\n * ```html\n * <hvi-logo company=\"hve\" />\n * <hvi-logo company=\"hve\" size=\"lg\" />\n * ```\n */\n@Component({\n selector: 'hvi-logo',\n standalone: true,\n template: `\n <svg\n [attr.viewBox]=\"logo().viewBox\"\n [attr.aria-label]=\"ariaLabel() ?? logo().label\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n @for (path of logo().paths; track $index) {\n <path [attr.d]=\"path.d\" [attr.fill]=\"path.fill === 'accent' ? '#6CACE4' : 'currentColor'\" />\n }\n </svg>\n `,\n host: {\n class: 'hvi-logo',\n '[attr.data-size]': 'size()',\n },\n styles: [\n `\n :host {\n display: inline-block;\n color: #003087;\n }\n\n :host-context([data-color-scheme='dark']) {\n color: white;\n }\n\n svg {\n display: block;\n height: 100%;\n width: auto;\n }\n\n :host([data-size='sm']) {\n height: 46px;\n }\n\n :host([data-size='md']) {\n height: 52px;\n }\n\n :host([data-size='lg']) {\n height: 60px;\n }\n `,\n ],\n})\nexport class HviLogo {\n /** Which company logo to display */\n readonly company = input.required<LogoCompany>();\n\n /** Logo size — sm (40px), md (65px, default), lg (82px) height */\n readonly size = input<LogoSize>('md');\n\n /** Override the default accessible label */\n readonly ariaLabel = input<string | undefined>(undefined);\n\n protected readonly logo = computed<LogoDefinition>(() => LOGOS[this.company()]);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n EventEmitter,\n Input,\n numberAttribute,\n Output,\n signal,\n} from '@angular/core';\n\n/** Type for hvert element i pagineringslisten */\nexport type PaginationItem =\n | { type: 'page'; page: number }\n | { type: 'ellipsis' }\n | { type: 'previous' }\n | { type: 'next' };\n\n/** Event som emitteres ved sideendring */\nexport interface PageChangeEvent {\n page: number;\n previousPage: number;\n}\n\n/**\n * @summary\n * Pagination er en liste med knapper som brukes for å navigere mellom\n * ulike sider med innhold, for eksempel søkeresultater eller tabeller.\n *\n * @example\n * ```html\n * <hvi-pagination\n * [totalItems]=\"100\"\n * [pageSize]=\"10\"\n * [(currentPage)]=\"currentPage\"\n * />\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/pagination/code}\n */\n@Component({\n selector: 'hvi-pagination',\n standalone: true,\n template: `\n <nav [attr.aria-label]=\"ariaLabel\" class=\"ds-pagination\">\n <ul>\n <!-- Forrige -->\n <li>\n <button\n class=\"ds-button\"\n data-variant=\"tertiary\"\n type=\"button\"\n [attr.aria-label]=\"previousLabel\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrevious()\"\n >\n {{ showPreviousNextLabels ? previousLabel : '' }}\n </button>\n </li>\n\n <!-- Sidetall -->\n @for (item of paginationItems(); track $index) {\n @if (item.type === 'page') {\n <li>\n <button\n class=\"ds-button\"\n [attr.data-variant]=\"item.page === _currentPage() ? 'primary' : 'tertiary'\"\n type=\"button\"\n [attr.aria-label]=\"'Side ' + item.page\"\n [attr.aria-current]=\"item.page === _currentPage() ? 'page' : null\"\n (click)=\"goToPage(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n } @else if (item.type === 'ellipsis') {\n <li></li>\n }\n }\n\n <!-- Neste -->\n <li>\n <button\n class=\"ds-button\"\n data-variant=\"tertiary\"\n type=\"button\"\n [attr.aria-label]=\"nextLabel\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n >\n {{ showPreviousNextLabels ? nextLabel : '' }}\n </button>\n </li>\n </ul>\n </nav>\n `,\n host: {\n class: 'hvi-pagination',\n },\n})\nexport class HviPagination {\n /** Totalt antall elementer som pagineres */\n @Input({ transform: numberAttribute, required: true })\n set totalItems(value: number) {\n this._totalItems.set(value);\n }\n\n /** Antall elementer per side */\n @Input({ transform: numberAttribute })\n set pageSize(value: number) {\n this._pageSize.set(value);\n }\n\n /** Nåværende side (1-indeksert) */\n @Input({ transform: numberAttribute })\n set currentPage(value: number) {\n this._currentPage.set(value);\n }\n\n /** Antall sider som skal vises rundt nåværende side */\n @Input({ transform: numberAttribute }) siblingCount = 1;\n\n /** Vis alltid første og siste side */\n @Input({ transform: booleanAttribute }) showEdges = true;\n\n /** Vis \"Forrige\" og \"Neste\" tekst på knappene */\n @Input({ transform: booleanAttribute }) showPreviousNextLabels = true;\n\n /** Aria-label for hele navigasjonen */\n @Input() ariaLabel = 'Sidenavigering';\n\n /** Tekst for forrige-knappen */\n @Input() previousLabel = 'Forrige';\n\n /** Tekst for neste-knappen */\n @Input() nextLabel = 'Neste';\n\n /** Event som emitteres når siden endres */\n @Output() currentPageChange = new EventEmitter<number>();\n\n /** Event som emitteres med mer detaljer om sideendring */\n @Output() pageChange = new EventEmitter<PageChangeEvent>();\n\n // Internal signals\n readonly _totalItems = signal(0);\n readonly _pageSize = signal(10);\n readonly _currentPage = signal(1);\n\n /** Beregnet totalt antall sider */\n readonly totalPages = computed(() => {\n return Math.max(1, Math.ceil(this._totalItems() / this._pageSize()));\n });\n\n /** Er vi på første side? */\n readonly isFirstPage = computed(() => this._currentPage() <= 1);\n\n /** Er vi på siste side? */\n readonly isLastPage = computed(() => this._currentPage() >= this.totalPages());\n\n /** Beregner hvilke elementer som skal vises i pagineringen */\n readonly paginationItems = computed<PaginationItem[]>(() => {\n const current = this._currentPage();\n const total = this.totalPages();\n const siblings = this.siblingCount;\n\n if (total <= 1) return [];\n\n const items: PaginationItem[] = [];\n\n // Beregn range rundt nåværende side\n const leftSibling = Math.max(current - siblings, 1);\n const rightSibling = Math.min(current + siblings, total);\n\n const showLeftEllipsis = this.showEdges && leftSibling > 2;\n const showRightEllipsis = this.showEdges && rightSibling < total - 1;\n\n // Første side (hvis showEdges)\n if (this.showEdges && leftSibling > 1) {\n items.push({ type: 'page', page: 1 });\n if (showLeftEllipsis) {\n items.push({ type: 'ellipsis' });\n }\n }\n\n // Sider rundt nåværende\n for (let page = leftSibling; page <= rightSibling; page++) {\n items.push({ type: 'page', page });\n }\n\n // Siste side (hvis showEdges)\n if (this.showEdges && rightSibling < total) {\n if (showRightEllipsis) {\n items.push({ type: 'ellipsis' });\n }\n items.push({ type: 'page', page: total });\n }\n\n return items;\n });\n\n /** Gå til en spesifikk side */\n goToPage(page: number): void {\n const previousPage = this._currentPage();\n const newPage = Math.max(1, Math.min(page, this.totalPages()));\n\n if (newPage !== previousPage) {\n this._currentPage.set(newPage);\n this.currentPageChange.emit(newPage);\n this.pageChange.emit({ page: newPage, previousPage });\n }\n }\n\n /** Gå til forrige side */\n goToPrevious(): void {\n if (!this.isFirstPage()) {\n this.goToPage(this._currentPage() - 1);\n }\n }\n\n /** Gå til neste side */\n goToNext(): void {\n if (!this.isLastPage()) {\n this.goToPage(this._currentPage() + 1);\n }\n }\n\n /** Gå til første side */\n goToFirst(): void {\n this.goToPage(1);\n }\n\n /** Gå til siste side */\n goToLast(): void {\n this.goToPage(this.totalPages());\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Paragraph is used for continuous text and is typically applied in articles, components, help text, and similar content.\n *\n * @example\n * ```html\n * <p hviParagraph variant=\"long\" size=\"md\">\n * This is a paragraph with body text that can be adjusted in size and variant.\n * </p>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/paragraph/overview\n */\n@Directive({\n selector: 'p[hviParagraph]',\n standalone: true,\n host: {\n class: 'ds-paragraph',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n },\n})\nexport class HviParagraph {\n /** Adjusts the style for the length of the paragraph */\n @Input() variant?: 'long' | 'default' | 'short';\n\n /** Paragraph is available in several text sizes to suit different needs */\n @Input() size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\nconst arrowPseudoElement = {\n name: 'ArrowPseudoElement',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n switch (placement.split('-')[0]) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', placement.split('-')[0]);\n elements.floating.style.setProperty('--ds-popover-arrow-x', arrowX);\n elements.floating.style.setProperty('--ds-popover-arrow-y', arrowY);\n return data;\n },\n};\n\n/**\n * @summary\n * Popover vises over andre elementer i grensesnittet og er koblet til et spesifikt element.\n * Den brukes til å vise tilleggsinformasjon, interaktive elementer eller korte forklaringer uten å navigere bort fra siden.\n *\n * @example\n * ```html\n * <button hviButton popovertarget=\"popover1\">Open popover</button>\n * <hvi-popover id=\"popover1\"> Popover content </hvi-popover>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/popover/code}\n */\n@Component({\n selector: 'hvi-popover',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-popover',\n '[attr.popover]': 'type',\n '[attr.data-variant]': 'variant',\n '[attr.data-color]': 'color',\n },\n})\nexport class HviPopover implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private cleanupAutoUpdate?: () => void;\n private boundHandleClick?: (event: MouseEvent) => void;\n private boundHandleKeydown?: (event: KeyboardEvent) => void;\n\n /** Popover type - 'manual' krever manuell lukking, 'auto' lukkes ved klikk utenfor */\n @Input() type: 'auto' | 'manual' | 'hint' = 'manual';\n\n /** Visuell variant */\n @Input() variant: 'default' | 'tinted' = 'default';\n\n /** Farge-tema */\n @Input() color: 'neutral' | 'danger' | 'info' | 'success' | 'warning' = 'neutral';\n\n /** Plassering av popover relativt til trigger */\n @Input() placement: Placement = 'top';\n\n /** Aktiver automatisk repositjonering hvis det ikke er plass */\n @Input() autoPlacement = true;\n\n /** Event når popover åpnes */\n @Output() opened = new EventEmitter<void>();\n\n /** Event når popover lukkes */\n @Output() closed = new EventEmitter<void>();\n\n private get popoverElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private get triggerElement(): HTMLElement | null {\n const id = this.popoverElement.id;\n return id ? document.querySelector(`[popovertarget=\"${id}\"]`) : null;\n }\n\n ngOnInit() {\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.stopAutoUpdate();\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const popover = this.popoverElement;\n\n // Click utenfor lukker popover\n this.boundHandleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[popovertarget=\"${popover.id}\"]`);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n\n if (isTrigger) {\n event.preventDefault();\n popover.togglePopover?.();\n }\n if (isOutside && popover.matches(':popover-open')) {\n popover.togglePopover?.();\n }\n };\n\n // Escape lukker popover\n this.boundHandleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !popover.matches(':popover-open')) return;\n event.preventDefault();\n popover.togglePopover?.();\n };\n\n addEventListener('click', this.boundHandleClick);\n addEventListener('keydown', this.boundHandleKeydown);\n\n // Toggle events\n popover.addEventListener('beforetoggle', this.handleBeforeToggle);\n popover.addEventListener('toggle', this.handleToggle);\n }\n\n private removeEventListeners() {\n if (this.boundHandleClick) {\n removeEventListener('click', this.boundHandleClick);\n }\n if (this.boundHandleKeydown) {\n removeEventListener('keydown', this.boundHandleKeydown);\n }\n this.popoverElement.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.popoverElement.removeEventListener('toggle', this.handleToggle);\n }\n\n private handleBeforeToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.updatePosition();\n }\n };\n\n private handleToggle = (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'open') {\n this.startAutoUpdate();\n this.opened.emit();\n } else {\n this.stopAutoUpdate();\n this.closed.emit();\n }\n };\n\n private updatePosition() {\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n computePosition(trigger, popover, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [\n offset((data) => {\n const styles = getComputedStyle(data.elements.floating, '::before');\n return parseFloat(styles.height) || 12;\n }),\n ...(this.autoPlacement ? [flip({ fallbackAxisSideDirection: 'start' }), shift()] : []),\n arrowPseudoElement,\n ],\n }).then(({ x, y }) => {\n popover.style.translate = `${x}px ${y}px`;\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.triggerElement;\n const popover = this.popoverElement;\n\n if (!trigger || !popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, popover, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Tag is a label that can be used to categorize items or communicate progress, status, or process. Tags can provide users with a quicker overview of content.\n *\n * @example\n * ```html\n * <hvi-tag variant=\"outline\" size=\"sm\" color=\"info\">Small info tag</hvi-tag>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/tag/code\n */\n\n@Component({\n selector: 'hvi-tag',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-tag',\n '[attr.data-variant]': 'variant ?? null',\n '[attr.data-size]': 'size ?? null',\n '[attr.data-color]': 'color ?? null',\n },\n})\nexport class HviTag {\n /** The variants of the tag */\n @Input() variant?: 'default' | 'outline';\n\n /** The sizes of the tag */\n @Input() size?: 'sm' | 'md' | 'lg';\n\n /** The color theme of the tag */\n @Input() color?:\n | 'neutral'\n | 'danger'\n | 'warning'\n | 'info'\n | 'success'\n | 'accent'\n | 'brand1'\n | 'brand2'\n | 'brand3';\n}\n","import { Component, Input } from '@angular/core';\nimport { HviTag } from '../tag';\n\n/**\n * RequiredTag brukes sammen med labels i skjema for å indikere om et felt er\n * påkrevd, valgfritt, eller om alle felt må fylles ut.\n *\n * Komponenten wrapper `HviTag` med forhåndsdefinerte tekster og farger basert på mode.\n *\n * @example\n * ```html\n * <hvi-required-tag />\n * <hvi-required-tag mode=\"optional\" />\n * <hvi-required-tag mode=\"all-required\" />\n * ```\n */\n@Component({\n selector: 'hvi-required-tag',\n standalone: true,\n imports: [HviTag],\n template: `\n <hvi-tag variant=\"default\" size=\"sm\" [color]=\"mode === 'optional' ? 'info' : 'warning'\">\n @switch (mode) {\n @case ('all-required') {\n Alle felt må fylles ut\n }\n @case ('required') {\n Må fylles ut\n }\n @case ('optional') {\n Valgfritt\n }\n }\n </hvi-tag>\n `,\n})\nexport class HviRequiredTag {\n /**\n * Bestemmer tekst og farge på taggen.\n * - `required` (default): \"Må fylles ut\" (warning)\n * - `optional`: \"Valgfritt\" (info)\n * - `all-required`: \"Alle felt må fylles ut\" (warning)\n */\n @Input() mode: 'all-required' | 'required' | 'optional' = 'required';\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/**\n * @summary\n * SearchClear is a button directive for clearing the search input.\n * It automatically finds the input field inside the parent `hvi-search` component and clears it.\n *\n * @example\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/search}\n */\n@Directive({\n selector: 'button[hviSearchClear]',\n standalone: true,\n host: {\n class: 'ds-button',\n '[attr.data-icon]': '\"true\"',\n '[attr.data-variant]': '\"tertiary\"',\n type: 'reset',\n },\n})\nexport class HviSearchClear {\n private readonly elementRef = inject(ElementRef<HTMLButtonElement>);\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n // Prevent default reset behavior (only works in forms anyway)\n event.preventDefault();\n\n const searchContainer = this.elementRef.nativeElement.closest('.ds-search');\n if (!searchContainer) return;\n\n const input = searchContainer.querySelector('input') as HTMLInputElement | null;\n if (input) {\n input.value = '';\n input.dispatchEvent(new Event('input', { bubbles: true }));\n input.focus();\n }\n }\n}\n","import { Component } from '@angular/core';\n\n/**\n * @summary\n * Search allows users to quickly find relevant content on a website or in an application.\n * The component consists of a search field, with or without a search button.\n *\n * Use `hviInput` with `type=\"search\"` for the input field.\n * Use `hviSearchClear` for the clear button.\n * Use `hviButton` for the submit button.\n *\n * Important: Add an empty `placeholder=\"\"` on the input if you have a clear button.\n *\n * @example\n * Basic search with clear and submit button:\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * ```\n *\n * @example\n * Search without submit button:\n * ```html\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" aria-label=\"Søk\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * </hvi-search>\n * ```\n *\n * @example\n * Search with label using hvi-field:\n * ```html\n * <hvi-field>\n * <label hviLabel>Søk etter katter</label>\n * <hvi-search>\n * <input hviInput type=\"search\" placeholder=\"\" name=\"cat-search\" />\n * <button hviSearchClear type=\"reset\" aria-label=\"Tøm\"></button>\n * <button hviButton variant=\"primary\" type=\"submit\">Søk</button>\n * </hvi-search>\n * </hvi-field>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/search}\n */\n@Component({\n selector: 'hvi-search',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-search',\n },\n})\nexport class HviSearch {}\n","import { booleanAttribute, Directive, HostListener, Input } from '@angular/core';\n\n/**\n * @summary\n * Select allows users to choose an option from a list.\n *\n * @example\n * ```html\n * <select hviSelect width=\"auto\" id=\"select\">\n * <option value=\"\" disabled=\"\" selected=\"\">Select an option</option>\n * <option value=\"option1\">Option 1</option>\n * <option value=\"option2\">Option 2</option>\n * </select>\n * ```\n *\n * Documentation: https://designsystemet.no/en/components/docs/select/code\n */\n\n@Directive({\n selector: 'select[hviSelect]',\n standalone: true,\n host: {\n class: 'ds-select ds-input',\n '[attr.data-width]': 'width',\n '[attr.readonly]': '_readOnly ? \"\" : null',\n '[attr.disabled]': '_disabled ? \"\" : null',\n },\n})\nexport class HviSelect {\n /** Defines the width of Select, where \"auto\" matches the content width. */\n @Input() width?: 'full' | 'auto';\n\n protected _readOnly = false;\n protected _disabled = false;\n\n /** Disabled Select. */\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /** Readonly Select. */\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n get readOnly(): boolean {\n return this._readOnly;\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (this._readOnly) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!this._readOnly) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * @summary\n * Skeleton component description.\n *\n * @example\n * ```html\n * <hvi-skeleton variant=\"rectangle\" width=\"100px\" height=\"20px\"></hvi-skeleton>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/skeleton/code}\n */\n\n@Component({\n selector: 'hvi-skeleton',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-skeleton',\n '[attr.aria-hidden]': 'true',\n '[attr.data-variant]': 'variant',\n '[style.width]': 'width',\n '[style.height]': 'height',\n },\n})\nexport class HviSkeleton {\n @Input() variant: 'rectangle' | 'circle' | 'text' = 'rectangle';\n @Input() width?: string;\n @Input() height?: string;\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/**\n * @summary\n * SkipLink hjelper folk som bruker tastaturnavigasjon til å navigere,\n * slik at de enkelt kan gå til det viktigste innholdet på en side.\n *\n * @example\n * ```html\n * <a hviSkipLink href=\"#main-content\">Hopp til hovedinnhold</a>\n *\n * <main id=\"main-content\" tabindex=\"-1\">\n * Hovedinnhold her\n * </main>\n * ```\n *\n * @see {@link https://designsystemet.no/komponenter/skip-link}\n */\n@Directive({\n selector: 'a[hviSkipLink]',\n standalone: true,\n host: {\n class: 'ds-skip-link',\n },\n})\nexport class HviSkipLink {\n private el = inject(ElementRef<HTMLAnchorElement>);\n\n /**\n * Handles click to prevent Angular Router navigation\n * and instead focus/scroll to the target element.\n */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const href = this.el.nativeElement.getAttribute('href');\n if (!href?.startsWith('#')) return;\n\n event.preventDefault();\n\n const id = href.slice(1);\n const target = document.getElementById(id);\n\n if (target) {\n target.focus();\n target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n/** Available sizes for the Spinner */\nexport type SpinnerSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * @summary\n * Spinner brukes for å indikere at innhold eller en handling er i ferd med å laste,\n * og at brukeren må vente før de kan fortsette.\n *\n * @example\n * ```html\n * <hvi-spinner label=\"Laster...\" />\n * <hvi-spinner label=\"Henter data\" size=\"lg\" />\n * ```\n *\n * @see {@link https://designsystemet.no/komponenter/spinner}\n */\n@Component({\n selector: 'hvi-spinner',\n standalone: true,\n template: `\n <svg\n [attr.aria-label]=\"label\"\n class=\"ds-spinner\"\n role=\"img\"\n viewBox=\"0 0 50 50\"\n [attr.data-size]=\"size\"\n >\n <circle class=\"ds-spinner__background\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\" />\n <circle class=\"ds-spinner__circle\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"5\" />\n </svg>\n `,\n host: {\n style: 'display: contents;',\n },\n})\nexport class HviSpinner {\n /** Accessible label describing what is loading */\n @Input({ required: true }) label!: string;\n\n /** Size of the spinner */\n @Input() size?: SpinnerSize;\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n EventEmitter,\n Input,\n numberAttribute,\n Output,\n signal,\n} from '@angular/core';\n\n/** Sorteringsretninger for tabell-kolonner */\nexport type SortDirection = 'none' | 'ascending' | 'descending';\n\n/** Event som emitteres ved sorteringsendring */\nexport interface TableSortEvent {\n field: string;\n direction: SortDirection;\n}\n\n/** Event som emitteres ved sideendring */\nexport interface TablePageEvent {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n/**\n * @summary\n * Table brukes for å vise strukturert informasjon på en ryddig og oversiktlig måte.\n * Tabeller kan gjøre det enklere for brukerne å skanne og sammenligne informasjon.\n *\n * @example\n * ```html\n * <!-- Enkel bruk med innebygd sortering og søk -->\n * <table hviTable [value]=\"persons\" [globalFilterFields]=\"['navn', 'epost']\" #table=\"hviTable\">\n * <caption>\n * <input type=\"search\" (input)=\"table.filterGlobal($event.target.value)\" />\n * </caption>\n * <thead>\n * <tr>\n * <th hviSortableColumn=\"navn\">\n * <button>Navn</button>\n * </th>\n * <th>Epost</th>\n * </tr>\n * </thead>\n * <tbody>\n * @for (person of table.filteredValue(); track person.id) {\n * <tr>\n * <td>{{ person.navn }}</td>\n * <td>{{ person.epost }}</td>\n * </tr>\n * }\n * </tbody>\n * </table>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/table/code}\n */\n@Directive({\n selector: '[hviTable]',\n standalone: true,\n exportAs: 'hviTable',\n host: {\n class: 'ds-table',\n '[attr.data-zebra]': 'zebra || null',\n '[attr.data-border]': 'border || null',\n '[attr.data-hover]': 'hover || null',\n '[attr.data-sticky-header]': 'stickyHeader || null',\n },\n})\nexport class HviTable<T = unknown> {\n /** Gir tabellen zebrastriper (annenhver rad har alternativ bakgrunn) */\n @Input({ transform: booleanAttribute }) zebra = false;\n\n /** Gir tabellen en avrundet kant rundt */\n @Input({ transform: booleanAttribute }) border = false;\n\n /** Gir tabellen hover-effekt på rader */\n @Input({ transform: booleanAttribute }) hover = false;\n\n /** Gjør tabellens header sticky (fester seg til toppen ved scrolling) */\n @Input({ transform: booleanAttribute }) stickyHeader = false;\n\n /** Data som skal vises i tabellen */\n @Input()\n set value(data: T[] | null | undefined) {\n this._value.set(data ?? []);\n }\n\n /** Felt som data skal sorteres etter (valgfri initial verdi) */\n @Input()\n set sortField(field: string | null | undefined) {\n if (field) {\n this._sortField.set(field);\n }\n }\n\n /** Sorteringsretning: 1 = ascending, -1 = descending, 0 = none */\n @Input()\n set sortOrder(order: number) {\n this._sortOrder.set(order);\n }\n\n /** Felt som global søk skal søke i */\n @Input() globalFilterFields: string[] = [];\n\n /** Aktiver paginering */\n @Input({ transform: booleanAttribute }) paginator = false;\n\n /** Antall rader per side (når paginator er aktivert) */\n @Input({ transform: numberAttribute })\n set rows(value: number) {\n this._rows.set(value);\n }\n\n /** Indeks for første rad som vises (0-basert) */\n @Input({ transform: numberAttribute })\n set first(value: number) {\n this._first.set(value);\n }\n\n /** Event som emitteres når sortering endres */\n @Output() sortChange = new EventEmitter<TableSortEvent>();\n\n /** Event som emitteres når side endres */\n @Output() pageChange = new EventEmitter<TablePageEvent>();\n\n /** Event som emitteres med nåværende side (1-basert, for two-way binding) */\n @Output() currentPageChange = new EventEmitter<number>();\n\n // Internal signals\n private _value = signal<T[]>([]);\n private _sortField = signal<string | null>(null);\n private _sortOrder = signal<number>(0); // 0 = none, 1 = asc, -1 = desc\n private _globalFilter = signal<string | null>(null);\n private _rows = signal(10);\n private _first = signal(0);\n\n /** Kun sortert data (uten søk) - for bakoverkompatibilitet */\n readonly sortedValue = computed(() => {\n return this.applySorting(this._value());\n });\n\n /** Filtrert og sortert data - bruk denne i template */\n readonly filteredValue = computed(() => {\n const data = this._value();\n const filtered = this.applyGlobalFilter(data);\n return this.applySorting(filtered);\n });\n\n /** Paginert, filtrert og sortert data - bruk denne når paginator er aktivert */\n readonly paginatedValue = computed(() => {\n const data = this.filteredValue();\n if (!this.paginator) return data;\n\n const first = this._first();\n const rows = this._rows();\n return data.slice(first, first + rows);\n });\n\n /** Antall rader etter søk */\n readonly totalFilteredRecords = computed(() => this.filteredValue().length);\n\n /** Antall rader totalt (før søk) */\n readonly totalRecords = computed(() => this._value().length);\n\n /** Totalt antall sider */\n readonly pageCount = computed(() => {\n if (!this.paginator) return 1;\n return Math.max(1, Math.ceil(this.totalFilteredRecords() / this._rows()));\n });\n\n /** Nåværende side (1-basert) */\n readonly currentPage = computed(() => {\n return Math.floor(this._first() / this._rows()) + 1;\n });\n\n /** Er vi på første side? */\n readonly isFirstPage = computed(() => this._first() === 0);\n\n /** Er vi på siste side? */\n readonly isLastPage = computed(() => {\n return this._first() + this._rows() >= this.totalFilteredRecords();\n });\n\n /** Nåværende sorteringsfelt */\n readonly currentSortField = computed(() => this._sortField());\n\n /** Nåværende sorteringsretning som SortDirection */\n readonly currentSortDirection = computed<SortDirection>(() => {\n const order = this._sortOrder();\n if (order === 1) return 'ascending';\n if (order === -1) return 'descending';\n return 'none';\n });\n\n /** Nåværende søkeverdi */\n readonly currentGlobalFilter = computed(() => this._globalFilter());\n\n /**\n * Global søk - søker på tvers av alle felt i globalFilterFields.\n * @param value Søkeverdi\n */\n filterGlobal(value: string | null): void {\n this._globalFilter.set(value?.trim() || null);\n }\n\n /**\n * Nullstiller søk.\n */\n clearFilter(): void {\n this._globalFilter.set(null);\n }\n\n /**\n * Nullstiller hele tabellen (sortering og søk).\n */\n clear(): void {\n this._sortField.set(null);\n this._sortOrder.set(0);\n this._globalFilter.set(null);\n this._first.set(0);\n }\n\n // ========== Paginering ==========\n\n /**\n * Gå til en spesifikk side (1-basert).\n */\n goToPage(page: number): void {\n const totalPages = this.pageCount();\n const validPage = Math.max(1, Math.min(page, totalPages));\n const newFirst = (validPage - 1) * this._rows();\n\n if (newFirst !== this._first()) {\n this._first.set(newFirst);\n this.emitPageEvent();\n }\n }\n\n /**\n * Gå til første side.\n */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Gå til siste side.\n */\n goToLastPage(): void {\n this.goToPage(this.pageCount());\n }\n\n /**\n * Gå til forrige side.\n */\n goToPreviousPage(): void {\n if (!this.isFirstPage()) {\n this.goToPage(this.currentPage() - 1);\n }\n }\n\n /**\n * Gå til neste side.\n */\n goToNextPage(): void {\n if (!this.isLastPage()) {\n this.goToPage(this.currentPage() + 1);\n }\n }\n\n /**\n * Endre antall rader per side.\n */\n setRows(rows: number): void {\n this._rows.set(rows);\n this._first.set(0); // Reset til første side\n this.emitPageEvent();\n }\n\n private emitPageEvent(): void {\n this.pageChange.emit({\n first: this._first(),\n rows: this._rows(),\n page: this.currentPage(),\n pageCount: this.pageCount(),\n });\n this.currentPageChange.emit(this.currentPage());\n }\n\n /**\n * Sorterer tabellen etter et felt.\n * Kalles av hviSortableColumn directive.\n */\n sort(field: string): void {\n const currentField = this._sortField();\n const currentOrder = this._sortOrder();\n\n let newOrder: number;\n\n if (currentField === field) {\n // Samme felt - sykl gjennom: asc → desc → none\n if (currentOrder === 1) {\n newOrder = -1;\n } else if (currentOrder === -1) {\n newOrder = 0;\n } else {\n newOrder = 1;\n }\n } else {\n // Nytt felt - start med ascending\n newOrder = 1;\n }\n\n this._sortField.set(newOrder === 0 ? null : field);\n this._sortOrder.set(newOrder);\n\n const direction: SortDirection =\n newOrder === 1 ? 'ascending' : newOrder === -1 ? 'descending' : 'none';\n\n this.sortChange.emit({ field, direction });\n }\n\n /**\n * Henter sorteringsretning for et spesifikt felt.\n * Brukes av hviSortableColumn for å vise riktig aria-sort.\n */\n getSortDirection(field: string): SortDirection {\n if (this._sortField() !== field) {\n return 'none';\n }\n return this.currentSortDirection();\n }\n\n // ========== Private methods ==========\n\n private applyGlobalFilter(data: T[]): T[] {\n const globalFilter = this._globalFilter();\n const globalFields = this.globalFilterFields;\n\n if (!globalFilter || globalFields.length === 0 || data.length === 0) {\n return data;\n }\n\n const searchTerm = globalFilter.toLowerCase();\n\n return data.filter((item) => {\n return globalFields.some((field) => {\n const value = this.getFieldValue(item, field);\n return String(value ?? '')\n .toLowerCase()\n .includes(searchTerm);\n });\n });\n }\n\n private applySorting(data: T[]): T[] {\n const field = this._sortField();\n const order = this._sortOrder();\n\n if (!field || order === 0 || data.length === 0) {\n return data;\n }\n\n return [...data].sort((a, b) => {\n const valueA = this.getFieldValue(a, field);\n const valueB = this.getFieldValue(b, field);\n\n let comparison = 0;\n\n if (valueA == null && valueB == null) {\n comparison = 0;\n } else if (valueA == null) {\n comparison = -1;\n } else if (valueB == null) {\n comparison = 1;\n } else if (typeof valueA === 'string' && typeof valueB === 'string') {\n comparison = valueA.localeCompare(valueB, 'nb');\n } else if (typeof valueA === 'number' && typeof valueB === 'number') {\n comparison = valueA - valueB;\n } else {\n comparison = String(valueA).localeCompare(String(valueB), 'nb');\n }\n\n return order * comparison;\n });\n }\n\n /**\n * Henter verdi fra et objekt basert på felt-path (støtter nested: \"user.name\")\n */\n private getFieldValue(obj: T, field: string): unknown {\n const keys = field.split('.');\n let value: unknown = obj;\n\n for (const key of keys) {\n if (value == null) return null;\n value = (value as Record<string, unknown>)[key];\n }\n\n return value;\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { HviTable, SortDirection } from './table.directive';\n\n/**\n * @summary\n * Directive for sorterbare tabell-header celler.\n * Kommuniserer automatisk med parent HviTable for å håndtere sortering.\n *\n * @example\n * ```html\n * <table hviTable [value]=\"persons\" #table>\n * <thead>\n * <tr>\n * <th hviSortableColumn=\"navn\">\n * <button>Navn</button>\n * </th>\n * <th>Epost</th>\n * </tr>\n * </thead>\n * <tbody>\n * @for (person of table.sortedValue(); track person.id) {\n * <tr>\n * <td>{{ person.navn }}</td>\n * <td>{{ person.epost }}</td>\n * </tr>\n * }\n * </tbody>\n * </table>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/table/code}\n */\n@Directive({\n selector: 'th[hviSortableColumn]',\n standalone: true,\n host: {\n '[attr.aria-sort]': 'sortDirection',\n },\n})\nexport class HviSortableColumn {\n private table = inject(HviTable, { optional: true });\n\n /**\n * Feltet som denne kolonnen sorterer etter.\n * Må matche property-navn i data-objektene.\n */\n @Input({ required: true, alias: 'hviSortableColumn' }) field!: string;\n\n /**\n * Henter sorteringsretning fra parent table.\n */\n get sortDirection(): SortDirection {\n return this.table?.getSortDirection(this.field) ?? 'none';\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n // Bare håndter klikk på button inne i th\n if (target.tagName === 'BUTTON' || target.closest('button')) {\n this.table?.sort(this.field);\n }\n }\n}\n\n// Re-export SortDirection for convenience\nexport type { SortDirection } from './table.directive';\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport '@u-elements/u-tabs';\n\n/**\n * TabPanel inneholder innholdet som vises når en tilhørende Tab er aktiv.\n *\n * @example\n * ```html\n * <hvi-tab-panel value=\"tab1\">\n * Innhold for tab 1\n * </hvi-tab-panel>\n * ```\n */\n@Component({\n selector: 'hvi-tab-panel',\n standalone: true,\n template: `\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n})\nexport class HviTabPanel {\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n /** When this value is selected, render this TabPanel. Must match the value of a Tab. */\n @Input({ required: true }) value!: string;\n}\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport '@u-elements/u-tabs';\n\n/**\n * Tab er en enkelt fane som kan klikkes for å vise tilhørende TabPanel.\n *\n * @example\n * ```html\n * <hvi-tab value=\"tab1\">Tab 1</hvi-tab>\n * ```\n */\n@Component({\n selector: 'hvi-tab',\n standalone: true,\n template: `\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n})\nexport class HviTab {\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<unknown>;\n\n /** Unique value that will be set in the Tabs components state when the tab is activated */\n @Input({ required: true }) value!: string;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport '@u-elements/u-tabs';\nimport { HviTabPanel } from './tab-panel.component';\nimport { HviTab } from './tab.component';\n\n/**\n * Tabs lar brukerne navigere mellom relaterte deler av innholdet,\n * der én del vises om gangen.\n *\n * @example\n * ```html\n * <hvi-tabs defaultValue=\"tab1\">\n * <hvi-tab value=\"tab1\">Tab 1</hvi-tab>\n * <hvi-tab value=\"tab2\">Tab 2</hvi-tab>\n * <hvi-tab-panel value=\"tab1\">Content 1</hvi-tab-panel>\n * <hvi-tab-panel value=\"tab2\">Content 2</hvi-tab-panel>\n * </hvi-tabs>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/docs/tabs/overview}\n */\n@Component({\n selector: 'hvi-tabs',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <u-tabs #uTabsRef class=\"ds-tabs\">\n <u-tablist>\n @for (tab of tabs; track tab.value) {\n <u-tab [attr.data-value]=\"tab.value\">\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\" />\n </u-tab>\n }\n </u-tablist>\n @for (panel of panels; track panel.value) {\n <u-tabpanel [attr.data-value]=\"panel.value\">\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </u-tabpanel>\n }\n </u-tabs>\n <!-- Hidden slot to capture content -->\n <div style=\"display: none\">\n <ng-content />\n </div>\n `,\n host: {},\n})\nexport class HviTabs implements AfterContentInit {\n @ViewChild('uTabsRef') uTabsRef!: ElementRef;\n @ContentChildren(HviTab) tabs!: QueryList<HviTab>;\n @ContentChildren(HviTabPanel) panels!: QueryList<HviTabPanel>;\n\n /** Controlled state for Tabs component */\n @Input() value?: string;\n\n /** Default selected tab value */\n @Input() defaultValue?: string;\n\n /** Callback when selected tab changes */\n @Output() valueChange = new EventEmitter<string>();\n\n ngAfterContentInit() {\n // Wait for view to be ready\n setTimeout(() => {\n this.setupTabs();\n });\n }\n\n private setupTabs() {\n const uTabs = this.uTabsRef?.nativeElement;\n if (!uTabs) return;\n\n if (this.defaultValue) {\n const tabsArray = this.tabs.toArray();\n const index = tabsArray.findIndex((t) => t.value === this.defaultValue);\n if (index >= 0) {\n uTabs.selectedIndex = index;\n }\n }\n\n // Listen for tab clicks\n uTabs.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n const tab = target.closest('u-tab');\n if (tab) {\n const value = tab.getAttribute('data-value');\n if (value) {\n this.valueChange.emit(value);\n }\n }\n });\n }\n}\n","import { booleanAttribute, Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { HviFieldAffix } from '../forms/field/field-affix.component';\nimport { HviFieldAffixes } from '../forms/field/field-affixes.component';\nimport { HviFieldCounter } from '../forms/field/field-counter.component';\nimport { HviFieldDescription } from '../forms/field/field-description.directive';\nimport { HviFieldValidation } from '../forms/field/field-validation.directive';\nimport { HviField } from '../forms/field/field.component';\nimport { HviInput } from '../forms/input/input.directive';\nimport { HviLabel } from '../label/label.directive';\nimport { HviTag } from '../tag/tag.component';\n\nlet nextId = 0;\n\n/**\n * Textfield gir brukere muligheten til å skrive fritekst eller tall.\n *\n * Dette er en sammensatt komponent som bruker Field, Input/Textarea og Label under panseret.\n * Bruk `multiline` for å bytte mellom input og textarea.\n *\n * @example\n * ```html\n * <hvi-textfield label=\"Navn\"></hvi-textfield>\n * ```\n *\n * @example\n * ```html\n * <hvi-textfield label=\"Beskrivelse\" [multiline]=\"true\" [rows]=\"4\"></hvi-textfield>\n * ```\n *\n * @example\n * ```html\n * <hvi-textfield label=\"Pris\" prefix=\"NOK\" suffix=\"pr. mnd\"></hvi-textfield>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/textfield/code}\n */\n@Component({\n selector: 'hvi-textfield',\n standalone: true,\n imports: [\n HviField,\n HviLabel,\n HviInput,\n HviFieldAffixes,\n HviFieldAffix,\n HviFieldCounter,\n HviFieldDescription,\n HviFieldValidation,\n HviTag,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HviTextfield),\n multi: true,\n },\n ],\n template: `\n <hvi-field>\n <label hviLabel [attr.for]=\"inputId\" weight=\"medium\">\n {{ label }}\n @if (requiredLabel) {\n <hvi-tag\n variant=\"default\"\n color=\"warning\"\n style=\"margin-inline-start: var(--ds-size-2)\"\n >{{ requiredLabel }}</hvi-tag\n >\n }\n </label>\n @if (description) {\n <span hviFieldDescription>{{ description }}</span>\n }\n <hvi-field-affixes>\n @if (prefix) {\n <hvi-field-affix>{{ prefix }}</hvi-field-affix>\n }\n @if (multiline) {\n <textarea\n hviInput\n [id]=\"inputId\"\n [attr.name]=\"name ?? null\"\n [attr.rows]=\"rows ?? null\"\n [attr.placeholder]=\"placeholder ?? null\"\n [disabled]=\"_disabled\"\n [readOnly]=\"_readOnly\"\n [attr.maxlength]=\"maxLength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.required]=\"_required ? '' : null\"\n [attr.autocomplete]=\"autocomplete ?? null\"\n [value]=\"_value\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_onTouched()\"\n ></textarea>\n } @else {\n <input\n hviInput\n [id]=\"inputId\"\n [type]=\"type\"\n [attr.name]=\"name ?? null\"\n [attr.size]=\"size ?? null\"\n [attr.placeholder]=\"placeholder ?? null\"\n [disabled]=\"_disabled\"\n [readOnly]=\"_readOnly\"\n [attr.maxlength]=\"maxLength ?? null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.required]=\"_required ? '' : null\"\n [attr.autocomplete]=\"autocomplete ?? null\"\n [value]=\"_value\"\n (input)=\"_handleInput($event)\"\n (blur)=\"_onTouched()\"\n />\n }\n @if (suffix) {\n <hvi-field-affix>{{ suffix }}</hvi-field-affix>\n }\n </hvi-field-affixes>\n @if (counterLimit) {\n <hvi-field-counter [limit]=\"counterLimit\" />\n }\n @if (error) {\n <span hviFieldValidation>{{ error }}</span>\n }\n </hvi-field>\n `,\n})\nexport class HviTextfield implements ControlValueAccessor {\n /** Label for the textfield */\n @Input() label!: string;\n\n /** Description text below the label */\n @Input() description?: string;\n\n /** Prefix text displayed before the input */\n @Input() prefix?: string;\n\n /** Suffix text displayed after the input */\n @Input() suffix?: string;\n\n /** Error message for the field */\n @Input() error?: string;\n\n /** Character counter limit. Displays a counter below the field. */\n @Input() counterLimit?: number;\n\n /**\n * Label text shown in a warning Tag next to the label when the field is required.\n * E.g. \"Må fylles ut\". Also sets the `required` attribute on the input.\n */\n @Input() requiredLabel?: string;\n\n /** Autocomplete attribute for the input, e.g. 'given-name', 'email'. */\n @Input() autocomplete?: string;\n\n /** Render a textarea instead of input for multiline support */\n @Input({ transform: booleanAttribute }) multiline = false;\n\n /** Supported input types */\n @Input() type:\n | 'number'\n | 'hidden'\n | 'color'\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'password'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week' = 'text';\n\n /** Number of rows for textarea (multiline mode) */\n @Input() rows?: number;\n\n /** Width of input in character count */\n @Input() size?: number;\n\n /** Placeholder text */\n @Input() placeholder?: string;\n\n /** Name attribute for the input */\n @Input() name?: string;\n\n /** Id attribute for the input. Auto-generated if not provided. */\n @Input() id?: string;\n\n /** Max length attribute for the input */\n @Input() maxLength?: number;\n\n /** Initial value for the input */\n @Input()\n set value(v: string) {\n this._value = v ?? '';\n }\n\n _value = '';\n _disabled = false;\n _readOnly = false;\n _required = false;\n\n @Input({ transform: booleanAttribute })\n set required(value: boolean) {\n this._required = value;\n }\n\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n @Input({ transform: booleanAttribute })\n set readOnly(value: boolean) {\n this._readOnly = value;\n }\n\n private readonly _uniqueId = nextId++;\n private _onChange: (value: string) => void = () => {};\n _onTouched: () => void = () => {};\n\n get inputId(): string {\n return this.id ?? `hvi-textfield-${this._uniqueId}`;\n }\n\n _handleInput(event: Event): void {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n this._value = target.value;\n this._onChange(this._value);\n }\n\n // ControlValueAccessor\n writeValue(value: string): void {\n this._value = 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._disabled = isDisabled;\n }\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n QueryList,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { HviToggleGroupItem } from './toggle-group-item.directive';\n\nlet nextGroupId = 0;\n\n/**\n * @summary\n * ToggleGroup collects related options. The component consists of a group of\n * buttons that are connected, where only one button can be selected at a time.\n *\n * @example\n * ```html\n * <hvi-toggle-group [(value)]=\"selected\" variant=\"primary\">\n * <button hviToggleGroupItem value=\"innboks\">Innboks</button>\n * <button hviToggleGroupItem value=\"utkast\">Utkast</button>\n * <button hviToggleGroupItem value=\"sendt\">Sendt</button>\n * </hvi-toggle-group>\n * ```\n *\n * @example\n * With reactive forms:\n * ```html\n * <hvi-toggle-group formControlName=\"view\" variant=\"secondary\">\n * <button hviToggleGroupItem value=\"list\">Liste</button>\n * <button hviToggleGroupItem value=\"grid\">Rutenett</button>\n * </hvi-toggle-group>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/toggle-group}\n */\n@Component({\n selector: 'hvi-toggle-group',\n standalone: true,\n template: '<ng-content />',\n host: {\n class: 'ds-toggle-group',\n role: 'radiogroup',\n '[attr.data-variant]': '_variant()',\n '[tabindex]': '0',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => HviToggleGroup),\n multi: true,\n },\n ],\n})\nexport class HviToggleGroup implements ControlValueAccessor {\n @ContentChildren(forwardRef(() => HviToggleGroupItemToken) as never)\n private items!: QueryList<HviToggleGroupItem>;\n\n private readonly registeredItems: HviToggleGroupItem[] = [];\n\n /** The variant of the toggle group */\n readonly _variant = signal<'primary' | 'secondary'>('primary');\n\n /** Form element name */\n readonly _name = signal(`togglegroup-name-${++nextGroupId}`);\n\n /** The currently selected value */\n private readonly _value = signal<string | undefined>(undefined);\n\n /** Event emitted when value changes */\n @Output() valueChange = new EventEmitter<string>();\n\n // ControlValueAccessor callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n @Input()\n set value(val: string | undefined) {\n this._value.set(val);\n this.updateItemStates();\n }\n\n @Input()\n set variant(val: 'primary' | 'secondary') {\n this._variant.set(val);\n }\n\n @Input()\n set name(val: string) {\n if (val) this._name.set(val);\n }\n\n /** Register an item with this group */\n registerItem(item: HviToggleGroupItem): void {\n this.registeredItems.push(item);\n // Update state if this item matches current value\n if (this._value() === item.value) {\n item.setSelected(true);\n }\n }\n\n /** Unregister an item from this group */\n unregisterItem(item: HviToggleGroupItem): void {\n const index = this.registeredItems.indexOf(item);\n if (index > -1) {\n this.registeredItems.splice(index, 1);\n }\n }\n\n /** Select an item and update all states */\n selectItem(item: HviToggleGroupItem): void {\n this._value.set(item.value);\n this.updateItemStates();\n this.valueChange.emit(item.value);\n this.onChange(item.value);\n this.onTouched();\n }\n\n /** Handle keyboard navigation (roving tabindex) */\n handleKeydown(event: KeyboardEvent, currentItem: HviToggleGroupItem): void {\n const items = this.registeredItems;\n const currentIndex = items.indexOf(currentItem);\n\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex = (currentIndex + 1) % items.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex = (currentIndex - 1 + items.length) % items.length;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n case ' ':\n case 'Enter':\n this.selectItem(currentItem);\n event.preventDefault();\n return;\n default:\n return;\n }\n\n if (nextIndex !== null) {\n event.preventDefault();\n const nextItem = items[nextIndex];\n nextItem.focus();\n this.selectItem(nextItem);\n }\n }\n\n private updateItemStates(): void {\n const currentValue = this._value();\n for (const item of this.registeredItems) {\n item.setSelected(item.value === currentValue);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this._value.set(value);\n this.updateItemStates();\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\n// Token for forward reference to avoid circular dependency\nexport const HviToggleGroupItemToken = Symbol('HviToggleGroupItem');\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { HviToggleGroup } from './toggle-group.component';\n\nlet nextId = 0;\n\n/**\n * @summary\n * ToggleGroupItem is a button directive for use inside HviToggleGroup.\n *\n * @example\n * ```html\n * <hvi-toggle-group [(value)]=\"selected\">\n * <button hviToggleGroupItem value=\"option1\">Option 1</button>\n * <button hviToggleGroupItem value=\"option2\">Option 2</button>\n * </hvi-toggle-group>\n * ```\n *\n * @see {@link https://designsystemet.no/no/components/toggle-group}\n */\n@Directive({\n selector: 'button[hviToggleGroupItem]',\n standalone: true,\n host: {\n class: 'ds-button',\n type: 'button',\n role: 'radio',\n '[id]': 'id',\n '[attr.value]': 'value',\n '[attr.name]': 'group._name()',\n '[attr.aria-checked]': 'isSelected()',\n '[attr.aria-current]': 'isSelected()',\n '[attr.data-variant]': 'computedVariant()',\n '[attr.data-icon]': 'icon ? \"\" : null',\n '[attr.data-roving-tabindex-item]': '\"true\"',\n '[tabindex]': 'isSelected() ? 0 : -1',\n '(click)': 'onClick()',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class HviToggleGroupItem implements OnInit, OnDestroy {\n readonly group = inject(HviToggleGroup);\n private readonly elementRef = inject(ElementRef<HTMLButtonElement>);\n\n /** Unique ID for this item */\n readonly id = `togglegroup-item-${++nextId}`;\n\n /** The value of this toggle item */\n @Input({ required: true }) value!: string;\n\n /** Toggle icon-only styling */\n @Input({ transform: booleanAttribute }) icon = false;\n\n /** Internal signal for tracking selection state */\n private readonly _isSelected = signal(false);\n\n /** Whether this item is currently selected */\n readonly isSelected = this._isSelected.asReadonly();\n\n /** Computed variant based on selection state */\n readonly computedVariant = computed(() => {\n return this._isSelected() ? this.group._variant() : 'tertiary';\n });\n\n ngOnInit(): void {\n this.group.registerItem(this);\n }\n\n ngOnDestroy(): void {\n this.group.unregisterItem(this);\n }\n\n /** Update the selected state (called by parent group) */\n setSelected(selected: boolean): void {\n this._isSelected.set(selected);\n }\n\n /** Focus this item's button element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n protected onClick(): void {\n this.group.selectItem(this);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n this.group.handleKeydown(event, this);\n }\n}\n","import { Directive, ElementRef, inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n type MiddlewareState,\n type Placement,\n} from '@floating-ui/dom';\n\n/** Placement for tooltip arrow positioning */\ntype TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\n/** Plugin for positioning the tooltip arrow pseudo-element */\nconst tooltipArrowPlugin = {\n name: 'TooltipArrowPlugin',\n fn(data: MiddlewareState) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n const basePlacement = placement.split('-')[0] as TooltipPlacement;\n\n switch (basePlacement) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', basePlacement);\n elements.floating.style.setProperty('--dsc-tooltip-arrow-x', arrowX);\n elements.floating.style.setProperty('--dsc-tooltip-arrow-y', arrowY);\n return data;\n },\n};\n\nlet tooltipIdCounter = 0;\n\n/**\n * @summary\n * Tooltip viser kort informasjon når brukeren holder musepekeren over\n * eller fokuserer på et element. Den brukes til sekundær informasjon,\n * for eksempel til å forklare hva et symbol betyr.\n *\n * @example\n * ```html\n * <button hviButton hviTooltip=\"Kopier\">📋</button>\n * <span hviTooltip=\"Organisasjonsnummer\">Org.nr.</span>\n * ```\n *\n * @see {@link https://designsystemet.no/en/components/docs/tooltip/code}\n */\n@Directive({\n selector: '[hviTooltip]',\n standalone: true,\n})\nexport class HviTooltip implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLElement>);\n private renderer = inject(Renderer2);\n private tooltipElement: HTMLElement | null = null;\n private tooltipId = `hvi-tooltip-${++tooltipIdCounter}`;\n private cleanupAutoUpdate?: () => void;\n private showTimeout?: ReturnType<typeof setTimeout>;\n private hideTimeout?: ReturnType<typeof setTimeout>;\n private isOpen = false;\n\n // Event listener cleanup functions\n private listeners: (() => void)[] = [];\n\n /** Tooltip content */\n @Input({ required: true }) hviTooltip = '';\n\n /** Placement of the tooltip relative to the trigger */\n @Input() tooltipPlacement: Placement = 'top';\n\n /** Enable auto placement when there's not enough space */\n @Input() tooltipAutoPlacement = true;\n\n /**\n * Override ARIA attribute type.\n * - 'describedby': tooltip describes the element (default for elements with text)\n * - 'labelledby': tooltip labels the element (default for icon-only buttons)\n */\n @Input() tooltipType?: 'describedby' | 'labelledby';\n\n /** Delay before showing tooltip (ms) */\n @Input() tooltipShowDelay = 150;\n\n /** Delay before hiding tooltip (ms) */\n @Input() tooltipHideDelay = 0;\n\n private get hostElement(): HTMLElement {\n return this.el.nativeElement;\n }\n\n ngOnInit() {\n this.createTooltipElement();\n this.setupTriggerAttributes();\n this.setupEventListeners();\n }\n\n ngOnDestroy() {\n this.cleanup();\n }\n\n private createTooltipElement() {\n this.tooltipElement = this.renderer.createElement('span');\n\n if (!this.tooltipElement) return;\n\n this.renderer.setAttribute(this.tooltipElement, 'id', this.tooltipId);\n this.renderer.setAttribute(this.tooltipElement, 'role', 'tooltip');\n this.renderer.setAttribute(this.tooltipElement, 'popover', 'manual');\n this.renderer.addClass(this.tooltipElement, 'ds-tooltip');\n this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n // Set initial content\n this.tooltipElement.textContent = this.hviTooltip;\n\n // Append to body to avoid overflow issues\n this.renderer.appendChild(document.body, this.tooltipElement);\n }\n\n private setupTriggerAttributes() {\n const host = this.hostElement;\n\n // Set popovertarget attributes\n this.renderer.setAttribute(host, 'popovertarget', this.tooltipId);\n this.renderer.setAttribute(host, 'popovertargetaction', 'show');\n\n // Determine ARIA attribute type\n const ariaType = this.tooltipType ?? this.detectAriaType();\n\n if (ariaType === 'labelledby') {\n this.renderer.setAttribute(host, 'aria-labelledby', this.tooltipId);\n } else {\n this.renderer.setAttribute(host, 'aria-describedby', this.tooltipId);\n }\n }\n\n private detectAriaType(): 'describedby' | 'labelledby' {\n const host = this.hostElement;\n const hasText = host.textContent?.trim();\n const hasAriaLabel = host.hasAttribute('aria-label');\n\n // If element has no visible text and no aria-label, use labelledby\n if (!hasText && !hasAriaLabel) {\n return 'labelledby';\n }\n\n return 'describedby';\n }\n\n private setupEventListeners() {\n const host = this.hostElement;\n\n // Mouse events\n this.listeners.push(\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\n this.renderer.listen(host, 'mouseleave', () => this.scheduleHide()),\n\n // Focus events\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\n this.renderer.listen(host, 'focusout', () => this.scheduleHide()),\n\n // Keyboard events\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isOpen) {\n this.hide();\n }\n }),\n );\n\n // Global escape handler\n this.listeners.push(\n this.renderer.listen('document', 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isOpen) {\n this.hide();\n }\n }),\n );\n }\n\n private scheduleShow() {\n this.clearTimeouts();\n\n if (this.tooltipShowDelay > 0) {\n this.showTimeout = setTimeout(() => this.show(), this.tooltipShowDelay);\n } else {\n this.show();\n }\n }\n\n private scheduleHide() {\n this.clearTimeouts();\n\n if (this.tooltipHideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.tooltipHideDelay);\n } else {\n this.hide();\n }\n }\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private show() {\n if (!this.tooltipElement || this.isOpen) return;\n\n // Update content in case it changed\n this.tooltipElement.textContent = this.hviTooltip;\n\n // Show the popover\n this.tooltipElement.showPopover?.();\n this.isOpen = true;\n\n // Position and show\n this.updatePosition();\n this.startAutoUpdate();\n\n // Fade in\n requestAnimationFrame(() => {\n if (this.tooltipElement) {\n this.renderer.setStyle(this.tooltipElement, 'opacity', '1');\n }\n });\n }\n\n private hide() {\n if (!this.tooltipElement || !this.isOpen) return;\n\n // Fade out\n this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n // Hide after transition\n setTimeout(() => {\n this.tooltipElement?.hidePopover?.();\n this.isOpen = false;\n this.stopAutoUpdate();\n }, 150); // Match CSS transition duration\n }\n\n private updatePosition() {\n const trigger = this.hostElement;\n const tooltip = this.tooltipElement;\n\n if (!trigger || !tooltip) return;\n\n computePosition(trigger, tooltip, {\n placement: this.tooltipPlacement,\n strategy: 'fixed',\n middleware: [\n offset(8), // Arrow size + small gap\n ...(this.tooltipAutoPlacement ? [flip(), shift({ padding: 8 })] : []),\n tooltipArrowPlugin,\n ],\n }).then(({ x, y }) => {\n if (this.tooltipElement) {\n this.renderer.setStyle(this.tooltipElement, 'translate', `${x}px ${y}px`);\n }\n });\n }\n\n private startAutoUpdate() {\n this.stopAutoUpdate();\n\n const trigger = this.hostElement;\n const tooltip = this.tooltipElement;\n\n if (!trigger || !tooltip) return;\n\n this.cleanupAutoUpdate = autoUpdate(trigger, tooltip, () => this.updatePosition());\n }\n\n private stopAutoUpdate() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n private cleanup() {\n this.clearTimeouts();\n this.stopAutoUpdate();\n\n // Remove event listeners\n this.listeners.forEach((unlisten) => unlisten());\n this.listeners = [];\n\n // Remove tooltip element\n if (this.tooltipElement) {\n this.tooltipElement.hidePopover?.();\n this.tooltipElement.remove();\n this.tooltipElement = null;\n }\n }\n}\n","/*\n * Public API Surface of hviktor\n */\n\nexport * from './alert';\nexport * from './avatar';\nexport * from './avatar-stack';\nexport * from './badge';\nexport * from './breadcrumbs';\nexport * from './button';\nexport * from './card';\nexport * from './chip';\nexport * from './details';\nexport * from './dialog';\nexport * from './divider';\nexport * from './dropdown';\nexport * from './forms';\nexport * from './heading';\nexport * from './icon';\nexport * from './label';\nexport * from './link';\nexport * from './list';\nexport * from './logo';\nexport * from './pagination';\nexport * from './paragraph';\nexport * from './popover';\nexport * from './required-tag';\nexport * from './search';\nexport * from './select';\nexport * from './skeleton';\nexport * from './skip-link';\nexport * from './spinner';\nexport * from './table';\nexport * from './tabs';\nexport * from './tag';\nexport * from './textfield';\nexport * from './toggle-group';\nexport * from './tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ERROR_PRIORITY","nextId"],"mappings":"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"}
|