@helsevestikt/hviktor-angular 0.0.13 → 0.0.15

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-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/paragraph/paragraph.directive.ts","../../../projects/hviktor/src/popover/popover.component.ts","../../../projects/hviktor/src/tag/tag.component.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 class=\"ds-link\" data-color=\"neutral\" [href]=\"err.href\">{{ err.message }}</a>\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 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 { 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]',\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: MouseEvent): 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: KeyboardEvent): void {\n if (!this._readOnly || !this.isToggle) return;\n\n if (event.key === ' ' || event.key === 'Spacebar' || event.key === 'Enter') {\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 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] 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 { 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","/*\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 './paragraph';\nexport * from './popover';\nexport * from './tag';\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/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/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/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 { 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 { 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 './paragraph';\nexport * from './popover';\nexport * from './search';\nexport * from './select';\nexport * from './skeleton';\nexport * from './skip-link';\nexport * from './spinner';\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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"}