@norges-domstoler/dds-components 14.1.0 → 14.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/helpers/Chevron/AnimatedChevronUpDown.styles.tsx","../src/components/helpers/Chevron/AnimatedChevronUpDown.tsx","../src/components/helpers/HiddenInput/HiddenInput.tsx","../src/components/helpers/Input/Input.styles.tsx","../src/components/helpers/Input/Input.tokens.tsx","../src/components/helpers/styling/danger.tsx","../src/components/helpers/styling/focus.tsx","../src/components/helpers/styling/focusVisible.tsx","../src/components/helpers/styling/hideInput.tsx","../src/components/helpers/styling/hover.tsx","../src/components/helpers/styling/normalize.tsx","../src/components/helpers/styling/removeButtonStyling.tsx","../src/components/helpers/styling/removeListStyling.tsx","../src/components/helpers/styling/selection.tsx","../src/components/helpers/styling/visibilityTransition.tsx","../src/components/Typography/Caption/Caption.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.tsx","../src/components/Typography/Typography/Typography.tsx","../src/components/Typography/Typography.tokens.tsx","../src/components/Typography/Typography/Typography.styles.ts","../src/components/Typography/Typography/Typography.utils.ts","../src/utils/dom.ts","../src/types/BaseComponentProps.ts","../src/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/utils/StyledSvg.ts","../src/components/Icon/icons/index.ts","../src/components/Icon/utils/SvgWrapper.tsx","../src/components/Icon/icons/addressShielded.tsx","../src/components/Icon/icons/agreement.tsx","../src/components/Icon/icons/apps.tsx","../src/components/Icon/icons/archive.tsx","../src/components/Icon/icons/arrowDown.tsx","../src/components/Icon/icons/arrowLeft.tsx","../src/components/Icon/icons/arrowRight.tsx","../src/components/Icon/icons/arrowUp.tsx","../src/components/Icon/icons/attachment.tsx","../src/components/Icon/icons/block.tsx","../src/components/Icon/icons/book.tsx","../src/components/Icon/icons/build.tsx","../src/components/Icon/icons/buildCircled.tsx","../src/components/Icon/icons/calendar.tsx","../src/components/Icon/icons/calendarMonth.tsx","../src/components/Icon/icons/calendarViewDay.tsx","../src/components/Icon/icons/calendarViewMonth.tsx","../src/components/Icon/icons/calendarViewWeek.tsx","../src/components/Icon/icons/call.tsx","../src/components/Icon/icons/caring.tsx","../src/components/Icon/icons/chat.tsx","../src/components/Icon/icons/check.tsx","../src/components/Icon/icons/checkCircled.tsx","../src/components/Icon/icons/checklist.tsx","../src/components/Icon/icons/chevronDown.tsx","../src/components/Icon/icons/chevronFirst.tsx","../src/components/Icon/icons/chevronLargeLeft.tsx","../src/components/Icon/icons/chevronLargeRight.tsx","../src/components/Icon/icons/chevronLast.tsx","../src/components/Icon/icons/chevronLeft.tsx","../src/components/Icon/icons/chevronRight.tsx","../src/components/Icon/icons/chevronUp.tsx","../src/components/Icon/icons/close.tsx","../src/components/Icon/icons/closeSmall.tsx","../src/components/Icon/icons/closeCircled.tsx","../src/components/Icon/icons/cloud.tsx","../src/components/Icon/icons/collapse.tsx","../src/components/Icon/icons/comment.tsx","../src/components/Icon/icons/copy.tsx","../src/components/Icon/icons/court.tsx","../src/components/Icon/icons/dateRange.tsx","../src/components/Icon/icons/deaths.tsx","../src/components/Icon/icons/doubleChevronLeft.tsx","../src/components/Icon/icons/doubleChevronRight.tsx","../src/components/Icon/icons/download.tsx","../src/components/Icon/icons/downloadDone.tsx","../src/components/Icon/icons/dragHandle.tsx","../src/components/Icon/icons/edit.tsx","../src/components/Icon/icons/error.tsx","../src/components/Icon/icons/exclaim.tsx","../src/components/Icon/icons/expand.tsx","../src/components/Icon/icons/facebook.tsx","../src/components/Icon/icons/family.tsx","../src/components/Icon/icons/feedback.tsx","../src/components/Icon/icons/file.tsx","../src/components/Icon/icons/fileAdd.tsx","../src/components/Icon/icons/fileShielded.tsx","../src/components/Icon/icons/fileText.tsx","../src/components/Icon/icons/filter.tsx","../src/components/Icon/icons/filterList.tsx","../src/components/Icon/icons/filterListOff.tsx","../src/components/Icon/icons/filterOff.tsx","../src/components/Icon/icons/findInPage.tsx","../src/components/Icon/icons/flickr.tsx","../src/components/Icon/icons/folder.tsx","../src/components/Icon/icons/folderAdd.tsx","../src/components/Icon/icons/folderShielded.tsx","../src/components/Icon/icons/fullsceenExit.tsx","../src/components/Icon/icons/fullscreen.tsx","../src/components/Icon/icons/gavel.tsx","../src/components/Icon/icons/help.tsx","../src/components/Icon/icons/helpFilled.tsx","../src/components/Icon/icons/home.tsx","../src/components/Icon/icons/hourglassBottom.tsx","../src/components/Icon/icons/hourglassDisabled.tsx","../src/components/Icon/icons/hourglassEmpty.tsx","../src/components/Icon/icons/hourglassFull.tsx","../src/components/Icon/icons/hourglassTop.tsx","../src/components/Icon/icons/image.tsx","../src/components/Icon/icons/info.tsx","../src/components/Icon/icons/instagram.tsx","../src/components/Icon/icons/jordskifterett.tsx","../src/components/Icon/icons/key.tsx","../src/components/Icon/icons/lagmannsrett.tsx","../src/components/Icon/icons/language.tsx","../src/components/Icon/icons/link.tsx","../src/components/Icon/icons/linkedIn.tsx","../src/components/Icon/icons/linkOff.tsx","../src/components/Icon/icons/list.tsx","../src/components/Icon/icons/listAlt.tsx","../src/components/Icon/icons/location.tsx","../src/components/Icon/icons/lock.tsx","../src/components/Icon/icons/lockOpen.tsx","../src/components/Icon/icons/login.tsx","../src/components/Icon/icons/logout.tsx","../src/components/Icon/icons/mail.tsx","../src/components/Icon/icons/mailOpen.tsx","../src/components/Icon/icons/menu.tsx","../src/components/Icon/icons/minus.tsx","../src/components/Icon/icons/minusCircled.tsx","../src/components/Icon/icons/moreHorizontal.tsx","../src/components/Icon/icons/moreVertical.tsx","../src/components/Icon/icons/notarial.tsx","../src/components/Icon/icons/notifications.tsx","../src/components/Icon/icons/notificationsOff.tsx","../src/components/Icon/icons/onlineMeeting.tsx","../src/components/Icon/icons/openExternal.tsx","../src/components/Icon/icons/payout.tsx","../src/components/Icon/icons/pdf.tsx","../src/components/Icon/icons/person.tsx","../src/components/Icon/icons/personAdd.tsx","../src/components/Icon/icons/personShielded.tsx","../src/components/Icon/icons/pin.tsx","../src/components/Icon/icons/plus.tsx","../src/components/Icon/icons/plusCircled.tsx","../src/components/Icon/icons/print.tsx","../src/components/Icon/icons/property.tsx","../src/components/Icon/icons/publish.tsx","../src/components/Icon/icons/questionAnswer.tsx","../src/components/Icon/icons/receipt.tsx","../src/components/Icon/icons/redo.tsx","../src/components/Icon/icons/refresh.tsx","../src/components/Icon/icons/replay.tsx","../src/components/Icon/icons/search.tsx","../src/components/Icon/icons/settings.tsx","../src/components/Icon/icons/sms.tsx","../src/components/Icon/icons/star.tsx","../src/components/Icon/icons/starFilled.tsx","../src/components/Icon/icons/starHalfFilled.tsx","../src/components/Icon/icons/sync.tsx","../src/components/Icon/icons/thumbdown.tsx","../src/components/Icon/icons/thumbdownFilled.tsx","../src/components/Icon/icons/thumbup.tsx","../src/components/Icon/icons/thumbupFilled.tsx","../src/components/Icon/icons/time.tsx","../src/components/Icon/icons/tingrett.tsx","../src/components/Icon/icons/tip.tsx","../src/components/Icon/icons/trash.tsx","../src/components/Icon/icons/twitter.tsx","../src/components/Icon/icons/undo.tsx","../src/components/Icon/icons/unfoldLess.tsx","../src/components/Icon/icons/unfoldMore.tsx","../src/components/Icon/icons/upload.tsx","../src/components/Icon/icons/visibilityOff.tsx","../src/components/Icon/icons/visibilityOn.tsx","../src/components/Icon/icons/warning.tsx","../src/components/Icon/icons/zoomIn.tsx","../src/components/Icon/icons/zoomOut.tsx","../src/components/Icon/icons/barChart.tsx","../src/components/Icon/icons/barChartBoxed.tsx","../src/components/Icon/icons/lineChart.tsx","../src/components/Icon/icons/trendingUp.tsx","../src/components/Icon/icons/trendingDown.tsx","../src/components/Icon/icons/libraryAdd.tsx","../src/utils/renderInputMessage.tsx","../src/utils/searchFilter.tsx","../src/utils/text.tsx","../src/components/Typography/Heading/Heading.tsx","../src/components/Typography/Label/Label.tsx","../src/components/Typography/Legend/Legend.tsx","../src/components/Typography/Link/Link.tsx","../src/components/Typography/Paragraph/Paragraph.tsx","../src/components/helpers/Input/Input.utils.tsx","../src/components/helpers/Paper/Paper.tsx","../src/components/helpers/Paper/Paper.tokens.tsx","../src/components/helpers/RequiredMarker/RequiredMarker.tsx","../src/hooks/useCombinedRefs.tsx","../src/hooks/useFloatPosition.tsx","../src/hooks/useFocusTrap.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useMountTransition.tsx","../src/hooks/useOnClickOutside.tsx","../src/hooks/useOnKeyDown.tsx","../src/hooks/useReturnFocusOnBlur.ts","../src/hooks/useRoveFocus.tsx","../src/hooks/useScreenSize.tsx","../src/components/helpers/ScreenSize/ScreenSize.utils.tsx","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.styles.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/Select/SelectComponents.tsx","../src/components/Select/utils.ts","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Table.tsx","../src/components/Table/Table.tokens.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Head.tsx","../src/components/Table/Body.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/Cell.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionContext.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.ts","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarGrid.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarCell.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tokens.ts","../src/components/date-inputs/DatePicker/constants.ts","../src/components/date-inputs/utils/getWeekNumber.ts","../src/components/date-inputs/DatePicker/DatePicker.tsx","../src/components/date-inputs/DatePicker/DateField/DateField.tsx","../src/components/date-inputs/DatePicker/DateField/DateSegment.tsx","../src/components/date-inputs/DatePicker/DatePicker.tokens.ts","../src/components/date-inputs/DatePicker/DateField/CalendarButton.tsx","../src/components/date-inputs/common/DateInput.tsx","../src/components/date-inputs/DatePicker/CalendarPopover.tsx","../src/components/date-inputs/utils/useFocusManagerRef.ts","../src/components/date-inputs/TimePicker/TimePicker.tsx","../src/components/date-inputs/utils/transform.ts","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.tokens.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.tokens.tsx","../src/components/ToggleButton/ToggleButtonGroup.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tokens.tsx","../src/components/Tabs/TabWidthContext.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Feedback/CommentComponent.tsx"],"sourcesContent":["export * from './components/helpers';\nexport * from './components/Icon/icons';\nexport * as icons from './components/Icon/icons';\nexport * from './hooks';\nexport * from './types';\nexport { cn } from './utils/dom';\n\nexport * from './components/AppShell';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/Button';\nexport * from './components/TextInput';\nexport * from './components/Select';\nexport * from './components/GlobalMessage';\nexport * from './components/LocalMessage';\nexport * from './components/Search';\nexport * from './components/Table';\nexport * from './components/Breadcrumbs';\nexport * from './components/Pagination';\nexport * from './components/Divider';\nexport * from './components/List';\nexport * from './components/DescriptionList';\nexport * from './components/Spinner';\nexport * from './components/Card';\nexport * from './components/InternalHeader';\nexport * from './components/SkipToContent';\nexport * from './components/Tooltip';\nexport * from './components/Modal';\nexport * from './components/Drawer';\nexport * from './components/date-inputs';\nexport * from './components/OverflowMenu';\nexport * from './components/Popover';\nexport * from './components/InputMessage';\nexport * from './components/ToggleButton';\nexport * from './components/Tabs';\nexport * from './components/Tag';\nexport * from './components/Chip';\nexport * from './components/VisuallyHidden';\nexport * from './components/ScrollableContainer';\nexport * from './components/ToggleBar';\nexport * from './components/Grid';\nexport * from './components/Icon';\nexport * from './components/ProgressTracker';\nexport * from './components/InlineEdit';\nexport * from './components/TextArea';\nexport * from './components/SplitButton';\nexport * from './components/Stack';\nexport * from './components/FileUploader';\nexport * from './components/EmptyContent';\nexport * from './components/BackLink';\nexport * from './components/Feedback';\nexport * from './components/Typography';\n","import styled from 'styled-components';\n\nexport interface StyledSvgChevronProps {\n $isUp?: boolean;\n}\n\nexport const SvgChevron = styled.svg`\n display: inline-block;\n flex-shrink: 0;\n position: relative;\n text-align: center;\n vertical-align: middle;\n`;\n\nexport const SvgChevronlGroup = styled.g<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform: ${({ $isUp }) => ($isUp ? 'translateY(3px)' : 'translateY(0)')};\n`;\n\nexport const SvgChevronlLeft = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 1px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(-90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n\nexport const SvgChevronlRight = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 7px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n","import {\n SvgChevronlRight,\n SvgChevronlLeft,\n SvgChevronlGroup,\n SvgChevron,\n} from './AnimatedChevronUpDown.styles';\nimport { Property } from 'csstype';\n\nconst svgChevronLeftPath =\n 'M 1 0 L 5 4 C 5 4 5 4 5 4 L 4 5 C 4 5 4 5 4 5 C 4 5 4 5 4 5 L 0 1 C 0 1 0 1 0 1 L 1 0 C 1 0 1 0 1 0 C 1 0 1 0 1 0 L 1 0 Z';\nconst svgChevronRightPath =\n 'M 3 4 L 7 0 L 8 1 C 8 1 8 1 8 1 L 4 5 L 3 4 C 3 4 3 4 3 4 L 3 4 Z';\n\ninterface SvgChevronProps {\n isUp?: boolean;\n height?: Property.Height<string>;\n width?: Property.Width<string>;\n}\n\nexport const AnimatedChevronUpDown = ({\n isUp,\n height = '5px',\n width = '8px',\n}: SvgChevronProps) => {\n return (\n <SvgChevron\n viewBox=\"0 0 8 5\"\n width={width}\n height={height}\n fill=\"currentColor\"\n >\n <SvgChevronlGroup $isUp={isUp}>\n <SvgChevronlLeft d={svgChevronLeftPath} $isUp={isUp} />\n <SvgChevronlRight d={svgChevronRightPath} $isUp={isUp} />\n </SvgChevronlGroup>\n </SvgChevron>\n );\n};\n","import styled from 'styled-components';\n\nexport const HiddenInput = styled.input`\n clip: rect(0 0 0 0);\n position: absolute;\n height: 1px;\n width: 1px;\n margin: 0;\n`;\n","import styled, { css } from 'styled-components';\nimport { inputTokens as tokens, inputTypographyTypes } from './Input.tokens';\nimport { StyledInputProps } from '.';\nimport { Property } from 'csstype';\nimport {\n dangerInputfield,\n focusDangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../styling';\nimport { getFontStyling } from '../../Typography';\n\nconst { input, container } = tokens;\n\nexport const Input = styled.input`\n position: relative;\n color: ${input.base.color};\n border-radius: ${input.base.borderRadius};\n border: ${input.base.border};\n border-color: ${input.base.borderColor};\n background-color: ${input.base.backgroundColor};\n padding: ${input.base.padding};\n width: 100%;\n margin: 0;\n box-sizing: border-box;\n box-shadow: none;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s,\n background-color 0.2s;\n }\n &[type='text'],\n &[type='password'],\n &[type='number'],\n &[type='tel'],\n &[type='date'],\n &[type='url'],\n &[type='email'],\n &[type='search'],\n &[type='datetime-local'] {\n -webkit-appearance: none;\n }\n &::selection {\n ${selection}\n }\n\n &:not(.disabled):not(.read-only):not(.active):hover,\n &:hover:enabled:read-write {\n ${hoverInputfield}\n }\n &:not(.disabled):not(.read-only):focus-within,\n &.active,\n &:focus:enabled:read-write,\n &:active:enabled:read-write {\n ${focusInputfield}\n }\n`;\n\nexport const StatefulInput = styled(Input).withConfig({\n shouldForwardProp: prop => {\n const stylingProps: (keyof StyledInputProps)[] = [\n 'componentSize',\n 'hasErrorMessage',\n 'prefixLength',\n 'suffixLength',\n ];\n return !stylingProps.some(styleProp => styleProp === prop);\n },\n})<StyledInputProps>`\n -webkit-appearance: textfield;\n\n padding-left: ${({ prefixLength, readOnly }) =>\n prefixLength &&\n (readOnly\n ? `${prefixLength}px !important`\n : `calc(${input.affix.gap}px + ${prefixLength}px) !important`)};\n padding-right: ${({ suffixLength, readOnly }) =>\n suffixLength &&\n (readOnly\n ? `${suffixLength}px !important`\n : `calc(${input.affix.gap}px + ${suffixLength}px) !important`)};\n ${({ componentSize }) =>\n componentSize &&\n css`\n padding: ${input.sizes[componentSize].padding};\n ${getFontStyling(inputTypographyTypes[componentSize])}\n `}\n\n ${({ hasErrorMessage }) =>\n hasErrorMessage &&\n css`\n ${dangerInputfield}\n &:not(.disabled):hover,\n &:hover:enabled:read-write {\n ${hoverDangerInputfield}\n }\n &:not(.disabled):focus-within,\n &:focus-within:enabled:read-write,\n &:active:enabled:read-write {\n ${focusDangerInputfield}\n }\n `}\n &:not(.disabled).read-only,\n &:enabled:read-only {\n border: none;\n outline: none;\n cursor: default;\n background-color: ${input.readOnly.backgroundColor};\n padding-left: 0;\n }\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n color: ${input.disabled.color};\n background-color: ${input.disabled.backgroundColor};\n }\n`;\n\ninterface OuterInputContainerProps {\n width?: Property.Width;\n}\n\nexport const OuterInputContainer = styled.div<OuterInputContainerProps>`\n position: relative;\n gap: ${container.gap};\n width: ${({ width }) => width};\n`;\n\n/**Brukes som container til input og ikon for posisjonering. */\n\nexport const InputContainer = styled.div`\n position: relative;\n`;\n\nexport const InputAffixContainer = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`;\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { InputTypographyTypes } from './Input.types';\n\nconst { colors, spacing, border } = ddsBaseTokens;\n\nconst { textInput: TextInput } = ddsReferenceTokens;\n\nexport const inputTypographyTypes: InputTypographyTypes = {\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst input = {\n base: {\n color: TextInput.input.textColor,\n borderRadius: TextInput.input.borderRadius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderColor: TextInput.input.borderColor,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n disabled: {\n color: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n readOnly: {\n backgroundColor: 'transparent',\n },\n sizes: {\n medium: {\n padding: spacing.SizesDdsSpacingX075,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n affix: {\n gap: spacing.SizesDdsSpacingX1NumberPx,\n },\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nexport const inputTokens = {\n input,\n container,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors: Colors } = ddsBaseTokens;\n\nexport const dangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border } = ddsBaseTokens;\n\nexport const focusInputfield = {\n outline: 'none',\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const focusDangerInputfield = {\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, spacing } = ddsBaseTokens;\n\nexport const outlineOffset = spacing.SizesDdsSpacingX0125;\n\nexport const focusVisible = {\n outline: `${Border.BordersDdsBorderFocusBaseStrokeWeight} ${Border.BordersDdsBorderFocusBaseStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleOnDark = {\n outline: `${Border.BordersDdsBorderFocusOndarkStrokeWeight} ${Border.BordersDdsBorderFocusOndarkStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleTransitionValue = 'outline-offset 0.2s';\n\nexport const focusVisibleWithBorder = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusCardStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n\nexport const focusVisibleThickWithBorderOnDark = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusOndarkStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusOndarkStroke}`,\n};\n\nexport const focusVisibleInset = {\n outline: 'none',\n boxShadow: `inset 0 0 0 2px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n","export const hideInput = {\n clip: 'rect(0 0 0 0)',\n position: 'absolute',\n height: '1px',\n width: '1px',\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, colors: Colors } = ddsBaseTokens;\n\nexport const hoverWithBorder = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverInputfield = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverDangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { Property } from 'csstype';\n\nexport const normalizeButton = {\n margin: 0,\n textTransform: 'none' as Property.TextTransform,\n};\n","export const removeButtonStyling = {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n};\n","export const removeListStyling = {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors } = ddsBaseTokens;\n\nexport const selection = {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorTertiaryLightest,\n};\n","import { css } from 'styled-components';\n\nexport const visibilityTransition = (open: boolean) => {\n return css`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n visibility 0.4s,\n opacity 0.2s;\n }\n visibility: ${open ? 'visible' : 'hidden'};\n opacity: ${open ? 1 : 0};\n `;\n};\n","import { forwardRef } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type CaptionProps = BaseComponentPropsWithChildren<\n HTMLTableCaptionElement,\n BaseTypographyProps\n>;\n\nexport const Caption = forwardRef<HTMLTableCaptionElement, CaptionProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"headingSans03\"\n as=\"caption\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nCaption.displayName = 'Caption';\n","import styled from 'styled-components';\n\nexport const TextOverflowEllipsisWrapper = styled.span`\n max-width: 100%;\n`;\n\nexport const TextOverflowEllipsisInner = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","import {\n forwardRef,\n ElementType,\n HTMLAttributes,\n AnchorHTMLAttributes,\n} from 'react';\nimport styled, { css, CSSObject } from 'styled-components';\n\nimport { typographyTokens as tokens } from '../Typography.tokens';\nimport {\n getAnchorStyling,\n getMarginStyling,\n getAdditionalFontStyle,\n} from './Typography.styles';\nimport {\n TypographyType,\n TypographyInteractionStyling,\n TypographyComponentProps,\n AnchorTypographyType,\n LabelTypographyType,\n OtherTypographyType,\n} from './Typography.types';\nimport { getElementType } from './Typography.utils';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { TextColor, getTextColor } from '../../../utils';\nimport { selection } from '../../helpers';\n\ninterface StyledTypographyProps {\n as: ElementType;\n typographyType: TypographyType;\n withMargins?: boolean;\n color: TextColor;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n interactionProps?: TypographyInteractionStyling;\n externalLink?: boolean;\n}\n\nconst StyledTypography = styled.p.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledTypographyProps)[] = [\n 'externalLink',\n 'typographyType',\n 'withMargins',\n 'interactionProps',\n 'bold',\n 'italic',\n 'underline',\n 'color',\n 'as',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledTypographyProps>`\n user-select: text;\n &::selection,\n *::selection {\n ${selection}\n }\n\n ${({ typographyType, externalLink, interactionProps }) =>\n typographyType === 'a'\n ? css`\n ${getAnchorStyling(externalLink, interactionProps)}\n `\n : css`\n color: ${tokens.typographyType[typographyType].base.color};\n ${tokens.typographyType[typographyType].base.font};\n `}\n\n ${({ interactionProps }) =>\n interactionProps?.hover &&\n css`\n &:hover {\n ${interactionProps.hover as CSSObject}\n }\n `}\n ${({ interactionProps }) =>\n interactionProps?.active &&\n css`\n &:active {\n ${interactionProps.active as CSSObject}\n }\n `}\n\n color: ${({ color }) => getTextColor(color)};\n\n ${({ typographyType, as, withMargins }) =>\n getMarginStyling(typographyType, as, withMargins)}\n\n ${({ bold, italic, underline }) =>\n getAdditionalFontStyle(bold, italic, underline)};\n`;\n\ntype AnchorTypographyProps = BaseComponentProps<\n HTMLAnchorElement,\n TypographyComponentProps & {\n /**nativ `href`-prop ved `typographyType='a'`. */\n href?: string | undefined;\n\n /** Spesifiserer om lenka er ekstern ved `typographyType='a'` eller `as='a'`.*/\n externalLink?: boolean;\n\n /**nativ `target`-prop ved `typographyType='a'`. */\n target?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n>;\n\ntype LabelTypographyProps = BaseComponentProps<\n HTMLLabelElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLLabelElement>\n>;\n\ntype OtherTypographyProps = BaseComponentProps<\n HTMLElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLElement>\n>;\n\nexport type TypographyProps =\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: AnchorTypographyType;\n } & AnchorTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: LabelTypographyType;\n } & LabelTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: OtherTypographyType;\n } & OtherTypographyProps);\n\nconst isAnchorProps = (\n props: TypographyProps,\n): props is AnchorTypographyProps => props.typographyType === 'a';\n\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(\n (props, ref) => {\n const {\n typographyType = 'bodySans02',\n as: propAs,\n children,\n style,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { style: htmlPropsStyle, ...restHtmlProps } = htmlProps;\n\n const as = propAs ? propAs : getElementType(typographyType as string);\n\n let relProp;\n let targetProp;\n let externalLinkProp;\n if (isAnchorProps(props)) {\n const { externalLink, target } = props;\n relProp = as === 'a' ? 'noopener noreferer' : undefined;\n targetProp = as !== 'a' ? undefined : externalLink ? '_blank' : target;\n externalLinkProp = as === 'a' && externalLink ? externalLink : undefined;\n }\n\n const typographyProps = {\n ...getBaseHTMLProps<HTMLElement>(id, className, restHtmlProps, rest),\n typographyType,\n as,\n style: { ...htmlPropsStyle, ...style },\n rel: relProp,\n target: targetProp,\n externalLink: externalLinkProp,\n };\n\n return (\n <StyledTypography ref={ref} {...typographyProps}>\n {children}\n </StyledTypography>\n );\n },\n);\n\nTypography.displayName = 'Typography';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, fontPackages, spacing } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst a = {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n icon: {\n marginTop: spacing.SizesDdsSpacingX025,\n marginLeft: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst bold = {\n fontWeight: 600,\n};\n\nconst headingSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_01.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans01Top,\n },\n};\n\nconst headingSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_02.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans02Top,\n },\n};\n\nconst headingSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_03.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans03Top,\n },\n};\n\nconst headingSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_04.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans04Top,\n },\n};\n\nconst headingSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_05.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans05Top,\n },\n};\n\nconst headingSans06 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_06.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_06.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans06Top,\n },\n};\n\nconst headingSans07 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_07.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_07.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans07Top,\n },\n};\n\nconst headingSans08 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_08.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_08.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans08Top,\n },\n};\n\nconst bodySans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_05.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleLabel01 = {\n base: {\n color: colors.DdsColorNeutralsGray7,\n font: fontPackages.supportingStyle_label_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleHelperText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_helpertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStylePlaceholderText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText02 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_02.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText03 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_03.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_02.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n },\n};\n\nexport const typographyTokens = {\n typographyType: {\n a,\n headingSans01,\n headingSans02,\n headingSans03,\n headingSans04,\n headingSans05,\n headingSans06,\n headingSans07,\n headingSans08,\n bodySans01,\n bodySans02,\n bodySans03,\n bodySans04,\n leadSans01,\n leadSans02,\n leadSans03,\n leadSans04,\n leadSans05,\n supportingStyleLabel01,\n supportingStyleHelperText01,\n supportingStylePlaceholderText01,\n supportingStylePlaceholderText02,\n supportingStylePlaceholderText03,\n supportingStyleTiny01,\n supportingStyleTiny02,\n },\n style: {\n bold,\n },\n};\n","import { ElementType } from 'react';\nimport { css, CSSObject } from 'styled-components';\nimport OpenExternalIcon from './openExternal.svg';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { border, colors } = ddsBaseTokens;\n\nimport { typographyTokens as tokens } from '../Typography.tokens';\nimport {\n StaticTypographyType,\n TypographyInteractionStyling,\n TypographyType,\n} from './Typography.types';\nimport { isHeading, isInlineElement } from './Typography.utils';\n\nexport const focusVisibleLink = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusBaseStroke,\n color: colors.DdsColorNeutralsWhite,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkOnDark = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusOndarkStroke,\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkTransitionValue =\n 'background-color 0.2s, text-decoration 0.2s, color 0.2s';\n\nexport const getFontStyling = (\n type: StaticTypographyType,\n withColor?: boolean,\n) => {\n return {\n color: withColor ? tokens.typographyType[type].base.color : undefined,\n ...tokens.typographyType[type].base.font,\n };\n};\n\nexport const getAdditionalFontStyle = (\n bold?: boolean,\n italic?: boolean,\n underline?: boolean,\n) => {\n return css`\n ${bold &&\n css`\n font-weight: ${tokens.style.bold.fontWeight};\n `}\n ${italic &&\n css`\n font-style: italic;\n `}\n ${underline &&\n css`\n text-decoration: underline;\n `}\n `;\n};\n\nexport const getMarginStyling = (\n typographyType: TypographyType,\n element: ElementType,\n withMargins?: boolean,\n) =>\n withMargins\n ? css`\n ${isInlineElement(element) &&\n element !== 'a' &&\n css`\n display: block;\n `}\n margin-top: ${tokens.typographyType[typographyType].margins.marginTop};\n margin-bottom: ${tokens.typographyType[typographyType].margins\n .marginBottom};\n ${isHeading(typographyType) &&\n css`\n padding-top: ${tokens.typographyType[typographyType].margins\n .paddingTop};\n `}\n `\n : css`\n margin: 0;\n `;\n\nexport const getAnchorStyling = (\n external?: boolean,\n interactionStyling?: TypographyInteractionStyling,\n typographyType?: StaticTypographyType,\n withMargins?: boolean,\n) => css`\n ${typographyType\n ? css`\n ${tokens.typographyType[typographyType].base.font};\n ${getMarginStyling(typographyType, 'a', withMargins)}\n `\n : css`\n font: inherit;\n ${getMarginStyling('a', 'a', withMargins)}\n `}\n color: ${tokens.typographyType.a.base.color};\n width: fit-content;\n text-decoration: underline;\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleLinkTransitionValue};\n }\n ${external &&\n css`\n padding-right: calc(1em + ${tokens.typographyType.a.icon.marginLeft});\n position: relative;\n &::after {\n mask: ${`url('${OpenExternalIcon}')`} no-repeat center / contain;\n background: 0 0;\n background-color: currentColor;\n width: 1em;\n height: 1em;\n content: '';\n position: absolute;\n margin-top: ${tokens.typographyType.a.icon.marginTop};\n margin-left: ${tokens.typographyType.a.icon.marginLeft};\n }\n `}\n &:hover {\n color: ${tokens.typographyType.a.hover.color};\n ${interactionStyling?.hover &&\n css`\n ${interactionStyling.hover as CSSObject}\n `}\n }\n ${interactionStyling?.active &&\n css`\n &:active {\n ${interactionStyling.active as CSSObject}\n }\n `}\n &:focus-visible, &.focus-visible, &:focus-visible::selection, &.focus-visible::selection {\n ${focusVisibleLink}\n }\n`;\n","import { ElementType } from 'react';\nimport {\n TypographyBodyType,\n TypographyType,\n TypographyHeadingType,\n InlineElement,\n} from './Typography.types';\n\nexport const defaultTypographyType: TypographyBodyType = 'bodySans02';\n\nexport const getElementType = (element: string): ElementType => {\n switch (element) {\n case 'a':\n return 'a';\n case 'headingSans01':\n return 'h6';\n case 'headingSans02':\n return 'h5';\n case 'headingSans03':\n return 'h4';\n case 'headingSans04':\n return 'h3';\n case 'headingSans05':\n return 'h2';\n case 'headingSans06':\n case 'headingSans07':\n case 'headingSans08':\n return 'h1';\n case 'supportingStyleLabel01':\n return 'label';\n case 'bodySans01':\n case 'bodySans02':\n case 'bodySans03':\n case 'bodySans04':\n case 'leadSans01':\n case 'leadSans02':\n case 'leadSans03':\n case 'leadSans04':\n case 'leadSans05':\n case 'supportingStyleHelperText01':\n case 'supportingStylePlaceholderText01':\n case 'supportingStylePlaceholderText02':\n case 'supportingStylePlaceholderText03':\n case 'supportingStyleTiny01':\n case 'supportingStyleTiny02':\n default:\n return 'p';\n }\n};\n\nexport const isHeading = (\n type: TypographyType,\n): type is TypographyHeadingType => {\n return true;\n};\n\nexport const inlineElements: ElementType[] = [\n 'a',\n 'abbr',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'br',\n 'button',\n 'canvas',\n 'cite',\n 'code',\n 'data',\n 'datalist',\n 'del',\n 'dfn',\n 'em',\n 'embed',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'map',\n 'mark',\n 'meter',\n 'noscript',\n 'object',\n 'output',\n 'picture',\n 'progress',\n 'q',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'svg',\n 'template',\n 'textarea',\n 'time',\n 'u',\n 'var',\n 'video',\n 'wbr',\n];\n\nexport const isInlineElement = (as: ElementType): as is InlineElement =>\n inlineElements.indexOf(as) !== -1;\n","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: unknown[]) {\n return classNames.filter(Boolean).join(' ');\n}\n","import { HTMLAttributes, PropsWithChildren } from 'react';\nimport { cn } from '../../../components/src/utils/dom';\n\n/**\n * Basetype for props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `HTMLAttributes`-props på komponenter som eksponeres\n * av designsystemet. Se også {@link BaseComponentPropsWithChildren} og\n * {@link getBaseHTMLProps}.\n *\n * @template TElement Element-type som genereres av komponenten.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template THTMLAttributesProps Standard `HTMLAttributes<T>` men kan overstyres for f.eks knapper hvis man trenger en annen basetype for `htmlProps`.\n */\nexport type BaseComponentProps<\n TElement extends Element,\n TOtherProps extends object = object,\n THTMLAttributesProps extends\n HTMLAttributes<TElement> = HTMLAttributes<TElement>,\n> = Pick<THTMLAttributesProps, 'id' | 'className'> &\n TOtherProps & {\n /**Ekstra HTML-attributter som vil settes på elementet som genereres. Untatt `id` og `className` som settes på toppnivå. */\n htmlProps?: THTMLAttributesProps;\n };\n\n/**\n * Utvidelese av {@link BaseComponentProps} med prop for `children`.\n *\n * {@link BaseComponentProps}\n */\nexport type BaseComponentPropsWithChildren<\n T extends Element,\n TProps extends object = object,\n THTMLProps extends HTMLAttributes<T> = HTMLAttributes<T>,\n> = BaseComponentProps<T, PropsWithChildren<TProps>, THTMLProps>;\n\ninterface GetBaseHTMLProps {\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n className: HTMLAttributes<T>['className'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n}\n\n/**\n * Slår sammen id, className, htmlProps og unknownProps til ett objekt\n * som kan spreades som baseprops for en komponent. `unknownProps` er\n * med for å sikre at aria- og data- attributter blir spreadet, alle\n * komponenter må derfor ta hensyn til `...rest` når de leser props.\n *\n * Typisk bruk:\n * ```\n * const Props = BaseComponentProps<HTMLElement, {\n * propA: string,\n * propB: string,\n * }>\n *\n * const MyComponent = (props: Props) => {\n * const { propA, propB, id, className, htmlProps, ...rest } = props;\n *\n * const wrapperProps = getBaseHTMLProps(id, className, htmlProps, rest)\n *\n * return <div {...wrapperProps}>innhold</div>\n * }\n * ```\n * @param id id fra props til komponenten.\n * @param className className for komponenten.\n * @param htmlProps htmlProps fra komponenten.\n * @param unknownProps andre ukjente props som skal spreades, kommer typisk fra `...rest` når man leser props til komponenten.\n * @returns Objekt med alle argumentene som kan spreades.\n *\n * Kan også kalles uten `className`-parameteret. Oppførselen er lik.\n */\nexport const getBaseHTMLProps: GetBaseHTMLProps = <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlPropsOrClassName:\n | HTMLAttributes<T>['className']\n | (HTMLAttributes<T> | undefined),\n htmlPropsOrUnknownProps: (HTMLAttributes<T> | undefined) | object,\n unknownPropsOrUndefined?: object,\n): HTMLAttributes<T> & object => {\n if (\n typeof htmlPropsOrClassName === 'string' ||\n unknownPropsOrUndefined != undefined\n ) {\n const {\n id: idFromHtmlProps,\n className: classNameFromHtmlProps,\n ...restHTMLProps\n } = (htmlPropsOrUnknownProps as HTMLAttributes<T> | undefined) ?? {};\n\n const propId = id ?? idFromHtmlProps;\n\n const propClassName = cn(\n htmlPropsOrClassName as string | undefined,\n classNameFromHtmlProps,\n );\n\n return {\n ...unknownPropsOrUndefined,\n ...restHTMLProps,\n ...(propClassName && { className: propClassName }),\n ...(propId && { id: propId }),\n };\n } else {\n const {\n id: htmlPropsId,\n className: htmlPropsClassName,\n ...restHTMLProps\n } = htmlPropsOrClassName ?? {};\n\n const propId = id ?? htmlPropsId;\n\n return {\n ...htmlPropsOrUnknownProps,\n ...restHTMLProps,\n ...(htmlPropsClassName && { className: htmlPropsClassName }),\n ...(propId && { id: propId }),\n };\n }\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\n\nconst { colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport type ColorAlphaFormat = 'hex8' | 'decimal';\n\nexport const convertAlpha = (\n value: number | string,\n typeFrom: ColorAlphaFormat,\n typeTo: ColorAlphaFormat,\n) => {\n if (typeFrom === 'decimal' && typeTo === 'hex8') {\n const numberValue = Number(value);\n\n if (typeof numberValue !== 'number' || numberValue > 1 || numberValue < 0)\n return '';\n const hex8 = Math.round(\n 255 * (Math.round(numberValue * 100) / 100),\n ).toString(16);\n\n return hex8.length === 1 ? '0' + hex8 : hex8;\n }\n if (typeFrom === 'hex8' && typeTo === 'decimal') {\n const regexCheck = new RegExp(/^[0-9a-fA-F]+$/).test(value.toString());\n if (value.toString().length > 2 || regexCheck === false) return '';\n const decimal =\n Math.round((parseInt(value.toString(), 16) / 256) * 100) / 100;\n return decimal;\n }\n};\n\nexport const hexToRGBA = (hex: string): string => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16),\n alpha = hex.length === 9 ? hex.slice(7, 9) : 'ff';\n\n return `rgba(${r}, ${g}, ${b}, ${convertAlpha(alpha, 'hex8', 'decimal')})`;\n};\n\nconst getRGBValues = (value: string) =>\n value.replace(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i);\n\nexport const addAlphaToRGB = (rgb: string, alpha: number | string) => {\n const values = getRGBValues(rgb);\n\n return values\n ? `rgba(${values[1]}, ${values[2]}, ${values[3]}, ${alpha})`\n : '';\n};\n\nexport const RGBToHex = (value: string): string => {\n const rgb = getRGBValues(value);\n const alpha = (rgb?.[4] ?? '').trim();\n const hex = rgb\n ? '#' +\n (parseInt(rgb[1]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[2]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[3]) | (1 << 8)).toString(16).slice(1) +\n convertAlpha(alpha, 'decimal', 'hex8')\n : '';\n\n return hex;\n};\n\nexport const changeRGBAAlpha = (value: string, alpha: number): string => {\n if (!value.startsWith('rgba(') || !value.endsWith(')')) {\n return '';\n }\n\n return value.replace(/[\\d.]+\\)$/g, alpha.toString() + ')');\n};\n\nexport const textColors = {\n interactive: colors.DdsColorInteractiveBase,\n primary: colors.DdsColorPrimaryBase,\n danger: colors.DdsColorDangerBase,\n success: colors.DdsColorSuccessBase,\n warning: colors.DdsColorWarningBase,\n onLight: textDefault.textColor,\n onDark: colors.DdsColorNeutralsWhite,\n gray1: colors.DdsColorNeutralsGray1,\n gray2: colors.DdsColorNeutralsGray2,\n gray3: colors.DdsColorNeutralsGray3,\n gray4: colors.DdsColorNeutralsGray4,\n gray5: colors.DdsColorNeutralsGray5,\n gray6: colors.DdsColorNeutralsGray6,\n gray7: colors.DdsColorNeutralsGray7,\n gray8: colors.DdsColorNeutralsGray8,\n gray9: colors.DdsColorNeutralsGray9,\n};\n\nexport type DDSTextColor =\n | 'interactive'\n | 'primary'\n | 'danger'\n | 'warning'\n | 'success'\n | 'onLight'\n | 'onDark'\n | 'gray1'\n | 'gray2'\n | 'gray3'\n | 'gray4'\n | 'gray5'\n | 'gray6'\n | 'gray7'\n | 'gray8'\n | 'gray9';\n\nexport const textColorsArray = [\n 'interactive',\n 'primary',\n 'danger',\n 'success',\n 'warning',\n 'onLight',\n 'onDark',\n 'gray1',\n 'gray2',\n 'gray3',\n 'gray4',\n 'gray5',\n 'gray6',\n 'gray7',\n 'gray8',\n 'gray9',\n];\n\nexport type TextColor = DDSTextColor | Property.Color;\n\nexport function isTextColor(color: string): color is DDSTextColor {\n return textColorsArray.indexOf(color) !== -1;\n}\n\nexport const getTextColor = (color: TextColor): TextColor => {\n if (isTextColor(color)) return textColors[color];\n return color;\n};\n","import { Callback } from '../types';\n\nexport const combineHandlers = <T,>(\n handler1?: Callback<T>,\n handler2?: Callback<T>,\n): Callback<T> => {\n const callback: Callback<T> = event => {\n handler1 && handler1(event);\n handler2 && handler2(event);\n };\n return callback;\n};\n","import { RefObject } from 'react';\n\nexport function getFocusableElements<T extends HTMLElement>(\n elementRef: RefObject<T>,\n): NodeListOf<HTMLElement> | [] {\n return elementRef && elementRef.current\n ? elementRef.current.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n : [];\n}\n","import { InputSize } from '../components/helpers';\nimport { IconSize } from '../components/Icon';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'tiny':\n return 'small';\n }\n};\n","export const derivativeIdGenerator = (prefix: string, suffix: string): string =>\n `${prefix}-${suffix}`;\n\nexport const spaceSeparatedIdListGenerator = (\n values: (string | undefined)[],\n): string | undefined => {\n const filtered = values.filter(Boolean);\n\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n};\n","import styled, { css } from 'styled-components';\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { forwardRef } from 'react';\n\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ErrorIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\ninterface WrapperProps {\n messageType: InputMessageType;\n}\n\nconst InputMessageWrapper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'messageType',\n})<WrapperProps>`\n display: flex;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n ${({ messageType }) =>\n messageType === 'error'\n ? css`\n color: ${tokens.message.error.color};\n background-color: ${tokens.message.error.backgroundColor};\n padding: ${tokens.message.error.padding};\n gap: ${tokens.message.error.gap};\n `\n : ''}\n svg {\n margin-top: ${tokens.icon.marginTop};\n }\n`;\n\nexport type InputMessageType = 'error' | 'tip';\n\nexport type InputMessageProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Meldingen som vises til brukeren. */\n message: string;\n /** Formålet med meldingen. Påvirker styling. */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = forwardRef<HTMLDivElement, InputMessageProps>(\n (props, ref) => {\n const { message, messageType, id, className, htmlProps, ...rest } = props;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n messageType,\n };\n\n const isError = messageType === 'error';\n\n return (\n <InputMessageWrapper {...wrapperProps}>\n {isError && <Icon icon={ErrorIcon} iconSize=\"inherit\" />}\n <Typography\n typographyType={\n isError ? 'supportingStyleLabel01' : 'supportingStyleHelperText01'\n }\n as=\"span\"\n bold={isError ? true : undefined}\n color={isError ? tokens.message.error.color : undefined}\n >\n {message}\n </Typography>\n </InputMessageWrapper>\n );\n },\n);\n\nInputMessage.displayName = 'InputMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst message = {\n tip: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n error: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { SvgIcon } from './utils';\n\nconst getSize = (iconSize: IconSize): string => {\n switch (iconSize) {\n case 'small':\n return ddsBaseTokens.iconSizes.DdsIconsizeSmall;\n case 'medium':\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n case 'large':\n return ddsBaseTokens.iconSizes.DdsIconsizeLarge;\n case 'inherit':\n return '1em';\n default:\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n }\n};\n\nexport type IconSize = 'small' | 'medium' | 'large' | 'inherit';\n\nexport type IconProps = BaseComponentProps<\n SVGSVGElement,\n {\n /**Ikonet importert fra `@norges-domstoler/dds-components`. */\n icon: SvgIcon;\n /**Størrelsen på ikonet. */\n iconSize?: IconSize;\n /**Fargen på ikonet. */\n color?: Property.Color;\n }\n>;\n\nexport function Icon(props: IconProps) {\n const {\n id,\n iconSize = 'medium',\n color = 'currentcolor',\n icon,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const { title, 'aria-hidden': ariaHidden = true } = htmlProps;\n\n const size = getSize(iconSize);\n\n return icon({\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n title,\n height: size,\n width: size,\n fill: color,\n 'aria-hidden': ariaHidden,\n });\n}\n\nIcon.displayName = 'Icon';\n","import { SVGAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst size = 24;\nconst sizePx = `${size}px`;\n\ntype StyledSvgProps = SVGAttributes<SVGSVGElement>;\n\nexport const StyledSvg = styled.svg.attrs<StyledSvgProps>(\n ({ height, width, fill }) => {\n return {\n height: height ? height : sizePx,\n width: width ? width : sizePx,\n fill: fill ? fill : 'currentColor',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `0 0 ${size} ${size}`,\n };\n },\n)<StyledSvgProps>`\n display: inline-block;\n transition: fill 0.2s;\n flex-shrink: 0;\n`;\n","export * from './addressShielded';\nexport * from './agreement';\nexport * from './apps';\nexport * from './archive';\nexport * from './arrowDown';\nexport * from './arrowLeft';\nexport * from './arrowRight';\nexport * from './arrowUp';\nexport * from './attachment';\nexport * from './block';\nexport * from './book';\nexport * from './build';\nexport * from './buildCircled';\nexport * from './calendar';\nexport * from './calendarMonth';\nexport * from './calendarViewDay';\nexport * from './calendarViewMonth';\nexport * from './calendarViewWeek';\nexport * from './call';\nexport * from './caring';\nexport * from './chat';\nexport * from './check';\nexport * from './checkCircled';\nexport * from './checklist';\nexport * from './chevronDown';\nexport * from './chevronFirst';\nexport * from './chevronLargeLeft';\nexport * from './chevronLargeRight';\nexport * from './chevronLast';\nexport * from './chevronLeft';\nexport * from './chevronRight';\nexport * from './chevronUp';\nexport * from './close';\nexport * from './closeSmall';\nexport * from './closeCircled';\nexport * from './cloud';\nexport * from './collapse';\nexport * from './comment';\nexport * from './copy';\nexport * from './court';\nexport * from './dateRange';\nexport * from './deaths';\nexport * from './doubleChevronLeft';\nexport * from './doubleChevronRight';\nexport * from './download';\nexport * from './downloadDone';\nexport * from './dragHandle';\nexport * from './edit';\nexport * from './error';\nexport * from './exclaim';\nexport * from './expand';\nexport * from './facebook';\nexport * from './family';\nexport * from './feedback';\nexport * from './file';\nexport * from './fileAdd';\nexport * from './fileShielded';\nexport * from './fileText';\nexport * from './filter';\nexport * from './filterList';\nexport * from './filterListOff';\nexport * from './filterOff';\nexport * from './findInPage';\nexport * from './flickr';\nexport * from './folder';\nexport * from './folderAdd';\nexport * from './folderShielded';\nexport * from './fullsceenExit';\nexport * from './fullscreen';\nexport * from './gavel';\nexport * from './help';\nexport * from './helpFilled';\nexport * from './home';\nexport * from './hourglassBottom';\nexport * from './hourglassDisabled';\nexport * from './hourglassEmpty';\nexport * from './hourglassFull';\nexport * from './hourglassTop';\nexport * from './image';\nexport * from './info';\nexport * from './instagram';\nexport * from './jordskifterett';\nexport * from './key';\nexport * from './lagmannsrett';\nexport * from './language';\nexport * from './link';\nexport * from './linkedIn';\nexport * from './linkOff';\nexport * from './list';\nexport * from './listAlt';\nexport * from './location';\nexport * from './lock';\nexport * from './lockOpen';\nexport * from './login';\nexport * from './logout';\nexport * from './mail';\nexport * from './mailOpen';\nexport * from './menu';\nexport * from './minus';\nexport * from './minusCircled';\nexport * from './moreHorizontal';\nexport * from './moreVertical';\nexport * from './notarial';\nexport * from './notifications';\nexport * from './notificationsOff';\nexport * from './onlineMeeting';\nexport * from './openExternal';\nexport * from './payout';\nexport * from './pdf';\nexport * from './person';\nexport * from './personAdd';\nexport * from './personShielded';\nexport * from './pin';\nexport * from './plus';\nexport * from './plusCircled';\nexport * from './print';\nexport * from './property';\nexport * from './publish';\nexport * from './questionAnswer';\nexport * from './receipt';\nexport * from './redo';\nexport * from './refresh';\nexport * from './replay';\nexport * from './search';\nexport * from './settings';\nexport * from './sms';\nexport * from './star';\nexport * from './starFilled';\nexport * from './starHalfFilled';\nexport * from './sync';\nexport * from './thumbdown';\nexport * from './thumbdownFilled';\nexport * from './thumbup';\nexport * from './thumbupFilled';\nexport * from './time';\nexport * from './tingrett';\nexport * from './tip';\nexport * from './trash';\nexport * from './twitter';\nexport * from './undo';\nexport * from './unfoldLess';\nexport * from './unfoldMore';\nexport * from './upload';\nexport * from './visibilityOff';\nexport * from './visibilityOn';\nexport * from './warning';\nexport * from './zoomIn';\nexport * from './zoomOut';\nexport * from './barChart';\nexport * from './barChartBoxed';\nexport * from './lineChart';\nexport * from './trendingUp';\nexport * from './trendingDown';\nexport * from './libraryAdd';\n","import { SvgProps } from './propTypes';\nimport { StyledSvg } from './StyledSvg';\n\nexport function SvgWrapper(props: SvgProps) {\n const { title, children, ...rest } = props;\n\n return (\n <StyledSvg {...rest}>\n {title && <title>{title}</title>}\n {children}\n </StyledSvg>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function AddressShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 4V10H16.7889L12 5.69L7 10.19V18H9V12H14V14H11V20H5V12H2L12 3L16 6.6V4H19Z\" />\n <path d=\"M10 10H14C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10Z\" />\n <path d=\"M20 15V14C20 12.9 19.1 12 18 12C16.9 12 16 12.9 16 14V15C15.45 15 15 15.45 15 16V19C15 19.55 15.45 20 16 20H20C20.55 20 21 19.55 21 19V16C21 15.45 20.55 15 20 15ZM17 15V14C17 13.45 17.45 13 18 13C18.55 13 19 13.45 19 14V15H17Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AgreementIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.22 19.85c-.18.18-.5.21-.71 0-.18-.18-.21-.5 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.19.2-.51.19-.71 0-.21-.21-.18-.53 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.19-.19-.51 0-.71l3.39-3.39-1.42-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.2-.19-.51 0-.71L9.52 8.4l1.87 1.86c.95.95 2.59.94 3.54 0 .98-.98.98-2.56 0-3.54l-1.86-1.86.28-.28c.78-.78 2.05-.78 2.83 0l4.24 4.24c.78.78.78 2.05 0 2.83l-8.2 8.2zm9.61-6.78c1.56-1.56 1.56-4.09 0-5.66l-4.24-4.24c-1.56-1.56-4.09-1.56-5.66 0l-.28.28-.28-.28c-1.56-1.56-4.09-1.56-5.66 0L2.17 6.71C.75 8.13.62 10.34 1.77 11.9l1.45-1.45c-.39-.75-.26-1.7.37-2.33l3.54-3.54c.78-.78 2.05-.78 2.83 0l3.56 3.56c.18.18.21.5 0 .71-.21.21-.53.18-.71 0L9.52 5.57l-5.8 5.79c-.98.97-.98 2.56 0 3.54.39.39.89.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.54.31 1.03.7 1.42.47.47 1.1.73 1.77.73.67 0 1.3-.26 1.77-.73l8.21-8.19z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AppsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArchiveIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2zm-1 18H5V9h14v11zm1-13H4V4h16v3z\" />\n <path d=\"M9 12h6v2H9v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ArrowDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function AttachmentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 115 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 005 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BlockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8 0 1.853-.63 3.55-1.682 4.904L7.096 5.682A7.965 7.965 0 0112 4zM5.682 7.096l11.222 11.222A7.965 7.965 0 0112 20c-4.43 0-8-3.57-8-8 0-1.853.63-3.55 1.682-4.904z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5-1.95 0-4.05.4-5.5 1.5v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\" />\n <path d=\"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zm4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BuildIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.5 1c-.873 0-1.707.176-2.467.488l-1.388.57L7.585 6 6 7.586 2.059 3.645l-.57 1.388A6.474 6.474 0 001 7.5C1 11.078 3.922 14 7.5 14c.619 0 1.181-.183 1.748-.346l8.908 8.907a1.514 1.514 0 002.121 0l2.285-2.288a1.516 1.516 0 00-.002-2.119l-8.906-8.906c.162-.567.346-1.13.346-1.748C14 3.922 11.078 1 7.5 1zm0 2C9.998 3 12 5.002 12 7.5c0 .607-.122 1.182-.34 1.713l-.252.617 9.385 9.385-1.576 1.578-9.387-9.387-.617.254c-.53.219-1.105.34-1.713.34A4.484 4.484 0 013 7.5c0-.026.013-.047.014-.072L6 10.414 10.414 6 7.428 3.014c.025 0 .046-.014.072-.014z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BuildCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.49 11.38c.43-1.22.17-2.64-.81-3.62a3.468 3.468 0 00-4.1-.59l2.35 2.35-1.41 1.41-2.35-2.35c-.71 1.32-.52 2.99.59 4.1.98.98 2.4 1.24 3.62.81l3.41 3.41c.2.2.51.2.71 0l1.4-1.4c.2-.2.2-.51 0-.71l-3.41-3.41z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.6 3.2h-1.1V1h-2.2v2.2H7.5V1H5.3v2.2H4.2a2.19 2.19 0 00-2.189 2.2L2 20.8A2.2 2.2 0 004.2 23h15.4c1.21 0 2.2-.99 2.2-2.2V5.4c0-1.21-.99-2.2-2.2-2.2zm0 17.6H4.2v-11h15.4v11zm0-13.2H4.2V5.4h15.4v2.2zm-11 6.6H6.4V12h2.2v2.2zm4.4 0h-2.2V12H13v2.2zm4.4 0h-2.2V12h2.2v2.2zm-8.8 4.4H6.4v-2.2h2.2v2.2zm4.4 0h-2.2v-2.2H13v2.2zm4.4 0h-2.2v-2.2h2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewDayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 17h18v2H3v-2zm16-5v1H5v-1h14zm2-2H3v5h18v-5zM3 6h18v2H3V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8 11H4V6h4v5zm6 0h-4V6h4v5zm6 0h-4V6h4v5zM8 18H4v-5h4v5zm6 0h-4v-5h4v5zm6 0h-4v-5h4v5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewWeekIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-7 2h2.5v12H13V6zm-2 12H8.5V6H11v12zM4 6h2.5v12H4V6zm16 12h-2.5V6H20v12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.54 5c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19zM7.5 3H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 00-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 01-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CaringIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 13c3.09-2.81 6-5.44 6-7.7C22 3.45 20.55 2 18.7 2c-1.04 0-2.05.49-2.7 1.25C15.34 2.49 14.34 2 13.3 2 11.45 2 10 3.45 10 5.3c0 2.26 2.91 4.89 6 7.7zm-2.7-9c.44 0 .89.21 1.18.55L16 6.34l1.52-1.79c.29-.34.74-.55 1.18-.55.74 0 1.3.56 1.3 1.3 0 1.12-2.04 3.17-4 4.99-1.96-1.82-4-3.88-4-4.99 0-.74.56-1.3 1.3-1.3zM19 16h-2c0-1.2-.75-2.28-1.87-2.7L8.97 11H1v11h6v-1.44l7 1.94 8-2.5v-1c0-1.66-1.34-3-3-3zM3 20v-7h2v7H3zm10.97.41L7 18.48V13h1.61l5.82 2.17c.34.13.57.46.57.83 0 0-1.99-.05-2.3-.15l-2.38-.79-.63 1.9 2.38.79c.51.17 1.04.26 1.58.26H19c.39 0 .74.23.9.56l-5.93 1.84z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChatIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CheckIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.293 5.293L9 16.586l-4.293-4.293-1.414 1.414L9 19.414 21.707 6.707l-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CheckCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm4.293 4.293L10 14.586l-2.293-2.293-1.414 1.414L10 17.414l7.707-7.707-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChecklistIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 7h-9v2h9V7zm0 8h-9v2h9v-2zM5.54 11L2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 11zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 19z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronFirstIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6 1.41-1.41zM6 6h2v12H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLargeLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLargeRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLastIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6-1.41 1.41zM16 6h2v12h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4.707 3.293L3.293 4.707 10.586 12l-7.293 7.293 1.414 1.414L12 13.414l7.293 7.293 1.414-1.414L13.414 12l7.293-7.293-1.414-1.414L12 10.586 4.707 3.293z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function CloseSmallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloseCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zM8.707 7.293L7.293 8.707 10.586 12l-3.293 3.293 1.414 1.414L12 13.414l3.293 3.293 1.414-1.414L13.414 12l3.293-3.293-1.414-1.414L12 10.586 8.707 7.293z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloudIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11A2.98 2.98 0 0122 15c0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95A5.47 5.47 0 0112 6zm0-2C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96A7.49 7.49 0 0012 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CollapseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 3.41L16.71 8.7 20 12h-8V4l3.29 3.29L20.59 2 22 3.41zM3.41 22l5.29-5.29L12 20v-8H4l3.29 3.29L2 20.59 3.41 22z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CommentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4h16v12H5.17L4 17.17V4zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h8v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CopyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CourtIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74zm0-2.26L2 6v2h19V6l-9.5-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DateRangeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.4 10.9h2.2v2.2H6.4v-2.2zm15.4-5.5v15.4c0 1.21-.99 2.2-2.2 2.2H4.2A2.2 2.2 0 012 20.8l.011-15.4c0-1.21.968-2.2 2.189-2.2h1.1V1h2.2v2.2h8.8V1h2.2v2.2h1.1c1.21 0 2.2.99 2.2 2.2zM4.2 7.6h15.4V5.4H4.2v2.2zm15.4 13.2v-11H4.2v11h15.4zm-4.4-7.7h2.2v-2.2h-2.2v2.2zm-4.4 0H13v-2.2h-2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DeathsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 3c-.96 0-1.9.25-2.73.69L12 9h3l-3 10 1-9h-3l1.54-5.39C10.47 3.61 9.01 3 7.5 3 4.42 3 2 5.42 2 8.5c0 4.13 4.16 7.18 10 12.5 5.47-4.94 10-8.26 10-12.5C22 5.42 19.58 3 16.5 3zm-6.26 13.73C6.45 13.34 4 11 4 8.5 4 6.54 5.54 5 7.5 5c.59 0 1.19.15 1.73.42L7.35 12h3.42l-.53 4.73zm4.89-1.2L17.69 7h-2.91l.61-1.82c.36-.12.74-.18 1.11-.18C18.46 5 20 6.54 20 8.5c0 2.21-2.02 4.43-4.87 7.03z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DoubleChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 18.414,7.41398L 17,6L 11,12L 17,18L 18.414,16.586L 13.828,12L 18.414,7.41398 Z M 12.414,7.41398L 11,6L 5.00001,12L 11,18L 12.414,16.586L 7.82801,12L 12.414,7.41398 Z \" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DoubleChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 5.586,7.41398L 7,6L 13,12L 7,18L 5.586,16.586L 10.172,12L 5.586,7.41398 Z M 11.586,7.41399L 13,6.00001L 19,12L 13,18L 11.586,16.586L 16.172,12L 11.586,7.41399 Z \" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DownloadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 5v6h1.17L12 13.17 9.83 11H11V5h2zm2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DownloadDoneIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.13 5.41L18.72 4l-9.19 9.19-4.25-4.24-1.41 1.41 5.66 5.66 10.6-10.61zM5 18h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DragHandleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function EditIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83a.996.996 0 000-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ErrorIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99zM12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ExclaimIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 21a2 2 0 100-4 2 2 0 000 4zM10 3h4v12h-4V3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ExpandIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10L21 11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FacebookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.625 2.625H3.375a.75.75 0 00-.75.75v17.25c0 .415.335.75.75.75h17.25a.75.75 0 00.75-.75V3.375a.75.75 0 00-.75-.75zm-2.166 5.473h-1.497c-1.175 0-1.402.557-1.402 1.378v1.807h2.803l-.365 2.829H15.56v7.263h-2.923v-7.26h-2.444v-2.832h2.444V9.197c0-2.421 1.48-3.74 3.64-3.74 1.036 0 1.925.077 2.185.112v2.529h-.003z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FamilyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.66 13.07c.15 0 .29-.01.43-.03A3.15 3.15 0 0012 15c1.31 0 2.44-.81 2.91-1.96a3.144 3.144 0 003.57-3.11c0-.71-.25-1.39-.67-1.93.43-.54.67-1.22.67-1.93a3.144 3.144 0 00-3.57-3.11A3.15 3.15 0 0012 1c-1.31 0-2.44.81-2.91 1.96a3.145 3.145 0 00-3.57 3.11c0 .71.25 1.39.67 1.93-.43.54-.68 1.22-.68 1.93 0 1.73 1.41 3.14 3.15 3.14zM12 13c-.62 0-1.12-.49-1.14-1.1l.12-1.09c.32.12.66.19 1.02.19s.71-.07 1.03-.19l.11 1.09c-.02.61-.52 1.1-1.14 1.1zm3.34-1.93c-.24 0-.46-.07-.64-.2l-.81-.57c.55-.45.94-1.09 1.06-1.83l.88.42c.4.19.66.59.66 1.03 0 .64-.52 1.15-1.15 1.15zm-.65-5.94c.2-.13.42-.2.65-.2.63 0 1.14.51 1.14 1.14 0 .44-.25.83-.66 1.03l-.88.42c-.12-.74-.51-1.38-1.07-1.83l.82-.56zM12 3c.62 0 1.12.49 1.14 1.1l-.11 1.09C12.71 5.07 12.36 5 12 5s-.7.07-1.02.19l-.12-1.09c.02-.61.52-1.1 1.14-1.1zM8.66 4.93c.24 0 .46.07.64.2l.81.56c-.55.45-.94 1.09-1.06 1.83l-.88-.42c-.4-.2-.66-.59-.66-1.03 0-.63.52-1.14 1.15-1.14zM8.17 8.9l.88-.42c.12.74.51 1.38 1.07 1.83l-.81.55c-.2.13-.42.2-.65.2-.63 0-1.14-.51-1.14-1.14-.01-.43.25-.82.65-1.02zM12 22a9 9 0 009-9 9 9 0 00-9 9zm2.44-2.44c.71-1.9 2.22-3.42 4.12-4.12a7.04 7.04 0 01-4.12 4.12zM3 13a9 9 0 009 9 9 9 0 00-9-9zm2.44 2.44c1.9.71 3.42 2.22 4.12 4.12a7.04 7.04 0 01-4.12-4.12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FeedbackIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2v-2zm0-6h2v4h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FileIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2c-1.094 0-2 .906-2 2v16c0 1.094.906 2 2 2h12c1.094 0 2-.906 2-2V8l-6-6H6zm0 2h7v5h5v11H6V4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function FileAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3v-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FileShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 2H5C3.9 2 3 2.9 3 4V20C3 21.1 3.89 22 4.99 22H13V20H5V4H12V9H17V12H19V8L13 2Z\" />\n <path d=\"M20 17V16C20 14.9 19.1 14 18 14C16.9 14 16 14.9 16 16V17C15.45 17 15 17.45 15 18V21C15 21.55 15.45 22 16 22H20C20.55 22 21 21.55 21 21V18C21 17.45 20.55 17 20 17ZM17 17V16C17 15.45 17.45 15 18 15C18.55 15 19 15.45 19 16V17H17Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FileTextIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterListOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10.83 8H21V6H8.83l2 2zm5 5H18v-2h-4.17l2 2zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41L14 16.83z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.95 6l-3.57 4.55 1.43 1.43c1.03-1.31 4.98-6.37 4.98-6.37A.998.998 0 0019 4H6.83l2 2h8.12zM2.81 2.81L1.39 4.22 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.17l5.78 5.78 1.41-1.41L2.81 2.81z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FindInPageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 4h7l5 5v8.58l-1.84-1.84a4.992 4.992 0 00-.64-6.28A4.96 4.96 0 0012 8a5 5 0 00-4.612 3.077A4.98 4.98 0 008.47 16.51a4.982 4.982 0 006.28.63L17.6 20H6V4zm8.11 11.1c-.56.56-1.31.88-2.11.88-.8 0-1.55-.31-2.11-.88-.56-.56-.88-1.31-.88-2.11 0-.8.31-1.55.88-2.11.56-.57 1.31-.88 2.11-.88.8 0 1.55.31 2.11.88.56.56.88 1.31.88 2.11 0 .8-.31 1.55-.88 2.11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function FlickrIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.75 1.5H2.25C1.00781 1.5 0 2.50781 0 3.75V20.25C0 21.4922 1.00781 22.5 2.25 22.5H18.75C19.9922 22.5 21 21.4922 21 20.25V3.75C21 2.50781 19.9922 1.5 18.75 1.5ZM6.77344 14.9531C5.12813 14.9531 3.79688 13.6219 3.79688 11.9766C3.79688 10.3313 5.12813 9 6.77344 9C8.41875 9 9.75 10.3313 9.75 11.9766C9.75 13.6219 8.41875 14.9531 6.77344 14.9531ZM14.2266 14.9531C12.5813 14.9531 11.25 13.6219 11.25 11.9766C11.25 10.3313 12.5813 9 14.2266 9C15.8719 9 17.2031 10.3313 17.2031 11.9766C17.2031 13.6219 15.8719 14.9531 14.2266 14.9531Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FolderIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4c-1.094 0-2 .906-2 2v12c0 1.094.906 2 2 2h16c1.094 0 2-.906 2-2V8c0-1.094-.906-2-2-2h-8l-2-2H4zm0 2h5.172l2 2H20v10H4V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function FolderAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FolderShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M1 6C1 4.90575 1.90575 4 3 4H9L11 6H19C20.0943 6 21 6.90575 21 8V10H19V8H10.1719L8.17188 6H3V18H15V20H3C1.90575 20 1 19.0943 1 18V6Z\" />\n <path d=\"M22 15V14C22 12.9 21.1 12 20 12C18.9 12 18 12.9 18 14V15C17.45 15 17 15.45 17 16V19C17 19.55 17.45 20 18 20H22C22.55 20 23 19.55 23 19V16C23 15.45 22.55 15 22 15ZM19 15V14C19 13.45 19.45 13 20 13C20.55 13 21 13.45 21 14V15H19Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FullscreenExitIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FullscreenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function GavelIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.112 15.528L3.302 9.86l1.393-1.43 5.81 5.669-1.393 1.429zM15.385 9.097L9.575 3.43 10.967 2l5.81 5.668-1.393 1.43zM21.606 21.44l-9.095-8.87 1.394-1.43L23 20.012l-1.394 1.429zM10.802 12.993L5.75 8.066l3.485-3.573 5.052 4.929-3.485 3.572zM3.998 18.686h8.984v1.996H3.998v-1.996z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 20.183h10.98v1.997H3v-1.997z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HelpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HelpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HomeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2.1L1 12h3v9h7v-6h2v6h7v-9h3L12 2.1zm0 2.691l6 5.4V19h-3v-6H9v6H6v-8.809l6-5.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassBottom(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m18 22-.01-6L14 12l3.99-4.01L18 2H6v6l4 4-4 3.99V22h12zM8 7.5V4h8v3.5l-4 4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassDisabled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 4h8v3.5l-2.84 2.84 1.25 1.25L18 8.01 17.99 8H18V2H6v1.17l2 2zM2.1 2.1.69 3.51l8.9 8.9L6 16l.01.01H6V22h12v-1.17l2.49 2.49 1.41-1.41L2.1 2.1zM16 20H8v-3.5l2.84-2.84L16 18.83V20z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassEmpty(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassFull(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassTop(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m6 2 .01 6L10 12l-3.99 4.01L6 22h12v-6l-4-4 4-3.99V2H6zm10 14.5V20H8v-3.5l4-4 4 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ImageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 5v14H5V5h14zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86L11 16l-2-2.86L6 17h12l-3.86-5.14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function InfoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 3v2h2V7h-2zm0 4v6h2v-6h-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function InstagramIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 7.193A4.8 4.8 0 007.193 12 4.8 4.8 0 0012 16.807 4.8 4.8 0 0016.807 12 4.8 4.8 0 0012 7.193zm0 7.931A3.13 3.13 0 018.876 12 3.13 3.13 0 0112 8.876 3.13 3.13 0 0115.124 12 3.13 3.13 0 0112 15.124zm5.004-9.248a1.121 1.121 0 100 2.245A1.12 1.12 0 0018.04 6.57a1.122 1.122 0 00-1.037-.693zM21.37 12c0-1.294.012-2.576-.06-3.867-.073-1.5-.415-2.831-1.512-3.928-1.1-1.1-2.428-1.44-3.928-1.512-1.294-.073-2.576-.061-3.868-.061-1.293 0-2.575-.012-3.867.061-1.5.073-2.831.415-3.928 1.512-1.1 1.099-1.439 2.428-1.512 3.928-.072 1.294-.06 2.576-.06 3.867s-.012 2.576.06 3.867c.073 1.5.415 2.831 1.512 3.928 1.1 1.1 2.428 1.44 3.928 1.512 1.294.073 2.576.061 3.867.061 1.294 0 2.576.012 3.867-.061 1.5-.073 2.832-.415 3.929-1.512 1.099-1.099 1.439-2.428 1.511-3.928.075-1.291.061-2.573.061-3.867zm-2.062 5.527A2.978 2.978 0 0118.6 18.6c-.33.33-.647.537-1.073.708-1.233.49-4.16.38-5.527.38-1.366 0-4.296.11-5.529-.378a2.98 2.98 0 01-1.073-.708 2.999 2.999 0 01-.708-1.073c-.488-1.235-.378-4.163-.378-5.529 0-1.366-.11-4.296.378-5.529.17-.426.377-.745.708-1.073A3.03 3.03 0 016.47 4.69c1.233-.488 4.163-.377 5.529-.377 1.366 0 4.296-.11 5.529.377.427.17.745.377 1.073.708.33.33.537.647.708 1.073.488 1.233.378 4.163.378 5.529 0 1.366.11 4.294-.38 5.527z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function JordskifterettIcon(props: SvgProps) {\n const { title, ...rest } = props;\n return (\n <SvgWrapper\n width=\"24\"\n height=\"24\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n {title && <title>{title}</title>}\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function KeyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 10h-8.35A5.99 5.99 0 007 6c-3.31 0-6 2.69-6 6s2.69 6 6 6a5.99 5.99 0 005.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LagmannsrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 10h15.65v3.913H4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function LanguageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 00-1.38-3.56A8.03 8.03 0 0118.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 015.08 16zm2.95-8H5.08a7.987 7.987 0 014.33-3.56A15.65 15.65 0 008.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 01-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkedInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.838A1.838 1.838 0 012.838 1H21.16A1.836 1.836 0 0123 2.838V21.16A1.838 1.838 0 0121.161 23H2.838A1.839 1.839 0 011 21.161V2.838zm8.708 6.55h2.979v1.496c.43-.86 1.53-1.634 3.183-1.634 3.169 0 3.92 1.713 3.92 4.856v5.822h-3.207v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.145 1.089-2.145 2.8v5.106H9.708V9.388zm-5.5 10.403h3.208V9.25H4.208V19.791zM7.875 5.812a2.063 2.063 0 11-4.125.09 2.063 2.063 0 014.125-.09z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.39 11L16 12.61V11h-1.61zM17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.27-.77 2.37-1.87 2.84l1.4 1.4A4.986 4.986 0 0022 12c0-2.76-2.24-5-5-5zM2 4.27l3.11 3.11A4.991 4.991 0 002 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4.01 1.41-1.41L3.41 2.86 2 4.27z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ListAltIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6v-2zM7 7h2v2H7V7zm0 4h2v2H7v-2zm0 4h2v2H7v-2zM20.1 3H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM19 19H5V5h14v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LocationIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C8.676 1 6 3.676 6 7v1c-.522 0-1.055.191-1.432.568C4.191 8.945 4 9.478 4 10v10c0 .522.191 1.055.568 1.432.377.377.91.568 1.432.568h12c.522 0 1.055-.191 1.432-.568.377-.377.568-.91.568-1.432V10c0-.522-.191-1.055-.568-1.432C19.055 8.191 18.522 8 18 8V7c0-3.324-2.676-6-6-6zm0 2c2.276 0 4 1.724 4 4v1H8V7c0-2.276 1.724-4 4-4zm-6 7h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LockOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C9.128 1 6.719 3.046 6.123 5.787l1.955.426C8.482 4.353 10.072 3 12 3c2.276 0 4 1.724 4 4v1H6c-1.093 0-2 .907-2 2v10c0 1.093.907 2 2 2h12c1.093 0 2-.907 2-2V10c0-1.093-.907-2-2-2V7c0-3.324-2.676-6-6-6zm-6 9h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LoginIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LogoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 8l-1.41 1.41L17.17 11H9v2h8.17l-1.58 1.58L17 16l4-4-4-4zM5 5h7V3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h7v-2H5V5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MailIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MailOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zm-2 0v.01L12 13 4 8l8-4.68L19.99 8zM4 18v-7.66l8 5.02 7.99-4.99L20 18H4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MenuIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MinusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998H5v-2h14v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MinusCirledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MoreHorizontalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 12a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function MoreVerticalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotarialIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotificationsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotificationsOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm0-15.5c2.49 0 4 2.02 4 4.5v.1l2 2V11c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.24.06-.47.15-.69.23l1.64 1.64c.18-.02.36-.05.55-.05zM5.41 3.35L4 4.76l2.81 2.81C6.29 8.57 6 9.74 6 11v5l-2 2v1h14.24l1.74 1.74 1.41-1.41L5.41 3.35zM16 17H8v-6c0-.68.12-1.32.34-1.9L16 16.76V17z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function OnlineMeetingIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zm-6-5.4l3 2.4V7l-3 2.4V7H7v6h7v-2.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function OpenExternalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PayoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v4h5v12H6zm5-1h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4v-2h-2V9h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function PdfIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1v-2zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PersonIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9a2.1 2.1 0 110 4.199A2.1 2.1 0 0112 5.9zm0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1zM12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PersonAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9V6h-2v3h-3v2h3v3h2v-3h3V9h-3zM9 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm6.39 8.56C13.71 13.7 11.53 13 9 13s-4.71.7-6.39 1.56A2.97 2.97 0 001 17.22V20h16v-2.78c0-1.12-.61-2.15-1.61-2.66zM15 18H3v-.78c0-.38.2-.72.52-.88C4.71 15.73 6.63 15 9 15c2.37 0 4.29.73 5.48 1.34.32.16.52.5.52.88V18z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function PersonShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9C12.2758 5.9 12.5489 5.95432 12.8036 6.05985C13.0584 6.16539 13.2899 6.32007 13.4849 6.51508C13.6799 6.71008 13.8346 6.94158 13.9401 7.19636C14.0457 7.45115 14.1 7.72422 14.1 8C14.1 8.27578 14.0457 8.54885 13.9401 8.80364C13.8346 9.05842 13.6799 9.28992 13.4849 9.48492C13.2899 9.67993 13.0584 9.83461 12.8036 9.94015C12.5489 10.0457 12.2758 10.1 12 10.1C11.443 10.1 10.9089 9.87875 10.5151 9.48492C10.1212 9.0911 9.9 8.55695 9.9 8C9.9 7.44305 10.1212 6.9089 10.5151 6.51508C10.9089 6.12125 11.443 5.9 12 5.9ZM12 4C9.79 4 8 5.79 8 8C8 10.21 9.79 12 12 12C14.21 12 16 10.21 16 8C16 5.79 14.21 4 12 4Z\" />\n <path d=\"M5.9 18.1V17C5.9 16.36 9.03 14.9 12 14.9C12.3329 14.9 12.6677 14.9183 13 14.9518V13.0517C12.6402 13.0173 12.303 13 12 13C9.33 13 4 14.34 4 17V20H12V18.1H5.9Z\" />\n <path d=\"M19 15V14C19 12.9 18.1 12 17 12C15.9 12 15 12.9 15 14V15C14.45 15 14 15.45 14 16V19C14 19.55 14.45 20 15 20H19C19.55 20 20 19.55 20 19V16C20 15.45 19.55 15 19 15ZM16 15V14C16 13.45 16.45 13 17 13C17.55 13 18 13.45 18 14V15H16Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PinIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4h4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PlusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998h-6v6h-2v-6H5v-2h6v-6h2v6h6v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PlusCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm-1 3v4H7v2h4v4h2v-4h4v-2h-4V7h-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PrintIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\" />\n <path d=\"M18 12.5a1 1 0 100-2 1 1 0 000 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PropertyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 9.3V4h-3v2.6L12 3 2 12h3v8h6v-6h2v6h6v-8h3l-3-2.7zM17 18h-2v-6H9v6H7v-7.81l5-4.5 5 4.5V18z\" />\n <path d=\"M10 10h4c0-1.1-.9-2-2-2s-2 .9-2 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PublishIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 4h14v2H5V4zm0 10h4v6h6v-6h4l-7-7-7 7zm8-2v6h-2v-6H9.83L12 9.83 14.17 12H13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function QuestionAnswerIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15 4v7H5.17l-.59.59-.58.58V4h11zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ReceiptIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6v-2zm0-4h12v2H6v-2zm0-4h12v2H6V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function RedoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16a8.002 8.002 0 017.6-5.5c1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function RefreshIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ReplayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SearchIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 2C5.146 2 2 5.146 2 9s3.146 7 7 7a6.958 6.958 0 004.574-1.719l.426.426V16l6 6 2-2-6-6h-1.293l-.426-.426A6.958 6.958 0 0016 9c0-3.854-3.146-7-7-7zm0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5-5-2.227-5-5 2.227-5 5-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SettingsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9.666 2l-.451 2.477.014-.006.128-.041c-.05.012-.093.033-.142.047-.918.26-1.639.741-2.256 1.255l-.033.03h-.002l-2.389-.758-2.297 3.982 1.873 1.762.008-.045.01-.045C3.99 11.21 4 11.7 4 12c0 .3-.001.796.12 1.396l-.013-.064-1.882 1.66 2.328 4.035 2.39-.869.02.02.082.054c.643.429 1.388.856 2.162 1.188l.004.002L9.658 22h4.676l.451-2.477-.014.006-.128.041c.05-.012.093-.033.142-.047.918-.26 1.639-.741 2.256-1.255l.033-.03h.002l2.4.764 2.29-4.12-1.873-1.652-.012.067-.01.045C20.01 12.79 20 12.3 20 12c0-.3.01-.79-.129-1.342l.006.026 1.898-1.676-2.328-4.035-2.39.869-.02-.02-.082-.054a13.73 13.73 0 00-2.162-1.188l-.004-.002L14.342 2H9.666zm1.668 2h1.324l.352 2.021 1.02.407-.024-.008c.605.26 1.234.62 1.78.978l.757.76 2.01-.732.672 1.166-1.502 1.326.197 1.186.01.039c.062.247.07.557.07.857 0 .3-.008.61-.07.857l-.006.024-.217 1.088 1.527 1.35-.71 1.28-2-.636-.778.777c-.543.451-.983.738-1.588.889l-.066.017-1.076.43-.35 1.924h-1.324l-.352-2.021-1.02-.407.024.008c-.605-.26-1.234-.62-1.78-.978l-.757-.76-2.01.732-.672-1.166 1.518-1.34-.213-1.064C6 12.604 6 12.3 6 12c0-.3.008-.61.07-.857l.006-.024.213-1.066-1.527-1.44.703-1.217 2.012.641.777-.777c.543-.451.983-.738 1.588-.889l.066-.017 1.076-.43.35-1.924zM12 8c-1.25 0-2.315.505-2.998 1.273C8.319 10.043 8 11.028 8 12s.319 1.958 1.002 2.727C9.685 15.495 10.75 16 12 16c1.25 0 2.315-.505 2.998-1.273C15.681 13.957 16 12.972 16 12s-.319-1.958-1.002-2.727C14.315 8.505 13.25 8 12 8zm0 2c.75 0 1.185.245 1.502.602.317.356.498.87.498 1.398 0 .528-.181 1.042-.498 1.398-.317.357-.752.602-1.502.602s-1.185-.245-1.502-.602C10.181 13.042 10 12.528 10 12c0-.528.181-1.042.498-1.398.317-.357.752-.602 1.502-.602z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SmsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zM7 9h2v2H7V9zm8 0h2v2h-2V9zm-4 0h2v2h-2V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarHalfFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SyncIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 0L8 4l4 4V5c3.859 0 7 3.14 7 7 0 .88-.17 1.72-.469 2.496l1.516 1.514A8.931 8.931 0 0021 12c0-4.962-4.037-9-9-9V0zM3.953 7.99A8.931 8.931 0 003 12c0 4.962 4.037 9 9 9v3l4-4-4-4v3c-3.859 0-7-3.14-7-7 0-.88.17-1.72.469-2.496L3.953 7.99z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function Thumbdown(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m10.89 18.28.57-2.89c.12-.59-.04-1.2-.42-1.66-.38-.46-.94-.73-1.54-.73H4v-1.08L6.57 6h8.09c.18 0 .34.16.34.34v7.84l-4.11 4.1M10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22zm10-7h2V4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ThumbdownFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2V4zM2.17 11.12c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function Thumbup(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m13.11 5.72-.57 2.89c-.12.59.04 1.2.42 1.66.38.46.94.73 1.54.73H20v1.08L17.43 18H9.34c-.18 0-.34-.16-.34-.34V9.82l4.11-4.1M14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.83C7 18.95 8.05 20 9.34 20h8.1c.71 0 1.36-.37 1.72-.97l2.67-6.15c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2zM4 9H2v11h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ThumbupFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TimeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TingrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 16.615c4.418 0 8-3.857 8-8.615H4c0 4.758 3.582 8.615 8 8.615z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TipIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TrashIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 9v10H8V9h8zm-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TwitterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M23.643 4.937c-.835.37-1.732.62-2.675.733a4.67 4.67 0 002.048-2.578 9.3 9.3 0 01-2.958 1.13 4.66 4.66 0 00-7.938 4.25 13.229 13.229 0 01-9.602-4.868 4.66 4.66 0 001.442 6.22 4.647 4.647 0 01-2.11-.583v.06a4.66 4.66 0 003.737 4.568 4.692 4.692 0 01-2.104.08 4.661 4.661 0 004.352 3.234 9.348 9.348 0 01-5.786 1.995 9.5 9.5 0 01-1.112-.065 13.175 13.175 0 007.14 2.093c8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602a9.47 9.47 0 002.323-2.41l.002-.003z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UndoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UnfoldLessIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UnfoldMoreIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.59 18.17L8.42 15l-1.41 1.41L11.59 21l4.59-4.59L14.76 15l-3.17 3.17zm0-12.34L14.76 9l1.41-1.41L11.59 3 7 7.59 8.42 9l3.17-3.17z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UploadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4v6zm2-2V8H9.828L12 5.828 14.172 8H13v6h-2zm-6 4h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function VisibilityOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5 9.648 9.648 0 01-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.04 7.841 1.766 9.55 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02a2.5 2.5 0 01-2.5-2.5c0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75a4.6 4.6 0 00-.36 1.78 4.507 4.507 0 006.27 4.14l.98.98c-.88.24-1.8.38-2.75.38a9.77 9.77 0 01-8.82-5.5c.7-1.43 1.72-2.61 2.93-3.53z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function VisibilityOnIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5A9.77 9.77 0 0112 17a9.77 9.77 0 01-8.82-5.5A9.77 9.77 0 0112 6zm0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function WarningIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" />\n <path d=\"M12 17a1 1 0 100-2 1 1 0 000 2zM11 7h2v7h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ZoomInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ZoomOutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function BarChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function BarChartBoxedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7v-7zm4-3h2v10h-2V7zm4 6h2v4h-2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function LineChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99l1.5 1.5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LibraryAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3v3z\" />\n </SvgWrapper>\n );\n}\n","import { InputMessage } from '../components/InputMessage';\n\nexport const renderInputMessage = (\n tip?: string,\n tipId?: string,\n errorMessage?: string,\n errorMessageId?: string,\n) => (\n <>\n {errorMessage && errorMessageId && (\n <InputMessage\n message={errorMessage}\n messageType=\"error\"\n id={errorMessageId}\n />\n )}\n {tip && tipId && !errorMessage && (\n <InputMessage message={tip} messageType=\"tip\" id={tipId} />\n )}\n </>\n);\n","export function escapeRegexCharacters(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function searchFilter(text: string, query: string): boolean {\n // Søkeordet er enten først i teksten, eller så har det mellomrom, bindestrek eller start-parentes før seg.\n const searchFilterRegex = new RegExp(\n `(?:^|[\\\\s-(])${escapeRegexCharacters(query.toLowerCase())}`,\n );\n return searchFilterRegex.test(text.toLowerCase());\n}\n","export const calculateHeightWithLineHeight = (\n lineHeight: number,\n fontSize: number,\n) => {\n return lineHeight * 0.01 * fontSize;\n};\n\nexport const firstLetterToUpperCase = (text: string) =>\n text.charAt(0).toUpperCase() + text.slice(1);\n","import { ElementType, forwardRef } from 'react';\nimport {\n TypographyHeadingType,\n BaseTypographyProps,\n Typography,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nconst getHeadingElement = (level: HeadingLevel): ElementType => `h${level}`;\n\nconst getDefaultTypographyType = (h: ElementType): TypographyHeadingType => {\n switch (h) {\n case 'h1':\n return 'headingSans06';\n case 'h2':\n return 'headingSans05';\n case 'h3':\n return 'headingSans04';\n case 'h4':\n return 'headingSans03';\n case 'h5':\n return 'headingSans02';\n case 'h6':\n return 'headingSans01';\n default:\n return 'headingSans06';\n }\n};\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps = BaseComponentPropsWithChildren<\n HTMLHeadingElement,\n {\n /**Nivå på overskriften. Komponenten returnerer HTML heading element med dette nivået med default styling. */\n level: HeadingLevel;\n /**Spesifiserer typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n } & BaseTypographyProps\n>;\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n level,\n ...rest\n } = props;\n\n const headingElement: ElementType = getHeadingElement(level);\n\n const headingProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType: typographyType\n ? typographyType\n : getDefaultTypographyType(headingElement),\n as: headingElement,\n ref,\n };\n\n return <Typography {...headingProps}>{children}</Typography>;\n },\n);\n\nHeading.displayName = 'Heading';\n","import { forwardRef, LabelHTMLAttributes } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker } from '../../helpers';\n\ntype PickedHTMLAttributes = Pick<\n LabelHTMLAttributes<HTMLLabelElement>,\n 'htmlFor'\n>;\n\ninterface BaseLabelProps {\n /** Spesifiserer om input etiketten er knyttet til er påkrevd; påvirker styling. */\n showRequiredStyling?: boolean;\n}\n\nexport type LabelProps = BaseComponentPropsWithChildren<\n HTMLLabelElement,\n BaseLabelProps & BaseTypographyProps & PickedHTMLAttributes,\n Omit<LabelHTMLAttributes<HTMLLabelElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { showRequiredStyling, id, className, htmlProps, children, ...rest } =\n props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"supportingStyleLabel01\"\n >\n {children} {showRequiredStyling && <RequiredMarker />}\n </Typography>\n );\n});\n\nLabel.displayName = 'Label';\n","import { forwardRef } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type LegendProps = BaseComponentPropsWithChildren<\n HTMLLegendElement,\n BaseTypographyProps\n>;\n\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n as=\"legend\"\n typographyType=\"headingSans03\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nLegend.displayName = 'Legend';\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\nimport {\n TypographyBodyType,\n getAnchorStyling,\n BaseTypographyProps,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\ninterface StyledLinkProps {\n $typographyType?: TypographyBodyType;\n $withMargins?: boolean;\n $external?: boolean;\n}\n\nconst StyledLink = styled.a<StyledLinkProps>`\n ${({ $external, $typographyType, $withMargins }) =>\n getAnchorStyling($external, undefined, $typographyType, $withMargins)}\n`;\n\ntype PickedHTMLAttributes = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n 'onClick' | 'href' | 'target'\n>;\n\nexport type LinkProps = BaseComponentPropsWithChildren<\n HTMLAnchorElement,\n {\n /**Spesifiserer om lenken fører til et eksternt nettsted eller åpnes i nytt vindu. Påvirker styling og setter `target` prop. */\n external?: boolean;\n /**Spesifiserer typografistil basert på utvalget for brødtekst. */\n typographyType?: TypographyBodyType;\n } & BaseTypographyProps &\n PickedHTMLAttributes,\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n external,\n target,\n ...rest\n } = props;\n\n return (\n <StyledLink\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...rest}\n $typographyType={typographyType}\n $external={external}\n ref={ref}\n rel=\"noopener noreferer\"\n target={external ? '_blank' : target}\n >\n {children}\n </StyledLink>\n );\n});\n\nLink.displayName = 'Link';\n","import { forwardRef } from 'react';\nimport {\n TypographyBodyType,\n TypographyLeadType,\n BaseTypographyProps,\n Typography,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type ParagraphProps = BaseComponentPropsWithChildren<\n HTMLParagraphElement,\n {\n /**Spesifiserer typografistil basert på utvalget for brødtekst og ingress. */\n typographyType?: TypographyBodyType | TypographyLeadType;\n } & BaseTypographyProps\n>;\n\nexport const Paragraph = forwardRef<HTMLParagraphElement, ParagraphProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType = 'bodySans02',\n ...rest\n } = props;\n\n const paragraphProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType,\n ref,\n };\n\n return <Typography {...paragraphProps}>{children}</Typography>;\n },\n);\n\nParagraph.displayName = 'Paragraph';\n","export function getDefaultText(\n value?: string | number | readonly string[],\n defaultValue?: string | number | readonly string[],\n): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof defaultValue === 'string') {\n return defaultValue;\n }\n\n return '';\n}\n","import styled, { css } from 'styled-components';\nimport { selection } from '../styling';\nimport { paperTokens as tokens } from './Paper.tokens';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { outerShadow, border } = ddsBaseTokens;\n\ntype Elevation = 1 | 2 | 3 | 4;\n\nconst getElevation = (elevation: Elevation) => {\n switch (elevation) {\n case 1:\n return outerShadow.DdsShadow1Onlight;\n case 2:\n return outerShadow.DdsShadow2Onlight;\n case 3:\n return outerShadow.DdsShadow3Onlight;\n case 4:\n return outerShadow.DdsShadow4Onlight;\n }\n};\n\ntype Border = 'light' | 'dark';\n\nconst getBorder = (borderStyle: Border) => {\n switch (borderStyle) {\n case 'light':\n return `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`;\n case 'dark':\n return `${border.BordersDdsBorderStyleDarkStrokeWeight} solid ${border.BordersDdsBorderStyleDarkStroke}`;\n }\n};\n\nexport interface PaperProps {\n elevation?: Elevation;\n border?: Border;\n}\n\nexport const Paper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'elevation' && prop !== 'border',\n})<PaperProps>`\n box-sizing: border-box;\n margin: 0;\n background-color: ${tokens.paper.backgroundColor};\n font-family: ${tokens.paper.fontFamily};\n border-radius: ${tokens.paper.borderRadius};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ elevation }) =>\n elevation &&\n css`\n box-shadow: ${getElevation(elevation)};\n `}\n border: ${({ border }) => (border ? getBorder(border) : 'none')}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, borderRadius, font } = ddsBaseTokens;\n\nconst paper = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n fontFamily: font.DdsFontBodySans01FontFamily,\n};\n\nexport const paperTokens = {\n paper,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens as tokens } from '@norges-domstoler/dds-design-tokens';\n\nconst MarkerWrapper = styled.span`\n color: ${tokens.colors.DdsColorDangerBase};\n`;\n\nexport const RequiredMarker = () => <MarkerWrapper>*</MarkerWrapper>;\n","import type { MutableRefObject, RefCallback } from 'react';\nimport { useCallback } from 'react';\n\n/**\n * Kombinerer refs for et element.\n * Eksempel på bruk:\n * ```\n * const MyComponent = forwardRef<HTMLDivElement, Props>((props, ref) => {\n *\n * const itemRef = useRef<HTMLDivElement>(null);\n * const combinedRef = useCombinedRef(ref, itemRef);\n *\n * return <div ref={combinedRef}>innhold</div>\n * });\n * ```\n * @param refs array med refs.\n * @template T elementet som refereres til.\n * @returns callback med kombinerte refs.\n *\n * {@link useCombinedRef}\n */\n\nexport function useCombinedRef<T>(...refs: React.Ref<T>[]): RefCallback<T> {\n return useCallback((element: T) => {\n refs.forEach(ref => {\n if (typeof ref === 'function') ref(element);\n else if (ref && typeof ref === 'object')\n (ref as MutableRefObject<T>).current = element;\n });\n }, refs);\n}\n","import {\n arrow,\n autoUpdate,\n Coords,\n flip,\n offset as floatingOffset,\n shift,\n Strategy,\n useFloating,\n} from '@floating-ui/react-dom';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst defaultOffset = ddsBaseTokens.spacing.SizesDdsSpacingX05NumberPx;\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\ninterface UseFloatPositionOptions {\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n * This is optimized for performance but can still be costly.\n * @default true\n */\n animationFrame?: boolean;\n /**\n * `offset` is used to displace the floating element from its core placement.\n * The value passed is logical, meaning its effect on the\n * physical result is dependent on the writing direction (e.g. RTL).\n * @default 8\n */\n offset?: number;\n /**\n * Where to place the floating element relative to its reference element.\n * @default 'bottom'\n */\n placement?: Placement;\n}\n\nexport const useFloatPosition = (\n arrowRef: HTMLElement | null,\n options: UseFloatPositionOptions = {},\n) => {\n const {\n animationFrame = true,\n offset = defaultOffset,\n placement = 'bottom',\n } = options;\n\n const middleware = [\n floatingOffset(offset),\n flip(),\n shift(),\n\n // Only add arrow(...) if arrowRef is set\n ...(arrowRef ? [arrow({ element: arrowRef })] : []),\n ];\n\n const {\n x,\n y,\n strategy,\n middlewareData,\n placement: actualPlacement,\n refs,\n } = useFloating({\n placement,\n middleware,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, { animationFrame }),\n });\n\n return {\n refs,\n styles: {\n floating: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n arrow: middlewareData.arrow\n ? getArrowStyling(strategy, actualPlacement, middlewareData.arrow)\n : undefined,\n },\n };\n};\n\ntype Arrow = Partial<Coords> & { centerOffset: number };\n\nfunction getArrowStyling(\n strategy: Strategy,\n placement: Placement,\n arrow: Arrow,\n) {\n const arrowPlacement = placementToArrowPlacement(placement);\n\n const arrowPlacementOffset = {\n top: '-15px',\n bottom: '-15px',\n right: '-21px',\n left: '-21px',\n }[arrowPlacement];\n\n const rotateArrow = {\n top: 'rotate(180deg)',\n right: 'rotate(-90deg)',\n bottom: '',\n left: 'rotate(90deg)',\n }[arrowPlacement];\n\n return {\n position: strategy,\n top: arrow?.y ?? '',\n left: arrow?.x ?? '',\n [arrowPlacement]: arrowPlacementOffset,\n transform: rotateArrow,\n };\n}\n\nfunction placementToArrowPlacement(placement: Placement) {\n switch (placement) {\n case 'top':\n case 'top-start':\n case 'top-end':\n return 'bottom';\n\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n return 'top';\n\n case 'left':\n case 'left-start':\n case 'left-end':\n return 'right';\n\n case 'right':\n case 'right-start':\n case 'right-end':\n return 'left';\n }\n}\n","import { RefObject, useEffect, useRef } from 'react';\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Fanger fokus i en loop inni et element. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const componentRef = useFocusTrap<HTMLDivElement>(props.isOpen);\n *\n * return props.isOpen ? <div ref={componentRef}><button>click</button></div> : null;\n *\n * }\n * ```\n * @param active om focus skal fanges, f.eks. når en modal åpnes.\n * @param initialFocusRef Ref som skal motta focus når focus trap er aktiv.\n * @returns ref til elementet som fanger fokus.\n */\n\nexport function useFocusTrap<T extends HTMLElement>(\n active: boolean,\n initialFocusRef: RefObject<HTMLElement> | undefined = undefined,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current) return;\n\n const focusableElements = getFocusableElements(elementRef);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n\n const element = elementRef.current;\n\n if (element && active) {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import { useRef, useEffect, useCallback } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Tillater effekter og animasjoner å bli gjennomført like etter et element blir lagt til eller like før det blir fjernet fra DOM.\n * Typisk bruk:\n * ```\n * // CSS\n * .component {\n * transition: opacity 0.2s;\n * opacity: 0;\n * }\n *\n * .transitionedIn.mounted {\n * opacity: 1;\n * }\n *\n * const MyComponent = (props) => {\n *\n * const hasTransitionedIn = useMountTransition(props.isMounted, 500);\n *\n * return props.isMounted || hasTransitionedIn ? (\n * <div\n * className={`component ${hasTransitionedIn && 'transitionedIn'} ${props.isMounted && 'mounted'}`}\n * >\n * innhold\n * </div>)\n * : null;\n *\n * }\n * ```\n * @param isMounted om elementet er mounted.\n * @param unmountDelay hvor lenge transition skal vare før unmount.\n * @returns om transition er ferdig.\n */\n\nexport const useMountTransition = (\n isMounted: boolean,\n unmountDelay: number,\n) => {\n const [hasTransitionedIn, setHasTransitionedIn] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n if (isMounted && !hasTransitionedIn) setHasTransitionedIn(true);\n else if (!isMounted && hasTransitionedIn) {\n timeoutId = setTimeout(() => setHasTransitionedIn(false), unmountDelay);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [unmountDelay, isMounted, hasTransitionedIn]);\n return hasTransitionedIn;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når brukeren klikker utenfor et element, f.eks at elementet fjernes fra DOM.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnClickOutside(ref, () => setOpen(false));\n *\n * return <div ref={ref}>innhold</div>\n * ```\n * @param element HTML elementet man klikker utenfor.\n * @param handler funksjonen som kjøres ved klikk utenfor.\n */\n\nexport function useOnClickOutside(\n element: HTMLElement | null | (HTMLElement | null)[],\n handler: (event: MouseEvent | TouchEvent) => void,\n) {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const elements = Array.isArray(element) ? element : [element];\n\n const hasClickedInside = elements.some(el =>\n el?.contains(event.target as HTMLElement),\n );\n\n // ClearIndicator in react-select removes itself from DOM before this handler goes off.\n // Therefore a click on it will always be counted as a click outside, for everything.\n // This is not a great solution, but it is a fair assumption that this will do more good than harm.\n const clickedOnSomethingInDocument = document.contains(\n event.target as Node,\n );\n if (hasClickedInside || !clickedOnSomethingInDocument) return;\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [element, handler]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når en spesifisert tast blir trykt ned.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnKeyDown(['Escape', 'Esc'], () => setOpen(false));\n *\n * return isOpen ? <div>innhold</div> : null;\n * ```\n * @param key tasten som trykkes.\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useOnKeyDown = (\n key: string | string[],\n handler: (event: KeyboardEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n const keys = Array.isArray(key) ? key : [key];\n if (keys.indexOf(event.key) !== -1) {\n handler(event);\n }\n };\n\n document.addEventListener('keydown', listener, true);\n\n return () => {\n document.removeEventListener('keydown', listener, true);\n };\n }, [handler]);\n};\n","import { RefObject, useEffect, useRef } from 'react';\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Returnerer fokus til et element når første eller siste barn i en container mister fokus ved tastaturnavigasjon. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const [isOpen, setOpen] = useState(true);\n * const close = () => setOpen(false);\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const containerRef = useReturnFocusOnBlur<HTMLDivElement>(\n * isOpen,\n * triggerRef.current,\n * () => close()\n * );\n *\n * return (\n * <div>\n * <button ref={triggerRef} >Åpne popover</button>\n * <div ref={containerRef}>\n * <button>gjør noe</button>\n * </div>\n * </div>\n * )\n * }\n * ```\n * @param active om container skal få fokus, f.eks. når en modal åpnes.\n * @param triggerElement elementet som skal få fokus når fokus forlater container.\n * @param onBlur ekstra logikk når fokus forlater container.\n * @returns ref til container som får fokus.\n */\n\nexport function useReturnFocusOnBlur<T extends HTMLElement>(\n active: boolean,\n onBlur: () => void,\n triggerElement?: HTMLElement | null,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current || !triggerElement)\n return;\n\n const focusableElements = getFocusableElements(elementRef);\n const lastElement = focusableElements[focusableElements.length - 1];\n const firstElement = focusableElements[0];\n\n if (\n (!e.shiftKey && document.activeElement === lastElement) ||\n (e.shiftKey && document.activeElement === firstElement) ||\n (e.shiftKey && document.activeElement === element)\n ) {\n triggerElement.focus();\n e.preventDefault();\n onBlur();\n }\n }\n\n const element = elementRef.current;\n if (element && active) {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import {\n useCallback,\n useState,\n useEffect,\n Dispatch,\n SetStateAction,\n KeyboardEvent,\n} from 'react';\nimport { Direction } from '../types';\n\nexport const isKeyboardEvent = (\n e: Event | KeyboardEvent<Element>,\n): e is KeyboardEvent<Element> =>\n (e as KeyboardEvent<Element>).key !== undefined;\n\n/**\n * Bytter fokus mellom elementer i en gruppe med piltaster og ikke Tab, og looper fokus i gruppen. Typisk bruk:\n * ```\n * import elements from './elements';\n * import RoveItem from './RoveItem';\n *\n * const MyComponent = () => {\n * const [focus, setFocus] = useRoveFocus(elements.length);\n *\n * return (\n * <ul>\n * {elements.map((element, index) => (\n * <li key={element}>\n * <RoveItem index={index} focus={focus === index} setFocus={setFocus}>{element.name}</RoveItem>\n * </li>\n * ))}\n * </ul>)\n * }\n * ```\n * @param size antall elementer i gruppen.\n * @param reset om fokus i gruppen skal nullstilles; når man tabber seg inn i gruppen skal focus være nullstilt.\n * @param direction retning elementene blas i.\n * @returns hook par: indeksen til fokuserte elemenentet og funksjonen som håndterer fokus.\n */\n\nexport function useRoveFocus(\n size?: number,\n reset?: boolean,\n direction: Direction = 'column',\n): [number, Dispatch<SetStateAction<number>>] {\n const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n\n const nextKey = direction === 'row' ? 'ArrowRight' : 'ArrowDown';\n const previousKey = direction === 'row' ? 'ArrowLeft' : 'ArrowUp';\n\n const handleKeyDown = useCallback(\n (e: Event) => {\n if (!size || !isKeyboardEvent(e)) return;\n if (reset) setCurrentFocusIndex(-1);\n if (e.key === nextKey) {\n // Down arrow\n e.preventDefault();\n setCurrentFocusIndex(\n currentFocusIndex === size - 1 ? 0 : currentFocusIndex + 1,\n );\n } else if (e.key === previousKey) {\n // Up arrow\n e.preventDefault();\n if (currentFocusIndex !== -1) {\n setCurrentFocusIndex(\n currentFocusIndex === 0 ? size - 1 : currentFocusIndex - 1,\n );\n } else setCurrentFocusIndex(size - 1);\n }\n },\n [size, currentFocusIndex, setCurrentFocusIndex, reset],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [handleKeyDown]);\n\n return [currentFocusIndex, setCurrentFocusIndex];\n}\n","import { useEffect, useState } from 'react';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { breakpoints } = ddsBaseTokens;\n\nexport enum ScreenSize {\n XSmall = 0,\n Small,\n Medium,\n Large,\n XLarge,\n}\n\nconst screenSizesAndMediaQueries: [ScreenSize, string][] = [\n [\n ScreenSize.XLarge,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXl})`,\n ],\n [\n ScreenSize.Large,\n `only screen and (min-width: ${breakpoints.DdsBreakpointLg})`,\n ],\n [\n ScreenSize.Medium,\n `only screen and (min-width: ${breakpoints.DdsBreakpointMd})`,\n ],\n [\n ScreenSize.Small,\n `only screen and (min-width: ${breakpoints.DdsBreakpointSm})`,\n ],\n [\n ScreenSize.XSmall,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXs})`,\n ],\n];\n\n/**\n * Sjekker skjermstørrelsen basert på brekkpunkter definerte i designsystemet. Eksempel på bruk:\n * ```\n * const MyComponent = () => {\n * const screenSize = useScreenSize();\n * const isSmallScreen = screenSize === ScreenSize.Small;\n *\n * return <div className={isSmallScreen && 'smallDiv'} >innhold</div>\n * }\n * ```\n * @returns den aktuelle skjermstørrelsen basert på {@link ScreenSize}.\n */\n\nexport const useScreenSize = function () {\n const [screenSize, setScreenSize] = useState(ScreenSize.Large);\n\n useEffect(() => {\n function listener() {\n for (const [screenSize, mediaQuery] of screenSizesAndMediaQueries) {\n if (window.matchMedia(mediaQuery).matches) {\n setScreenSize(screenSize);\n return;\n }\n }\n }\n listener();\n\n window.addEventListener('resize', listener);\n return () => window.removeEventListener('resize', listener);\n }, []);\n\n return screenSize;\n};\n","import { StandardProperties } from 'csstype';\nimport { ScreenSize } from '../../../hooks';\n\nexport type ScreenSizeLiteral = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport const getLiteralScreenSize = (\n screenSize: ScreenSize,\n): ScreenSizeLiteral => {\n switch (screenSize) {\n case ScreenSize.XLarge:\n return 'xl';\n case ScreenSize.Large:\n return 'lg';\n case ScreenSize.Medium:\n return 'md';\n case ScreenSize.Small:\n return 'sm';\n case ScreenSize.XSmall:\n return 'xs';\n }\n};\n\nexport type BreakpointBasedProps<T extends keyof StandardProperties> = {\n [k in ScreenSizeLiteral]?: StandardProperties[T];\n};\n","import { PropsWithChildren, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { Navigation } from './Navigation/Navigation';\nimport { User } from './Navigation/TopBar';\nimport { OverflowMenuProps } from '../OverflowMenu';\nimport {\n Environment,\n EnvironmentBanner,\n ENVIRONMENT_BANNER_HEIGHT,\n} from '@norges-domstoler/development-utils';\nimport { AppShellContextProvider } from './AppShellContext';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n /**\n * `title` brukes for å definere en egen tittel øverst i komponenten.\n * Når `title` er undefined blir tittel satt til `Lovisa`.\n */\n title?: string;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n title = 'Lovisa',\n}: AppShellProps) => {\n const environmentBannerActive = environment !== 'PROD';\n return (\n <AppShellContextProvider>\n <AppShellContainer>\n <EnvironmentBanner environment={environment} />\n <Navigation\n user={user}\n userMenuItems={userMenuItems}\n version={version}\n internal={internal}\n external={external}\n environmentBannerActive={environmentBannerActive}\n title={title}\n />\n <MainContent environmentBannerActive={environmentBannerActive}>\n {children}\n </MainContent>\n </AppShellContainer>\n </AppShellContextProvider>\n );\n};\n\nAppShell.displayName = 'AppShell';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors, spacing, fontPackages, borderRadius, breakpoints } =\n ddsBaseTokens;\n\nconst navigationItems = {\n gap: spacing.SizesDdsSpacingX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX05,\n external: {\n ...fontPackages.body_sans_01.base,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDark,\n },\n active: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorPrimaryDarker,\n },\n },\n};\n\nconst logoAndVersion = {\n padding: '36px 24px',\n color: colors.DdsColorNeutralsWhite,\n logo: {\n ...fontPackages.heading_sans_05.base,\n fontWeight: 700,\n small: {\n ...fontPackages.heading_sans_03.base,\n fontWeight: 600,\n },\n },\n version: {\n ...fontPackages.supportingStyle_tiny_01.base,\n },\n};\n\nconst topBar = {\n padding: spacing.SizesDdsSpacingX025,\n height: `calc(${spacing.SizesDdsSpacingX3} + 2 * ${spacing.SizesDdsSpacingX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import { Children, ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { Divider } from '../../Divider';\nimport { NavigationItem } from './NavigationItem';\nimport { TopBar, User } from './TopBar';\nimport { NavigationLogo } from './NavigationLogo';\nimport { OverflowMenuProps } from '../../OverflowMenu';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n title: string;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\n title,\n}: NavigationProps) => {\n const { isOpen, setOpen } = useAppShellContext();\n\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n if (event.key === 'o') {\n setOpen(prev => !prev);\n }\n };\n\n window.addEventListener('keypress', listener);\n return () => window.removeEventListener('keypress', listener);\n });\n\n return (\n <div>\n <TopBar\n user={user}\n userMenuItems={userMenuItems}\n isNavigationOpen={isOpen}\n onNavigationOpenChange={newOpen => setOpen(newOpen)}\n environmentBannerActive={environmentBannerActive}\n title={title}\n />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>{title}</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nexport type DividerColor = 'primary' | 'primaryLighter';\n\nconst StyledDivider = styled.hr<DividerProps>`\n border: 0;\n background-color: transparent;\n border-top: ${tokens.borderTop};\n margin-top: ${tokens.marginTop};\n margin-bottom: ${tokens.marginBottom};\n ${({ color }) =>\n color &&\n css`\n border-color: ${tokens.color[color].borderColor};\n `}\n`;\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje. */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { color = 'primary', id, className, htmlProps, ...rest } = props;\n\n const lineProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n color,\n };\n\n return <StyledDivider ref={ref} {...lineProps} />;\n});\n\nDivider.displayName = 'Divider';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing } = ddsBaseTokens;\n\nconst divider = {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n marginTop: spacing.SizesDdsSpacingX1,\n marginBottom: spacing.SizesDdsSpacingX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import styled from 'styled-components';\nimport { type MouseEventHandler } from 'react';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\nimport { type As, type PropsOf } from '../../../types';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon, ChevronRightIcon } from '../../Icon/icons';\nimport { SvgIcon } from '../../Icon/utils';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst navItemTokens = navTokens.navigationItems.item;\n\nconst IconContainer = styled.div`\n grid-area: icon;\n display: flex;\n align-items: center;\n`;\n\nconst TextContainer = styled.span`\n grid-area: text;\n`;\n\nconst ChevronContainer = styled.div`\n display: flex;\n align-items: center;\n opacity: 0;\n grid-area: chevron;\n`;\n\nconst BaseLink = styled.a`\n padding: ${navItemTokens.padding};\n gap: ${navItemTokens.gap};\n border-radius: ${navItemTokens.borderRadius};\n\n text-decoration: none;\n color: ${navItemTokens.color};\n font-size: ${navItemTokens.fontSize};\n font-style: ${navItemTokens.fontStyle};\n font-family: ${navItemTokens.fontFamily};\n font-weight: ${navItemTokens.fontWeight};\n line-height: ${navItemTokens.lineHeight};\n letter-spacing: ${navItemTokens.letterSpacing};\n\n &:hover:not(.active) {\n background-color: ${navItemTokens.hover.backgroundColor};\n }\n\n &.active {\n color: ${navItemTokens.active.color};\n background-color: ${navItemTokens.active.backgroundColor};\n }\n`;\n\nconst InternalNavItem = styled(BaseLink)`\n display: grid;\n align-items: center;\n grid-template-areas: 'icon text chevron';\n grid-template-columns: min-content 1fr min-content;\n\n &.active ${ChevronContainer} {\n opacity: 1;\n }\n`;\n\nconst ExternalNavItem = styled(BaseLink)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n font-size: ${navItemTokens.external.fontSize};\n font-style: ${navItemTokens.external.fontStyle};\n font-family: ${navItemTokens.external.fontFamily};\n font-weight: ${navItemTokens.external.fontWeight};\n line-height: ${navItemTokens.external.lineHeight};\n letter-spacing: ${navItemTokens.external.letterSpacing};\n`;\n\ntype BaseNavigationItemProps = (\n | {\n icon: SvgIcon;\n active?: boolean;\n external?: undefined | false;\n }\n | { external: true; active?: undefined | false; icon?: undefined }\n) & { onClick?: MouseEventHandler };\n\ntype NavigationItemProps<T extends As = 'a'> = PropsOf<T> &\n BaseNavigationItemProps;\n\nexport const NavigationItem = <T extends As = 'a'>({\n as: _as,\n active,\n icon,\n external,\n children,\n onClick: propOnClick,\n ...rest\n}: NavigationItemProps<T>) => {\n const { setOpen } = useAppShellContext();\n const Comp = _as ?? 'a';\n\n const onClick: MouseEventHandler = e => {\n propOnClick?.(e);\n setOpen(false);\n };\n if (external) {\n return (\n <ExternalNavItem as={Comp} {...rest} onClick={onClick}>\n {children}\n <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />\n </ExternalNavItem>\n );\n }\n\n return (\n <InternalNavItem\n as={Comp}\n {...rest}\n onClick={onClick}\n className={[active ? 'active' : '', rest.className].join(' ')}\n >\n <IconContainer>{icon && <Icon icon={icon} />}</IconContainer>\n <TextContainer>{children}</TextContainer>\n <ChevronContainer>\n <Icon icon={ChevronRightIcon} />\n </ChevronContainer>\n </InternalNavItem>\n );\n};\n\nNavigationItem.displayName = 'AppShell.NavItem';\n","import {\n type ReactNode,\n type SetStateAction,\n type Dispatch,\n createContext,\n useState,\n useContext,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => null,\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import styled from 'styled-components';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\n\nimport { EmbeteIcon, EmbeteType } from './EmbeteIcon';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuProps,\n} from '../../OverflowMenu';\nimport { CloseIcon, MenuIcon } from '../../Icon/icons';\nimport { SvgProps } from '../../Icon/utils';\n\nconst { navigation: navTokens, floatingActionButtons } = appShellTokens;\n\nconst LogoBurgerGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst ActionButtonGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst IconButton = styled(Button).attrs({\n appearance: 'borderless',\n purpose: 'secondary',\n})`\n color: ${navTokens.topBar.buttonTextColor};\n > :first-child {\n font-size: 1.65rem;\n }\n @media (max-width: ${navTokens.mobile.breakpoint}) {\n border: 0;\n box-shadow: none;\n padding: 12px;\n &:hover,\n &:active {\n color: ${navTokens.topBar.buttonTextColor};\n text-decoration-color: ${navTokens.topBar.buttonTextColor};\n box-shadow: none;\n }\n gap: 0;\n }\n`;\n\nconst IconButtonText = styled.span`\n display: none; // Ikke vis tekst på mobil\n width: 0;\n`;\n\nconst Bar = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${navTokens.topBar.gap};\n width: 100vw;\n height: ${navTokens.topBar.height};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n z-index: 101;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : '0'};\n left: 0;\n right: 0;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n justify-content: flex-end;\n background-color: transparent;\n margin-left: ${navTokens.width};\n width: calc(100vw - ${navTokens.width});\n\n pointer-events: none;\n & > * {\n pointer-events: initial;\n }\n\n ${LogoBurgerGroup} {\n display: none;\n }\n\n ${ActionButtonGroup} {\n padding-right: calc(2 * ${navTokens.topBar.gap});\n gap: ${floatingActionButtons.gap};\n }\n\n ${IconButton} {\n background-color: ${floatingActionButtons.backgroundColor};\n color: ${floatingActionButtons.textColor};\n box-shadow: 8px 16px 32px 0px rgba(0, 0, 0, 0.1);\n border-radius: ${floatingActionButtons.borderRadius};\n\n ${IconButtonText} {\n display: unset;\n }\n }\n }\n`;\n\ninterface TopBarProps {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n title: string;\n}\n\nexport interface User {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n}\n\nexport interface Embete {\n /**Navnet på embetet. */\n name: string;\n /**Hvilken instans embetet er. */\n type: EmbeteType;\n}\n\nexport const TopBar = ({\n user,\n userMenuItems,\n isNavigationOpen,\n onNavigationOpenChange,\n environmentBannerActive,\n title,\n}: TopBarProps) => {\n const Icon = (props: SvgProps) => (\n <EmbeteIcon {...props} type={user.embete.type} />\n );\n\n return (\n <Bar environmentBannerActive={environmentBannerActive}>\n <LogoBurgerGroup>\n <IconButton\n icon={isNavigationOpen ? CloseIcon : MenuIcon}\n onClick={() => onNavigationOpenChange(!isNavigationOpen)}\n />\n <NavigationLogo small>{title}</NavigationLogo>\n </LogoBurgerGroup>\n <ActionButtonGroup>\n <OverflowMenuGroup>\n <IconButton\n icon={Icon}\n label={<IconButtonText>{user.name}</IconButtonText>}\n />\n <OverflowMenu items={userMenuItems} />\n </OverflowMenuGroup>\n </ActionButtonGroup>\n </Bar>\n );\n};\n","import {\n JordskifterettIcon,\n TingrettIcon,\n LagmannsrettIcon,\n PersonIcon,\n} from '../../Icon/icons';\nimport { SvgProps } from '../../Icon/utils';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ElementType, forwardRef, MouseEvent } from 'react';\n\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { Spinner } from '../Spinner';\nimport { ButtonProps } from './Button.types';\nimport { ButtonWrapper, StyledIconWrapperSpan, Label } from './Button.styles';\nimport { getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { ButtonSize } from '.';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, border, spacing, fontPackages, borderRadius, outerShadow } =\n ddsBaseTokens;\n\nexport const typographyTypes: {\n [k in ButtonSize]: StaticTypographyType;\n} = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTinyPx = calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeSmallPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeMediumPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n);\nconst iconSizeLargePx = calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n);\n\nconst svgOffset = spacing.SizesDdsSpacingX0125NumberPx;\n\nconst filledButtonColors = {\n primary: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray8,\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray2,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray3,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n },\n danger: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorDangerDarker,\n borderColor: colors.DdsColorDangerDarker,\n },\n },\n },\n};\n\nconst sizes = {\n large: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeLargePx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX1} ${\n spacing.SizesDdsSpacingX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX075} ${\n spacing.SizesDdsSpacingX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX05} ${\n spacing.SizesDdsSpacingX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { getTextColor, TextColor } from '../../utils';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = React.useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import styled, { css } from 'styled-components';\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n ButtonAppearance,\n ButtonPurpose,\n ButtonSize,\n IconPosition,\n} from './Button.types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n selection,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { Divider } from '../Divider';\nimport {\n OverflowMenuContextItem,\n OverflowMenuNavItem,\n OverflowMenuProps,\n} from '.';\nimport {\n useFloatPosition,\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '../../hooks';\nimport { getBaseHTMLProps } from '../../types';\nimport { visibilityTransition, selection } from '../helpers';\nimport { PersonIcon } from '../Icon/icons';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n RefObject,\n useEffect,\n useRef,\n useState,\n useCallback,\n MouseEvent,\n} from 'react';\nimport styled from 'styled-components';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nconst { track, thumb, minThumbHeightPx } = tokens;\n\nconst ScrollbarOuterWrapper = styled.div``;\n\nconst ScrollbarElements = styled.div`\n display: block;\n height: 100%;\n position: relative;\n display: grid;\n justify-items: center;\n`;\n\nconst Track = styled.div`\n bottom: 0;\n top: 0;\n position: absolute;\n background-color: ${track.backgroundColor};\n border-radius: ${track.borderRadius};\n width: ${track.width};\n`;\n\nconst Thumb = styled.div`\n position: absolute;\n background-color: ${thumb.base.backgroundColor};\n border-radius: ${thumb.base.borderRadius};\n width: ${thumb.base.width};\n transition: background-color 0.2s;\n &:hover {\n background-color: ${thumb.hover.backgroundColor};\n }\n`;\n\nexport type ScrollbarProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Ref til container med innholdet som skal scrolles. */\n contentRef?: RefObject<HTMLDivElement>;\n }\n>;\n\nexport const Scrollbar = (props: ScrollbarProps) => {\n const { id, className, htmlProps, contentRef, ...rest } = props;\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const [thumbHeight, setThumbHeight] = useState(minThumbHeightPx);\n const [isScrollable, setIsScrollable] = useState(true);\n const [thumbTop, setThumbTop] = useState<number>(0);\n const observer = useRef<ResizeObserver | null>(null);\n const [scrollStartPosition, setScrollStartPosition] = useState<number>(0);\n const [initialScrollTop, setInitialScrollTop] = useState<number>(0);\n const [isDragging, setIsDragging] = useState(false);\n\n function handleResize(ref: HTMLDivElement, trackSize: number) {\n const { clientHeight, scrollHeight } = ref;\n setIsScrollable(clientHeight !== scrollHeight);\n setThumbHeight(\n Math.max((clientHeight / scrollHeight) * trackSize, minThumbHeightPx),\n );\n }\n\n const handleTrackClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (contentRef?.current) {\n const { current: trackCurrent } = trackRef;\n const { current: contentCurrent } = contentRef;\n if (trackCurrent && contentCurrent) {\n const { clientY } = e;\n const target = e.target as HTMLDivElement;\n const rect = target.getBoundingClientRect();\n const trackTop = rect.top;\n const thumbOffset = -(thumbHeight / 2);\n const clickRatio =\n (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;\n const scrollAmount = Math.floor(\n clickRatio * contentCurrent.scrollHeight,\n );\n contentCurrent.scrollTo({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n },\n [thumbHeight],\n );\n\n const handleThumbPositioning = useCallback(() => {\n if (!contentRef?.current || !trackRef.current || !thumbRef.current) {\n return;\n }\n const { scrollTop: contentTop, scrollHeight: contentHeight } =\n contentRef.current;\n const { clientHeight } = trackRef.current;\n let newTop = (+contentTop / +contentHeight) * clientHeight;\n newTop = Math.min(newTop, clientHeight - thumbHeight);\n setThumbTop(newTop);\n }, []);\n\n useEffect(() => {\n if (contentRef?.current && trackRef.current) {\n const ref = contentRef.current;\n const { clientHeight } = trackRef.current;\n observer.current = new ResizeObserver(() => {\n handleResize(ref, clientHeight);\n });\n observer.current.observe(ref);\n ref.addEventListener('scroll', handleThumbPositioning);\n return () => {\n observer.current?.unobserve(ref);\n ref.removeEventListener('scroll', handleThumbPositioning);\n };\n }\n }, []);\n\n const handleThumbMousedown = useCallback((e: MouseEvent<HTMLDivElement>) => {\n setScrollStartPosition(e.clientY);\n if (contentRef?.current) setInitialScrollTop(contentRef.current.scrollTop);\n setIsDragging(true);\n }, []);\n\n const handleThumbMouseup = useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n }\n }, [isDragging]);\n\n const handleThumbMousemove = useCallback(\n (e: globalThis.MouseEvent) => {\n if (contentRef?.current) {\n if (isDragging) {\n const {\n scrollHeight: contentScrollHeight,\n offsetHeight: contentOffsetHeight,\n } = contentRef.current;\n\n const deltaY =\n (e.clientY - scrollStartPosition) *\n (contentOffsetHeight / thumbHeight);\n const newScrollTop = Math.min(\n initialScrollTop + deltaY,\n contentScrollHeight - contentOffsetHeight,\n );\n\n contentRef.current.scrollTop = newScrollTop;\n }\n }\n },\n [isDragging, scrollStartPosition, thumbHeight],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', handleThumbMousemove);\n document.addEventListener('mouseup', handleThumbMouseup);\n document.addEventListener('mouseleave', handleThumbMouseup);\n return () => {\n document.removeEventListener('mousemove', handleThumbMousemove);\n document.removeEventListener('mouseup', handleThumbMouseup);\n document.removeEventListener('mouseleave', handleThumbMouseup);\n };\n }, [handleThumbMousemove, handleThumbMouseup]);\n\n return isScrollable ? (\n <ScrollbarOuterWrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ScrollbarElements>\n <Track ref={trackRef} onClick={handleTrackClick} />\n <Thumb\n style={{\n height: thumbHeight,\n top: thumbTop,\n }}\n ref={thumbRef}\n onMouseDown={handleThumbMousedown}\n />\n </ScrollbarElements>\n </ScrollbarOuterWrapper>\n ) : null;\n};\n\nScrollbar.displayName = 'Scrollbar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nexport const scrollbarWidthNumberPx = 10;\nconst scrollbarWidth = `${scrollbarWidthNumberPx}px`;\nconst { colors, spacing } = ddsBaseTokens;\n\nconst track = {\n backgroundColor: 'transparent',\n borderRadius: '100px',\n width: scrollbarWidth,\n};\n\nconst thumb = {\n base: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',\n borderRadius: '100px',\n width: scrollbarWidth,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)',\n },\n};\n\nconst content = {\n paddingRight: spacing.SizesDdsSpacingX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { useRef } from 'react';\nimport styled from 'styled-components';\nimport { Scrollbar } from './Scrollbar';\nimport { Property } from 'csstype';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Property } from 'csstype';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n Dispatch,\n SetStateAction,\n MouseEvent,\n KeyboardEvent,\n ForwardedRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { useCombinedRef } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { normalizeButton } from '../helpers';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling, focusVisibleLink } from '../Typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { border, borderRadius, colors, spacing, fontPackages } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst element = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1}`,\n gap: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst iconHeight = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst link = {\n iconWrapper: {\n height: `${iconHeight}px`,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nconst container = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst divider = {\n marginRight: spacing.SizesDdsSpacingX15,\n marginLeft: spacing.SizesDdsSpacingX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingX0125NumberPx,\n};\n","import {\n useRef,\n useState,\n Children as ReactChildren,\n ReactNode,\n isValidElement,\n cloneElement,\n ReactElement,\n useId,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { AppShell as BaseAppShell, AppShellProps } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { ChangeEvent, forwardRef, useId } from 'react';\n\nimport { RadioButtonProps } from './RadioButton.types';\nimport {\n RadioButtonGroup,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { Container, CustomSelectionControl } from '../SelectionControl.styles';\nimport { Nullable, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nconst isValueEqualToGroupValueOrFalsy = (\n value: unknown,\n group: Nullable<RadioButtonGroup>,\n): boolean => {\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n return !!value;\n};\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n disabled = false,\n readOnly = false,\n error = false,\n checked,\n value,\n children,\n required = false,\n onChange,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n type: 'radio',\n name: name ?? radioButtonGroup?.name,\n disabled:\n disabled ||\n readOnly ||\n !!radioButtonGroup?.disabled ||\n !!radioButtonGroup?.readOnly,\n required: required || !!radioButtonGroup?.required,\n checked:\n typeof checked !== 'undefined'\n ? checked\n : isValueEqualToGroupValueOrFalsy(value, radioButtonGroup),\n onChange: handleChange,\n value: value,\n 'aria-describedby':\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': error || radioButtonGroup?.error ? true : undefined,\n };\n\n return (\n <Container\n $error={error || radioButtonGroup?.error}\n disabled={disabled || radioButtonGroup?.disabled}\n $readOnly={readOnly || radioButtonGroup?.readOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n $hasLabel={hasLabel}\n htmlFor={uniqueId}\n $controlType=\"radio\"\n >\n <HiddenInput {...inputProps} ref={ref} />\n <CustomSelectionControl $controlType=\"radio\" />\n <Typography as=\"span\">{children ?? label}</Typography>\n </Container>\n );\n },\n);\n\nRadioButton.displayName = 'RadioButton';\n","import React, { ChangeEvent, useContext } from 'react';\nimport { Nullable } from '../../../types';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n React.createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\nimport { Direction } from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\n\nconst {\n selectionControl,\n container,\n checkmark,\n groupContainer,\n outerGroupContainer,\n} = selectionControlTokens;\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\nexport const CustomSelectionControl = styled.span<{\n $controlType?: SelectionControlType;\n}>`\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: ${selectionControl.base.border};\n border-color: ${selectionControl.base.borderColor};\n background-color: ${selectionControl.base.backgroundColor};\n border-radius: ${selectionControl.base.borderRadius};\n height: ${selectionControl.base.height};\n width: ${selectionControl.base.width};\n ${({ $controlType }) =>\n $controlType === 'radio' &&\n css`\n border-radius: 50%;\n `}\n &:after {\n content: '';\n position: absolute;\n display: none;\n }\n`;\n\nexport const Container = styled.label<{\n $hasLabel?: boolean;\n disabled?: boolean;\n $readOnly?: boolean;\n $error?: boolean;\n $controlType: SelectionControlType;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n width: fit-content;\n color: ${container.color};\n ${({ $hasLabel }) =>\n $hasLabel\n ? css`\n padding-left: ${container.withLabel.paddingLeft};\n `\n : css`\n padding: ${container.noLabel.padding};\n `}\n\n input ~ ${CustomSelectionControl} {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s;\n }\n }\n\n &:focus-within {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.base.backgroundColor};\n box-shadow: ${selectionControl.hover.base.boxShadow};\n border-color: ${selectionControl.hover.base.borderColor};\n }\n\n input:checked:enabled\n ~ ${CustomSelectionControl},\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n border-color: ${selectionControl.checked.base.borderColor};\n background-color: ${selectionControl.checked.base.backgroundColor};\n }\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:enabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.hover.backgroundColor};\n box-shadow: ${selectionControl.checked.hover.boxShadow};\n border-color: ${selectionControl.checked.hover.borderColor};\n }\n\n ${({ $error }) =>\n $error &&\n css`\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.danger.backgroundColor};\n box-shadow: ${selectionControl.hover.danger.boxShadow};\n border-color: ${selectionControl.hover.danger.borderColor};\n }\n input\n ~ ${CustomSelectionControl},\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl} {\n box-shadow: ${selectionControl.danger.boxShadow};\n border-color: ${selectionControl.danger.borderColor};\n }\n `}\n input:disabled ~ ${CustomSelectionControl} {\n ${selectionControl.disabled}\n }\n input:checked:disabled\n ~ ${CustomSelectionControl},\n input:disabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.disabled.backgroundColor};\n border-color: ${selectionControl.checked.disabled.borderColor};\n }\n input:checked\n ~ ${CustomSelectionControl}:after,\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl}:after {\n display: block;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: not-allowed;\n color: ${container.disabled.color};\n `}\n ${({ $controlType }) =>\n $controlType === 'checkbox'\n ? css`\n ${CustomSelectionControl}:after {\n border: solid ${checkmark.checkbox.borderColor};\n\n border-width: 0 1px 1px 0;\n left: 35%;\n top: 10%;\n width: 30%;\n height: 65%;\n transform: rotate(45deg);\n }\n input[data-indeterminate='true'] ~ ${CustomSelectionControl}:after {\n border-width: 1px 0 0 0;\n left: 25%;\n top: 50%;\n width: 50%;\n height: 1px;\n transform: none;\n }\n `\n : css`\n ${CustomSelectionControl}:after {\n border-radius: 50%;\n background-color: ${checkmark.radio.backgroundColor};\n width: ${checkmark.radio.width};\n height: ${checkmark.radio.height};\n left: ${checkmark.radio.left};\n top: ${checkmark.radio.top};\n }\n `}\n`;\n\nexport const OuterGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerGroupContainer.gap};\n`;\n\nexport const GroupContainer = styled.div<{ $direction: Direction }>`\n display: flex;\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${groupContainer[$direction].gap};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\nimport { hoverInputfield, dangerInputfield } from '../helpers';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nconst checkmark = {\n checkbox: {\n borderColor: colors.DdsColorNeutralsWhite,\n },\n radio: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n height: spacing.SizesDdsSpacingX05,\n width: spacing.SizesDdsSpacingX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingX05NumberPx / 2}px)`,\n },\n};\n\nconst selectionControl = {\n base: {\n border: '1px solid',\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n height: selectionControlSize,\n width: selectionControlSize,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${hoverInputfield.borderColor}`,\n borderColor: hoverInputfield.borderColor,\n },\n danger: {\n backgroundColor: colors.DdsColorDangerLightest,\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n },\n danger: {\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: { backgroundColor: 'transparent' },\n checked: {\n base: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveDark,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n borderColor: colors.DdsColorInteractiveDark,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n readOnly: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n },\n checkbox: {\n indeterminate: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n },\n};\n\nconst container = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n withLabel: {\n paddingLeft: `${\n selectionControlSizeNumberPx + spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingX075,\n },\n column: { gap: spacing.SizesDdsSpacingX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n ChangeEvent,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n Ref,\n useId,\n useState,\n} from 'react';\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { combineHandlers } from '../../../utils';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Ledetekst for hele gruppen. */\n label?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /**Legger en markør (*) bak label som indikerer at input er påkrevd. Gjør alle barna påkrevd ved å gi dem `required` prop. */\n required?: boolean;\n /**Meldingen som vises ved valideringsfeil. Gir alle barna error prop. */\n errorMessage?: string;\n /**Hjelpetekst for gruppen. */\n tip?: string;\n /**Gir alle barna `disabled` prop. */\n disabled?: boolean;\n /**Gir alle barna `readOnly` prop */\n readOnly?: boolean;\n /**Retningen radioknappene skal gjengis i. */\n direction?: Direction;\n /**Default verdi - en `<RadioButton />` blir forhåndsvalgt. **OBS!** brukes kun når brukeren ikke skal fylle ut selv. */\n value?: T | undefined;\n /**custom id for for gruppen, knytter `label` til gruppen via `aria-label`. */\n groupId?: string;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nconst RadioButtonGroupInner = <T extends string | number = string>(\n props: RadioButtonGroupProps<T>,\n ref: Ref<HTMLDivElement>,\n) => {\n const {\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [groupValue, setGroupValue] = useState<\n string | number | null | undefined\n >(value);\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps = {\n name,\n disabled,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n ref={ref}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"radiogroup\"\n $direction={direction}\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n >\n {children}\n </GroupContainer>\n </RadioButtonGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nexport const RadioButtonGroup = forwardRef(RadioButtonGroupInner) as <\n T extends string | number = string,\n>(\n props: RadioButtonGroupProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n// @ts-expect-error TODO fix RadioButtonGroup type\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","import { forwardRef, useId } from 'react';\n\nimport { CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { CustomSelectionControl, Container } from '../SelectionControl.styles';\nimport { getBaseHTMLProps } from '../../../types';\nimport { cn, spaceSeparatedIdListGenerator } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n\n const {\n style,\n className: htmlPropsClassName,\n ...restHtmlProps\n } = htmlProps;\n\n type AriaChecked = 'mixed' | boolean | undefined;\n\n return (\n <Container\n $error={error || checkboxGroup?.error}\n disabled={disabled}\n htmlFor={uniqueId}\n $hasLabel={hasLabel}\n $controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n ref={ref}\n name={name}\n disabled={disabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={error || checkboxGroup?.error ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? ('mixed' as AriaChecked) : undefined}\n aria-readonly={readOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n />\n <CustomSelectionControl $controlType=\"checkbox\" />\n {hasLabel && (\n <Typography color=\"inherit\" as=\"span\" typographyType=\"bodySans02\">\n {label}\n </Typography>\n )}\n </Container>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import React, { useContext } from 'react';\nimport { Nullable } from '../../../types';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n React.createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\nimport {\n CheckboxGroupContext,\n CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n OuterGroupContainer,\n GroupContainer,\n} from '../SelectionControl.styles';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { derivativeIdGenerator } from '../../../utils';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna gjengis i. */\n direction?: Direction;\n /**Custom id for for gruppen, knytter ledetekst til gruppen via `aria-label`. */\n groupId?: string;\n /**Meldingen som vises ved valideringsfeil. Sender error-tilstand til barna når det finnes og setter `aria-describedby` for barna. */\n errorMessage?: string;\n tip?: string;\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Innebærer visuell endring. **OBS!** `required` må i tillegg gis til `<Checkbox />` manuelt. */\n required?: boolean;\n }\n>;\n\nexport const CheckboxGroup = (props: CheckboxGroupProps) => {\n const {\n label,\n direction = 'row',\n errorMessage,\n tip,\n required = false,\n groupId,\n children,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = htmlProps;\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-checkboxGroup`;\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueGroupId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueGroupId, 'tip');\n\n const contextProps: CheckboxGroupContextProps = {\n error: hasErrorMessage,\n errorMessageId: errorMessage ? errorMessageId : undefined,\n uniqueGroupId,\n tipId: tip ? tipId : undefined,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n $direction={direction}\n >\n {children}\n </GroupContainer>\n </CheckboxGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import React, {\n useState,\n forwardRef,\n useId,\n useRef,\n useLayoutEffect,\n} from 'react';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens } from './TextInput.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport CharCounter from './CharCounter';\nimport { TextAffixProps, TextInputProps } from './TextInput.types';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport {\n InputSize,\n getDefaultText,\n InputContainer,\n InputAffixContainer,\n StatefulInput,\n OuterInputContainer,\n} from '../helpers';\nimport { Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX025NumberPx\n }px`,\n },\n },\n};\n\nconst affix = {\n border: {\n color: colors.DdsColorNeutralsGray5,\n },\n};\n\nconst icon = {\n color: colors.DdsColorNeutralsGray9,\n sizes: {\n medium: {\n top: spacing.SizesDdsSpacingX075,\n left: spacing.SizesDdsSpacingX075,\n },\n small: {\n top: spacing.SizesDdsSpacingX075,\n left: spacing.SizesDdsSpacingX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingX05,\n left: spacing.SizesDdsSpacingX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Typography } from '../Typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\nimport { InputSize, InputProps, StatefulInput } from '../helpers';\nimport { Icon } from '../Icon';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import React, { HTMLAttributes, ReactNode, useId } from 'react';\nimport { Property } from 'csstype';\nimport {\n default as ReactSelect,\n GroupBase,\n OptionProps,\n Props as ReactSelectProps,\n SelectInstance,\n SingleValueProps,\n} from 'react-select';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { WithRequiredIf } from '../../types';\nimport {\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { SvgIcon } from '../Icon/utils';\nimport { Label } from '../Typography';\nimport { InputSize } from '../helpers';\nimport { prefix, getCustomStyles, Container } from './Select.styles';\nimport {\n CustomOption,\n DDSNoOptionsMessage,\n DDSInput,\n CustomSingleValue,\n DDSClearIndicator,\n DDSDropdownIndicator,\n DDSMultiValueRemove,\n DDSControl,\n DDSOption,\n} from './SelectComponents';\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst getPlaceholder = (\n placeholder?: ReactNode,\n isMulti?: boolean,\n): ReactNode =>\n placeholder\n ? placeholder\n : isMulti\n ? '-- Velg en eller flere --'\n : '-- Velg fra listen --';\n\ntype WrappedReactSelectProps<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n> = WithRequiredIf<\n Option extends SelectOption ? false : true,\n ReactSelectProps<Option, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<Option = unknown, IsMulti extends boolean = false> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten. */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir disabled og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n customOptionElement?: (\n props: OptionProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<Option, IsMulti, GroupBase<Option>>;\n\ntype ForwardRefType<Option, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<Option, IsMulti, GroupBase<Option>>\n>;\n\nfunction SelectInner<Option = unknown, IsMulti extends boolean = false>(\n props: SelectProps<Option, IsMulti>,\n ref: ForwardRefType<Option, IsMulti>,\n) {\n const {\n id,\n label,\n componentSize = 'medium',\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n readOnly,\n options,\n isMulti,\n value,\n icon,\n defaultValue,\n width = defaultWidth,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n customOptionElement,\n customSingleValueElement,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const containerProps = {\n $width: width,\n $componentSize: componentSize,\n $errorMessage: errorMessage,\n $isDisabled: isDisabled,\n $readOnly: readOnly,\n $isMulti: isMulti,\n className,\n style,\n };\n\n const reactSelectProps: ReactSelectProps<\n Option,\n IsMulti,\n GroupBase<Option>\n > = {\n options,\n value,\n defaultValue,\n isDisabled: !!isDisabled || readOnly,\n isClearable,\n placeholder: getPlaceholder(placeholder, isMulti),\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n classNamePrefix: prefix,\n styles: getCustomStyles<Option>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n}\n\nexport const Select = React.forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { GroupBase, StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport { Property } from 'csstype';\nimport {\n InputSize,\n dangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport {\n InputSize,\n InputTypographyTypes,\n inputTypographyTypes,\n} from '../helpers';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst placeholderTypographyTypes: { [k in InputSize]: StaticTypographyType } = {\n medium: 'supportingStylePlaceholderText01',\n small: 'supportingStylePlaceholderText02',\n tiny: 'supportingStylePlaceholderText03',\n};\n\nconst multiValueLabelTypographyTypes: {\n [k in InputSize]: StaticTypographyType;\n} = {\n medium: 'bodySans01',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nexport const typographyTypes: {\n control: InputTypographyTypes;\n option: InputTypographyTypes;\n placeholder: { [k in InputSize]: StaticTypographyType };\n noOptionsMessage: { [k in InputSize]: StaticTypographyType };\n groupHeading: StaticTypographyType;\n multiValueLabel: { [k in InputSize]: StaticTypographyType };\n} = {\n control: inputTypographyTypes,\n option: inputTypographyTypes,\n placeholder: placeholderTypographyTypes,\n noOptionsMessage: placeholderTypographyTypes,\n groupHeading: 'supportingStyleHelperText01',\n multiValueLabel: multiValueLabelTypographyTypes,\n};\n\nconst control = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: {\n borderColor: 'transparent',\n backgroundColor: 'transparent',\n },\n isMulti: {\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n};\n\nconst placeholder = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst dropdownIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: {\n color: colors.DdsColorInteractiveBase,\n },\n readOnly: {\n color: 'transparent',\n },\n};\n\nconst clearIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: { color: colors.DdsColorInteractiveBase },\n};\n\nconst loadingIndicator = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst menu = {\n border: '1px solid',\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n marginTop: spacing.SizesDdsSpacingX025,\n marginBottom: spacing.SizesDdsSpacingX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingX05,\n padding: `${spacing.SizesDdsSpacingX075}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n selected: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst noOptionsMessage = {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingX025}`,\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n};\n\nconst valueContainer = {\n isMulti: {\n gap: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingX05,\n};\n\nexport const selectTokens = {\n control,\n dropdownIndicator,\n placeholder,\n menu,\n groupHeading,\n option,\n valueContainer,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n clearIndicator,\n loadingIndicator,\n icon,\n};\n","import {\n ClearIndicatorProps,\n ControlProps,\n DropdownIndicatorProps,\n GroupBase,\n InputProps,\n MultiValueRemoveProps,\n NoticeProps,\n OptionProps,\n SingleValueProps,\n components,\n} from 'react-select';\nimport { getFormInputIconSize } from '../../utils';\nimport { Icon, SvgIcon } from '../Icon';\nimport { CheckIcon, CloseSmallIcon, ChevronDownIcon } from '../Icon/icons';\nimport { InputSize } from '../helpers';\nimport { InnerSingleValue, StyledIcon } from './Select.styles';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport const DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nexport const CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nexport const CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <InnerSingleValue id={id}>\n {Element ? <Element {...props} /> : props.children}\n </InnerSingleValue>\n </SingleValue>\n);\n\nexport const DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nexport const DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getFormInputIconSize(size)} />\n </ClearIndicator>\n);\n\nexport const DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nexport const DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <DropdownIndicator {...props}>\n <Icon icon={ChevronDownIcon} iconSize={getFormInputIconSize(size)} />\n </DropdownIndicator>\n);\n\nexport const DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nexport const DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n icon?: SvgIcon,\n) => (\n <Control {...props}>\n {icon && (\n <StyledIcon icon={icon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Control>\n);\n","import type { SelectOption } from './Select';\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport {\n globalMessageTokens as tokens,\n purposeVariants,\n typographyType,\n} from './GlobalMessage.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport { getFontStyling, Typography } from '../Typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ButtonPurpose } from '../Button';\nimport { GlobalMessagePurpose } from './GlobalMessage';\nimport { InfoIcon, ErrorIcon, WarningIcon } from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingX1}`,\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingX15,\n paddingTop: spacing.SizesDdsSpacingX075,\n paddingBottom: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingX075,\n },\n};\n\nexport const purposeVariants: {\n [k in GlobalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n};\n\nexport const globalMessageTokens = {\n container,\n contentContainer,\n icon: {\n marginRight: `${spacing.SizesDdsSpacingX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport { Property } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport {\n getFontStyling,\n defaultTypographyType,\n Typography,\n} from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ButtonPurpose } from '../Button';\nimport { LocalMessagePurpose } from './LocalMessage';\nimport {\n InfoIcon,\n ErrorIcon,\n WarningIcon,\n CheckCircledIcon,\n TipIcon,\n} from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border, outerShadow } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n base: {\n boxShadow: outerShadow.DdsShadow1Onlight,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n padding: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX05,\n },\n purpose: {\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n success: {\n borderColor: colors.DdsColorSuccessLighter,\n backgroundColor: colors.DdsColorSuccessLightest,\n },\n tips: {\n borderColor: colors.DdsColorPrimaryLighter,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n confidential: {\n borderColor: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n },\n};\n\nconst purposeVariants: {\n [k in LocalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n success: {\n icon: CheckCircledIcon,\n closeButtonPurpose: 'secondary',\n },\n tips: {\n icon: TipIcon,\n closeButtonPurpose: 'secondary',\n },\n confidential: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n};\n\nconst icon = {\n marginRight: `${spacing.SizesDdsSpacingX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n success: {\n color: colors.DdsColorSuccessDarkest,\n },\n tips: {\n color: colors.DdsColorPrimaryDarkest,\n },\n confidential: {\n color: colors.DdsColorDangerDarkest,\n },\n};\n\nexport const localMessageTokens = {\n container,\n purposeVariants,\n icon,\n};\n","import {\n ButtonHTMLAttributes,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n MouseEvent,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { IconSize, Icon } from '../Icon';\nimport { SearchIcon, CloseSmallIcon } from '../Icon/icons';\nimport { getFontStyling, Label } from '../Typography';\nimport { Input as BaseInput, InputProps as BaseInputProps } from '../helpers';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import styled from 'styled-components';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n ChangeEvent,\n createContext,\n MouseEvent,\n RefObject,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { SearchSize } from './Search';\nimport { StaticTypographyType } from '../Typography';\n\nconst { spacing, iconSizes, colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport const typographyTypes: { [k in SearchSize]: StaticTypographyType } = {\n small: 'bodySans01',\n medium: 'bodySans02',\n large: 'bodySans04',\n};\n\nconst paddingLeftSmall = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingX25,\n paddingLeft: spacing.SizesDdsSpacingX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingX05,\n paddingBottom: spacing.SizesDdsSpacingX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingX075,\n paddingBottom: spacing.SizesDdsSpacingX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingX1,\n paddingBottom: spacing.SizesDdsSpacingX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingX075,\n color: textDefault.textColor,\n },\n small: {\n top: `calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`,\n },\n medium: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n large: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n};\n\nconst clearButton = {\n right: spacing.SizesDdsSpacingX075,\n top: `calc(50% - 14px)`, // Knappen er 28px høy. Trekker fra 14px for å få den midtstilt.\n color: textDefault.textColor,\n};\n\nconst suggestionsContainer = {\n marginTop: spacing.SizesDdsSpacingX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => null,\n stopPropagation: () => null,\n nativeEvent: new Event('input'),\n persist: () => null,\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import styled from 'styled-components';\nimport {\n OverflowMenuItem,\n OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { SearchProps, SearchSize } from './Search';\nimport { forwardRef, MouseEvent } from 'react';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { useRoveFocus } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { derivativeIdGenerator } from '../../utils';\nimport { Paper, visibilityTransition, removeListStyling } from '../helpers';\nimport { getFontStyling, Typography } from '../Typography';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n ChangeEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport {\n AutocompleteSearchContext,\n AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\nimport { searchFilter } from '../../utils';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, SearchProps, SearchSize } from './Search';\nimport {\n SearchAutocompleteWrapper,\n SearchAutocompleteWrapperProps,\n SearchData,\n WeightedSearchData,\n} from './SearchAutocompleteWrapper';\n\nimport { SearchSuggestions, SearchSuggestionsProps } from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { tableTokens } from './Table.tokens';\nimport { TableDensity, TableProps } from './Table.types';\nimport { selection } from '../helpers';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingX075,\n marginRight: spacing.SizesDdsSpacingX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Table } from '../Table';\nimport { CollapsibleTableContext } from './Table.context';\nimport { CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n {children}\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\nimport { TableRowProps } from './Table.types';\nimport { StyledRow } from './Table.styles';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import styled, { css } from 'styled-components';\n\nimport { RowMode, TableRowType } from './Table.types';\nimport { tableTokens } from './Table.tokens';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\nimport { focusVisibleInset } from '../helpers';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import {\n forwardRef,\n Children,\n useState,\n isValidElement,\n cloneElement,\n ReactElement,\n Fragment,\n useEffect,\n} from 'react';\nimport styled from 'styled-components';\nimport { Table } from '..';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useCollapsibleTableContext } from './Table.context';\nimport { TableRowProps } from '../Table.types';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport {\n removeButtonStyling,\n AnimatedChevronUpDown,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../../helpers';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\n\nconst { term, desc, list } = tokens;\n\ntype DListProps = Pick<DescriptionListProps, 'appearance' | 'direction'>;\n\nconst DList = styled.dl.withConfig({\n shouldForwardProp: prop => prop !== 'appearance' && prop !== 'direction',\n})<DListProps>`\n margin: 0;\n *::selection {\n ${selection}\n }\n ${({ appearance }) =>\n appearance &&\n css`\n dt {\n color: ${term.appearance[appearance].color};\n ${appearance === 'bold' &&\n css`\n font-weight: 600;\n `}\n }\n `}\n display: flex;\n flex-direction: column;\n &:not(:has(> dt):has(> dd)) {\n flex-direction: ${({ direction = 'column' }) => direction};\n }\n flex-wrap: wrap;\n column-gap: ${list.rowDirection.columnGap};\n row-gap: 0;\n & > dt:first-of-type {\n margin-top: ${term.firstOfType.marginTop};\n }\n & > dd:last-child {\n margin-bottom: ${desc.lastChild.marginBottom};\n }\n dd + dt {\n margin-top: ${list.beforeNextTerm.marginTop};\n }\n`;\n\nexport type DescriptionListAppearance = 'small' | 'bold';\n\nexport type DescriptionListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**Påvirker tekst styling. */\n appearance?: DescriptionListAppearance;\n /**Setter flex-direction. NB! Fungerer kun ved bruk av `DescriptionListGroup` som barn av `DescriptionList`.\n * @default \"column\"\n */\n direction?: 'row' | 'column';\n }\n>;\n\nexport const DescriptionList = forwardRef<\n HTMLDListElement,\n DescriptionListProps\n>((props, ref) => {\n const {\n appearance = 'bold',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n appearance,\n direction,\n ref,\n };\n\n return <DList {...dListProps}>{children}</DList>;\n});\n\nDescriptionList.displayName = 'DescriptionList';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst term = {\n appearance: {\n small: {\n color: colors.DdsColorNeutralsGray7,\n },\n bold: {\n color: colors.DdsColorNeutralsGray9,\n },\n },\n firstOfType: {\n marginTop: spacing.SizesDdsSpacingX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n ElementType,\n forwardRef,\n ThHTMLAttributes,\n TdHTMLAttributes,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { DescriptionListDesc } from '../DescriptionList';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**Type celle. Returnerer enten `<td>` eller `<th>`. */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type = 'data', layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import { forwardRef, MouseEvent } from 'react';\nimport styled from 'styled-components';\n\nimport { Cell, TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\nimport { focusVisible, normalizeButton, removeButtonStyling } from '../helpers';\nimport { Icon } from '../Icon';\nimport { UnfoldMoreIcon, ChevronDownIcon, ChevronUpIcon } from '../Icon/icons';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Table as BaseTable } from './Table';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport {\n TableProps,\n TableDensity,\n CollapsibleTableProps,\n TableRowProps,\n TableRowType,\n} from './Table.types';\nimport { Head, TableHeadProps } from './Head';\nimport { Body, TableBodyProps } from './Body';\nimport { Foot, TableFootProps } from './Foot';\nimport { Row } from './Row';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { Cell, TableCellProps, TableCellLayout, TableCellType } from './Cell';\nimport { SortCell, TableSortCellProps, SortOrder } from './SortCell';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import { AnchorHTMLAttributes, forwardRef, HTMLAttributes } from 'react';\nimport { Typography } from '../Typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, Children } from 'react';\nimport styled from 'styled-components';\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport { removeListStyling } from '../helpers';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\nimport { ChevronRightIcon } from '../Icon/icons';\n\nconst { icon, list, listItem } = breadcrumbTokens;\n\nconst List = styled.ol`\n ${removeListStyling}\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${list.gap};\n`;\nList.displayName = 'List';\n\nconst ListItem = styled.li`\n align-items: center;\n display: flex;\n gap: ${listItem.gap};\n ${getFontStyling(typographyType)}\n`;\nListItem.displayName = 'ListItem';\n\nconst StyledIcon = styled(Icon)`\n color: ${icon.color};\n`;\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<HTMLElement>;\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { children, id, className, htmlProps, ...rest } = props;\n\n const childrenArray = Children.toArray(children);\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <ListItem key={`breadcrumb-${index}`}>\n {index !== 0 && <StyledIcon icon={ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst listItem = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { forwardRef, HTMLAttributes, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { Typography } from '../Typography';\nimport {\n MoreHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronFirstIcon,\n ChevronLastIcon,\n} from '../Icon/icons';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","import { ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\n\nimport { listTokens as tokens } from './List.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\nimport { getFontStyling, TypographyBodyType } from '../Typography';\n\nconst { list, listItem, bullet } = tokens;\n\ninterface StyledListProps {\n $listType: ListType;\n $typographyType: ListTypographyType;\n}\n\nconst StyledList = styled.ul<StyledListProps>`\n margin: ${list.base.margin};\n color: ${list.base.color};\n ul,\n ol {\n margin: 0;\n }\n *::selection {\n ${selection}\n }\n\n ${({ $typographyType }) =>\n $typographyType === 'inherit'\n ? css`\n font: inherit;\n `\n : css`\n ${getFontStyling($typographyType)}\n `}\n\n ${({ $listType }) =>\n $listType === 'unordered'\n ? css`\n padding-left: ${list.ul.paddingLeft};\n list-style: none;\n li {\n position: relative;\n padding-left: ${listItem.ul.paddingLeft};\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: ${bullet.top};\n left: 0;\n background-size: contain;\n background-repeat: no-repeat;\n background-image: ${`url('${bulletLvl1}')`};\n }\n ul > li:before {\n background-image: ${`url('${bulletLvl2}')`};\n }\n ul > li > ul > li:before {\n background-image: ${`url('${bulletLvl3}')`};\n }\n }\n `\n : css`\n padding-left: ${list.ol.paddingLeft};\n & > li > ol {\n list-style-type: lower-alpha;\n }\n & > li > ol > li > ol {\n list-style-type: lower-roman;\n }\n `}\n`;\n\nexport type ListType = 'ordered' | 'unordered';\nexport type ListTypographyType = TypographyBodyType | 'inherit';\n\nexport type ListProps = BaseComponentPropsWithChildren<\n HTMLUListElement | HTMLOListElement,\n {\n /**Spesifiserer om komponenten skal returnere `<ul />` (punktliste) eller `<ol />` (nummerert liste). */\n listType?: ListType;\n /**Spesifiserer typografi for listen. Komponenten arver i utgangspunktet fra forelder, men hvis forelder stiller ikke med relevant styling må det velges `TypographyBodyType` som brukes i `<body>` ellers på siden. */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n (props, ref) => {\n const {\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <StyledList\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as={as}\n ref={ref}\n $listType={listType}\n $typographyType={typographyType}\n >\n {children}\n </StyledList>\n );\n },\n);\n\nList.displayName = 'List';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst ulLiPaddingLeft = `1em + ${spacing.SizesDdsSpacingX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingX2,\n },\n ul: {\n paddingLeft: `calc(${ulPaddingLeft})`,\n },\n};\n\nconst listItem = {\n lineHeight: '2.5em',\n ul: {\n paddingLeft: `calc(${ulLiPaddingLeft})`,\n },\n};\n\nconst bullet = {\n top: `calc((${listItem.lineHeight} / 2) - 0.5em )`,\n};\n\nexport const listTokens = {\n list,\n listItem,\n bullet,\n spaceLeft: spacing.SizesDdsSpacingX2,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { AnchorHTMLAttributes, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\nimport { cardTokens as tokens } from './Card.tokens';\nimport { focusVisibleWithBorder, hoverWithBorder, selection } from '../helpers';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\n\ninterface ContainerProps {\n color: CardColor;\n cardType: CardType;\n}\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'color' && prop !== 'cardType',\n})<ContainerProps>`\n border: ${tokens.base.border};\n ${getFontStyling(defaultTypographyType)};\n &::selection,\n *::selection {\n ${selection}\n }\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n ${({ color }) =>\n color &&\n css`\n color: ${tokens.colors[color].color};\n background-color: ${tokens.colors[color].backgroundColor};\n border-color: ${tokens.colors[color].borderColor};\n `}\n ${({ cardType }) =>\n cardType === 'navigation'\n ? css`\n text-decoration: none;\n &:hover {\n ${hoverWithBorder}\n }\n &:focus {\n ${focusVisibleWithBorder}\n }\n `\n : cardType === 'expandable'\n ? css`\n width: 100%;\n box-sizing: border-box;\n &:not(:first-of-type) {\n border-top: none;\n }\n `\n : ''}\n`;\nexport type CardColor =\n | 'filledDark'\n | 'filledLight'\n | 'strokeDark'\n | 'strokeLight';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Fargepalett i komponenten. */\n color?: CardColor;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. Ved `'expandable'` må alle `<Card />` grupperte sammen ligge egen `<div>` container. */\n cardType: 'info';\n};\n\nexport type NavigationCardProps = BaseCardProps<HTMLAnchorElement> & {\n cardType: 'navigation';\n} & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n\nexport type ExpandableCardProps = BaseCardProps<HTMLDivElement> & {\n cardType: 'expandable';\n};\n\nexport type CardProps =\n | InfoCardProps\n | NavigationCardProps\n | ExpandableCardProps;\n\nexport const Card = (props: CardProps) => {\n const {\n color = 'filledLight',\n cardType,\n cardRef,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"a\"\n ref={cardRef}\n href={href}\n target={target}\n >\n {children}\n </Container>\n );\n }\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"div\"\n ref={cardRef}\n >\n {children}\n </Container>\n );\n};\n\nCard.displayName = 'Card';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, border } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst base = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n};\n\nconst cardColors = {\n filledLight: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n borderColor: colors.DdsColorPrimaryLightest,\n color: textDefault.textColor,\n },\n filledDark: {\n backgroundColor: colors.DdsColorPrimaryBase,\n borderColor: colors.DdsColorPrimaryBase,\n color: colors.DdsColorNeutralsWhite,\n },\n strokeDark: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n strokeLight: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n};\n\nexport const cardTokens = {\n base: base,\n colors: cardColors,\n};\n","import { forwardRef, useState, useEffect, useId, useCallback } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { CardAccordionContextProvider } from './CardAccordionContext';\n\nconst Wrapper = styled.div``;\n\nexport type CardAccordionProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om body skal være utvidet ved innlastning. */\n isExpanded?: boolean;\n /**For å lytte til endringer i expanded-state. */\n onChange?: (expanded: boolean) => void;\n }\n>;\n\nexport const CardAccordion = forwardRef<HTMLDivElement, CardAccordionProps>(\n (props, ref) => {\n const {\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [expanded, setExpanded] = useState(isExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-cardAccordion`;\n\n useEffect(() => {\n setExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n setExpanded(prevExpanded => {\n const newExpanded = !prevExpanded;\n\n if (onChange) {\n onChange(newExpanded);\n }\n\n return newExpanded;\n });\n }, [onChange]);\n\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} ref={ref}>\n <CardAccordionContextProvider\n headerId={`${accordionId}-header`}\n bodyId={`${accordionId}-body`}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n >\n {children}\n </CardAccordionContextProvider>\n </Wrapper>\n );\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { ReactNode, createContext, useContext } from 'react';\n\ninterface CardAccordionContext {\n headerId: string;\n bodyId: string;\n isExpanded: boolean;\n toggleExpanded: () => void;\n}\n\nconst CardAccordionContext = createContext<Partial<CardAccordionContext>>({});\n\nexport const CardAccordionContextProvider = ({\n children,\n ...values\n}: CardAccordionContext & { children: ReactNode }) => {\n return (\n <CardAccordionContext.Provider value={values}>\n {children}\n </CardAccordionContext.Provider>\n );\n};\n\nexport const useCardAccordionContext = (): CardAccordionContext => {\n const context = useContext(CardAccordionContext);\n\n if (!context) {\n throw new Error(\n 'useCardAccordionContext must be used within a CardAccordionContextProvider. Have you wrapped <CardAccordionHeader> and <CardAccordionBody> inside a <CardAccordion>?',\n );\n }\n\n return context as CardAccordionContext;\n};\n","import { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { Property } from 'csstype';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n normalizeButton,\n removeButtonStyling,\n AnimatedChevronUpDown,\n} from '../../helpers';\nimport { StaticTypographyType, getFontStyling } from '../../Typography';\n\nconst { header, chevronWrapper } = tokens;\n\nconst ContentWrapper = styled.div`\n text-align: left;\n`;\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType ?? typographyTypes.header;\n}\n\ninterface HeaderProps {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n}\n\nconst HeaderContainer = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'padding' && prop !== 'typographyType' && prop !== 'bold',\n})<HeaderProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n padding: ${({ padding }) => padding ?? header.padding};\n ${props => getFontStyling(getTypographyType(props))}\n ${props =>\n props.bold &&\n css`\n font-weight: 600;\n `}\n`;\n\nconst HeaderWrapperButton = styled.button`\n ${normalizeButton}\n user-select: text;\n position: relative;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n ${removeButtonStyling}\n display: block;\n width: 100%;\n &:hover {\n box-shadow: ${header.hover.boxShadow};\n }\n\n &:focus-visible,\n &.focus-visible {\n outline: none;\n box-shadow: ${header.focus.boxShadow};\n }\n`;\n\nconst ChevronWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${chevronWrapper.width};\n height: ${chevronWrapper.height};\n margin-left: ${chevronWrapper.marginLeft};\n`;\n\nexport type CardAccordionHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const {\n headerId: id,\n bodyId,\n toggleExpanded,\n isExpanded,\n } = useCardAccordionContext();\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: toggleExpanded,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../../Typography';\n\nconst { spacing, border, iconSizes } = ddsBaseTokens;\n\nexport const typographyTypes: {\n body: StaticTypographyType;\n header: StaticTypographyType;\n} = {\n body: 'bodySans03',\n header: 'headingSans03',\n};\n\nconst header = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n hover: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusInputfieldStrokeWeight} ${border.BordersDdsBorderFocusInputfieldStroke}`,\n },\n focus: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusCardStrokeWeight} ${border.BordersDdsBorderFocusCardStroke}`,\n },\n};\n\nconst chevronWrapper = {\n width: iconSizes.DdsIconsizeMedium,\n height: iconSizes.DdsIconsizeMedium,\n marginLeft: spacing.SizesDdsSpacingX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingX1} ${\n spacing.SizesDdsSpacingX2NumberPx + spacing.SizesDdsSpacingX075NumberPx\n }px ${spacing.SizesDdsSpacingX2} ${spacing.SizesDdsSpacingX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingX05,\n },\n};\n","import { Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n Nullable,\n} from '../../../types';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useElementHeight } from './useElementHeight';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport { useIsMounted } from '../../../hooks';\nimport { getFontStyling } from '../../Typography';\n\nconst expandingAnimation = css`\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n`;\n\nfunction getPadding(props: BodyContainerProps): string {\n const { padding } = props;\n\n return padding ?? tokens.body.padding;\n}\n\ninterface BodyProps {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n}\n\nconst Body = styled.div.withConfig({\n shouldForwardProp: prop => {\n return prop !== 'animate' && prop !== 'height' && prop !== 'isExpanded';\n },\n})<BodyProps>`\n ${({ isExpanded }) =>\n !isExpanded &&\n css`\n display: none;\n `}\n @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Overskriver default padding på toppen. Brukes når barn har spacing på toppen, f.eks. en overskrift. */\n paddingTop?: Property.PaddingTop<string>;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n >,\n 'id'\n>;\n\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const { children, className, htmlProps, padding, paddingTop, ...rest } =\n props;\n\n const { headerId, isExpanded, bodyId: id } = useCardAccordionContext();\n\n const bodyRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyRef.current);\n\n const [initialExpandedHeight, setIntialExpandedHeight] =\n useState<Nullable<number>>(null);\n\n useLayoutEffect(() => {\n // For å unngå initiell animasjon dersom Accordion er satt til å være åpen som default.\n if (bodyRef.current && isExpanded) {\n setIntialExpandedHeight(bodyRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n return (\n <Body\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n isExpanded={isExpanded}\n role=\"region\"\n height={height ?? initialExpandedHeight ?? 0}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer\n ref={bodyRef}\n isExpanded={isExpanded}\n padding={padding}\n paddingTop={paddingTop}\n animate={animate}\n >\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { useEffect, useState } from 'react';\nimport { Nullable } from '../../../types';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport {\n OuterContainer,\n Navigation,\n NavigationList,\n BannerWrapper,\n BannerLeftWrapper,\n LovisaWrapper,\n ApplicationNameWrapper,\n ContextMenuGroup,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { NavigationItem } from './NavigationItem';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { getBaseHTMLProps } from '../../types';\nimport { MenuIcon, MoreVerticalIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport { OverflowMenu } from '../OverflowMenu';\nimport { selection } from '../helpers';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { border, colors, spacing } = ddsBaseTokens;\n\nconst borderStyle = `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `;\n\nexport const typographyTypes: Record<string, StaticTypographyType> = {\n navLink: 'bodySans01',\n};\n\nconst navLink = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX15}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDark,\n },\n current: {\n color: colors.DdsColorInteractiveDarkest,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n};\n\nconst outerContainer = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n};\n\nconst applicationNameWrapper = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingX075,\n top: spacing.SizesDdsSpacingX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { getFontStyling } from '../Typography';\nimport { focusVisible } from '../helpers';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { skipToContentTokens as tokens } from './SkipToContent.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\nimport { focusVisibleTransitionValue, focusVisibleOnDark } from '../helpers';\n\nconst { wrapper, link } = tokens;\n\nconst Wrapper = styled.div<{\n $top: Property.Top;\n}>`\n box-sizing: border-box;\n position: absolute;\n top: ${({ $top: top }) => top};\n text-align: center;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n width: 1px;\n white-space: nowrap;\n background-color: ${wrapper.backgroundColor};\n padding: ${wrapper.padding};\n opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n\n &:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: 250;\n opacity: 1;\n }\n`;\n\nconst Link = styled.a`\n text-decoration: none;\n color: ${link.base.color};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n &:focus {\n ${focusVisibleOnDark}\n }\n &:hover {\n color: ${link.base.color};\n }\n`;\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka. */\n text?: string;\n /**Spesifiserer hvor det skal hoppes til via `id`-attributtet til innholdet. */\n href: string;\n /**Avstand fra top i nærmeste posisjonert container. */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = forwardRef<HTMLAnchorElement, SkipToContentProps>(\n (props, ref) => {\n const {\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n return (\n <Wrapper\n $top={top}\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)} ref={ref}>\n {text}\n </Link>\n </Wrapper>\n );\n },\n);\n\nSkipToContent.displayName = 'SkipToContent';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst link = {\n base: {\n color: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst wrapper = {\n backgroundColor: colors.DdsColorPrimaryBase,\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import React, {\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { Placement } from '@floating-ui/react-dom';\nimport { useFloatPosition, useCombinedRef, useOnKeyDown } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\n\nconst { svgArrow } = tokens;\n\ntype AnchorElement = React.ReactElement & React.RefAttributes<HTMLElement>;\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'style' | 'onMouseLeave' | 'onMouseOver'\n>;\n\nexport type TooltipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /**Innhold i tooltip. */\n text: string;\n /**Plassering i forhold til anchor-elementet. */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder. */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (props, ref) => {\n const {\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueTooltipId = tooltipId ?? `${generatedId}-tooltip`;\n const [open, setOpen] = useState(false);\n const [inView, setInView] = useState(false);\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null);\n const { refs, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => null);\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { PaperProps, Paper, visibilityTransition } from '../helpers';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\n\nconst { wrapper } = tokens;\n\nexport const SvgArrow = styled.svg`\n width: 36px;\n height: 9px;\n`;\n\nexport const ArrowWrapper = styled.div``;\n\nexport const Container = styled.div`\n width: fit-content;\n`;\n\ntype WrapperProps = PaperProps & {\n open: boolean;\n};\n\nexport const TooltipWrapper = styled(Paper)<WrapperProps>`\n ${({ open }) => visibilityTransition(open)}\n width: fit-content;\n position: absolute;\n z-index: 80;\n text-align: center;\n padding: ${wrapper.padding};\n ${getFontStyling(defaultTypographyType)};\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import { forwardRef, ReactNode, RefObject, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport { createPortal } from 'react-dom';\n\nimport {\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n Backdrop,\n} from './Backdrop';\nimport {\n useFocusTrap,\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useMountTransition,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisible, Paper, selection } from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n /**Ref som skal motta fokus når Modal åpnes. Hvis utelatt blir Modal fokusert. */\n initialFocusRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const {\n isOpen = false,\n parentElement = document.body,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n className,\n htmlProps,\n ...rest\n } = props;\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose();\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }, [isOpen]);\n\n useOnClickOutside(modalRef.current, () => handleClose());\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingX1,\n gap: spacing.SizesDdsSpacingX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { changeRGBAAlpha } from '../../../utils';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Property } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { forwardRef, ReactNode, RefObject, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Property } from 'csstype';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport {\n useFocusTrap,\n useCombinedRef,\n useOnKeyDown,\n useOnClickOutside,\n useMountTransition,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisible, Paper } from '../helpers';\nimport { Typography } from '../Typography';\nimport { CloseIcon } from '../Icon/icons';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => {\n if (isOpen) {\n onClose?.();\n }\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n placement,\n ref: combinedRef,\n isOpen: hasTransitionedIn && isOpen,\n tabIndex: -1,\n role: 'dialog',\n 'aria-labelledby': headerId,\n size,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Container {...containerProps} elevation={4}>\n <ScrollableContainer>\n <ContentContainer>\n {hasHeader && (\n <HeaderContainer {...headerContainerProps}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n </ScrollableContainer>\n <StyledButton\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </Container>,\n parentElement,\n )\n : null;\n});\n\nDrawer.displayName = 'Drawer';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst contentContainerPaddingNumberPx = spacing.SizesDdsSpacingX025NumberPx;\nconst contentContainerPadding = `${contentContainerPaddingNumberPx}px`;\n\nconst container = {\n padding: `${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX15NumberPx - contentContainerPaddingNumberPx\n }px`,\n};\n\nconst contentContainer = {\n gap: spacing.SizesDdsSpacingX1,\n padding: contentContainerPadding,\n};\n\nexport const drawerTokens = {\n container,\n contentContainer,\n};\n","import {\n ReactNode,\n Children as ReactChildren,\n isValidElement,\n cloneElement,\n ReactElement,\n useState,\n useRef,\n useId,\n} from 'react';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { GregorianCalendar } from '@internationalized/date';\nimport {\n ArrowLeftIcon,\n ArrowRightIcon,\n Button,\n Heading,\n} from '@norges-domstoler/dds-components';\nimport {\n AriaCalendarProps,\n DateValue,\n useCalendar,\n} from '@react-aria/calendar';\nimport { useCalendarState } from '@react-stately/calendar';\nimport styled from 'styled-components';\n\nimport { CalendarGrid } from './CalendarGrid';\nimport { locale } from '../constants';\nimport { FC, PropsWithChildren } from 'react';\n\nconst CalendarHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst CalendarContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst Month: FC<PropsWithChildren> = styled(Heading).attrs({\n level: 2,\n typographyType: 'headingSans02',\n})`\n text-transform: capitalize;\n`;\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\nexport type CalendarProps<T extends DateValue> = AriaCalendarProps<T>;\n\nexport function Calendar<T extends DateValue>(props: CalendarProps<T>) {\n const state = useCalendarState({\n ...props,\n createCalendar,\n locale,\n });\n const {\n calendarProps,\n prevButtonProps: { onPress: onPrev, 'aria-label': prevAriaLabel },\n nextButtonProps: { onPress: onNext, 'aria-label': nextAriaLabel },\n title,\n } = useCalendar(props, state);\n\n return (\n <CalendarContainer {...calendarProps}>\n <CalendarHeader>\n <Button\n type=\"button\"\n aria-label={prevAriaLabel}\n onClick={e => onPrev?.(e as never)}\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n icon={ArrowLeftIcon}\n />\n <Month>{title}</Month>\n <Button\n type=\"button\"\n aria-label={nextAriaLabel}\n onClick={e => onNext?.(e as never)}\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n icon={ArrowRightIcon}\n />\n </CalendarHeader>\n <CalendarGrid state={state} />\n </CalendarContainer>\n );\n}\n\nCalendar.displayName = 'Calendar';\n","import { getWeeksInMonth } from '@internationalized/date';\nimport { AriaCalendarGridProps, useCalendarGrid } from '@react-aria/calendar';\nimport { CalendarState, RangeCalendarState } from '@react-stately/calendar';\nimport styled from 'styled-components';\n\nimport { CalendarCell } from './CalendarCell';\nimport { locale } from '../constants';\nimport { getWeekNumber } from '../../utils/getWeekNumber';\nimport { calendarTokens } from './Calendar.tokens';\n\nconst { grid: gridTokens } = calendarTokens;\n\ninterface CalendarGridProps extends AriaCalendarGridProps {\n state: CalendarState | RangeCalendarState;\n}\n\nconst Th = styled.th`\n font-family: ${gridTokens.headers.fontFamily};\n font-size: ${gridTokens.headers.fontSize};\n font-style: ${gridTokens.headers.fontStyle};\n font-weight: ${gridTokens.headers.fontWeight};\n letter-spacing: ${gridTokens.headers.letterSpacing};\n line-height: ${gridTokens.headers.lineHeight};\n color: ${gridTokens.headers.color};\n`;\n\nconst WeekNumber = styled.td`\n font-family: ${gridTokens.weekNumbers.fontFamily};\n font-size: ${gridTokens.weekNumbers.fontSize};\n font-style: ${gridTokens.weekNumbers.fontStyle};\n font-weight: ${gridTokens.weekNumbers.fontWeight};\n letter-spacing: ${gridTokens.weekNumbers.letterSpacing};\n line-height: ${gridTokens.weekNumbers.lineHeight};\n color: ${gridTokens.headers.color};\n width: ${calendarTokens.cell.width};\n height: ${calendarTokens.cell.height};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport function CalendarGrid({ state, ...props }: CalendarGridProps) {\n const {\n gridProps: { onKeyDown, ...gridProps },\n headerProps,\n } = useCalendarGrid(props, state);\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weekDays = ['Ma', 'Ti', 'On', 'To', 'Fr', 'Lø', 'Sø'];\n\n return (\n <table\n {...gridProps}\n onKeyDown={e => {\n if (\n (e.key === 'Enter' || e.key === ' ') &&\n state.isCellUnavailable(state.focusedDate)\n ) {\n return;\n }\n\n onKeyDown?.(e);\n }}\n cellPadding=\"0\"\n >\n <thead {...headerProps}>\n <tr>\n <Th>#</Th>\n {weekDays.map((day, index) => (\n <Th key={index}>{day}</Th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map(weekIndex => {\n const datesInWeek = state.getDatesInWeek(weekIndex);\n const firstExistingDay = datesInWeek.find(Boolean);\n const weekNumber = firstExistingDay\n ? getWeekNumber(firstExistingDay)\n : '';\n return (\n <tr key={weekIndex}>\n <WeekNumber>{weekNumber}</WeekNumber>\n {datesInWeek.map((date, i) =>\n date ? (\n <CalendarCell key={i} state={state} date={date} />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n\nCalendarGrid.displayName = 'CalendarGrid';\n","import { useRef } from 'react';\nimport { AriaCalendarCellProps, useCalendarCell } from '@react-aria/calendar';\nimport { CalendarState, RangeCalendarState } from '@react-stately/calendar';\nimport { isToday } from '@internationalized/date';\nimport styled, { css } from 'styled-components';\nimport { focusVisible } from '@norges-domstoler/dds-components';\n\nimport { CellVariant, calendarTokens } from './Calendar.tokens';\nimport { timezone } from '../constants';\nimport { normalizeButton } from '@norges-domstoler/dds-components';\n\ninterface CalendarCellProps extends AriaCalendarCellProps {\n state: CalendarState | RangeCalendarState;\n}\n\ninterface CellProps {\n $variant: CellVariant;\n $isToday: boolean;\n}\n\nconst Cell = styled.button<CellProps>`\n ${normalizeButton}\n width: ${calendarTokens.cell.width};\n height: ${calendarTokens.cell.height};\n\n font-family: ${calendarTokens.cell.font.fontFamily};\n font-size: ${calendarTokens.cell.font.fontSize};\n font-style: ${calendarTokens.cell.font.fontStyle};\n font-weight: ${calendarTokens.cell.font.fontWeight};\n letter-spacing: ${calendarTokens.cell.font.letterSpacing};\n line-height: ${calendarTokens.cell.font.lineHeight};\n\n border: ${calendarTokens.cell.borderWidth} solid\n ${({ $isToday }) =>\n $isToday ? calendarTokens.cell.today.borderColor : 'transparent'};\n border-radius: ${calendarTokens.cell.borderRadius};\n\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n &:focus-visible {\n ${focusVisible}\n }\n\n ${({ $variant, $isToday }) => {\n const variantStyles = calendarTokens.cell.variants[$variant];\n return css`\n background-color: ${variantStyles.bg};\n color: ${variantStyles.color};\n border-color: ${variantStyles.borderColor};\n font-weight: ${variantStyles.fontWeight};\n text-decoration: ${variantStyles.textDecoration};\n cursor: ${variantStyles.cursor};\n\n ${() =>\n variantStyles.today &&\n $isToday &&\n css`\n border-color: ${variantStyles.today.borderColor};\n text-decoration: ${variantStyles.today.textDecoration};\n `}\n\n ${variantStyles.hover &&\n css`\n &:hover {\n background-color: ${variantStyles.hover.bg};\n color: ${variantStyles.hover.color};\n border-color: ${variantStyles.hover.borderColor ??\n calendarTokens.cell.today.borderColor};\n }\n `}\n `;\n }}\n`;\n\nexport function CalendarCell({ date, state }: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n buttonProps,\n cellProps,\n isOutsideVisibleRange,\n formattedDate,\n isSelected,\n isDisabled,\n isUnavailable,\n } = useCalendarCell({ date }, state, ref);\n if (isDisabled) {\n return <td {...cellProps} />;\n }\n\n const variant: CellVariant = isSelected\n ? 'selected'\n : isUnavailable || isDisabled\n ? 'unavailable'\n : 'default';\n\n return (\n <td {...cellProps}>\n <Cell\n {...buttonProps}\n type=\"button\"\n $isToday={isToday(date, timezone)}\n $variant={variant}\n ref={ref}\n hidden={isOutsideVisibleRange}\n >\n {formattedDate}\n </Cell>\n </td>\n );\n}\n\nCalendarCell.displayName = 'CalendarCell';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { CSSProperties } from 'react';\n\nexport type CellVariant = 'default' | 'selected' | 'unavailable';\ninterface CellStyle {\n bg: CSSProperties['background'];\n borderColor?: CSSProperties['backgroundColor'];\n color: CSSProperties['color'];\n fontWeight?: CSSProperties['fontWeight'];\n textDecoration?: CSSProperties['textDecoration'];\n cursor?: CSSProperties['cursor'];\n hover?: Pick<CellStyle, 'bg' | 'color' | 'borderColor'>;\n today?: Pick<CellStyle, 'textDecoration' | 'borderColor'>;\n}\n\nconst cellVariantStyles: Record<CellVariant, CellStyle> = {\n default: {\n bg: 'transparent',\n color: ddsBaseTokens.colors.DdsColorNeutralsGray9,\n hover: {\n bg: ddsBaseTokens.colors.DdsColorInteractiveLightest,\n borderColor: ddsBaseTokens.colors.DdsColorInteractiveBase,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray9,\n },\n today: {\n textDecoration: 'underline',\n },\n },\n selected: {\n bg: ddsBaseTokens.colors.DdsColorInteractiveBase,\n borderColor: ddsBaseTokens.colors.DdsColorInteractiveBase,\n color: ddsBaseTokens.colors.DdsColorNeutralsWhite,\n fontWeight: 600,\n today: {\n textDecoration: 'underline',\n },\n },\n unavailable: {\n bg: ddsBaseTokens.colors.DdsColorNeutralsGray1,\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray1,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n textDecoration: 'line-through',\n cursor: 'not-allowed',\n today: {\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n textDecoration: 'underline line-through',\n },\n },\n};\n\nconst cell = {\n width: '40px',\n height: '40px',\n font: ddsBaseTokens.fontPackages.body_sans_01.base,\n borderWidth: ddsBaseTokens.border.BordersDdsBorderStyleDarkStrokeWeight,\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n variants: cellVariantStyles,\n today: {\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n textDecoration: 'underline',\n },\n};\n\nconst grid = {\n headers: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_02.base,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n },\n weekNumbers: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_02.base,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n },\n gap: '2px',\n};\n\nconst popover = {\n backgroundColor: ddsBaseTokens.colors.DdsColorNeutralsWhite,\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n border: `2px solid ${ddsBaseTokens.border.BordersDdsBorderFocusInputfieldStroke}`,\n padding: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n zIndex: 100,\n};\n\nexport const calendarTokens = { grid, cell, popover };\n","export const locale = 'no-NO' as const;\nexport const timezone = 'Europe/Oslo' as const;\n","import {\n CalendarDate,\n ZonedDateTime,\n CalendarDateTime,\n startOfWeek,\n startOfYear,\n endOfYear,\n} from '@internationalized/date';\n\n/**\n * Calculates the week number following the ISO-8601 format.\n * @returns week number, 1 indexed\n */\nexport function getWeekNumber(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const dayOfWeek = getDayOfWeek(date);\n const dayOfYear = getDayOfYear(date);\n const jan1DayOfWeek = getDayOfWeek(startOfYear(date));\n\n const isPartOfLastWeekOfPreviousYear =\n dayOfYear <= 8 - jan1DayOfWeek && jan1DayOfWeek > 4;\n\n if (isPartOfLastWeekOfPreviousYear) {\n if (\n jan1DayOfWeek === 5 ||\n (jan1DayOfWeek === 6 && isLeapYear(date.subtract({ years: 1 })))\n ) {\n return 53;\n }\n return 52;\n }\n\n const daysInYear = getDayOfYear(endOfYear(date));\n if (daysInYear - dayOfYear < 4 - dayOfWeek) {\n return 1;\n }\n\n const weekNum = (dayOfYear + (7 - dayOfWeek) + (jan1DayOfWeek - 1)) / 7;\n if (jan1DayOfWeek > 4) {\n return weekNum - 1;\n }\n\n return weekNum;\n}\n\n/**\n * Mon = 1\n * Tue = 2\n * Wed = 3\n * Thu = 4\n * Fri = 5\n * Sat = 6\n * Sun = 7\n * @returns day of week, 1 indexed\n */\nexport function getDayOfWeek(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const weekStart = startOfWeek(date, 'no-NO');\n return (\n date.calendar.toJulianDay(date) -\n weekStart.calendar.toJulianDay(weekStart) +\n 1\n );\n}\n\n/**\n * @returns day of year, 1 indexed\n */\nexport function getDayOfYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const yearStart = startOfYear(date);\n return (\n date.calendar.toJulianDay(date) -\n yearStart.calendar.toJulianDay(yearStart) +\n 1\n );\n}\n\nexport function isLeapYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n return (\n (date.year % 4 === 0 && date.year % 100 !== 0) || date.year % 400 === 0\n );\n}\n","import { useDatePickerState } from '@react-stately/datepicker';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport type { AriaDatePickerProps } from '@react-types/datepicker';\nimport { Ref, forwardRef, useRef } from 'react';\nimport { useCombinedRef } from '@norges-domstoler/dds-components';\nimport { DateField, DateFieldProps } from './DateField/DateField';\nimport { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { CalendarDate } from '@internationalized/date';\nimport { FocusableRef, useFocusManagerRef } from '../utils/useFocusManagerRef';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<CalendarDate>, 'granularity'>,\n Pick<DateFieldProps<CalendarDate>, 'componentSize' | 'tip' | 'style'> {\n label?: string;\n errorMessage?: string;\n}\n\nconst refIsFocusable = (ref: Ref<unknown>): ref is FocusableRef => {\n return typeof ref === 'object' && ref !== null && 'focus' in ref;\n};\n\nexport function _DatePicker(\n { errorMessage, componentSize, tip, style, ...props }: DatePickerProps,\n forwardedRef: Ref<HTMLElement>,\n) {\n const state = useDatePickerState(props);\n const domRef = useFocusManagerRef(\n refIsFocusable(forwardRef) ? forwardedRef : null,\n );\n const ref = useRef<HTMLElement>(null);\n const combinedRef = useCombinedRef(ref, domRef);\n const { buttonProps, calendarProps, fieldProps } = useDatePicker(\n { ...props, granularity: 'day' },\n state,\n ref,\n );\n\n return (\n <CalendarPopover isOpen={state.isOpen} onClose={state.close}>\n <CalendarPopoverAnchor>\n <DateField\n {...fieldProps}\n ref={combinedRef}\n componentSize={componentSize}\n tip={tip}\n label={props.label}\n errorMessage={errorMessage}\n buttonProps={buttonProps}\n isOpen={state.isOpen}\n style={style}\n />\n </CalendarPopoverAnchor>\n <CalendarPopoverContent>\n <Calendar {...calendarProps} />\n </CalendarPopoverContent>\n </CalendarPopover>\n );\n}\n\nexport const DatePicker = forwardRef(_DatePicker);\n\nDatePicker.displayName = 'DatePicker';\n","import { forwardRef, useRef } from 'react';\nimport {\n AriaDateFieldOptions,\n useDateField,\n useDatePicker,\n} from '@react-aria/datepicker';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport {\n CalendarDate,\n DateValue,\n createCalendar,\n} from '@internationalized/date';\nimport { InputProps } from '@norges-domstoler/dds-components';\n\nimport { DateSegment } from './DateSegment';\nimport { locale } from '../constants';\nimport { CalendarButton } from './CalendarButton';\nimport { DateInput } from '../../common/DateInput';\n\nexport type DateFieldProps<T extends DateValue = CalendarDate> =\n AriaDateFieldOptions<T> & {\n className?: string;\n buttonProps?: ReturnType<typeof useDatePicker>['buttonProps'];\n } & Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'disabled' | 'style'\n >;\n\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n ({ componentSize = 'medium', buttonProps, ...props }, forwardedRef) => {\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const ref = useRef<HTMLInputElement>(null);\n const { labelProps, fieldProps } = useDateField(props, state, ref);\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n componentSize={componentSize}\n label={props.label}\n disabled={disabled}\n required={props.isRequired}\n ref={forwardedRef}\n internalRef={ref}\n readOnly={props.isReadOnly}\n prefix={\n !props.isReadOnly && (\n <CalendarButton\n componentSize={componentSize}\n {...buttonProps}\n isDisabled={disabled}\n />\n )\n }\n labelProps={labelProps}\n fieldProps={fieldProps}\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n },\n);\n\nDateField.displayName = 'DateField';\n","import { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport type {\n DateSegment as DateSegmentType,\n DateFieldState,\n} from '@react-stately/datepicker';\nimport styled, { css } from 'styled-components';\n\nimport { datePickerTokens } from '../DatePicker.tokens';\nimport { type DatePickerProps } from '../DatePicker';\nconst {\n datefield: { segment: segmentTokens },\n} = datePickerTokens;\n\ninterface DateSegmentProps\n extends Pick<Required<DatePickerProps>, 'componentSize'> {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nconst Segment = styled.div<{\n $componentSize: DateSegmentProps['componentSize'];\n}>`\n display: block;\n width: max-content;\n font-variant-numeric: tabular-nums;\n outline: none;\n padding: ${segmentTokens.padding.y} ${segmentTokens.padding.x};\n ${({ $componentSize }) => css`\n font-family: ${segmentTokens[$componentSize].font.fontFamily};\n font-size: ${segmentTokens[$componentSize].font.fontSize};\n font-style: ${segmentTokens[$componentSize].font.fontStyle};\n font-weight: ${segmentTokens[$componentSize].font.fontWeight};\n line-height: ${segmentTokens[$componentSize].font.lineHeight};\n `}\n\n &:focus:not([aria-readonly]) {\n background-color: ${segmentTokens.focus.backgroundColor};\n color: ${segmentTokens.focus.textColor};\n }\n`;\n\nconst SegmentPlaceholder = styled.span<{\n $componentSize: DateSegmentProps['componentSize'];\n}>`\n display: block;\n width: 100%;\n font-variant-numeric: tabular-nums;\n\n ${({ $componentSize }) => css`\n font-family: ${segmentTokens[$componentSize].placeholder.fontFamily};\n font-size: ${segmentTokens[$componentSize].placeholder.fontSize};\n font-style: ${segmentTokens[$componentSize].placeholder.fontStyle};\n font-weight: ${segmentTokens[$componentSize].placeholder.fontWeight};\n line-height: ${segmentTokens[$componentSize].placeholder.lineHeight};\n color: ${segmentTokens[$componentSize].placeholder.textColor};\n `}\n\n ${Segment}:focus & {\n color: ${segmentTokens.focus.textColor};\n }\n`;\n\nexport function DateSegment({\n segment,\n state,\n componentSize,\n}: DateSegmentProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <Segment\n {...segmentProps}\n $componentSize={componentSize}\n ref={ref}\n style={{\n ...segmentProps.style,\n minWidth:\n segment.maxValue != null\n ? String(segment.maxValue).length + 'ch'\n : undefined,\n }}\n >\n <SegmentPlaceholder\n aria-hidden=\"true\"\n $componentSize={componentSize}\n style={{\n visibility: segment.isPlaceholder ? undefined : 'hidden',\n height: segment.isPlaceholder ? undefined : 0,\n width: segment.isPlaceholder ? undefined : 0,\n pointerEvents: 'none',\n }}\n >\n {segment.placeholder}\n </SegmentPlaceholder>\n {segment.isPlaceholder\n ? ''\n : segment.text.padStart(String(segment.maxValue ?? '').length, '0')}\n </Segment>\n );\n}\n\nDateSegment.displayName = 'DateSegment';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors } = ddsBaseTokens;\n\nconst segment = {\n medium: {\n font: {\n ...ddsBaseTokens.fontPackages.body_sans_02.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_01.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n small: {\n font: {\n ...ddsBaseTokens.fontPackages.body_sans_01.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_02.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n tiny: {\n font: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_01.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_03.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n padding: {\n x: '0.05rem',\n y: '0',\n },\n focus: {\n textColor: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n};\n\nconst calendarButton = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n background: 'transparent',\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n hover: {\n background: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveBase,\n },\n active: {\n background: colors.DdsColorInteractiveLighter,\n color: colors.DdsColorInteractiveBase,\n },\n medium: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeMedium} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n small: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeSmall} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n tiny: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeSmall} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n};\n\nconst datefield = {\n medium: {\n minWidth: '160px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n small: {\n minWidth: '140px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n tiny: {\n minWidth: '125px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX025,\n },\n disabled: {\n background: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray7,\n },\n segment,\n};\n\nexport const datePickerTokens = {\n gap: ddsBaseTokens.spacing.SizesDdsSpacingX025,\n labelGap: ddsBaseTokens.spacing.SizesDdsSpacingX0125,\n datefield,\n calendarButton,\n};\n","import {\n normalizeButton,\n focusVisible,\n selection,\n CalendarIcon,\n Icon,\n} from '@norges-domstoler/dds-components';\nimport { useButton, AriaButtonProps } from '@react-aria/button';\nimport styled, { css } from 'styled-components';\nimport type { DateFieldProps } from './DateField';\nimport { datePickerTokens } from '../DatePicker.tokens';\nimport { useRef } from 'react';\n\nconst StyledButton = styled.button<{\n $componentSize: DateFieldProps['componentSize'];\n $isDisabled: DateFieldProps['disabled'];\n}>`\n ${normalizeButton}\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ $componentSize = 'medium' }) => css`\n height: ${datePickerTokens.calendarButton[$componentSize].size};\n width: ${datePickerTokens.calendarButton[$componentSize].size};\n margin: calc(0px - ${datePickerTokens.calendarButton[$componentSize].size})\n 0;\n `}\n margin-left: -1px; // To align with TextInputs icons\n border: 0;\n padding: 0;\n border-radius: ${datePickerTokens.calendarButton.borderRadius};\n\n background-color: ${datePickerTokens.calendarButton.background};\n color: ${({ $isDisabled }) =>\n $isDisabled\n ? datePickerTokens.calendarButton.disabled.color\n : datePickerTokens.calendarButton.color};\n\n transition: 50ms;\n\n &:hover:not(.disabled) {\n background-color: ${datePickerTokens.calendarButton.hover.background};\n color: ${datePickerTokens.calendarButton.hover.color};\n }\n\n &:focus-visible:not(.disabled) {\n ${focusVisible}\n outline-offset: 0;\n }\n\n &.disabled {\n outline: none;\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface CalendarButtonProps extends AriaButtonProps {\n componentSize: DateFieldProps['componentSize'];\n}\n\nexport function CalendarButton({\n componentSize,\n ...props\n}: CalendarButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(props, ref);\n return (\n <StyledButton\n {...buttonProps}\n ref={ref}\n type=\"button\"\n $isDisabled={props.isDisabled}\n $componentSize={componentSize}\n onClick={e => {\n if (!props.isDisabled) {\n buttonProps.onClick?.(e);\n }\n }}\n className={[props.isDisabled ? 'disabled' : false]\n .filter(Boolean)\n .join(' ')}\n >\n <Icon\n icon={CalendarIcon}\n iconSize={componentSize === 'medium' ? 'medium' : 'small'}\n />\n </StyledButton>\n );\n}\n","import { ReactNode, Ref, forwardRef } from 'react';\nimport { useDateField } from '@react-aria/datepicker';\nimport styled from 'styled-components';\nimport {\n InputMessage,\n Label,\n cn,\n InputProps,\n StatefulInput,\n StyledInputProps,\n} from '@norges-domstoler/dds-components';\nimport { datePickerTokens } from '../DatePicker/DatePicker.tokens';\n\nexport type DateInputProps = {\n className?: string;\n active?: boolean;\n children: ReactNode;\n prefix?: ReactNode;\n label?: ReactNode;\n internalRef: Ref<HTMLDivElement>;\n} & Pick<ReturnType<typeof useDateField>, 'fieldProps' | 'labelProps'> &\n Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'required'\n | 'readOnly'\n >;\n\nconst DateFieldContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n gap: ${datePickerTokens.labelGap};\n`;\n\nconst InputDiv = styled(StatefulInput).attrs({\n as: 'div',\n})<StyledInputProps>`\n min-width: ${({ componentSize = 'medium' }) =>\n datePickerTokens.datefield[componentSize].minWidth};\n display: inline-flex;\n flex-direction: row;\n gap: ${datePickerTokens.gap};\n align-items: center;\n padding-left: ${({ componentSize = 'medium' }) =>\n datePickerTokens.datefield[componentSize].paddingX};\n padding-right: ${({ componentSize = 'medium' }) =>\n datePickerTokens.datefield[componentSize].paddingX};\n`;\n\nconst DateSegmentContainer = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nexport const DateInput = forwardRef<HTMLDivElement, DateInputProps>(\n (\n {\n errorMessage,\n tip,\n componentSize = 'medium',\n style,\n className,\n disabled,\n active,\n internalRef,\n readOnly,\n required,\n children,\n prefix: button,\n labelProps,\n fieldProps,\n ...props\n },\n forwardedRef,\n ) => {\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = props.label != null;\n const hasMessage = hasErrorMessage || hasTip;\n\n return (\n <DateFieldContainer className={className} ref={forwardedRef}>\n {hasLabel && (\n <Label {...labelProps} showRequiredStyling={required}>\n {props.label}\n </Label>\n )}\n <InputDiv\n {...fieldProps}\n style={style}\n disabled={disabled}\n componentSize={componentSize}\n ref={internalRef}\n hasErrorMessage={hasErrorMessage}\n className={cn(\n disabled && 'disabled',\n active && 'active',\n readOnly && 'read-only',\n )}\n >\n {button}\n <DateSegmentContainer>{children}</DateSegmentContainer>\n </InputDiv>\n {hasMessage && (\n <InputMessage\n messageType={hasErrorMessage ? 'error' : 'tip'}\n message={errorMessage ?? tip ?? ''}\n />\n )}\n </DateFieldContainer>\n );\n },\n);\n\nDateInput.displayName = 'DateInput';\n","import {\n ReactElement,\n ReactNode,\n RefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { calendarTokens } from './Calendar/Calendar.tokens';\nimport {\n useOnKeyDown,\n useFloatPosition,\n useCombinedRef,\n useOnClickOutside,\n} from '@norges-domstoler/dds-components';\nconst { popover: popoverTokens } = calendarTokens;\n\n/**------------------------------------------------------------------------\n * CalendarPopover\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContextValue {\n anchorRef: RefObject<HTMLDivElement> | null;\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst CalendarPopoverContext = createContext<CalendarPopoverContextValue>({\n anchorRef: null,\n isOpen: false,\n onClose: () => null,\n});\n\ninterface CalendarPopoverProps {\n children: ReactNode;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const CalendarPopover = ({\n children,\n isOpen,\n onClose,\n}: CalendarPopoverProps) => {\n const anchorRef = useRef<HTMLDivElement>(null);\n useOnKeyDown('Escape', onClose);\n return (\n <CalendarPopoverContext.Provider value={{ anchorRef, isOpen, onClose }}>\n {children}\n </CalendarPopoverContext.Provider>\n );\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverAnchor\n *------------------------------------------------------------------------*/\n\nconst Anchor = styled.div`\n display: inline-flex;\n`;\n\ninterface CalendarPopoverAnchorProps {\n children: ReactElement;\n}\n\nexport const CalendarPopoverAnchor = ({\n children,\n}: CalendarPopoverAnchorProps) => {\n const { anchorRef } = useContext(CalendarPopoverContext);\n return <Anchor ref={anchorRef ?? undefined}>{children}</Anchor>;\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverContent\n *------------------------------------------------------------------------*/\n\nconst PopoverContentContainer = styled.div`\n background-color: ${popoverTokens.backgroundColor};\n border: ${popoverTokens.border};\n border-radius: ${popoverTokens.borderRadius};\n padding: ${popoverTokens.padding};\n z-index: ${popoverTokens.zIndex};\n`;\n\ninterface CalendarPopoverContentProps {\n children: ReactNode;\n}\n\nexport const CalendarPopoverContent = ({\n children,\n}: CalendarPopoverContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { refs, styles } = useFloatPosition(null, {\n placement: 'bottom-start',\n });\n const { isOpen, onClose, anchorRef } = useContext(CalendarPopoverContext);\n const combinedRef = useCombinedRef(refs.setFloating, ref);\n\n useOnClickOutside(ref.current, onClose);\n\n useEffect(() => {\n refs.setReference(anchorRef?.current ?? null);\n }, []);\n\n if (!isOpen) return null;\n\n return (\n <PopoverContentContainer\n ref={combinedRef}\n style={styles.floating}\n onBlur={e => {\n const newFocus = e.relatedTarget;\n if (ref.current && !ref.current.contains(newFocus)) {\n onClose();\n }\n }}\n >\n {children}\n </PopoverContentContainer>\n );\n};\n","import { Ref, RefObject, useImperativeHandle, useRef } from 'react';\nimport { createFocusManager } from '@react-aria/focus';\n\ninterface DOMRefValue<T extends HTMLElement = HTMLElement> {\n UNSAFE_getDOMNode(): T | null;\n}\n\nexport interface FocusableRefValue<\n T extends HTMLElement = HTMLElement,\n D extends HTMLElement = T,\n> extends DOMRefValue<D> {\n focus(): void;\n}\n\nexport type DOMRef<T extends HTMLElement = HTMLElement> = Ref<DOMRefValue<T>>;\nexport type FocusableRef<T extends HTMLElement = HTMLElement> = Ref<\n FocusableRefValue<T>\n>;\n\nexport function useFocusManagerRef<T extends HTMLElement = HTMLElement>(\n ref: Ref<unknown>,\n) {\n const domRef = useRef<T>(null);\n useImperativeHandle(ref, () => ({\n ...createDOMRef(domRef),\n focus() {\n createFocusManager(domRef).focusFirst({ tabbable: true });\n },\n }));\n return domRef;\n}\n\nfunction createDOMRef<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n): DOMRefValue<T> {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n },\n };\n}\n","import { Ref, forwardRef, useRef } from 'react';\nimport { AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport { Icon, InputProps, TimeIcon } from '@norges-domstoler/dds-components';\nimport { DateSegment } from '../DatePicker/DateField/DateSegment';\nimport { locale } from '../DatePicker/constants';\nimport { DateInput } from '../common/DateInput';\nimport styled from 'styled-components';\nimport { datePickerTokens } from '../DatePicker/DatePicker.tokens';\nimport { Time } from '@internationalized/date';\n\nconst TimePickerIcon = styled(Icon)<{\n $componentSize: Exclude<TimePickerProps['componentSize'], undefined>;\n}>`\n color: ${datePickerTokens.calendarButton.color};\n width: ${({ $componentSize }) =>\n datePickerTokens.calendarButton[$componentSize].size};\n margin-left: -1px; // To align with TextInputs icons\n`;\n\nexport type TimePickerProps = Omit<AriaTimeFieldProps<Time>, 'hideTimeZone'> & {\n className?: string;\n} & Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'disabled' | 'style'\n >;\n\nfunction _TimePicker(\n { componentSize = 'medium', ...props }: TimePickerProps,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const ref = useRef<HTMLInputElement>(null);\n const state = useTimeFieldState({\n ...props,\n locale,\n });\n const { labelProps, fieldProps } = useTimeField(\n { ...props, hideTimeZone: true, granularity: 'hour' },\n state,\n ref,\n );\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n disabled={disabled}\n required={props.isRequired}\n componentSize={componentSize}\n ref={forwardedRef}\n internalRef={ref}\n readOnly={props.isReadOnly}\n labelProps={labelProps}\n fieldProps={fieldProps}\n prefix={\n !props.isReadOnly && (\n <TimePickerIcon\n $componentSize={componentSize}\n icon={TimeIcon}\n iconSize={componentSize == 'medium' ? 'medium' : 'small'}\n />\n )\n }\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nexport const TimePicker = forwardRef(_TimePicker);\n\nTimePicker.displayName = 'TimePicker';\n","import { DateValue, fromDate } from '@internationalized/date';\n\nexport function nativeDateToDateValue(\n date: Date,\n timeZone: string | undefined = 'Europe/Oslo',\n): DateValue {\n return fromDate(date, timeZone);\n}\n\nexport function dateValueToNativeDate(\n date: DateValue,\n timeZone: string | undefined = 'Europe/Oslo',\n): Date {\n return date.toDate(timeZone);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { forwardRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport {\n Placement,\n useMountTransition,\n useFloatPosition,\n useReturnFocusOnBlur,\n useOnClickOutside,\n useCombinedRef,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport {\n PaperProps,\n Paper,\n visibilityTransition,\n focusVisible,\n} from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { spacing: Spacing } = ddsBaseTokens;\nconst { wrapper, content, closeButton, title } = tokens;\n\ninterface WrapperProps extends PaperProps {\n $sizeProps?: PopoverSizeProps;\n $hasTransitionedIn?: boolean;\n $isOpen: boolean;\n}\n\nconst Wrapper = styled(Paper)<WrapperProps>`\n opacity: 0;\n ${({ $hasTransitionedIn, $isOpen }) =>\n $hasTransitionedIn && visibilityTransition($hasTransitionedIn && $isOpen)}\n position: absolute;\n width: fit-content;\n z-index: 100;\n padding: ${wrapper.padding};\n\n &:focus-visible {\n ${focusVisible}\n }\n ${({ $sizeProps }) =>\n $sizeProps &&\n css`\n width: ${$sizeProps.width};\n height: ${$sizeProps.height};\n min-width: ${$sizeProps.minWidth};\n min-height: ${$sizeProps.minHeight};\n max-width: ${$sizeProps.maxWidth};\n max-height: ${$sizeProps.maxHeight};\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ninterface ContentContainerProps {\n $hasTitle: boolean;\n $withCloseButton: boolean;\n}\n\nconst ContentContainer = styled.div<ContentContainerProps>`\n ${({ $withCloseButton, $hasTitle }) =>\n $withCloseButton &&\n !$hasTitle &&\n css`\n margin-top: ${content.noTitle.marginTop};\n `}\n`;\n\nconst StyledButton = styled(Button)`\n position: absolute;\n top: ${closeButton.top};\n right: ${closeButton.right};\n`;\n\nexport interface PopoverSizeProps {\n width?: Property.Width<string>;\n height?: Property.Height<string>;\n minWidth?: Property.MinWidth<string>;\n minHeight?: Property.MinHeight<string>;\n maxWidth?: Property.MaxWidth<string>;\n maxHeight?: Property.MaxHeight<string>;\n}\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Tittel. */\n title?: string | ReactNode;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Spesifiserer om `<Popover />` skal vises. */\n isOpen?: boolean;\n /**Om lukkeknapp skal vises. */\n withCloseButton?: boolean;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Anchor-elementet. */\n anchorElement?: HTMLElement;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet. */\n placement?: Placement;\n /**Avstand fra anchor-elementet i px. */\n offset?: number;\n /** Ekstra logikk kjørt når lukkeknappen trykkes. */\n onCloseButtonClick?: () => void;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, ref) => {\n const {\n title,\n isOpen = false,\n withCloseButton = true,\n onBlur,\n onCloseButtonClick,\n onClose,\n anchorElement,\n children,\n placement = 'bottom',\n offset = Spacing.SizesDdsSpacingX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n // Use position from anchor element for the popover\n refs.setReference(anchorElement || null);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingX025,\n right: spacing.SizesDdsSpacingX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n useState,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useRef,\n ReactNode,\n useId,\n} from 'react';\nimport { useOnKeyDown } from '../../hooks';\n\nexport interface PopoverGroupProps {\n /**Callback når det trykkes på lukkeknappen. */\n onCloseButtonClick?: () => void;\n /** Callback når det trykkes på anchor-elementet (trigger-elementet). */\n onTriggerClick?: () => void;\n /**Forteller `<Popover />` om den skal være åpen. */\n isOpen?: boolean;\n /** `id` til `<Popover />.` */\n popoverId?: string;\n /** Barna til wrapperen: anchor-element som det første og `<Popover />` so det adnre. */\n children: ReactNode;\n}\n\nexport const PopoverGroup = ({\n isOpen = false,\n onCloseButtonClick,\n onTriggerClick,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [open, setOpen] = useState(isOpen);\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n\n const handleOnCloseButtonClick = () => {\n setOpen(false);\n onCloseButtonClick && onCloseButtonClick();\n };\n\n const handleOnTriggerClick = () => {\n setOpen(!open);\n onTriggerClick && onTriggerClick();\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n setOpen(false);\n buttonRef.current?.focus();\n }\n });\n\n const handleClose = () => setOpen(false);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleOnTriggerClick,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: open,\n 'aria-hidden': !open,\n id: uniquePopoverId,\n onCloseButtonClick: handleOnCloseButtonClick,\n anchorElement: buttonRef.current,\n ref: popoverRef,\n onClose: handleClose,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import { forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { ToggleButtonProps } from './ToggleButton.types';\nimport { getBaseHTMLProps } from '../../types';\nimport {\n HiddenInput,\n focusVisible,\n focusVisibleTransitionValue,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\n\nconst { toggleButton } = tokens;\n\ninterface ContentProps {\n $hasIcon?: boolean;\n}\n\nconst Content = styled.span<ContentProps>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: fit-content;\n border: ${toggleButton.border};\n background-color: ${toggleButton.backgroundColor};\n color: ${toggleButton.color};\n border-radius: ${toggleButton.borderRadius};\n padding: ${toggleButton.padding};\n ${getFontStyling(typographyType)}\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $hasIcon }) =>\n $hasIcon &&\n css`\n gap: ${toggleButton.gap};\n `}\n\n &::selection,\n *::selection {\n ${selection}\n }\n &:hover {\n background-color: ${toggleButton.hover.backgroundColor};\n box-shadow: ${toggleButton.hover.boxShadow};\n border-color: ${toggleButton.hover.borderColor};\n }\n`;\n\nconst Container = styled.label`\n width: fit-content;\n ${HiddenInput}:checked + ${Content} {\n background-color: ${toggleButton.checked.backgroundColor};\n border-color: ${toggleButton.checked.borderColor};\n color: ${toggleButton.checked.color};\n }\n ${HiddenInput}:checked + ${Content}:hover {\n background-color: ${toggleButton.checked.hover.backgroundColor};\n border-color: ${toggleButton.checked.hover.borderColor};\n box-shadow: ${toggleButton.checked.hover.boxShadow};\n }\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n }\n`;\n\nexport const ToggleButton = forwardRef<HTMLInputElement, ToggleButtonProps>(\n ({ id, label, icon, className, htmlProps, ...rest }, ref) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n\n return (\n <Container htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n ref={ref}\n type=\"checkbox\"\n />\n <Content $hasIcon={!!icon}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </Content>\n </Container>\n );\n },\n);\n\nToggleButton.displayName = 'ToggleButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { buttonTokens, typographyTypes } from '../Button/Button.tokens';\nimport { selectionControlTokens } from '../SelectionControl/SelectionControl.tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\nconst { button } = buttonTokens;\nconst { selectionControl } = selectionControlTokens;\n\nexport const typographyType = typographyTypes.small;\n\nconst toggleButton = {\n border: button.base.border,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray7,\n gap: spacing.SizesDdsSpacingX05,\n borderRadius: button.appearances.rounded.base.borderRadius,\n padding: button.sizes.small.text.padding,\n hover: selectionControl.hover.base,\n checked: {\n ...selectionControl.checked.base,\n color: colors.DdsColorNeutralsWhite,\n hover: selectionControl.checked.hover,\n },\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Typography } from '../Typography';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import styled, { css } from 'styled-components';\nimport {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { TabsContext } from './Tabs.context';\nimport { Property } from 'csstype';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../types';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { createContext, RefObject, useContext } from 'react';\nimport { Direction } from '../../types';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import {\n ButtonHTMLAttributes,\n Dispatch,\n forwardRef,\n SetStateAction,\n useCallback,\n useEffect,\n MouseEvent,\n useRef,\n KeyboardEvent,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport type * as CSS from 'csstype';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef, useOnKeyDown } from '../../hooks';\nimport {\n Direction,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n removeButtonStyling,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\nimport { useSetTabWidth } from './TabWidthContext';\n\nconst { tab } = tokens;\n\ninterface ButtonProps {\n $active: boolean;\n $direction: Direction;\n}\n\nconst Button = styled.button<ButtonProps>`\n ${normalizeButton}\n ${removeButtonStyling}\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: ${tab.base.borderBottom};\n color: ${tab.base.color};\n padding: ${tab.base.padding};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-bottom 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${tab[$direction].gap};\n `};\n\n ${({ $active }) =>\n $active &&\n css`\n background-color: ${tab.active.backgroundColor};\n border-color: ${tab.active.borderColor};\n color: ${tab.active.color};\n box-shadow: ${tab.active.boxShadow};\n `}\n\n &:focus-visible {\n ${focusVisible}\n outline-offset: -1px;\n }\n\n &:hover {\n border-color: ${tab.hover.borderColor};\n color: ${tab.hover.color};\n box-shadow: ${tab.hover.boxShadow};\n }\n`;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv. */\n active?: boolean;\n /** Ikon. */\n icon?: SvgIcon;\n /** Spesifiserer om `<Tab />` skal ha fokus. **OBS!** settes automatisk av forelder.*/\n focus?: boolean;\n /** Callback som setter fokus. **OBS!** settes automatisk av forelder.*/\n setFocus?: Dispatch<SetStateAction<number>>;\n /** Indeksen til `<Tab />`. **OBS!** settes automatisk av forelder.*/\n index?: number;\n /**\n * Bredden til `<Tab />`. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default '1fr'\n */\n width?: CSS.Properties['width'];\n } & Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>\n>;\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>((props, ref) => {\n const {\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps,\n width = '1fr',\n ...rest\n } = props;\n\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabPanelsRef, setHasTabFocus, tabContentDirection } =\n useTabsContext();\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n setHasTabFocus(true);\n }\n }, [focus]);\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n return (\n <Button\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\n $active={active}\n $direction={tabContentDirection}\n onClick={handleOnClick}\n onKeyDown={handleOnKeyDown}\n tabIndex={focus ? 0 : -1}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n <span>{children}</span>\n </Button>\n );\n});\n\nTab.displayName = 'Tab';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing, colors } = ddsBaseTokens;\n\nconst tabList = {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`,\n};\nconst tab = {\n base: {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid transparent`,\n color: colors.DdsColorNeutralsGray7,\n padding: spacing.SizesDdsSpacingX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingX025,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n hover: {\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n};\n\nconst panel = {\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n useLayoutEffect,\n} from 'react';\nimport type * as CSS from 'csstype';\n\ntype Width = CSS.Properties['width'];\n\ninterface TabContextState {\n updateWidth: (index: number, width: Width) => void;\n removeTab: (index: number) => void;\n}\n\nconst TabContext = createContext<TabContextState | null>(null);\n\ninterface TabWidthContextProviderProps {\n children: ReactNode;\n onChangeWidths: Dispatch<SetStateAction<Width[]>>;\n}\n\nexport function TabWidthContextProvider({\n children,\n onChangeWidths,\n}: TabWidthContextProviderProps) {\n return (\n <TabContext.Provider\n value={{\n updateWidth: (index, newWidth) => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue[index] = newWidth;\n return newValue;\n });\n },\n removeTab: index => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue.splice(index, 1);\n return newValue;\n });\n },\n }}\n >\n {children}\n </TabContext.Provider>\n );\n}\n\nexport function useSetTabWidth(index: number, width: Width) {\n const context = useContext(TabContext);\n\n useLayoutEffect(() => {\n context?.updateWidth(index, width);\n return () => context?.removeTab(index);\n }, [index, width]);\n}\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n isValidElement,\n cloneElement,\n FocusEvent,\n ReactElement,\n useState,\n} from 'react';\nimport type * as CSS from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport {\n useRoveFocus,\n useCombinedRef,\n useOnKeyDown,\n useOnClickOutside,\n} from '../../hooks';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\nimport { TabWidthContextProvider } from './TabWidthContext';\n\nconst { tabList } = tokens;\n\nconst autoFlow = css`\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nconst templateColumns = (templateColumns: string) => css`\n grid-template-columns: ${templateColumns};\n`;\n\nconst TabRow = styled.div<{ $gridTemplateColumns: string }>`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n ${({ $gridTemplateColumns }) =>\n $gridTemplateColumns === ''\n ? autoFlow\n : templateColumns($gridTemplateColumns)}\n overflow-x: auto;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n scroll-snap-type: x mandatory;\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: ${focusVisibleTransitionValue};\n }\n &:focus-visible {\n ${focusVisible}\n }\n &:focus-visible button {\n outline: none;\n }\n`;\n\nexport type TabListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n ({ children, id, onFocus, ...rest }, ref) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n tabPanelsRef,\n setHasTabFocus,\n } = useTabsContext();\n\n const uniqueId = id ?? `${tabsId}-tablist`;\n const childrenArray = Children.toArray(children).length;\n const [focus, setFocus] = useRoveFocus(childrenArray, !hasTabFocus, 'row');\n const combinedRef = useCombinedRef(ref, tabListRef);\n\n const tabListChildren = Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-tab-${index}`,\n 'aria-controls': `${tabsId}-panel-${index}`,\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: () => handleTabChange(index),\n })\n );\n });\n\n const [widths, setWidths] = useState<CSS.Properties['width'][]>([]);\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n useOnClickOutside((tabListRef?.current as HTMLElement) || null, () => {\n setHasTabFocus(false);\n });\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const tabListProps = {\n ...rest,\n ref: combinedRef,\n role: 'tablist',\n 'aria-label': 'Bruk venste og høyre piltast for å bla',\n id: uniqueId,\n tabIndex: 0,\n onFocus: handleOnFocus,\n };\n\n return (\n <TabWidthContextProvider onChangeWidths={setWidths}>\n <TabRow {...tabListProps} $gridTemplateColumns={widths.join(' ')}>\n {tabListChildren}\n </TabRow>\n </TabWidthContextProvider>\n );\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef } from '../../hooks';\n\nexport type TabPanelsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabPanels = forwardRef<HTMLDivElement, TabPanelsProps>(\n ({ children, ...rest }, ref) => {\n const { activeTab, tabsId, tabPanelsRef } = useTabsContext();\n const combinedRef = useCombinedRef(ref, tabPanelsRef);\n\n const panelChildren = Children.map(children, (child, index) => {\n const active = index === activeTab;\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-panel-${index}`,\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n active,\n 'aria-expanded': active,\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n },\n);\n\nTabPanels.displayName = 'TabPanels';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport {\n TextOverflowEllipsisWrapper,\n getFontStyling,\n TextOverflowEllipsisInner,\n} from '../Typography';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, borderRadius, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst wrapper = {\n border: '1px solid',\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n padding: `${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX025}`,\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n },\n success: localMessageTokens.container.purpose.success,\n danger: localMessageTokens.container.purpose.danger,\n warning: localMessageTokens.container.purpose.warning,\n info: localMessageTokens.container.purpose.info,\n },\n};\n\nexport const tagTokens = {\n wrapper,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Button } from '../Button';\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport {\n TextOverflowEllipsisWrapper,\n getFontStyling,\n TextOverflowEllipsisInner,\n} from '../Typography';\nimport { CloseIcon } from '../Icon/icons';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingX025,\n padding: `${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { forwardRef, HTMLAttributes, Children } from 'react';\nimport styled from 'styled-components';\nimport { chipTokens as tokens } from './Chip.tokens';\nimport { removeListStyling } from '../helpers';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { ChangeEvent, useState, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { Property } from 'csstype';\nimport { ToggleBarProps, ToggleBarValue } from './ToggleBar.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\nimport { selection } from '../helpers';\nimport { Typography } from '../Typography';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { ChangeEvent, createContext, useContext } from 'react';\nimport { ToggleBarSize, ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, border, borderRadius, fontPackages } = ddsBaseTokens;\n\nexport const typographyTypes: { [k in ToggleBarSize]: StaticTypographyType } = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTiny = `${calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeSmall = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeMedium = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n)}px`;\nconst iconSizeLarge = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n)}px`;\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst label = {\n base: {\n borderColor: colors.DdsColorNeutralsGray5,\n borderRight: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n firstChild: {\n borderLeft: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTopLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n lastChild: {\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n};\n\nconst content = {\n base: { backgroundColor: colors.DdsColorNeutralsGray1 },\n active: {\n color: colors.DdsColorInteractiveDarkest,\n borderColor: colors.DdsColorInteractiveDarker,\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n size: {\n tiny: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX075}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX1}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX15}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX2}`,\n gap: spacing.SizesDdsSpacingX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import { forwardRef, InputHTMLAttributes, ChangeEvent, useId } from 'react';\nimport { ToggleBarContextType, useToggleBarContext } from './ToggleBar.context';\nimport { Label, Content } from './ToggleRadio.styles';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { HiddenInput } from '../helpers';\n\ntype PickedInputHTMLAttributes = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'checked' | 'value' | 'onChange' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ToggleRadioProps = BaseComponentProps<\n HTMLInputElement,\n {\n /**Ledetekst som vises i komponenten. */\n label?: string;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n } & PickedInputHTMLAttributes,\n Omit<InputHTMLAttributes<HTMLInputElement>, keyof PickedInputHTMLAttributes>\n>;\n\n/**Beregner om en ToggleRadio skal være checked eller ikke.\n *\n * Returnerer checked hvis den er definert.\n *\n * Returnerer true hvis både verdien fra context og verdien i ToggleRadio er truthy og like.\n * Returnerer true hvis verdien i ToggleRadio er truthy, men context ikke finnes.\n *\n * Returnerer false hvis verdiene er ulike eller hvis verdien i ToggleRadio er falsy.\n */\nconst calculateChecked = (\n value: unknown,\n group: ToggleBarContextType,\n checked?: boolean,\n): boolean => {\n if (typeof checked !== 'undefined') return checked;\n\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n\n return !!value;\n};\n\nexport const ToggleRadio = forwardRef<HTMLInputElement, ToggleRadioProps>(\n (props, ref) => {\n const {\n value,\n name,\n onChange,\n checked,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleRadio`;\n const group = useToggleBarContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n group?.onChange && group.onChange(event);\n };\n\n return (\n <Label size={group.size} htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n type=\"radio\"\n ref={ref}\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n />\n <Content $size={group.size} $justIcon={!!icon && !label}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Content>\n </Label>\n );\n },\n);\n\nToggleRadio.displayName = 'ToggleRadio';\n","import styled, { css } from 'styled-components';\n\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { gridTokens } from './Grid.tokens';\nimport { GridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport { ScreenSize, useScreenSize } from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getLiteralScreenSize, BreakpointBasedProps } from '../helpers';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ScreenSize } from '../../hooks';\n\nconst { grid, spacing } = ddsBaseTokens;\n\nconst allColumns = '1 / -1';\nconst halfWayColumn: Record<ScreenSize, number> = {\n [ScreenSize.XSmall]: grid.DdsGridXs0599Count / 2 + 1,\n [ScreenSize.Small]: grid.DdsGridSm600959Count / 2 + 1,\n [ScreenSize.Medium]: grid.DdsGridMd9601279Count / 2 + 1,\n [ScreenSize.Large]: grid.DdsGridLg12801919Count / 2 + 1,\n [ScreenSize.XLarge]: grid.DdsGridXl1920Count / 2 + 1,\n};\n\nexport const gridTokens = {\n [ScreenSize.XSmall]: {\n grid: {\n columns: grid.DdsGridXs0599Count,\n columnGap: grid.DdsGridXs0599GutterSize,\n marginLeft: spacing.SizesDdsSpacingX1,\n marginRight: spacing.SizesDdsSpacingX1,\n },\n\n columns: {\n firstHalf: {\n gridColumn: allColumns,\n },\n secondHalf: {\n gridColumn: allColumns,\n },\n },\n },\n [ScreenSize.Small]: {\n grid: {\n columns: grid.DdsGridSm600959Count,\n columnGap: grid.DdsGridSm600959GutterSize,\n marginLeft: spacing.SizesDdsSpacingX2,\n marginRight: spacing.SizesDdsSpacingX2,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Small]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Small]} / -1`,\n },\n },\n },\n [ScreenSize.Medium]: {\n grid: {\n columns: grid.DdsGridMd9601279Count,\n columnGap: grid.DdsGridMd9601279GutterSize,\n marginLeft: spacing.SizesDdsSpacingX4,\n marginRight: spacing.SizesDdsSpacingX4,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Medium]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Medium]} / -1`,\n },\n },\n },\n [ScreenSize.Large]: {\n grid: {\n columns: grid.DdsGridLg12801919Count,\n columnGap: grid.DdsGridLg12801919GutterSize,\n marginLeft: spacing.SizesDdsSpacingX6,\n marginRight: spacing.SizesDdsSpacingX6,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Large]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Large]} / -1`,\n },\n },\n },\n [ScreenSize.XLarge]: {\n grid: {\n columns: grid.DdsGridXl1920Count,\n columnGap: grid.DdsGridXl1920GutterSize,\n marginLeft: spacing.SizesDdsSpacingX10,\n marginRight: spacing.SizesDdsSpacingX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { useContext, createContext } from 'react';\nimport { ScreenSize } from '../../hooks';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import styled from 'styled-components';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { Property } from 'csstype';\nimport { useGridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport { ScreenSize } from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getLiteralScreenSize, BreakpointBasedProps } from '../helpers';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n cloneElement,\n forwardRef,\n ForwardRefExoticComponent,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useEffect,\n useState,\n useMemo,\n} from 'react';\nimport styled from 'styled-components';\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\nimport { IconSize } from '../Icon';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyTypes: {\n number: StaticTypographyType;\n label: StaticTypographyType;\n} = {\n number: 'bodySans01',\n label: 'bodySans03',\n};\n\nconst itemsWrapper = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '1.75rem',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport { BaseComponentPropsWithChildren } from '../../types';\nimport { Icon } from '../Icon';\nimport { CheckIcon } from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling } from '../Typography';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n ChangeEvent,\n useState,\n FocusEventHandler,\n FocusEvent,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { InlineEditProps } from './InlineEdit.types';\nimport { useOnKeyDown, useOnClickOutside } from '../../hooks';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { forwardRef, TextareaHTMLAttributes, useId, useRef } from 'react';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineTextArea,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { OuterInputContainer, InputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import styled, { css } from 'styled-components';\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { Property } from 'csstype';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { StyledInputProps, StatefulInput } from '../helpers';\n\nconst { inlineEdit, iconWrapper } = inlineEditTokens;\n\nexport const defaultWidth: Property.Width = '140px';\n\ntype StyledInlineInputProps = {\n isEditing?: boolean;\n hideIcon?: boolean;\n} & StyledInputProps;\n\nexport const StyledInlineInput = styled(StatefulInput).withConfig({\n shouldForwardProp: prop => prop !== 'isEditing' && prop !== 'hideIcon',\n})<StyledInlineInputProps>`\n border-color: transparent;\n background-color: ${inlineEdit.backgroundColor};\n padding: ${inlineEdit.padding};\n ${inlineEdit.font};\n ${({ isEditing, hideIcon }) =>\n !isEditing &&\n !hideIcon &&\n css`\n padding-left: ${inlineEdit.withIcon.paddingLeft};\n `}\n\n &:hover:enabled:read-write:not(:focus) {\n background-color: ${inlineEdit.hover.backgroundColor};\n border-color: transparent;\n box-shadow: none;\n }\n &:focus {\n background-color: ${inlineEdit.focus.backgroundColor};\n }\n`;\n\nexport const StyledInlineTextArea = styled(StyledInlineInput).attrs({\n as: 'textarea',\n})<StyledInlineInputProps>`\n resize: vertical;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport const IconWrapper = styled.span`\n position: absolute;\n left: ${iconWrapper.left};\n top: ${iconWrapper.top};\n z-index: 1;\n &:hover {\n cursor: text;\n }\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, fontPackages } = ddsBaseTokens;\n\nconst inlineEdit = {\n padding: spacing.SizesDdsSpacingX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingX05,\n left: spacing.SizesDdsSpacingX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { forwardRef, InputHTMLAttributes, useId, useRef } from 'react';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineInput,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { OuterInputContainer, InputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { textAreaTokens } from './TextArea.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { TextAreaProps } from './TextArea.types';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport {\n StatefulInput,\n StyledInputProps,\n inputTypographyTypes,\n getDefaultText,\n OuterInputContainer,\n} from '../helpers';\nimport { getFontStyling, Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst { textarea } = textAreaTokens;\n\nexport const StyledTextArea = styled(StatefulInput)<StyledInputProps>`\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: ${textarea.paddingBottom};\n ${getFontStyling(inputTypographyTypes.medium)}\n`;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n className,\n style,\n width = defaultWidth,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textArea`;\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const multiRef = useCombinedRef(ref, textAreaRef);\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n\n useEffect(() => {\n if (textAreaRef?.current) {\n textAreaRef.current.style.height = `${\n textAreaRef.current.scrollHeight + 2\n }px`;\n }\n }, [text]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLTextAreaElement> = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = required || !!ariaRequired;\n\n const containerProps = {\n width,\n className,\n style,\n };\n\n const textAreaProps = {\n ref: multiRef,\n onChange: onChangeHandler,\n value,\n defaultValue,\n id: uniqueId,\n disabled,\n hasErrorMessage,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n return (\n <OuterInputContainer {...containerProps}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredStyling} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n <StyledTextArea {...textAreaProps} as=\"textarea\" />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst textarea = {\n paddingBottom: spacing.SizesDdsSpacingX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button, ButtonProps, ButtonPurpose, ButtonSize } from '../Button';\nimport {\n OverflowMenu,\n OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\nimport { tokens } from './SplitButton.tokens';\nimport { ExtractStrict } from '../../types';\nimport { ChevronUpIcon, ChevronDownIcon } from '../Icon/icons';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport { StandardProperties } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'x0.125': spacing.SizesDdsSpacingX0125,\n 'x0.25': spacing.SizesDdsSpacingX025,\n 'x0.5': spacing.SizesDdsSpacingX05,\n 'x0.75': spacing.SizesDdsSpacingX075,\n x1: spacing.SizesDdsSpacingX1,\n 'x1.5': spacing.SizesDdsSpacingX15,\n x2: spacing.SizesDdsSpacingX2,\n 'x2.5': spacing.SizesDdsSpacingX25,\n x3: spacing.SizesDdsSpacingX3,\n x4: spacing.SizesDdsSpacingX4,\n x6: spacing.SizesDdsSpacingX6,\n x10: spacing.SizesDdsSpacingX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { InputMessage } from '../InputMessage';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { FileList } from './types';\nimport { FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport { Property } from 'csstype';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { UploadIcon } from '../Icon/icons';\nimport { Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\nimport { InputMessage } from '../InputMessage';\nimport { errorsTokens } from './FileUploader.tokens';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingX15,\n paddingBottom: spacing.SizesDdsSpacingX2,\n gap: spacing.SizesDdsSpacingX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingX05,\n paddingLeftRight: spacing.SizesDdsSpacingX05,\n paddingTopBottom: spacing.SizesDdsSpacingX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingX025,\n};\n","import styled from 'styled-components';\n\nimport { Button } from '../Button';\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { FileUploaderFile } from './fileUploaderReducer';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { CloseIcon } from '../Icon/icons';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import React, {\n ButtonHTMLAttributes,\n HTMLAttributes,\n InputHTMLAttributes,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n FileUploaderFile,\n fileUploaderReducer,\n RootErrorList,\n} from './fileUploaderReducer';\nimport { FileWithPath, fromEvent as getFilesFromEvent } from 'file-selector';\nimport { Accept, FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { FileWithPath } from 'file-selector';\nimport { Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { Typography } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst StyledEmptyContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: ${spacing.SizesDdsSpacingX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { backLinkTokens } from './BackLink.tokens';\nimport { Typography } from '../Typography';\nimport { icons } from '../..';\nimport { Icon } from '../Icon';\n\nconst Nav = styled('nav')`\n align-items: center;\n display: flex;\n gap: ${backLinkTokens.nav.gap};\n`;\n\nconst StyledIcon = styled(Icon)`\n color: ${backLinkTokens.icon.color};\n`;\n\nexport interface BackLinkProps {\n label: string;\n href: string;\n}\n\nexport const BackLink = forwardRef<HTMLElement, BackLinkProps>((props, ref) => {\n return (\n <Nav ref={ref}>\n <StyledIcon icon={icons.ArrowLeftIcon} iconSize=\"small\" />\n <Typography typographyType=\"a\" href={props.href}>\n {props.label}\n </Typography>\n </Nav>\n );\n});\n\nBackLink.displayName = 'BackLink';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst nav = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\nimport { FeedbackProps, Rating } from './Feedback.types';\nimport { RatingComponent } from './RatingComponent';\nimport { CommentComponent } from './CommentComponent';\nimport { Paragraph } from '../Typography';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { Layout, Rating } from './Feedback.types';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport { Button } from '../Button';\nimport { HStack } from '../Stack';\nimport { Label } from '../Typography';\nimport { Thumbup, Thumbdown } from '../Icon/icons';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingX1};\n ${({ $layout }) => css`\n flex-direction: ${$layout === 'horizontal' ? 'row' : 'column'};\n align-items: ${$layout === 'horizontal' ? 'center' : 'start'};\n `}\n`;\n\nconst RatingButton = styled(Button)`\n padding: 0px;\n color: ${ddsBaseTokens.colors.DdsColorNeutralsGray7};\n`;\n\ninterface RatingComponentType {\n layout: Layout;\n ratingLabel: string;\n loading: boolean;\n thumbUpTooltip: string;\n thumbDownTooltip: string;\n handleRatingChange: (rating: Rating) => void;\n}\n\nexport const RatingComponent = ({\n layout,\n ratingLabel,\n loading,\n thumbUpTooltip,\n thumbDownTooltip,\n handleRatingChange,\n}: RatingComponentType) => {\n return (\n <RatingContainer $layout={layout}>\n <Label>{ratingLabel}</Label>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\nimport { VStack } from '../Stack';\nimport { Icon } from '../Icon';\nimport { ThumbupFilled, ThumbdownFilled } from '../Icon/icons';\nimport { Paragraph } from '../Typography';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingX05};\n`;\n\ninterface CommentComponentType {\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"x1\" align=\"flex-start\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAA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","names":["AppShell","CollapsibleTable","List","ListItem","RadioButtonGroup","Search","Table","TextInput","styled","import_styled_components","styled","import_styled_components","import_dds_design_tokens","import_dds_design_tokens","border","import_dds_design_tokens","spacing","import_dds_design_tokens","Border","Colors","import_dds_design_tokens","colors","import_styled_components","import_react","import_styled_components","styled","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","import_styled_components","import_dds_design_tokens","element","border","colors","bold","typographyType","element","import_dds_design_tokens","colors","textDefault","colors","textDefault","prefix","import_styled_components","import_dds_design_tokens","colors","spacing","import_dds_design_tokens","icon","title","size","import_styled_components","styled","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","styled","message","import_jsx_runtime","import_jsx_runtime","styled","typographyType","bold","import_jsx_runtime","import_react","import_jsx_runtime","typographyType","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_styled_components","import_jsx_runtime","styled","typographyType","import_react","import_jsx_runtime","typographyType","input","container","styled","import_styled_components","import_dds_design_tokens","colors","import_dds_design_tokens","border","borderStyle","styled","import_styled_components","import_dds_design_tokens","import_jsx_runtime","styled","tokens","import_react","element","import_dds_design_tokens","floatingOffset","arrow","import_react","element","import_react","import_react","import_react","element","import_react","import_react","element","import_react","size","import_react","import_dds_design_tokens","ScreenSize","screenSize","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","borderRadius","breakpoints","import_react","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","border","spacing","import_jsx_runtime","styled","import_styled_components","import_react","import_jsx_runtime","import_jsx_runtime","styled","icon","import_styled_components","import_jsx_runtime","import_styled_components","navTokens","styled","import_react","import_dds_design_tokens","colors","border","spacing","fontPackages","borderRadius","outerShadow","import_react","import_styled_components","import_dds_design_tokens","import_jsx_runtime","styled","size","React","import_styled_components","sizes","appearances","styled","size","Label","import_jsx_runtime","sizes","appearances","label","size","icon","Label","import_react","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","track","thumb","styled","import_react","import_styled_components","import_jsx_runtime","track","content","outerContainer","styled","thumb","track","scrollbarWidth","import_react","import_styled_components","import_dds_design_tokens","border","borderRadius","colors","spacing","fontPackages","container","divider","import_jsx_runtime","element","link","styled","Link","isAnchorProps","title","icon","import_jsx_runtime","container","divider","styled","StyledDivider","_a","import_react","import_jsx_runtime","Children","ReactChildren","import_jsx_runtime","navTokens","floatingActionButtons","styled","title","Icon","import_development_utils","import_jsx_runtime","navTokens","styled","StyledDivider","title","import_development_utils","import_jsx_runtime","styled","title","AppShell","import_react","import_react","React","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","Container","import_jsx_runtime","group","label","Container","import_react","import_jsx_runtime","label","RadioButtonGroup","import_react","import_react","React","import_jsx_runtime","label","Container","import_react","import_jsx_runtime","label","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","input","icon","import_react","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_dds_design_tokens","iconSizes","input","icon","styled","import_jsx_runtime","size","styled","TextInput","label","icon","prefix","import_react","import_react_select","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","border","textDefault","typographyTypes","icon","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","typographyTypes","StyledIcon","size","import_jsx_runtime","Input","size","icon","StyledIcon","import_jsx_runtime","defaultWidth","placeholder","label","icon","option","props","Container","ReactSelect","React","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","typographyType","container","import_jsx_runtime","container","contentContainer","icon","Container","styled","typographyType","message","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","borderRadius","border","outerShadow","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","icon","import_jsx_runtime","defaultWidth","container","icon","purposeVariants","Container","styled","MessageIconWrapper","TextContainer","message","import_react","import_styled_components","import_styled_components","import_jsx_runtime","Wrapper","styled","import_react","import_dds_design_tokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","import_styled_components","import_react","import_jsx_runtime","suggestionsContainer","suggestionsHeader","styled","typographyTypes","import_jsx_runtime","input","outerContainer","horisontalContainer","searchIcon","clearButton","size","Input","styled","typographyTypes","InputContainer","label","import_react","import_jsx_runtime","data","a","value","Search","import_react","import_styled_components","import_dds_design_tokens","font","colors","border","spacing","iconSizes","borderRadius","import_jsx_runtime","cell","row","styled","import_react","import_styled_components","import_react","import_jsx_runtime","StyledTable","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","row","styled","import_jsx_runtime","import_react","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","spacing","colors","import_jsx_runtime","term","desc","list","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","icon","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_jsx_runtime","collapseButton","styled","prefix","a","Table","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","CollapsibleTable","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","icon","list","import_jsx_runtime","icon","list","listItem","styled","typographyType","StyledIcon","import_react","import_styled_components","import_dds_design_tokens","spacing","colors","list","outerContainer","import_jsx_runtime","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","OuterContainer","option","navigation","import_react","import_styled_components","import_dds_design_tokens","spacing","textDefault","list","listItem","import_jsx_runtime","list","listItem","bullet","styled","List","typographyType","import_react","import_styled_components","import_jsx_runtime","styled","ListItem","import_styled_components","import_dds_design_tokens","colors","border","textDefault","base","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_react","import_jsx_runtime","import_jsx_runtime","Wrapper","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","border","iconSizes","typographyTypes","import_jsx_runtime","header","chevronWrapper","styled","typographyType","typographyTypes","bold","import_react","import_styled_components","import_react","element","import_jsx_runtime","Body","styled","typographyTypes","import_react","import_styled_components","import_dds_design_tokens","border","colors","spacing","typographyTypes","outerContainer","navigation","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","Navigation","import_react","import_styled_components","import_jsx_runtime","navLink","Link","styled","typographyTypes","NavigationItem","title","import_react","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime","navigation","Navigation","rest","NavigationItem","OuterContainer","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","link","import_jsx_runtime","wrapper","link","Wrapper","styled","Link","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","wrapper","wrapper","styled","Container","import_jsx_runtime","svgArrow","ref","ReactChildren","Container","import_react","import_styled_components","import_dds_design_tokens","spacing","container","contentContainer","import_react_dom","import_styled_components","import_dds_design_tokens","styled","container","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_react_dom","import_styled_components","import_dds_design_tokens","spacing","container","contentContainer","import_jsx_runtime","container","contentContainer","size","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_jsx_runtime","Children","ReactChildren","import_date","import_calendar","import_styled_components","import_date","import_calendar","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","cell","import_jsx_runtime","Cell","styled","import_date","import_jsx_runtime","styled","import_jsx_runtime","styled","title","import_datepicker","import_react","import_react","import_datepicker","import_date","import_react","import_styled_components","import_dds_design_tokens","colors","import_jsx_runtime","styled","segment","import_styled_components","import_react","import_jsx_runtime","StyledButton","styled","import_react","import_styled_components","import_jsx_runtime","styled","button","import_jsx_runtime","segment","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_jsx_runtime","import_react","import_datepicker","import_styled_components","import_jsx_runtime","styled","segment","import_date","import_dds_design_tokens","import_react","import_styled_components","import_dds_design_tokens","spacing","wrapper","content","popoverTokens","import_jsx_runtime","wrapper","content","closeButton","title","popoverTokens","Wrapper","styled","ContentContainer","StyledButton","import_react","import_jsx_runtime","Children","ReactChildren","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","button","selectionControl","typographyType","group","container","import_jsx_runtime","toggleButton","Content","styled","typographyType","Container","label","icon","import_react","import_styled_components","import_jsx_runtime","styled","Container","label","import_styled_components","import_react","import_react","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_design_tokens","border","spacing","colors","import_react","import_jsx_runtime","import_jsx_runtime","tab","Button","styled","icon","import_react","import_styled_components","import_jsx_runtime","tabList","templateColumns","styled","import_react","import_styled_components","import_jsx_runtime","panel","styled","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","borderRadius","spacing","typographyType","wrapper","import_jsx_runtime","wrapper","Wrapper","styled","typographyType","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","typographyType","container","group","import_jsx_runtime","container","Container","styled","typographyType","import_react","import_styled_components","import_jsx_runtime","Group","styled","import_react","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","border","borderRadius","fontPackages","typographyTypes","outerContainer","content","import_jsx_runtime","OuterContainer","styled","Bar","size","label","import_react","import_styled_components","content","label","Content","styled","typographyTypes","Label","import_jsx_runtime","group","icon","label","Label","Content","import_styled_components","import_dds_design_tokens","grid","spacing","gridTokens","import_react","import_jsx_runtime","tokens","gridTokens","styled","import_styled_components","import_jsx_runtime","styled","gridTokens","import_react","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","typographyTypes","import_react","import_styled_components","import_jsx_runtime","itemNumber","itemText","itemContentWrapper","styled","typographyTypes","icon","import_jsx_runtime","styled","import_react","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","inlineEdit","iconWrapper","defaultWidth","styled","IconWrapper","import_jsx_runtime","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_react","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","defaultWidth","textarea","styled","label","import_react","import_styled_components","import_dds_design_tokens","tokens","import_jsx_runtime","Container","styled","tokens","size","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","styled","import_react","import_styled_components","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","MessageContainer","styled","message","import_styled_components","import_jsx_runtime","styled","import_react","accepted","accepted","getFilesFromEvent","import_jsx_runtime","defaultWidth","Wrapper","styled","label","import_dds_design_tokens","import_styled_components","import_jsx_runtime","colors","spacing","styled","title","message","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","icon","import_jsx_runtime","Nav","styled","StyledIcon","import_react","import_styled_components","import_dds_design_tokens","import_jsx_runtime","styled","import_styled_components","import_dds_design_tokens","import_jsx_runtime","styled","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/helpers/Chevron/AnimatedChevronUpDown.styles.tsx","../src/components/helpers/Chevron/AnimatedChevronUpDown.tsx","../src/components/helpers/HiddenInput/HiddenInput.tsx","../src/components/helpers/Input/Input.styles.tsx","../src/components/helpers/Input/Input.tokens.tsx","../src/components/Typography/Caption/Caption.tsx","../src/utils/dom.ts","../src/types/BaseComponentProps.ts","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.tsx","../src/components/Typography/Typography/Typography.tsx","../src/components/Typography/Typography/Typography.styles.ts","../src/components/Typography/Typography/Typography.utils.ts","../src/components/Typography/Typography.tokens.tsx","../src/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/utils/StyledSvg.ts","../src/components/Icon/icons/index.ts","../src/components/Icon/utils/SvgWrapper.tsx","../src/components/Icon/icons/addressShielded.tsx","../src/components/Icon/icons/agreement.tsx","../src/components/Icon/icons/apps.tsx","../src/components/Icon/icons/archive.tsx","../src/components/Icon/icons/arrowDown.tsx","../src/components/Icon/icons/arrowLeft.tsx","../src/components/Icon/icons/arrowRight.tsx","../src/components/Icon/icons/arrowUp.tsx","../src/components/Icon/icons/attachment.tsx","../src/components/Icon/icons/block.tsx","../src/components/Icon/icons/book.tsx","../src/components/Icon/icons/build.tsx","../src/components/Icon/icons/buildCircled.tsx","../src/components/Icon/icons/calendar.tsx","../src/components/Icon/icons/calendarMonth.tsx","../src/components/Icon/icons/calendarViewDay.tsx","../src/components/Icon/icons/calendarViewMonth.tsx","../src/components/Icon/icons/calendarViewWeek.tsx","../src/components/Icon/icons/call.tsx","../src/components/Icon/icons/caring.tsx","../src/components/Icon/icons/chat.tsx","../src/components/Icon/icons/check.tsx","../src/components/Icon/icons/checkCircled.tsx","../src/components/Icon/icons/checklist.tsx","../src/components/Icon/icons/chevronDown.tsx","../src/components/Icon/icons/chevronFirst.tsx","../src/components/Icon/icons/chevronLargeLeft.tsx","../src/components/Icon/icons/chevronLargeRight.tsx","../src/components/Icon/icons/chevronLast.tsx","../src/components/Icon/icons/chevronLeft.tsx","../src/components/Icon/icons/chevronRight.tsx","../src/components/Icon/icons/chevronUp.tsx","../src/components/Icon/icons/close.tsx","../src/components/Icon/icons/closeSmall.tsx","../src/components/Icon/icons/closeCircled.tsx","../src/components/Icon/icons/cloud.tsx","../src/components/Icon/icons/collapse.tsx","../src/components/Icon/icons/comment.tsx","../src/components/Icon/icons/copy.tsx","../src/components/Icon/icons/court.tsx","../src/components/Icon/icons/dateRange.tsx","../src/components/Icon/icons/deaths.tsx","../src/components/Icon/icons/doubleChevronLeft.tsx","../src/components/Icon/icons/doubleChevronRight.tsx","../src/components/Icon/icons/download.tsx","../src/components/Icon/icons/downloadDone.tsx","../src/components/Icon/icons/dragHandle.tsx","../src/components/Icon/icons/edit.tsx","../src/components/Icon/icons/error.tsx","../src/components/Icon/icons/exclaim.tsx","../src/components/Icon/icons/expand.tsx","../src/components/Icon/icons/facebook.tsx","../src/components/Icon/icons/family.tsx","../src/components/Icon/icons/feedback.tsx","../src/components/Icon/icons/file.tsx","../src/components/Icon/icons/fileAdd.tsx","../src/components/Icon/icons/fileShielded.tsx","../src/components/Icon/icons/fileText.tsx","../src/components/Icon/icons/filter.tsx","../src/components/Icon/icons/filterList.tsx","../src/components/Icon/icons/filterListOff.tsx","../src/components/Icon/icons/filterOff.tsx","../src/components/Icon/icons/findInPage.tsx","../src/components/Icon/icons/flickr.tsx","../src/components/Icon/icons/folder.tsx","../src/components/Icon/icons/folderAdd.tsx","../src/components/Icon/icons/folderShielded.tsx","../src/components/Icon/icons/fullsceenExit.tsx","../src/components/Icon/icons/fullscreen.tsx","../src/components/Icon/icons/gavel.tsx","../src/components/Icon/icons/help.tsx","../src/components/Icon/icons/helpFilled.tsx","../src/components/Icon/icons/home.tsx","../src/components/Icon/icons/hourglassBottom.tsx","../src/components/Icon/icons/hourglassDisabled.tsx","../src/components/Icon/icons/hourglassEmpty.tsx","../src/components/Icon/icons/hourglassFull.tsx","../src/components/Icon/icons/hourglassTop.tsx","../src/components/Icon/icons/image.tsx","../src/components/Icon/icons/info.tsx","../src/components/Icon/icons/instagram.tsx","../src/components/Icon/icons/jordskifterett.tsx","../src/components/Icon/icons/key.tsx","../src/components/Icon/icons/lagmannsrett.tsx","../src/components/Icon/icons/language.tsx","../src/components/Icon/icons/link.tsx","../src/components/Icon/icons/linkedIn.tsx","../src/components/Icon/icons/linkOff.tsx","../src/components/Icon/icons/list.tsx","../src/components/Icon/icons/listAlt.tsx","../src/components/Icon/icons/location.tsx","../src/components/Icon/icons/lock.tsx","../src/components/Icon/icons/lockOpen.tsx","../src/components/Icon/icons/login.tsx","../src/components/Icon/icons/logout.tsx","../src/components/Icon/icons/mail.tsx","../src/components/Icon/icons/mailOpen.tsx","../src/components/Icon/icons/menu.tsx","../src/components/Icon/icons/minus.tsx","../src/components/Icon/icons/minusCircled.tsx","../src/components/Icon/icons/moreHorizontal.tsx","../src/components/Icon/icons/moreVertical.tsx","../src/components/Icon/icons/notarial.tsx","../src/components/Icon/icons/notifications.tsx","../src/components/Icon/icons/notificationsOff.tsx","../src/components/Icon/icons/onlineMeeting.tsx","../src/components/Icon/icons/openExternal.tsx","../src/components/Icon/icons/payout.tsx","../src/components/Icon/icons/pdf.tsx","../src/components/Icon/icons/person.tsx","../src/components/Icon/icons/personAdd.tsx","../src/components/Icon/icons/personShielded.tsx","../src/components/Icon/icons/pin.tsx","../src/components/Icon/icons/plus.tsx","../src/components/Icon/icons/plusCircled.tsx","../src/components/Icon/icons/print.tsx","../src/components/Icon/icons/property.tsx","../src/components/Icon/icons/publish.tsx","../src/components/Icon/icons/questionAnswer.tsx","../src/components/Icon/icons/receipt.tsx","../src/components/Icon/icons/redo.tsx","../src/components/Icon/icons/refresh.tsx","../src/components/Icon/icons/replay.tsx","../src/components/Icon/icons/search.tsx","../src/components/Icon/icons/settings.tsx","../src/components/Icon/icons/sms.tsx","../src/components/Icon/icons/star.tsx","../src/components/Icon/icons/starFilled.tsx","../src/components/Icon/icons/starHalfFilled.tsx","../src/components/Icon/icons/sync.tsx","../src/components/Icon/icons/thumbdown.tsx","../src/components/Icon/icons/thumbdownFilled.tsx","../src/components/Icon/icons/thumbup.tsx","../src/components/Icon/icons/thumbupFilled.tsx","../src/components/Icon/icons/time.tsx","../src/components/Icon/icons/tingrett.tsx","../src/components/Icon/icons/tip.tsx","../src/components/Icon/icons/trash.tsx","../src/components/Icon/icons/twitter.tsx","../src/components/Icon/icons/undo.tsx","../src/components/Icon/icons/unfoldLess.tsx","../src/components/Icon/icons/unfoldMore.tsx","../src/components/Icon/icons/upload.tsx","../src/components/Icon/icons/visibilityOff.tsx","../src/components/Icon/icons/visibilityOn.tsx","../src/components/Icon/icons/warning.tsx","../src/components/Icon/icons/zoomIn.tsx","../src/components/Icon/icons/zoomOut.tsx","../src/components/Icon/icons/barChart.tsx","../src/components/Icon/icons/barChartBoxed.tsx","../src/components/Icon/icons/lineChart.tsx","../src/components/Icon/icons/trendingUp.tsx","../src/components/Icon/icons/trendingDown.tsx","../src/components/Icon/icons/libraryAdd.tsx","../src/utils/renderInputMessage.tsx","../src/utils/searchFilter.tsx","../src/utils/text.tsx","../src/components/Typography/Heading/Heading.tsx","../src/components/Typography/Label/Label.tsx","../src/components/Typography/Legend/Legend.tsx","../src/components/Typography/Link/Link.tsx","../src/components/Typography/Paragraph/Paragraph.tsx","../src/components/helpers/styling/danger.tsx","../src/components/helpers/styling/focus.tsx","../src/components/helpers/styling/focusVisible.tsx","../src/components/helpers/styling/hideInput.tsx","../src/components/helpers/styling/hover.tsx","../src/components/helpers/styling/normalize.tsx","../src/components/helpers/styling/removeButtonStyling.tsx","../src/components/helpers/styling/removeListStyling.tsx","../src/components/helpers/styling/selection.tsx","../src/components/helpers/styling/visibilityTransition.tsx","../src/components/helpers/Input/Input.utils.tsx","../src/components/helpers/Paper/Paper.tsx","../src/components/helpers/Paper/Paper.tokens.tsx","../src/components/helpers/RequiredMarker/RequiredMarker.tsx","../src/hooks/useCombinedRefs.tsx","../src/hooks/useFloatPosition.tsx","../src/hooks/useFocusTrap.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useMountTransition.tsx","../src/hooks/useOnClickOutside.tsx","../src/hooks/useOnKeyDown.tsx","../src/hooks/useReturnFocusOnBlur.ts","../src/hooks/useRoveFocus.tsx","../src/hooks/useScreenSize.tsx","../src/components/helpers/ScreenSize/ScreenSize.utils.tsx","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.styles.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/Select/SelectComponents.tsx","../src/components/Select/utils.ts","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Body.tsx","../src/components/Table/Cell.tsx","../src/components/Table/Head.tsx","../src/components/Table/Table.tokens.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/Table.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionContext.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.ts","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarGrid.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tokens.ts","../src/components/date-inputs/DatePicker/Calendar/CalendarCell.tsx","../src/components/date-inputs/DatePicker/constants.ts","../src/components/date-inputs/utils/getWeekNumber.ts","../src/components/date-inputs/DatePicker/DatePicker.tsx","../src/components/date-inputs/DatePicker/CalendarPopover.tsx","../src/components/date-inputs/DatePicker/DateField/DateField.tsx","../src/components/date-inputs/DatePicker/DateField/CalendarButton.tsx","../src/components/date-inputs/DatePicker/DatePicker.tokens.ts","../src/components/date-inputs/DatePicker/DateField/DateSegment.tsx","../src/components/date-inputs/common/DateInput.tsx","../src/components/date-inputs/utils/useFocusManagerRef.ts","../src/components/date-inputs/TimePicker/TimePicker.tsx","../src/components/date-inputs/utils/transform.ts","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.tokens.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.tokens.tsx","../src/components/ToggleButton/ToggleButtonGroup.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tokens.tsx","../src/components/Tabs/TabWidthContext.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/CommentComponent.tsx","../src/components/Feedback/RatingComponent.tsx"],"sourcesContent":["export * from './components/helpers';\nexport * from './components/Icon/icons';\nexport * as icons from './components/Icon/icons';\nexport * from './hooks';\nexport * from './types';\nexport { cn } from './utils/dom';\n\nexport * from './components/AppShell';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/Button';\nexport * from './components/TextInput';\nexport * from './components/Select';\nexport * from './components/GlobalMessage';\nexport * from './components/LocalMessage';\nexport * from './components/Search';\nexport * from './components/Table';\nexport * from './components/Breadcrumbs';\nexport * from './components/Pagination';\nexport * from './components/Divider';\nexport * from './components/List';\nexport * from './components/DescriptionList';\nexport * from './components/Spinner';\nexport * from './components/Card';\nexport * from './components/InternalHeader';\nexport * from './components/SkipToContent';\nexport * from './components/Tooltip';\nexport * from './components/Modal';\nexport * from './components/Drawer';\nexport * from './components/date-inputs';\nexport * from './components/OverflowMenu';\nexport * from './components/Popover';\nexport * from './components/InputMessage';\nexport * from './components/ToggleButton';\nexport * from './components/Tabs';\nexport * from './components/Tag';\nexport * from './components/Chip';\nexport * from './components/VisuallyHidden';\nexport * from './components/ScrollableContainer';\nexport * from './components/ToggleBar';\nexport * from './components/Grid';\nexport * from './components/Icon';\nexport * from './components/ProgressTracker';\nexport * from './components/InlineEdit';\nexport * from './components/TextArea';\nexport * from './components/SplitButton';\nexport * from './components/Stack';\nexport * from './components/FileUploader';\nexport * from './components/EmptyContent';\nexport * from './components/BackLink';\nexport * from './components/Feedback';\nexport * from './components/Typography';\n","import styled from 'styled-components';\n\nexport interface StyledSvgChevronProps {\n $isUp?: boolean;\n}\n\nexport const SvgChevron = styled.svg`\n display: inline-block;\n flex-shrink: 0;\n position: relative;\n text-align: center;\n vertical-align: middle;\n`;\n\nexport const SvgChevronlGroup = styled.g<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform: ${({ $isUp }) => ($isUp ? 'translateY(3px)' : 'translateY(0)')};\n`;\n\nexport const SvgChevronlLeft = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 1px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(-90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n\nexport const SvgChevronlRight = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 7px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n","import { type Property } from 'csstype';\n\nimport {\n SvgChevron,\n SvgChevronlGroup,\n SvgChevronlLeft,\n SvgChevronlRight,\n} from './AnimatedChevronUpDown.styles';\n\nconst svgChevronLeftPath =\n 'M 1 0 L 5 4 C 5 4 5 4 5 4 L 4 5 C 4 5 4 5 4 5 C 4 5 4 5 4 5 L 0 1 C 0 1 0 1 0 1 L 1 0 C 1 0 1 0 1 0 C 1 0 1 0 1 0 L 1 0 Z';\nconst svgChevronRightPath =\n 'M 3 4 L 7 0 L 8 1 C 8 1 8 1 8 1 L 4 5 L 3 4 C 3 4 3 4 3 4 L 3 4 Z';\n\ninterface SvgChevronProps {\n isUp?: boolean;\n height?: Property.Height<string>;\n width?: Property.Width<string>;\n}\n\nexport const AnimatedChevronUpDown = ({\n isUp,\n height = '5px',\n width = '8px',\n}: SvgChevronProps) => {\n return (\n <SvgChevron\n viewBox=\"0 0 8 5\"\n width={width}\n height={height}\n fill=\"currentColor\"\n >\n <SvgChevronlGroup $isUp={isUp}>\n <SvgChevronlLeft d={svgChevronLeftPath} $isUp={isUp} />\n <SvgChevronlRight d={svgChevronRightPath} $isUp={isUp} />\n </SvgChevronlGroup>\n </SvgChevron>\n );\n};\n","import styled from 'styled-components';\n\nexport const HiddenInput = styled.input`\n clip: rect(0 0 0 0);\n position: absolute;\n height: 1px;\n width: 1px;\n margin: 0;\n`;\n","import { type Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { inputTypographyTypes, inputTokens as tokens } from './Input.tokens';\nimport { getFontStyling } from '../../Typography';\nimport {\n dangerInputfield,\n focusDangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../styling';\n\nimport { type StyledInputProps } from '.';\n\nconst { input, container } = tokens;\n\nexport const Input = styled.input`\n position: relative;\n color: ${input.base.color};\n border-radius: ${input.base.borderRadius};\n border: ${input.base.border};\n border-color: ${input.base.borderColor};\n background-color: ${input.base.backgroundColor};\n padding: ${input.base.padding};\n width: 100%;\n margin: 0;\n box-sizing: border-box;\n box-shadow: none;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s,\n background-color 0.2s;\n }\n &[type='text'],\n &[type='password'],\n &[type='number'],\n &[type='tel'],\n &[type='date'],\n &[type='url'],\n &[type='email'],\n &[type='search'],\n &[type='datetime-local'] {\n -webkit-appearance: none;\n }\n &::selection {\n ${selection}\n }\n\n &:not(.disabled):not(.read-only):not(.active):hover,\n &:hover:enabled:read-write {\n ${hoverInputfield}\n }\n &:not(.disabled):not(.read-only):focus-within,\n &.active,\n &:focus:enabled:read-write,\n &:active:enabled:read-write {\n ${focusInputfield}\n }\n`;\n\nexport const StatefulInput = styled(Input).withConfig({\n shouldForwardProp: prop => {\n const stylingProps: (keyof StyledInputProps)[] = [\n 'componentSize',\n 'hasErrorMessage',\n 'prefixLength',\n 'suffixLength',\n ];\n return !stylingProps.some(styleProp => styleProp === prop);\n },\n})<StyledInputProps>`\n -webkit-appearance: textfield;\n\n padding-left: ${({ prefixLength, readOnly }) =>\n prefixLength &&\n (readOnly\n ? `${prefixLength}px !important`\n : `calc(${input.affix.gap}px + ${prefixLength}px) !important`)};\n padding-right: ${({ suffixLength, readOnly }) =>\n suffixLength &&\n (readOnly\n ? `${suffixLength}px !important`\n : `calc(${input.affix.gap}px + ${suffixLength}px) !important`)};\n ${({ componentSize }) =>\n componentSize &&\n css`\n padding: ${input.sizes[componentSize].padding};\n ${getFontStyling(inputTypographyTypes[componentSize])}\n `}\n\n ${({ hasErrorMessage }) =>\n hasErrorMessage &&\n css`\n ${dangerInputfield}\n &:not(.disabled):hover,\n &:hover:enabled:read-write {\n ${hoverDangerInputfield}\n }\n &:not(.disabled):focus-within,\n &:focus-within:enabled:read-write,\n &:active:enabled:read-write {\n ${focusDangerInputfield}\n }\n `}\n &:not(.disabled).read-only,\n &:enabled:read-only {\n border: none;\n outline: none;\n cursor: default;\n background-color: ${input.readOnly.backgroundColor};\n padding-left: 0;\n }\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n color: ${input.disabled.color};\n background-color: ${input.disabled.backgroundColor};\n }\n`;\n\ninterface OuterInputContainerProps {\n width?: Property.Width;\n}\n\nexport const OuterInputContainer = styled.div<OuterInputContainerProps>`\n position: relative;\n gap: ${container.gap};\n width: ${({ width }) => width};\n`;\n\n/**Brukes som container til input og ikon for posisjonering. */\n\nexport const InputContainer = styled.div`\n position: relative;\n`;\n\nexport const InputAffixContainer = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`;\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nimport { type InputTypographyTypes } from './Input.types';\n\nconst { colors, spacing, border } = ddsBaseTokens;\n\nconst { textInput: TextInput } = ddsReferenceTokens;\n\nexport const inputTypographyTypes: InputTypographyTypes = {\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst input = {\n base: {\n color: TextInput.input.textColor,\n borderRadius: TextInput.input.borderRadius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderColor: TextInput.input.borderColor,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n disabled: {\n color: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n readOnly: {\n backgroundColor: 'transparent',\n },\n sizes: {\n medium: {\n padding: spacing.SizesDdsSpacingX075,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n affix: {\n gap: spacing.SizesDdsSpacingX1NumberPx,\n },\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nexport const inputTokens = {\n input,\n container,\n};\n","import { forwardRef } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\nexport type CaptionProps = BaseComponentPropsWithChildren<\n HTMLTableCaptionElement,\n BaseTypographyProps\n>;\n\nexport const Caption = forwardRef<HTMLTableCaptionElement, CaptionProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"headingSans03\"\n as=\"caption\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nCaption.displayName = 'Caption';\n","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: unknown[]) {\n return classNames.filter(Boolean).join(' ');\n}\n","import { type HTMLAttributes, type PropsWithChildren } from 'react';\n\nimport { cn } from '../../../components/src/utils/dom';\n\n/**\n * Basetype for props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `HTMLAttributes`-props på komponenter som eksponeres\n * av designsystemet. Se også {@link BaseComponentPropsWithChildren} og\n * {@link getBaseHTMLProps}.\n *\n * @template TElement Element-type som genereres av komponenten.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template THTMLAttributesProps Standard `HTMLAttributes<T>` men kan overstyres for f.eks knapper hvis man trenger en annen basetype for `htmlProps`.\n */\nexport type BaseComponentProps<\n TElement extends Element,\n TOtherProps extends object = object,\n THTMLAttributesProps extends\n HTMLAttributes<TElement> = HTMLAttributes<TElement>,\n> = Pick<THTMLAttributesProps, 'id' | 'className'> &\n TOtherProps & {\n /**Ekstra HTML-attributter som vil settes på elementet som genereres. Untatt `id` og `className` som settes på toppnivå. */\n htmlProps?: THTMLAttributesProps;\n };\n\n/**\n * Utvidelese av {@link BaseComponentProps} med prop for `children`.\n *\n * {@link BaseComponentProps}\n */\nexport type BaseComponentPropsWithChildren<\n T extends Element,\n TProps extends object = object,\n THTMLProps extends HTMLAttributes<T> = HTMLAttributes<T>,\n> = BaseComponentProps<T, PropsWithChildren<TProps>, THTMLProps>;\n\ninterface GetBaseHTMLProps {\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n className: HTMLAttributes<T>['className'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n}\n\n/**\n * Slår sammen id, className, htmlProps og unknownProps til ett objekt\n * som kan spreades som baseprops for en komponent. `unknownProps` er\n * med for å sikre at aria- og data- attributter blir spreadet, alle\n * komponenter må derfor ta hensyn til `...rest` når de leser props.\n *\n * Typisk bruk:\n * ```\n * const Props = BaseComponentProps<HTMLElement, {\n * propA: string,\n * propB: string,\n * }>\n *\n * const MyComponent = (props: Props) => {\n * const { propA, propB, id, className, htmlProps, ...rest } = props;\n *\n * const wrapperProps = getBaseHTMLProps(id, className, htmlProps, rest)\n *\n * return <div {...wrapperProps}>innhold</div>\n * }\n * ```\n * @param id id fra props til komponenten.\n * @param className className for komponenten.\n * @param htmlProps htmlProps fra komponenten.\n * @param unknownProps andre ukjente props som skal spreades, kommer typisk fra `...rest` når man leser props til komponenten.\n * @returns Objekt med alle argumentene som kan spreades.\n *\n * Kan også kalles uten `className`-parameteret. Oppførselen er lik.\n */\nexport const getBaseHTMLProps: GetBaseHTMLProps = <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlPropsOrClassName:\n | HTMLAttributes<T>['className']\n | (HTMLAttributes<T> | undefined),\n htmlPropsOrUnknownProps: (HTMLAttributes<T> | undefined) | object,\n unknownPropsOrUndefined?: object,\n): HTMLAttributes<T> & object => {\n if (\n typeof htmlPropsOrClassName === 'string' ||\n unknownPropsOrUndefined != undefined\n ) {\n const {\n id: idFromHtmlProps,\n className: classNameFromHtmlProps,\n ...restHTMLProps\n } = (htmlPropsOrUnknownProps as HTMLAttributes<T> | undefined) ?? {};\n\n const propId = id ?? idFromHtmlProps;\n\n const propClassName = cn(\n htmlPropsOrClassName as string | undefined,\n classNameFromHtmlProps,\n );\n\n return {\n ...unknownPropsOrUndefined,\n ...restHTMLProps,\n ...(propClassName && { className: propClassName }),\n ...(propId && { id: propId }),\n };\n } else {\n const {\n id: htmlPropsId,\n className: htmlPropsClassName,\n ...restHTMLProps\n } = htmlPropsOrClassName ?? {};\n\n const propId = id ?? htmlPropsId;\n\n return {\n ...htmlPropsOrUnknownProps,\n ...restHTMLProps,\n ...(htmlPropsClassName && { className: htmlPropsClassName }),\n ...(propId && { id: propId }),\n };\n }\n};\n","import styled from 'styled-components';\n\nexport const TextOverflowEllipsisWrapper = styled.span`\n max-width: 100%;\n`;\n\nexport const TextOverflowEllipsisInner = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","import {\n type AnchorHTMLAttributes,\n type ElementType,\n type HTMLAttributes,\n forwardRef,\n} from 'react';\nimport styled, { type CSSObject, css } from 'styled-components';\n\nimport {\n getAdditionalFontStyle,\n getAnchorStyling,\n getMarginStyling,\n} from './Typography.styles';\nimport {\n type AnchorTypographyType,\n type LabelTypographyType,\n type OtherTypographyType,\n type TypographyComponentProps,\n type TypographyInteractionStyling,\n type TypographyType,\n} from './Typography.types';\nimport { getElementType } from './Typography.utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { type TextColor, getTextColor } from '../../../utils';\nimport { selection } from '../../helpers';\nimport { typographyTokens as tokens } from '../Typography.tokens';\n\ninterface StyledTypographyProps {\n as: ElementType;\n typographyType: TypographyType;\n withMargins?: boolean;\n color: TextColor;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n interactionProps?: TypographyInteractionStyling;\n externalLink?: boolean;\n}\n\nconst StyledTypography = styled.p.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledTypographyProps)[] = [\n 'externalLink',\n 'typographyType',\n 'withMargins',\n 'interactionProps',\n 'bold',\n 'italic',\n 'underline',\n 'color',\n 'as',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledTypographyProps>`\n user-select: text;\n &::selection,\n *::selection {\n ${selection}\n }\n\n ${({ typographyType, externalLink, interactionProps }) =>\n typographyType === 'a'\n ? css`\n ${getAnchorStyling(externalLink, interactionProps)}\n `\n : css`\n color: ${tokens.typographyType[typographyType].base.color};\n ${tokens.typographyType[typographyType].base.font};\n `}\n\n ${({ interactionProps }) =>\n interactionProps?.hover &&\n css`\n &:hover {\n ${interactionProps.hover as CSSObject}\n }\n `}\n ${({ interactionProps }) =>\n interactionProps?.active &&\n css`\n &:active {\n ${interactionProps.active as CSSObject}\n }\n `}\n\n color: ${({ color }) => getTextColor(color)};\n\n ${({ typographyType, as, withMargins }) =>\n getMarginStyling(typographyType, as, withMargins)}\n\n ${({ bold, italic, underline }) =>\n getAdditionalFontStyle(bold, italic, underline)};\n`;\n\ntype AnchorTypographyProps = BaseComponentProps<\n HTMLAnchorElement,\n TypographyComponentProps & {\n /**nativ `href`-prop ved `typographyType='a'`. */\n href?: string | undefined;\n\n /** Spesifiserer om lenka er ekstern ved `typographyType='a'` eller `as='a'`.*/\n externalLink?: boolean;\n\n /**nativ `target`-prop ved `typographyType='a'`. */\n target?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n>;\n\ntype LabelTypographyProps = BaseComponentProps<\n HTMLLabelElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLLabelElement>\n>;\n\ntype OtherTypographyProps = BaseComponentProps<\n HTMLElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLElement>\n>;\n\nexport type TypographyProps =\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: AnchorTypographyType;\n } & AnchorTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: LabelTypographyType;\n } & LabelTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: OtherTypographyType;\n } & OtherTypographyProps);\n\nconst isAnchorProps = (\n props: TypographyProps,\n): props is AnchorTypographyProps => props.typographyType === 'a';\n\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(\n (props, ref) => {\n const {\n typographyType = 'bodySans02',\n as: propAs,\n children,\n style,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { style: htmlPropsStyle, ...restHtmlProps } = htmlProps;\n\n const as = propAs ? propAs : getElementType(typographyType as string);\n\n let relProp;\n let targetProp;\n let externalLinkProp;\n if (isAnchorProps(props)) {\n const { externalLink, target } = props;\n relProp = as === 'a' ? 'noopener noreferer' : undefined;\n targetProp = as !== 'a' ? undefined : externalLink ? '_blank' : target;\n externalLinkProp = as === 'a' && externalLink ? externalLink : undefined;\n }\n\n const typographyProps = {\n ...getBaseHTMLProps<HTMLElement>(id, className, restHtmlProps, rest),\n typographyType,\n as,\n style: { ...htmlPropsStyle, ...style },\n rel: relProp,\n target: targetProp,\n externalLink: externalLinkProp,\n };\n\n return (\n <StyledTypography ref={ref} {...typographyProps}>\n {children}\n </StyledTypography>\n );\n },\n);\n\nTypography.displayName = 'Typography';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type ElementType } from 'react';\nimport { type CSSObject, css } from 'styled-components';\n\nimport OpenExternalIcon from './openExternal.svg';\nimport {\n type StaticTypographyType,\n type TypographyInteractionStyling,\n type TypographyType,\n} from './Typography.types';\nimport { isHeading, isInlineElement } from './Typography.utils';\nimport { typographyTokens as tokens } from '../Typography.tokens';\n\nconst { border, colors } = ddsBaseTokens;\n\nexport const focusVisibleLink = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusBaseStroke,\n color: colors.DdsColorNeutralsWhite,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkOnDark = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusOndarkStroke,\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkTransitionValue =\n 'background-color 0.2s, text-decoration 0.2s, color 0.2s';\n\nexport const getFontStyling = (\n type: StaticTypographyType,\n withColor?: boolean,\n) => {\n return {\n color: withColor ? tokens.typographyType[type].base.color : undefined,\n ...tokens.typographyType[type].base.font,\n };\n};\n\nexport const getAdditionalFontStyle = (\n bold?: boolean,\n italic?: boolean,\n underline?: boolean,\n) => {\n return css`\n ${bold &&\n css`\n font-weight: ${tokens.style.bold.fontWeight};\n `}\n ${italic &&\n css`\n font-style: italic;\n `}\n ${underline &&\n css`\n text-decoration: underline;\n `}\n `;\n};\n\nexport const getMarginStyling = (\n typographyType: TypographyType,\n element: ElementType,\n withMargins?: boolean,\n) =>\n withMargins\n ? css`\n ${isInlineElement(element) &&\n element !== 'a' &&\n css`\n display: block;\n `}\n margin-top: ${tokens.typographyType[typographyType].margins.marginTop};\n margin-bottom: ${tokens.typographyType[typographyType].margins\n .marginBottom};\n ${isHeading(typographyType) &&\n css`\n padding-top: ${tokens.typographyType[typographyType].margins\n .paddingTop};\n `}\n `\n : css`\n margin: 0;\n `;\n\nexport const getAnchorStyling = (\n external?: boolean,\n interactionStyling?: TypographyInteractionStyling,\n typographyType?: StaticTypographyType,\n withMargins?: boolean,\n) => css`\n ${typographyType\n ? css`\n ${tokens.typographyType[typographyType].base.font};\n ${getMarginStyling(typographyType, 'a', withMargins)}\n `\n : css`\n font: inherit;\n ${getMarginStyling('a', 'a', withMargins)}\n `}\n color: ${tokens.typographyType.a.base.color};\n width: fit-content;\n text-decoration: underline;\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleLinkTransitionValue};\n }\n ${external &&\n css`\n padding-right: calc(1em + ${tokens.typographyType.a.icon.marginLeft});\n position: relative;\n &::after {\n mask: ${`url('${OpenExternalIcon}')`} no-repeat center / contain;\n background: 0 0;\n background-color: currentColor;\n width: 1em;\n height: 1em;\n content: '';\n position: absolute;\n margin-top: ${tokens.typographyType.a.icon.marginTop};\n margin-left: ${tokens.typographyType.a.icon.marginLeft};\n }\n `}\n &:hover {\n color: ${tokens.typographyType.a.hover.color};\n ${interactionStyling?.hover &&\n css`\n ${interactionStyling.hover as CSSObject}\n `}\n }\n ${interactionStyling?.active &&\n css`\n &:active {\n ${interactionStyling.active as CSSObject}\n }\n `}\n &:focus-visible, &.focus-visible, &:focus-visible::selection, &.focus-visible::selection {\n ${focusVisibleLink}\n }\n`;\n","import { type ElementType } from 'react';\n\nimport {\n type InlineElement,\n type TypographyBodyType,\n type TypographyHeadingType,\n type TypographyType,\n} from './Typography.types';\n\nexport const defaultTypographyType: TypographyBodyType = 'bodySans02';\n\nexport const getElementType = (element: string): ElementType => {\n switch (element) {\n case 'a':\n return 'a';\n case 'headingSans01':\n return 'h6';\n case 'headingSans02':\n return 'h5';\n case 'headingSans03':\n return 'h4';\n case 'headingSans04':\n return 'h3';\n case 'headingSans05':\n return 'h2';\n case 'headingSans06':\n case 'headingSans07':\n case 'headingSans08':\n return 'h1';\n case 'supportingStyleLabel01':\n return 'label';\n case 'bodySans01':\n case 'bodySans02':\n case 'bodySans03':\n case 'bodySans04':\n case 'leadSans01':\n case 'leadSans02':\n case 'leadSans03':\n case 'leadSans04':\n case 'leadSans05':\n case 'supportingStyleHelperText01':\n case 'supportingStylePlaceholderText01':\n case 'supportingStylePlaceholderText02':\n case 'supportingStylePlaceholderText03':\n case 'supportingStyleTiny01':\n case 'supportingStyleTiny02':\n default:\n return 'p';\n }\n};\n\nexport const isHeading = (\n type: TypographyType,\n): type is TypographyHeadingType => {\n return true;\n};\n\nexport const inlineElements: ElementType[] = [\n 'a',\n 'abbr',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'br',\n 'button',\n 'canvas',\n 'cite',\n 'code',\n 'data',\n 'datalist',\n 'del',\n 'dfn',\n 'em',\n 'embed',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'map',\n 'mark',\n 'meter',\n 'noscript',\n 'object',\n 'output',\n 'picture',\n 'progress',\n 'q',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'svg',\n 'template',\n 'textarea',\n 'time',\n 'u',\n 'var',\n 'video',\n 'wbr',\n];\n\nexport const isInlineElement = (as: ElementType): as is InlineElement =>\n inlineElements.indexOf(as) !== -1;\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, fontPackages, spacing } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst a = {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n icon: {\n marginTop: spacing.SizesDdsSpacingX025,\n marginLeft: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst bold = {\n fontWeight: 600,\n};\n\nconst headingSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_01.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans01Top,\n },\n};\n\nconst headingSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_02.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans02Top,\n },\n};\n\nconst headingSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_03.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans03Top,\n },\n};\n\nconst headingSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_04.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans04Top,\n },\n};\n\nconst headingSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_05.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans05Top,\n },\n};\n\nconst headingSans06 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_06.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_06.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans06Top,\n },\n};\n\nconst headingSans07 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_07.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_07.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans07Top,\n },\n};\n\nconst headingSans08 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_08.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_08.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans08Top,\n },\n};\n\nconst bodySans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_05.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleLabel01 = {\n base: {\n color: colors.DdsColorNeutralsGray7,\n font: fontPackages.supportingStyle_label_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleHelperText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_helpertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStylePlaceholderText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText02 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_02.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText03 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_03.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_02.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n },\n};\n\nexport const typographyTokens = {\n typographyType: {\n a,\n headingSans01,\n headingSans02,\n headingSans03,\n headingSans04,\n headingSans05,\n headingSans06,\n headingSans07,\n headingSans08,\n bodySans01,\n bodySans02,\n bodySans03,\n bodySans04,\n leadSans01,\n leadSans02,\n leadSans03,\n leadSans04,\n leadSans05,\n supportingStyleLabel01,\n supportingStyleHelperText01,\n supportingStylePlaceholderText01,\n supportingStylePlaceholderText02,\n supportingStylePlaceholderText03,\n supportingStyleTiny01,\n supportingStyleTiny02,\n },\n style: {\n bold,\n },\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { type Property } from 'csstype';\n\nconst { colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport type ColorAlphaFormat = 'hex8' | 'decimal';\n\nexport const convertAlpha = (\n value: number | string,\n typeFrom: ColorAlphaFormat,\n typeTo: ColorAlphaFormat,\n) => {\n if (typeFrom === 'decimal' && typeTo === 'hex8') {\n const numberValue = Number(value);\n\n if (typeof numberValue !== 'number' || numberValue > 1 || numberValue < 0)\n return '';\n const hex8 = Math.round(\n 255 * (Math.round(numberValue * 100) / 100),\n ).toString(16);\n\n return hex8.length === 1 ? '0' + hex8 : hex8;\n }\n if (typeFrom === 'hex8' && typeTo === 'decimal') {\n const regexCheck = new RegExp(/^[0-9a-fA-F]+$/).test(value.toString());\n if (value.toString().length > 2 || regexCheck === false) return '';\n const decimal =\n Math.round((parseInt(value.toString(), 16) / 256) * 100) / 100;\n return decimal;\n }\n};\n\nexport const hexToRGBA = (hex: string): string => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16),\n alpha = hex.length === 9 ? hex.slice(7, 9) : 'ff';\n\n return `rgba(${r}, ${g}, ${b}, ${convertAlpha(alpha, 'hex8', 'decimal')})`;\n};\n\nconst getRGBValues = (value: string) =>\n value.replace(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i);\n\nexport const addAlphaToRGB = (rgb: string, alpha: number | string) => {\n const values = getRGBValues(rgb);\n\n return values\n ? `rgba(${values[1]}, ${values[2]}, ${values[3]}, ${alpha})`\n : '';\n};\n\nexport const RGBToHex = (value: string): string => {\n const rgb = getRGBValues(value);\n const alpha = (rgb?.[4] ?? '').trim();\n const hex = rgb\n ? '#' +\n (parseInt(rgb[1]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[2]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[3]) | (1 << 8)).toString(16).slice(1) +\n convertAlpha(alpha, 'decimal', 'hex8')\n : '';\n\n return hex;\n};\n\nexport const changeRGBAAlpha = (value: string, alpha: number): string => {\n if (!value.startsWith('rgba(') || !value.endsWith(')')) {\n return '';\n }\n\n return value.replace(/[\\d.]+\\)$/g, alpha.toString() + ')');\n};\n\nexport const textColors = {\n interactive: colors.DdsColorInteractiveBase,\n primary: colors.DdsColorPrimaryBase,\n danger: colors.DdsColorDangerBase,\n success: colors.DdsColorSuccessBase,\n warning: colors.DdsColorWarningBase,\n onLight: textDefault.textColor,\n onDark: colors.DdsColorNeutralsWhite,\n gray1: colors.DdsColorNeutralsGray1,\n gray2: colors.DdsColorNeutralsGray2,\n gray3: colors.DdsColorNeutralsGray3,\n gray4: colors.DdsColorNeutralsGray4,\n gray5: colors.DdsColorNeutralsGray5,\n gray6: colors.DdsColorNeutralsGray6,\n gray7: colors.DdsColorNeutralsGray7,\n gray8: colors.DdsColorNeutralsGray8,\n gray9: colors.DdsColorNeutralsGray9,\n};\n\nexport type DDSTextColor =\n | 'interactive'\n | 'primary'\n | 'danger'\n | 'warning'\n | 'success'\n | 'onLight'\n | 'onDark'\n | 'gray1'\n | 'gray2'\n | 'gray3'\n | 'gray4'\n | 'gray5'\n | 'gray6'\n | 'gray7'\n | 'gray8'\n | 'gray9';\n\nexport const textColorsArray = [\n 'interactive',\n 'primary',\n 'danger',\n 'success',\n 'warning',\n 'onLight',\n 'onDark',\n 'gray1',\n 'gray2',\n 'gray3',\n 'gray4',\n 'gray5',\n 'gray6',\n 'gray7',\n 'gray8',\n 'gray9',\n];\n\nexport type TextColor = DDSTextColor | Property.Color;\n\nexport function isTextColor(color: string): color is DDSTextColor {\n return textColorsArray.indexOf(color) !== -1;\n}\n\nexport const getTextColor = (color: TextColor): TextColor => {\n if (isTextColor(color)) return textColors[color];\n return color;\n};\n","import { type Callback } from '../types';\n\nexport const combineHandlers = <T,>(\n handler1?: Callback<T>,\n handler2?: Callback<T>,\n): Callback<T> => {\n const callback: Callback<T> = event => {\n handler1 && handler1(event);\n handler2 && handler2(event);\n };\n return callback;\n};\n","import { type RefObject } from 'react';\n\nexport function getFocusableElements<T extends HTMLElement>(\n elementRef: RefObject<T>,\n): NodeListOf<HTMLElement> | [] {\n return elementRef && elementRef.current\n ? elementRef.current.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n : [];\n}\n","import { type InputSize } from '../components/helpers';\nimport { type IconSize } from '../components/Icon';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'tiny':\n return 'small';\n }\n};\n","export const derivativeIdGenerator = (prefix: string, suffix: string): string =>\n `${prefix}-${suffix}`;\n\nexport const spaceSeparatedIdListGenerator = (\n values: (string | undefined)[],\n): string | undefined => {\n const filtered = values.filter(Boolean);\n\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ErrorIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\ninterface WrapperProps {\n messageType: InputMessageType;\n}\n\nconst InputMessageWrapper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'messageType',\n})<WrapperProps>`\n display: flex;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n ${({ messageType }) =>\n messageType === 'error'\n ? css`\n color: ${tokens.message.error.color};\n background-color: ${tokens.message.error.backgroundColor};\n padding: ${tokens.message.error.padding};\n gap: ${tokens.message.error.gap};\n `\n : ''}\n svg {\n margin-top: ${tokens.icon.marginTop};\n }\n`;\n\nexport type InputMessageType = 'error' | 'tip';\n\nexport type InputMessageProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Meldingen som vises til brukeren. */\n message: string;\n /** Formålet med meldingen. Påvirker styling. */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = forwardRef<HTMLDivElement, InputMessageProps>(\n (props, ref) => {\n const { message, messageType, id, className, htmlProps, ...rest } = props;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n messageType,\n };\n\n const isError = messageType === 'error';\n\n return (\n <InputMessageWrapper {...wrapperProps}>\n {isError && <Icon icon={ErrorIcon} iconSize=\"inherit\" />}\n <Typography\n typographyType={\n isError ? 'supportingStyleLabel01' : 'supportingStyleHelperText01'\n }\n as=\"span\"\n bold={isError ? true : undefined}\n color={isError ? tokens.message.error.color : undefined}\n >\n {message}\n </Typography>\n </InputMessageWrapper>\n );\n },\n);\n\nInputMessage.displayName = 'InputMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst message = {\n tip: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n error: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type Property } from 'csstype';\n\nimport { type SvgIcon } from './utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nconst getSize = (iconSize: IconSize): string => {\n switch (iconSize) {\n case 'small':\n return ddsBaseTokens.iconSizes.DdsIconsizeSmall;\n case 'medium':\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n case 'large':\n return ddsBaseTokens.iconSizes.DdsIconsizeLarge;\n case 'inherit':\n return '1em';\n default:\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n }\n};\n\nexport type IconSize = 'small' | 'medium' | 'large' | 'inherit';\n\nexport type IconProps = BaseComponentProps<\n SVGSVGElement,\n {\n /**Ikonet importert fra `@norges-domstoler/dds-components`. */\n icon: SvgIcon;\n /**Størrelsen på ikonet. */\n iconSize?: IconSize;\n /**Fargen på ikonet. */\n color?: Property.Color;\n }\n>;\n\nexport function Icon(props: IconProps) {\n const {\n id,\n iconSize = 'medium',\n color = 'currentcolor',\n icon,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const { title, 'aria-hidden': ariaHidden = true } = htmlProps;\n\n const size = getSize(iconSize);\n\n return icon({\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n title,\n height: size,\n width: size,\n fill: color,\n 'aria-hidden': ariaHidden,\n });\n}\n\nIcon.displayName = 'Icon';\n","import { type SVGAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst size = 24;\nconst sizePx = `${size}px`;\n\ntype StyledSvgProps = SVGAttributes<SVGSVGElement>;\n\nexport const StyledSvg = styled.svg.attrs<StyledSvgProps>(\n ({ height, width, fill }) => {\n return {\n height: height ? height : sizePx,\n width: width ? width : sizePx,\n fill: fill ? fill : 'currentColor',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `0 0 ${size} ${size}`,\n };\n },\n)<StyledSvgProps>`\n display: inline-block;\n transition: fill 0.2s;\n flex-shrink: 0;\n`;\n","export * from './addressShielded';\nexport * from './agreement';\nexport * from './apps';\nexport * from './archive';\nexport * from './arrowDown';\nexport * from './arrowLeft';\nexport * from './arrowRight';\nexport * from './arrowUp';\nexport * from './attachment';\nexport * from './block';\nexport * from './book';\nexport * from './build';\nexport * from './buildCircled';\nexport * from './calendar';\nexport * from './calendarMonth';\nexport * from './calendarViewDay';\nexport * from './calendarViewMonth';\nexport * from './calendarViewWeek';\nexport * from './call';\nexport * from './caring';\nexport * from './chat';\nexport * from './check';\nexport * from './checkCircled';\nexport * from './checklist';\nexport * from './chevronDown';\nexport * from './chevronFirst';\nexport * from './chevronLargeLeft';\nexport * from './chevronLargeRight';\nexport * from './chevronLast';\nexport * from './chevronLeft';\nexport * from './chevronRight';\nexport * from './chevronUp';\nexport * from './close';\nexport * from './closeSmall';\nexport * from './closeCircled';\nexport * from './cloud';\nexport * from './collapse';\nexport * from './comment';\nexport * from './copy';\nexport * from './court';\nexport * from './dateRange';\nexport * from './deaths';\nexport * from './doubleChevronLeft';\nexport * from './doubleChevronRight';\nexport * from './download';\nexport * from './downloadDone';\nexport * from './dragHandle';\nexport * from './edit';\nexport * from './error';\nexport * from './exclaim';\nexport * from './expand';\nexport * from './facebook';\nexport * from './family';\nexport * from './feedback';\nexport * from './file';\nexport * from './fileAdd';\nexport * from './fileShielded';\nexport * from './fileText';\nexport * from './filter';\nexport * from './filterList';\nexport * from './filterListOff';\nexport * from './filterOff';\nexport * from './findInPage';\nexport * from './flickr';\nexport * from './folder';\nexport * from './folderAdd';\nexport * from './folderShielded';\nexport * from './fullsceenExit';\nexport * from './fullscreen';\nexport * from './gavel';\nexport * from './help';\nexport * from './helpFilled';\nexport * from './home';\nexport * from './hourglassBottom';\nexport * from './hourglassDisabled';\nexport * from './hourglassEmpty';\nexport * from './hourglassFull';\nexport * from './hourglassTop';\nexport * from './image';\nexport * from './info';\nexport * from './instagram';\nexport * from './jordskifterett';\nexport * from './key';\nexport * from './lagmannsrett';\nexport * from './language';\nexport * from './link';\nexport * from './linkedIn';\nexport * from './linkOff';\nexport * from './list';\nexport * from './listAlt';\nexport * from './location';\nexport * from './lock';\nexport * from './lockOpen';\nexport * from './login';\nexport * from './logout';\nexport * from './mail';\nexport * from './mailOpen';\nexport * from './menu';\nexport * from './minus';\nexport * from './minusCircled';\nexport * from './moreHorizontal';\nexport * from './moreVertical';\nexport * from './notarial';\nexport * from './notifications';\nexport * from './notificationsOff';\nexport * from './onlineMeeting';\nexport * from './openExternal';\nexport * from './payout';\nexport * from './pdf';\nexport * from './person';\nexport * from './personAdd';\nexport * from './personShielded';\nexport * from './pin';\nexport * from './plus';\nexport * from './plusCircled';\nexport * from './print';\nexport * from './property';\nexport * from './publish';\nexport * from './questionAnswer';\nexport * from './receipt';\nexport * from './redo';\nexport * from './refresh';\nexport * from './replay';\nexport * from './search';\nexport * from './settings';\nexport * from './sms';\nexport * from './star';\nexport * from './starFilled';\nexport * from './starHalfFilled';\nexport * from './sync';\nexport * from './thumbdown';\nexport * from './thumbdownFilled';\nexport * from './thumbup';\nexport * from './thumbupFilled';\nexport * from './time';\nexport * from './tingrett';\nexport * from './tip';\nexport * from './trash';\nexport * from './twitter';\nexport * from './undo';\nexport * from './unfoldLess';\nexport * from './unfoldMore';\nexport * from './upload';\nexport * from './visibilityOff';\nexport * from './visibilityOn';\nexport * from './warning';\nexport * from './zoomIn';\nexport * from './zoomOut';\nexport * from './barChart';\nexport * from './barChartBoxed';\nexport * from './lineChart';\nexport * from './trendingUp';\nexport * from './trendingDown';\nexport * from './libraryAdd';\n","import { type SvgProps } from './propTypes';\nimport { StyledSvg } from './StyledSvg';\n\nexport function SvgWrapper(props: SvgProps) {\n const { title, children, ...rest } = props;\n\n return (\n <StyledSvg {...rest}>\n {title && <title>{title}</title>}\n {children}\n </StyledSvg>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function AddressShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 4V10H16.7889L12 5.69L7 10.19V18H9V12H14V14H11V20H5V12H2L12 3L16 6.6V4H19Z\" />\n <path d=\"M10 10H14C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10Z\" />\n <path d=\"M20 15V14C20 12.9 19.1 12 18 12C16.9 12 16 12.9 16 14V15C15.45 15 15 15.45 15 16V19C15 19.55 15.45 20 16 20H20C20.55 20 21 19.55 21 19V16C21 15.45 20.55 15 20 15ZM17 15V14C17 13.45 17.45 13 18 13C18.55 13 19 13.45 19 14V15H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AgreementIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.22 19.85c-.18.18-.5.21-.71 0-.18-.18-.21-.5 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.19.2-.51.19-.71 0-.21-.21-.18-.53 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.19-.19-.51 0-.71l3.39-3.39-1.42-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.2-.19-.51 0-.71L9.52 8.4l1.87 1.86c.95.95 2.59.94 3.54 0 .98-.98.98-2.56 0-3.54l-1.86-1.86.28-.28c.78-.78 2.05-.78 2.83 0l4.24 4.24c.78.78.78 2.05 0 2.83l-8.2 8.2zm9.61-6.78c1.56-1.56 1.56-4.09 0-5.66l-4.24-4.24c-1.56-1.56-4.09-1.56-5.66 0l-.28.28-.28-.28c-1.56-1.56-4.09-1.56-5.66 0L2.17 6.71C.75 8.13.62 10.34 1.77 11.9l1.45-1.45c-.39-.75-.26-1.7.37-2.33l3.54-3.54c.78-.78 2.05-.78 2.83 0l3.56 3.56c.18.18.21.5 0 .71-.21.21-.53.18-.71 0L9.52 5.57l-5.8 5.79c-.98.97-.98 2.56 0 3.54.39.39.89.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.54.31 1.03.7 1.42.47.47 1.1.73 1.77.73.67 0 1.3-.26 1.77-.73l8.21-8.19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AppsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ArchiveIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2zm-1 18H5V9h14v11zm1-13H4V4h16v3z\" />\n <path d=\"M9 12h6v2H9v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function ArrowDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ArrowLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ArrowRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ArrowUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AttachmentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 115 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 005 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function BlockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8 0 1.853-.63 3.55-1.682 4.904L7.096 5.682A7.965 7.965 0 0112 4zM5.682 7.096l11.222 11.222A7.965 7.965 0 0112 20c-4.43 0-8-3.57-8-8 0-1.853.63-3.55 1.682-4.904z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function BookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5-1.95 0-4.05.4-5.5 1.5v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\" />\n <path d=\"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zm4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function BuildIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.5 1c-.873 0-1.707.176-2.467.488l-1.388.57L7.585 6 6 7.586 2.059 3.645l-.57 1.388A6.474 6.474 0 001 7.5C1 11.078 3.922 14 7.5 14c.619 0 1.181-.183 1.748-.346l8.908 8.907a1.514 1.514 0 002.121 0l2.285-2.288a1.516 1.516 0 00-.002-2.119l-8.906-8.906c.162-.567.346-1.13.346-1.748C14 3.922 11.078 1 7.5 1zm0 2C9.998 3 12 5.002 12 7.5c0 .607-.122 1.182-.34 1.713l-.252.617 9.385 9.385-1.576 1.578-9.387-9.387-.617.254c-.53.219-1.105.34-1.713.34A4.484 4.484 0 013 7.5c0-.026.013-.047.014-.072L6 10.414 10.414 6 7.428 3.014c.025 0 .046-.014.072-.014z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function BuildCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.49 11.38c.43-1.22.17-2.64-.81-3.62a3.468 3.468 0 00-4.1-.59l2.35 2.35-1.41 1.41-2.35-2.35c-.71 1.32-.52 2.99.59 4.1.98.98 2.4 1.24 3.62.81l3.41 3.41c.2.2.51.2.71 0l1.4-1.4c.2-.2.2-.51 0-.71l-3.41-3.41z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CalendarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CalendarMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.6 3.2h-1.1V1h-2.2v2.2H7.5V1H5.3v2.2H4.2a2.19 2.19 0 00-2.189 2.2L2 20.8A2.2 2.2 0 004.2 23h15.4c1.21 0 2.2-.99 2.2-2.2V5.4c0-1.21-.99-2.2-2.2-2.2zm0 17.6H4.2v-11h15.4v11zm0-13.2H4.2V5.4h15.4v2.2zm-11 6.6H6.4V12h2.2v2.2zm4.4 0h-2.2V12H13v2.2zm4.4 0h-2.2V12h2.2v2.2zm-8.8 4.4H6.4v-2.2h2.2v2.2zm4.4 0h-2.2v-2.2H13v2.2zm4.4 0h-2.2v-2.2h2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CalendarViewDayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 17h18v2H3v-2zm16-5v1H5v-1h14zm2-2H3v5h18v-5zM3 6h18v2H3V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CalendarViewMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8 11H4V6h4v5zm6 0h-4V6h4v5zm6 0h-4V6h4v5zM8 18H4v-5h4v5zm6 0h-4v-5h4v5zm6 0h-4v-5h4v5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CalendarViewWeekIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-7 2h2.5v12H13V6zm-2 12H8.5V6H11v12zM4 6h2.5v12H4V6zm16 12h-2.5V6H20v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.54 5c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19zM7.5 3H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 00-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 01-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CaringIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 13c3.09-2.81 6-5.44 6-7.7C22 3.45 20.55 2 18.7 2c-1.04 0-2.05.49-2.7 1.25C15.34 2.49 14.34 2 13.3 2 11.45 2 10 3.45 10 5.3c0 2.26 2.91 4.89 6 7.7zm-2.7-9c.44 0 .89.21 1.18.55L16 6.34l1.52-1.79c.29-.34.74-.55 1.18-.55.74 0 1.3.56 1.3 1.3 0 1.12-2.04 3.17-4 4.99-1.96-1.82-4-3.88-4-4.99 0-.74.56-1.3 1.3-1.3zM19 16h-2c0-1.2-.75-2.28-1.87-2.7L8.97 11H1v11h6v-1.44l7 1.94 8-2.5v-1c0-1.66-1.34-3-3-3zM3 20v-7h2v7H3zm10.97.41L7 18.48V13h1.61l5.82 2.17c.34.13.57.46.57.83 0 0-1.99-.05-2.3-.15l-2.38-.79-.63 1.9 2.38.79c.51.17 1.04.26 1.58.26H19c.39 0 .74.23.9.56l-5.93 1.84z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChatIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CheckIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.293 5.293L9 16.586l-4.293-4.293-1.414 1.414L9 19.414 21.707 6.707l-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CheckCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm4.293 4.293L10 14.586l-2.293-2.293-1.414 1.414L10 17.414l7.707-7.707-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChecklistIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 7h-9v2h9V7zm0 8h-9v2h9v-2zM5.54 11L2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 11zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronFirstIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6 1.41-1.41zM6 6h2v12H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronLargeLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronLargeRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronLastIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6-1.41 1.41zM16 6h2v12h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function ChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ChevronUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CloseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4.707 3.293L3.293 4.707 10.586 12l-7.293 7.293 1.414 1.414L12 13.414l7.293 7.293 1.414-1.414L13.414 12l7.293-7.293-1.414-1.414L12 10.586 4.707 3.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function CloseSmallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CloseCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zM8.707 7.293L7.293 8.707 10.586 12l-3.293 3.293 1.414 1.414L12 13.414l3.293 3.293 1.414-1.414L13.414 12l3.293-3.293-1.414-1.414L12 10.586 8.707 7.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CloudIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11A2.98 2.98 0 0122 15c0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95A5.47 5.47 0 0112 6zm0-2C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96A7.49 7.49 0 0012 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CollapseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 3.41L16.71 8.7 20 12h-8V4l3.29 3.29L20.59 2 22 3.41zM3.41 22l5.29-5.29L12 20v-8H4l3.29 3.29L2 20.59 3.41 22z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CommentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4h16v12H5.17L4 17.17V4zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h8v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CopyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CourtIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74zm0-2.26L2 6v2h19V6l-9.5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DateRangeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.4 10.9h2.2v2.2H6.4v-2.2zm15.4-5.5v15.4c0 1.21-.99 2.2-2.2 2.2H4.2A2.2 2.2 0 012 20.8l.011-15.4c0-1.21.968-2.2 2.189-2.2h1.1V1h2.2v2.2h8.8V1h2.2v2.2h1.1c1.21 0 2.2.99 2.2 2.2zM4.2 7.6h15.4V5.4H4.2v2.2zm15.4 13.2v-11H4.2v11h15.4zm-4.4-7.7h2.2v-2.2h-2.2v2.2zm-4.4 0H13v-2.2h-2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DeathsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 3c-.96 0-1.9.25-2.73.69L12 9h3l-3 10 1-9h-3l1.54-5.39C10.47 3.61 9.01 3 7.5 3 4.42 3 2 5.42 2 8.5c0 4.13 4.16 7.18 10 12.5 5.47-4.94 10-8.26 10-12.5C22 5.42 19.58 3 16.5 3zm-6.26 13.73C6.45 13.34 4 11 4 8.5 4 6.54 5.54 5 7.5 5c.59 0 1.19.15 1.73.42L7.35 12h3.42l-.53 4.73zm4.89-1.2L17.69 7h-2.91l.61-1.82c.36-.12.74-.18 1.11-.18C18.46 5 20 6.54 20 8.5c0 2.21-2.02 4.43-4.87 7.03z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DoubleChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 18.414,7.41398L 17,6L 11,12L 17,18L 18.414,16.586L 13.828,12L 18.414,7.41398 Z M 12.414,7.41398L 11,6L 5.00001,12L 11,18L 12.414,16.586L 7.82801,12L 12.414,7.41398 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DoubleChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 5.586,7.41398L 7,6L 13,12L 7,18L 5.586,16.586L 10.172,12L 5.586,7.41398 Z M 11.586,7.41399L 13,6.00001L 19,12L 13,18L 11.586,16.586L 16.172,12L 11.586,7.41399 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DownloadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 5v6h1.17L12 13.17 9.83 11H11V5h2zm2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DownloadDoneIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.13 5.41L18.72 4l-9.19 9.19-4.25-4.24-1.41 1.41 5.66 5.66 10.6-10.61zM5 18h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function DragHandleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function EditIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83a.996.996 0 000-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ErrorIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99zM12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ExclaimIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 21a2 2 0 100-4 2 2 0 000 4zM10 3h4v12h-4V3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ExpandIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10L21 11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FacebookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.625 2.625H3.375a.75.75 0 00-.75.75v17.25c0 .415.335.75.75.75h17.25a.75.75 0 00.75-.75V3.375a.75.75 0 00-.75-.75zm-2.166 5.473h-1.497c-1.175 0-1.402.557-1.402 1.378v1.807h2.803l-.365 2.829H15.56v7.263h-2.923v-7.26h-2.444v-2.832h2.444V9.197c0-2.421 1.48-3.74 3.64-3.74 1.036 0 1.925.077 2.185.112v2.529h-.003z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FamilyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.66 13.07c.15 0 .29-.01.43-.03A3.15 3.15 0 0012 15c1.31 0 2.44-.81 2.91-1.96a3.144 3.144 0 003.57-3.11c0-.71-.25-1.39-.67-1.93.43-.54.67-1.22.67-1.93a3.144 3.144 0 00-3.57-3.11A3.15 3.15 0 0012 1c-1.31 0-2.44.81-2.91 1.96a3.145 3.145 0 00-3.57 3.11c0 .71.25 1.39.67 1.93-.43.54-.68 1.22-.68 1.93 0 1.73 1.41 3.14 3.15 3.14zM12 13c-.62 0-1.12-.49-1.14-1.1l.12-1.09c.32.12.66.19 1.02.19s.71-.07 1.03-.19l.11 1.09c-.02.61-.52 1.1-1.14 1.1zm3.34-1.93c-.24 0-.46-.07-.64-.2l-.81-.57c.55-.45.94-1.09 1.06-1.83l.88.42c.4.19.66.59.66 1.03 0 .64-.52 1.15-1.15 1.15zm-.65-5.94c.2-.13.42-.2.65-.2.63 0 1.14.51 1.14 1.14 0 .44-.25.83-.66 1.03l-.88.42c-.12-.74-.51-1.38-1.07-1.83l.82-.56zM12 3c.62 0 1.12.49 1.14 1.1l-.11 1.09C12.71 5.07 12.36 5 12 5s-.7.07-1.02.19l-.12-1.09c.02-.61.52-1.1 1.14-1.1zM8.66 4.93c.24 0 .46.07.64.2l.81.56c-.55.45-.94 1.09-1.06 1.83l-.88-.42c-.4-.2-.66-.59-.66-1.03 0-.63.52-1.14 1.15-1.14zM8.17 8.9l.88-.42c.12.74.51 1.38 1.07 1.83l-.81.55c-.2.13-.42.2-.65.2-.63 0-1.14-.51-1.14-1.14-.01-.43.25-.82.65-1.02zM12 22a9 9 0 009-9 9 9 0 00-9 9zm2.44-2.44c.71-1.9 2.22-3.42 4.12-4.12a7.04 7.04 0 01-4.12 4.12zM3 13a9 9 0 009 9 9 9 0 00-9-9zm2.44 2.44c1.9.71 3.42 2.22 4.12 4.12a7.04 7.04 0 01-4.12-4.12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FeedbackIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2v-2zm0-6h2v4h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FileIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2c-1.094 0-2 .906-2 2v16c0 1.094.906 2 2 2h12c1.094 0 2-.906 2-2V8l-6-6H6zm0 2h7v5h5v11H6V4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FileAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3v-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FileShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 2H5C3.9 2 3 2.9 3 4V20C3 21.1 3.89 22 4.99 22H13V20H5V4H12V9H17V12H19V8L13 2Z\" />\n <path d=\"M20 17V16C20 14.9 19.1 14 18 14C16.9 14 16 14.9 16 16V17C15.45 17 15 17.45 15 18V21C15 21.55 15.45 22 16 22H20C20.55 22 21 21.55 21 21V18C21 17.45 20.55 17 20 17ZM17 17V16C17 15.45 17.45 15 18 15C18.55 15 19 15.45 19 16V17H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FileTextIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FilterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FilterListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FilterListOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10.83 8H21V6H8.83l2 2zm5 5H18v-2h-4.17l2 2zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41L14 16.83z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FilterOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.95 6l-3.57 4.55 1.43 1.43c1.03-1.31 4.98-6.37 4.98-6.37A.998.998 0 0019 4H6.83l2 2h8.12zM2.81 2.81L1.39 4.22 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.17l5.78 5.78 1.41-1.41L2.81 2.81z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FindInPageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 4h7l5 5v8.58l-1.84-1.84a4.992 4.992 0 00-.64-6.28A4.96 4.96 0 0012 8a5 5 0 00-4.612 3.077A4.98 4.98 0 008.47 16.51a4.982 4.982 0 006.28.63L17.6 20H6V4zm8.11 11.1c-.56.56-1.31.88-2.11.88-.8 0-1.55-.31-2.11-.88-.56-.56-.88-1.31-.88-2.11 0-.8.31-1.55.88-2.11.56-.57 1.31-.88 2.11-.88.8 0 1.55.31 2.11.88.56.56.88 1.31.88 2.11 0 .8-.31 1.55-.88 2.11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FlickrIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.75 1.5H2.25C1.00781 1.5 0 2.50781 0 3.75V20.25C0 21.4922 1.00781 22.5 2.25 22.5H18.75C19.9922 22.5 21 21.4922 21 20.25V3.75C21 2.50781 19.9922 1.5 18.75 1.5ZM6.77344 14.9531C5.12813 14.9531 3.79688 13.6219 3.79688 11.9766C3.79688 10.3313 5.12813 9 6.77344 9C8.41875 9 9.75 10.3313 9.75 11.9766C9.75 13.6219 8.41875 14.9531 6.77344 14.9531ZM14.2266 14.9531C12.5813 14.9531 11.25 13.6219 11.25 11.9766C11.25 10.3313 12.5813 9 14.2266 9C15.8719 9 17.2031 10.3313 17.2031 11.9766C17.2031 13.6219 15.8719 14.9531 14.2266 14.9531Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FolderIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4c-1.094 0-2 .906-2 2v12c0 1.094.906 2 2 2h16c1.094 0 2-.906 2-2V8c0-1.094-.906-2-2-2h-8l-2-2H4zm0 2h5.172l2 2H20v10H4V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FolderAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FolderShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M1 6C1 4.90575 1.90575 4 3 4H9L11 6H19C20.0943 6 21 6.90575 21 8V10H19V8H10.1719L8.17188 6H3V18H15V20H3C1.90575 20 1 19.0943 1 18V6Z\" />\n <path d=\"M22 15V14C22 12.9 21.1 12 20 12C18.9 12 18 12.9 18 14V15C17.45 15 17 15.45 17 16V19C17 19.55 17.45 20 18 20H22C22.55 20 23 19.55 23 19V16C23 15.45 22.55 15 22 15ZM19 15V14C19 13.45 19.45 13 20 13C20.55 13 21 13.45 21 14V15H19Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FullscreenExitIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function FullscreenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function GavelIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.112 15.528L3.302 9.86l1.393-1.43 5.81 5.669-1.393 1.429zM15.385 9.097L9.575 3.43 10.967 2l5.81 5.668-1.393 1.43zM21.606 21.44l-9.095-8.87 1.394-1.43L23 20.012l-1.394 1.429zM10.802 12.993L5.75 8.066l3.485-3.573 5.052 4.929-3.485 3.572zM3.998 18.686h8.984v1.996H3.998v-1.996z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 20.183h10.98v1.997H3v-1.997z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HelpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HelpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HomeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2.1L1 12h3v9h7v-6h2v6h7v-9h3L12 2.1zm0 2.691l6 5.4V19h-3v-6H9v6H6v-8.809l6-5.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HourglassBottom(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m18 22-.01-6L14 12l3.99-4.01L18 2H6v6l4 4-4 3.99V22h12zM8 7.5V4h8v3.5l-4 4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HourglassDisabled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 4h8v3.5l-2.84 2.84 1.25 1.25L18 8.01 17.99 8H18V2H6v1.17l2 2zM2.1 2.1.69 3.51l8.9 8.9L6 16l.01.01H6V22h12v-1.17l2.49 2.49 1.41-1.41L2.1 2.1zM16 20H8v-3.5l2.84-2.84L16 18.83V20z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HourglassEmpty(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HourglassFull(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function HourglassTop(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m6 2 .01 6L10 12l-3.99 4.01L6 22h12v-6l-4-4 4-3.99V2H6zm10 14.5V20H8v-3.5l4-4 4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function ImageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 5v14H5V5h14zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86L11 16l-2-2.86L6 17h12l-3.86-5.14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function InfoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 3v2h2V7h-2zm0 4v6h2v-6h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function InstagramIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 7.193A4.8 4.8 0 007.193 12 4.8 4.8 0 0012 16.807 4.8 4.8 0 0016.807 12 4.8 4.8 0 0012 7.193zm0 7.931A3.13 3.13 0 018.876 12 3.13 3.13 0 0112 8.876 3.13 3.13 0 0115.124 12 3.13 3.13 0 0112 15.124zm5.004-9.248a1.121 1.121 0 100 2.245A1.12 1.12 0 0018.04 6.57a1.122 1.122 0 00-1.037-.693zM21.37 12c0-1.294.012-2.576-.06-3.867-.073-1.5-.415-2.831-1.512-3.928-1.1-1.1-2.428-1.44-3.928-1.512-1.294-.073-2.576-.061-3.868-.061-1.293 0-2.575-.012-3.867.061-1.5.073-2.831.415-3.928 1.512-1.1 1.099-1.439 2.428-1.512 3.928-.072 1.294-.06 2.576-.06 3.867s-.012 2.576.06 3.867c.073 1.5.415 2.831 1.512 3.928 1.1 1.1 2.428 1.44 3.928 1.512 1.294.073 2.576.061 3.867.061 1.294 0 2.576.012 3.867-.061 1.5-.073 2.832-.415 3.929-1.512 1.099-1.099 1.439-2.428 1.511-3.928.075-1.291.061-2.573.061-3.867zm-2.062 5.527A2.978 2.978 0 0118.6 18.6c-.33.33-.647.537-1.073.708-1.233.49-4.16.38-5.527.38-1.366 0-4.296.11-5.529-.378a2.98 2.98 0 01-1.073-.708 2.999 2.999 0 01-.708-1.073c-.488-1.235-.378-4.163-.378-5.529 0-1.366-.11-4.296.378-5.529.17-.426.377-.745.708-1.073A3.03 3.03 0 016.47 4.69c1.233-.488 4.163-.377 5.529-.377 1.366 0 4.296-.11 5.529.377.427.17.745.377 1.073.708.33.33.537.647.708 1.073.488 1.233.378 4.163.378 5.529 0 1.366.11 4.294-.38 5.527z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function JordskifterettIcon(props: SvgProps) {\n const { title, ...rest } = props;\n return (\n <SvgWrapper\n width=\"24\"\n height=\"24\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n {title && <title>{title}</title>}\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function KeyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 10h-8.35A5.99 5.99 0 007 6c-3.31 0-6 2.69-6 6s2.69 6 6 6a5.99 5.99 0 005.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LagmannsrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 10h15.65v3.913H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function LanguageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 00-1.38-3.56A8.03 8.03 0 0118.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 015.08 16zm2.95-8H5.08a7.987 7.987 0 014.33-3.56A15.65 15.65 0 008.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 01-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LinkIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LinkedInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.838A1.838 1.838 0 012.838 1H21.16A1.836 1.836 0 0123 2.838V21.16A1.838 1.838 0 0121.161 23H2.838A1.839 1.839 0 011 21.161V2.838zm8.708 6.55h2.979v1.496c.43-.86 1.53-1.634 3.183-1.634 3.169 0 3.92 1.713 3.92 4.856v5.822h-3.207v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.145 1.089-2.145 2.8v5.106H9.708V9.388zm-5.5 10.403h3.208V9.25H4.208V19.791zM7.875 5.812a2.063 2.063 0 11-4.125.09 2.063 2.063 0 014.125-.09z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LinkOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.39 11L16 12.61V11h-1.61zM17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.27-.77 2.37-1.87 2.84l1.4 1.4A4.986 4.986 0 0022 12c0-2.76-2.24-5-5-5zM2 4.27l3.11 3.11A4.991 4.991 0 002 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4.01 1.41-1.41L3.41 2.86 2 4.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ListAltIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6v-2zM7 7h2v2H7V7zm0 4h2v2H7v-2zm0 4h2v2H7v-2zM20.1 3H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM19 19H5V5h14v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LocationIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C8.676 1 6 3.676 6 7v1c-.522 0-1.055.191-1.432.568C4.191 8.945 4 9.478 4 10v10c0 .522.191 1.055.568 1.432.377.377.91.568 1.432.568h12c.522 0 1.055-.191 1.432-.568.377-.377.568-.91.568-1.432V10c0-.522-.191-1.055-.568-1.432C19.055 8.191 18.522 8 18 8V7c0-3.324-2.676-6-6-6zm0 2c2.276 0 4 1.724 4 4v1H8V7c0-2.276 1.724-4 4-4zm-6 7h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LockOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C9.128 1 6.719 3.046 6.123 5.787l1.955.426C8.482 4.353 10.072 3 12 3c2.276 0 4 1.724 4 4v1H6c-1.093 0-2 .907-2 2v10c0 1.093.907 2 2 2h12c1.093 0 2-.907 2-2V10c0-1.093-.907-2-2-2V7c0-3.324-2.676-6-6-6zm-6 9h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LoginIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LogoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 8l-1.41 1.41L17.17 11H9v2h8.17l-1.58 1.58L17 16l4-4-4-4zM5 5h7V3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h7v-2H5V5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MailIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MailOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zm-2 0v.01L12 13 4 8l8-4.68L19.99 8zM4 18v-7.66l8 5.02 7.99-4.99L20 18H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MenuIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MinusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998H5v-2h14v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MinusCirledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function MoreHorizontalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 12a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function MoreVerticalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function NotarialIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function NotificationsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function NotificationsOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm0-15.5c2.49 0 4 2.02 4 4.5v.1l2 2V11c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.24.06-.47.15-.69.23l1.64 1.64c.18-.02.36-.05.55-.05zM5.41 3.35L4 4.76l2.81 2.81C6.29 8.57 6 9.74 6 11v5l-2 2v1h14.24l1.74 1.74 1.41-1.41L5.41 3.35zM16 17H8v-6c0-.68.12-1.32.34-1.9L16 16.76V17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function OnlineMeetingIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zm-6-5.4l3 2.4V7l-3 2.4V7H7v6h7v-2.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function OpenExternalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PayoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v4h5v12H6zm5-1h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4v-2h-2V9h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function PdfIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1v-2zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PersonIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9a2.1 2.1 0 110 4.199A2.1 2.1 0 0112 5.9zm0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1zM12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PersonAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9V6h-2v3h-3v2h3v3h2v-3h3V9h-3zM9 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm6.39 8.56C13.71 13.7 11.53 13 9 13s-4.71.7-6.39 1.56A2.97 2.97 0 001 17.22V20h16v-2.78c0-1.12-.61-2.15-1.61-2.66zM15 18H3v-.78c0-.38.2-.72.52-.88C4.71 15.73 6.63 15 9 15c2.37 0 4.29.73 5.48 1.34.32.16.52.5.52.88V18z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function PersonShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9C12.2758 5.9 12.5489 5.95432 12.8036 6.05985C13.0584 6.16539 13.2899 6.32007 13.4849 6.51508C13.6799 6.71008 13.8346 6.94158 13.9401 7.19636C14.0457 7.45115 14.1 7.72422 14.1 8C14.1 8.27578 14.0457 8.54885 13.9401 8.80364C13.8346 9.05842 13.6799 9.28992 13.4849 9.48492C13.2899 9.67993 13.0584 9.83461 12.8036 9.94015C12.5489 10.0457 12.2758 10.1 12 10.1C11.443 10.1 10.9089 9.87875 10.5151 9.48492C10.1212 9.0911 9.9 8.55695 9.9 8C9.9 7.44305 10.1212 6.9089 10.5151 6.51508C10.9089 6.12125 11.443 5.9 12 5.9ZM12 4C9.79 4 8 5.79 8 8C8 10.21 9.79 12 12 12C14.21 12 16 10.21 16 8C16 5.79 14.21 4 12 4Z\" />\n <path d=\"M5.9 18.1V17C5.9 16.36 9.03 14.9 12 14.9C12.3329 14.9 12.6677 14.9183 13 14.9518V13.0517C12.6402 13.0173 12.303 13 12 13C9.33 13 4 14.34 4 17V20H12V18.1H5.9Z\" />\n <path d=\"M19 15V14C19 12.9 18.1 12 17 12C15.9 12 15 12.9 15 14V15C14.45 15 14 15.45 14 16V19C14 19.55 14.45 20 15 20H19C19.55 20 20 19.55 20 19V16C20 15.45 19.55 15 19 15ZM16 15V14C16 13.45 16.45 13 17 13C17.55 13 18 13.45 18 14V15H16Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PinIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4h4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PlusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998h-6v6h-2v-6H5v-2h6v-6h2v6h6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PlusCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm-1 3v4H7v2h4v4h2v-4h4v-2h-4V7h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PrintIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\" />\n <path d=\"M18 12.5a1 1 0 100-2 1 1 0 000 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PropertyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 9.3V4h-3v2.6L12 3 2 12h3v8h6v-6h2v6h6v-8h3l-3-2.7zM17 18h-2v-6H9v6H7v-7.81l5-4.5 5 4.5V18z\" />\n <path d=\"M10 10h4c0-1.1-.9-2-2-2s-2 .9-2 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PublishIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 4h14v2H5V4zm0 10h4v6h6v-6h4l-7-7-7 7zm8-2v6h-2v-6H9.83L12 9.83 14.17 12H13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function QuestionAnswerIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15 4v7H5.17l-.59.59-.58.58V4h11zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ReceiptIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6v-2zm0-4h12v2H6v-2zm0-4h12v2H6V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function RedoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16a8.002 8.002 0 017.6-5.5c1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function RefreshIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function ReplayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function SearchIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 2C5.146 2 2 5.146 2 9s3.146 7 7 7a6.958 6.958 0 004.574-1.719l.426.426V16l6 6 2-2-6-6h-1.293l-.426-.426A6.958 6.958 0 0016 9c0-3.854-3.146-7-7-7zm0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5-5-2.227-5-5 2.227-5 5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function SettingsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9.666 2l-.451 2.477.014-.006.128-.041c-.05.012-.093.033-.142.047-.918.26-1.639.741-2.256 1.255l-.033.03h-.002l-2.389-.758-2.297 3.982 1.873 1.762.008-.045.01-.045C3.99 11.21 4 11.7 4 12c0 .3-.001.796.12 1.396l-.013-.064-1.882 1.66 2.328 4.035 2.39-.869.02.02.082.054c.643.429 1.388.856 2.162 1.188l.004.002L9.658 22h4.676l.451-2.477-.014.006-.128.041c.05-.012.093-.033.142-.047.918-.26 1.639-.741 2.256-1.255l.033-.03h.002l2.4.764 2.29-4.12-1.873-1.652-.012.067-.01.045C20.01 12.79 20 12.3 20 12c0-.3.01-.79-.129-1.342l.006.026 1.898-1.676-2.328-4.035-2.39.869-.02-.02-.082-.054a13.73 13.73 0 00-2.162-1.188l-.004-.002L14.342 2H9.666zm1.668 2h1.324l.352 2.021 1.02.407-.024-.008c.605.26 1.234.62 1.78.978l.757.76 2.01-.732.672 1.166-1.502 1.326.197 1.186.01.039c.062.247.07.557.07.857 0 .3-.008.61-.07.857l-.006.024-.217 1.088 1.527 1.35-.71 1.28-2-.636-.778.777c-.543.451-.983.738-1.588.889l-.066.017-1.076.43-.35 1.924h-1.324l-.352-2.021-1.02-.407.024.008c-.605-.26-1.234-.62-1.78-.978l-.757-.76-2.01.732-.672-1.166 1.518-1.34-.213-1.064C6 12.604 6 12.3 6 12c0-.3.008-.61.07-.857l.006-.024.213-1.066-1.527-1.44.703-1.217 2.012.641.777-.777c.543-.451.983-.738 1.588-.889l.066-.017 1.076-.43.35-1.924zM12 8c-1.25 0-2.315.505-2.998 1.273C8.319 10.043 8 11.028 8 12s.319 1.958 1.002 2.727C9.685 15.495 10.75 16 12 16c1.25 0 2.315-.505 2.998-1.273C15.681 13.957 16 12.972 16 12s-.319-1.958-1.002-2.727C14.315 8.505 13.25 8 12 8zm0 2c.75 0 1.185.245 1.502.602.317.356.498.87.498 1.398 0 .528-.181 1.042-.498 1.398-.317.357-.752.602-1.502.602s-1.185-.245-1.502-.602C10.181 13.042 10 12.528 10 12c0-.528.181-1.042.498-1.398.317-.357.752-.602 1.502-.602z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function SmsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zM7 9h2v2H7V9zm8 0h2v2h-2V9zm-4 0h2v2h-2V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function StarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function StarFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function StarHalfFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function SyncIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 0L8 4l4 4V5c3.859 0 7 3.14 7 7 0 .88-.17 1.72-.469 2.496l1.516 1.514A8.931 8.931 0 0021 12c0-4.962-4.037-9-9-9V0zM3.953 7.99A8.931 8.931 0 003 12c0 4.962 4.037 9 9 9v3l4-4-4-4v3c-3.859 0-7-3.14-7-7 0-.88.17-1.72.469-2.496L3.953 7.99z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function Thumbdown(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m10.89 18.28.57-2.89c.12-.59-.04-1.2-.42-1.66-.38-.46-.94-.73-1.54-.73H4v-1.08L6.57 6h8.09c.18 0 .34.16.34.34v7.84l-4.11 4.1M10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22zm10-7h2V4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ThumbdownFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2V4zM2.17 11.12c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function Thumbup(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m13.11 5.72-.57 2.89c-.12.59.04 1.2.42 1.66.38.46.94.73 1.54.73H20v1.08L17.43 18H9.34c-.18 0-.34-.16-.34-.34V9.82l4.11-4.1M14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.83C7 18.95 8.05 20 9.34 20h8.1c.71 0 1.36-.37 1.72-.97l2.67-6.15c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2zM4 9H2v11h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ThumbupFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function TimeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function TingrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 16.615c4.418 0 8-3.857 8-8.615H4c0 4.758 3.582 8.615 8 8.615z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function TipIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function TrashIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 9v10H8V9h8zm-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function TwitterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M23.643 4.937c-.835.37-1.732.62-2.675.733a4.67 4.67 0 002.048-2.578 9.3 9.3 0 01-2.958 1.13 4.66 4.66 0 00-7.938 4.25 13.229 13.229 0 01-9.602-4.868 4.66 4.66 0 001.442 6.22 4.647 4.647 0 01-2.11-.583v.06a4.66 4.66 0 003.737 4.568 4.692 4.692 0 01-2.104.08 4.661 4.661 0 004.352 3.234 9.348 9.348 0 01-5.786 1.995 9.5 9.5 0 01-1.112-.065 13.175 13.175 0 007.14 2.093c8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602a9.47 9.47 0 002.323-2.41l.002-.003z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function UndoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function UnfoldLessIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function UnfoldMoreIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.59 18.17L8.42 15l-1.41 1.41L11.59 21l4.59-4.59L14.76 15l-3.17 3.17zm0-12.34L14.76 9l1.41-1.41L11.59 3 7 7.59 8.42 9l3.17-3.17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function UploadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4v6zm2-2V8H9.828L12 5.828 14.172 8H13v6h-2zm-6 4h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function VisibilityOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5 9.648 9.648 0 01-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.04 7.841 1.766 9.55 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02a2.5 2.5 0 01-2.5-2.5c0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75a4.6 4.6 0 00-.36 1.78 4.507 4.507 0 006.27 4.14l.98.98c-.88.24-1.8.38-2.75.38a9.77 9.77 0 01-8.82-5.5c.7-1.43 1.72-2.61 2.93-3.53z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function VisibilityOnIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5A9.77 9.77 0 0112 17a9.77 9.77 0 01-8.82-5.5A9.77 9.77 0 0112 6zm0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function WarningIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" />\n <path d=\"M12 17a1 1 0 100-2 1 1 0 000 2zM11 7h2v7h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ZoomInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function ZoomOutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function BarChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function BarChartBoxedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7v-7zm4-3h2v10h-2V7zm4 6h2v4h-2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function LineChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99l1.5 1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function LibraryAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3v3z\" />\n </SvgWrapper>\n );\n}\n","import { InputMessage } from '../components/InputMessage';\n\nexport const renderInputMessage = (\n tip?: string,\n tipId?: string,\n errorMessage?: string,\n errorMessageId?: string,\n) => (\n <>\n {errorMessage && errorMessageId && (\n <InputMessage\n message={errorMessage}\n messageType=\"error\"\n id={errorMessageId}\n />\n )}\n {tip && tipId && !errorMessage && (\n <InputMessage message={tip} messageType=\"tip\" id={tipId} />\n )}\n </>\n);\n","export function escapeRegexCharacters(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function searchFilter(text: string, query: string): boolean {\n // Søkeordet er enten først i teksten, eller så har det mellomrom, bindestrek eller start-parentes før seg.\n const searchFilterRegex = new RegExp(\n `(?:^|[\\\\s-(])${escapeRegexCharacters(query.toLowerCase())}`,\n );\n return searchFilterRegex.test(text.toLowerCase());\n}\n","export const calculateHeightWithLineHeight = (\n lineHeight: number,\n fontSize: number,\n) => {\n return lineHeight * 0.01 * fontSize;\n};\n\nexport const firstLetterToUpperCase = (text: string) =>\n text.charAt(0).toUpperCase() + text.slice(1);\n","import { type ElementType, forwardRef } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyHeadingType,\n} from '../Typography';\n\nconst getHeadingElement = (level: HeadingLevel): ElementType => `h${level}`;\n\nconst getDefaultTypographyType = (h: ElementType): TypographyHeadingType => {\n switch (h) {\n case 'h1':\n return 'headingSans06';\n case 'h2':\n return 'headingSans05';\n case 'h3':\n return 'headingSans04';\n case 'h4':\n return 'headingSans03';\n case 'h5':\n return 'headingSans02';\n case 'h6':\n return 'headingSans01';\n default:\n return 'headingSans06';\n }\n};\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps = BaseComponentPropsWithChildren<\n HTMLHeadingElement,\n {\n /**Nivå på overskriften. Komponenten returnerer HTML heading element med dette nivået med default styling. */\n level: HeadingLevel;\n /**Spesifiserer typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n } & BaseTypographyProps\n>;\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n level,\n ...rest\n } = props;\n\n const headingElement: ElementType = getHeadingElement(level);\n\n const headingProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType: typographyType\n ? typographyType\n : getDefaultTypographyType(headingElement),\n as: headingElement,\n ref,\n };\n\n return <Typography {...headingProps}>{children}</Typography>;\n },\n);\n\nHeading.displayName = 'Heading';\n","import { type LabelHTMLAttributes, forwardRef } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker } from '../../helpers';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\ntype PickedHTMLAttributes = Pick<\n LabelHTMLAttributes<HTMLLabelElement>,\n 'htmlFor'\n>;\n\ninterface BaseLabelProps {\n /** Spesifiserer om input etiketten er knyttet til er påkrevd; påvirker styling. */\n showRequiredStyling?: boolean;\n}\n\nexport type LabelProps = BaseComponentPropsWithChildren<\n HTMLLabelElement,\n BaseLabelProps & BaseTypographyProps & PickedHTMLAttributes,\n Omit<LabelHTMLAttributes<HTMLLabelElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { showRequiredStyling, id, className, htmlProps, children, ...rest } =\n props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"supportingStyleLabel01\"\n >\n {children} {showRequiredStyling && <RequiredMarker />}\n </Typography>\n );\n});\n\nLabel.displayName = 'Label';\n","import { forwardRef } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\nexport type LegendProps = BaseComponentPropsWithChildren<\n HTMLLegendElement,\n BaseTypographyProps\n>;\n\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n as=\"legend\"\n typographyType=\"headingSans03\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nLegend.displayName = 'Legend';\n","import { type AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n type TypographyBodyType,\n getAnchorStyling,\n} from '../Typography';\n\ninterface StyledLinkProps {\n $typographyType?: TypographyBodyType;\n $withMargins?: boolean;\n $external?: boolean;\n}\n\nconst StyledLink = styled.a<StyledLinkProps>`\n ${({ $external, $typographyType, $withMargins }) =>\n getAnchorStyling($external, undefined, $typographyType, $withMargins)}\n`;\n\ntype PickedHTMLAttributes = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n 'onClick' | 'href' | 'target'\n>;\n\nexport type LinkProps = BaseComponentPropsWithChildren<\n HTMLAnchorElement,\n {\n /**Spesifiserer om lenken fører til et eksternt nettsted eller åpnes i nytt vindu. Påvirker styling og setter `target` prop. */\n external?: boolean;\n /**Spesifiserer typografistil basert på utvalget for brødtekst. */\n typographyType?: TypographyBodyType;\n } & BaseTypographyProps &\n PickedHTMLAttributes,\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n external,\n target,\n ...rest\n } = props;\n\n return (\n <StyledLink\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...rest}\n $typographyType={typographyType}\n $external={external}\n ref={ref}\n rel=\"noopener noreferer\"\n target={external ? '_blank' : target}\n >\n {children}\n </StyledLink>\n );\n});\n\nLink.displayName = 'Link';\n","import { forwardRef } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyBodyType,\n type TypographyLeadType,\n} from '../Typography';\n\nexport type ParagraphProps = BaseComponentPropsWithChildren<\n HTMLParagraphElement,\n {\n /**Spesifiserer typografistil basert på utvalget for brødtekst og ingress. */\n typographyType?: TypographyBodyType | TypographyLeadType;\n } & BaseTypographyProps\n>;\n\nexport const Paragraph = forwardRef<HTMLParagraphElement, ParagraphProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType = 'bodySans02',\n ...rest\n } = props;\n\n const paragraphProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType,\n ref,\n };\n\n return <Typography {...paragraphProps}>{children}</Typography>;\n },\n);\n\nParagraph.displayName = 'Paragraph';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors: Colors } = ddsBaseTokens;\n\nexport const dangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border } = ddsBaseTokens;\n\nexport const focusInputfield = {\n outline: 'none',\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const focusDangerInputfield = {\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, spacing } = ddsBaseTokens;\n\nexport const outlineOffset = spacing.SizesDdsSpacingX0125;\n\nexport const focusVisible = {\n outline: `${Border.BordersDdsBorderFocusBaseStrokeWeight} ${Border.BordersDdsBorderFocusBaseStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleOnDark = {\n outline: `${Border.BordersDdsBorderFocusOndarkStrokeWeight} ${Border.BordersDdsBorderFocusOndarkStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleTransitionValue = 'outline-offset 0.2s';\n\nexport const focusVisibleWithBorder = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusCardStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n\nexport const focusVisibleThickWithBorderOnDark = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusOndarkStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusOndarkStroke}`,\n};\n\nexport const focusVisibleInset = {\n outline: 'none',\n boxShadow: `inset 0 0 0 2px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n","export const hideInput = {\n clip: 'rect(0 0 0 0)',\n position: 'absolute',\n height: '1px',\n width: '1px',\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, colors: Colors } = ddsBaseTokens;\n\nexport const hoverWithBorder = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverInputfield = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverDangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { type Property } from 'csstype';\n\nexport const normalizeButton = {\n margin: 0,\n textTransform: 'none' as Property.TextTransform,\n};\n","export const removeButtonStyling = {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n};\n","export const removeListStyling = {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors } = ddsBaseTokens;\n\nexport const selection = {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorTertiaryLightest,\n};\n","import { css } from 'styled-components';\n\nexport const visibilityTransition = (open: boolean) => {\n return css`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n visibility 0.4s,\n opacity 0.2s;\n }\n visibility: ${open ? 'visible' : 'hidden'};\n opacity: ${open ? 1 : 0};\n `;\n};\n","export function getDefaultText(\n value?: string | number | readonly string[],\n defaultValue?: string | number | readonly string[],\n): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof defaultValue === 'string') {\n return defaultValue;\n }\n\n return '';\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport styled, { css } from 'styled-components';\n\nimport { paperTokens as tokens } from './Paper.tokens';\nimport { selection } from '../styling';\nconst { outerShadow, border } = ddsBaseTokens;\n\ntype Elevation = 1 | 2 | 3 | 4;\n\nconst getElevation = (elevation: Elevation) => {\n switch (elevation) {\n case 1:\n return outerShadow.DdsShadow1Onlight;\n case 2:\n return outerShadow.DdsShadow2Onlight;\n case 3:\n return outerShadow.DdsShadow3Onlight;\n case 4:\n return outerShadow.DdsShadow4Onlight;\n }\n};\n\ntype Border = 'light' | 'dark';\n\nconst getBorder = (borderStyle: Border) => {\n switch (borderStyle) {\n case 'light':\n return `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`;\n case 'dark':\n return `${border.BordersDdsBorderStyleDarkStrokeWeight} solid ${border.BordersDdsBorderStyleDarkStroke}`;\n }\n};\n\nexport interface PaperProps {\n elevation?: Elevation;\n border?: Border;\n}\n\nexport const Paper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'elevation' && prop !== 'border',\n})<PaperProps>`\n box-sizing: border-box;\n margin: 0;\n background-color: ${tokens.paper.backgroundColor};\n font-family: ${tokens.paper.fontFamily};\n border-radius: ${tokens.paper.borderRadius};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ elevation }) =>\n elevation &&\n css`\n box-shadow: ${getElevation(elevation)};\n `}\n border: ${({ border }) => (border ? getBorder(border) : 'none')}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, borderRadius, font } = ddsBaseTokens;\n\nconst paper = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n fontFamily: font.DdsFontBodySans01FontFamily,\n};\n\nexport const paperTokens = {\n paper,\n};\n","import { ddsBaseTokens as tokens } from '@norges-domstoler/dds-design-tokens';\nimport styled from 'styled-components';\n\nconst MarkerWrapper = styled.span`\n color: ${tokens.colors.DdsColorDangerBase};\n`;\n\nexport const RequiredMarker = () => <MarkerWrapper>*</MarkerWrapper>;\n","import type { MutableRefObject, RefCallback } from 'react';\nimport { useCallback } from 'react';\n\n/**\n * Kombinerer refs for et element.\n * Eksempel på bruk:\n * ```\n * const MyComponent = forwardRef<HTMLDivElement, Props>((props, ref) => {\n *\n * const itemRef = useRef<HTMLDivElement>(null);\n * const combinedRef = useCombinedRef(ref, itemRef);\n *\n * return <div ref={combinedRef}>innhold</div>\n * });\n * ```\n * @param refs array med refs.\n * @template T elementet som refereres til.\n * @returns callback med kombinerte refs.\n *\n * {@link useCombinedRef}\n */\n\nexport function useCombinedRef<T>(...refs: React.Ref<T>[]): RefCallback<T> {\n return useCallback((element: T) => {\n refs.forEach(ref => {\n if (typeof ref === 'function') ref(element);\n else if (ref && typeof ref === 'object')\n (ref as MutableRefObject<T>).current = element;\n });\n }, refs);\n}\n","import {\n type Coords,\n type Strategy,\n arrow,\n autoUpdate,\n flip,\n offset as floatingOffset,\n shift,\n useFloating,\n} from '@floating-ui/react-dom';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst defaultOffset = ddsBaseTokens.spacing.SizesDdsSpacingX05NumberPx;\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\ninterface UseFloatPositionOptions {\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n * This is optimized for performance but can still be costly.\n * @default true\n */\n animationFrame?: boolean;\n /**\n * `offset` is used to displace the floating element from its core placement.\n * The value passed is logical, meaning its effect on the\n * physical result is dependent on the writing direction (e.g. RTL).\n * @default 8\n */\n offset?: number;\n /**\n * Where to place the floating element relative to its reference element.\n * @default 'bottom'\n */\n placement?: Placement;\n}\n\nexport const useFloatPosition = (\n arrowRef: HTMLElement | null,\n options: UseFloatPositionOptions = {},\n) => {\n const {\n animationFrame = true,\n offset = defaultOffset,\n placement = 'bottom',\n } = options;\n\n const middleware = [\n floatingOffset(offset),\n flip(),\n shift(),\n\n // Only add arrow(...) if arrowRef is set\n ...(arrowRef ? [arrow({ element: arrowRef })] : []),\n ];\n\n const {\n x,\n y,\n strategy,\n middlewareData,\n placement: actualPlacement,\n refs,\n } = useFloating({\n placement,\n middleware,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, { animationFrame }),\n });\n\n return {\n refs,\n styles: {\n floating: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n arrow: middlewareData.arrow\n ? getArrowStyling(strategy, actualPlacement, middlewareData.arrow)\n : undefined,\n },\n };\n};\n\ntype Arrow = Partial<Coords> & { centerOffset: number };\n\nfunction getArrowStyling(\n strategy: Strategy,\n placement: Placement,\n arrow: Arrow,\n) {\n const arrowPlacement = placementToArrowPlacement(placement);\n\n const arrowPlacementOffset = {\n top: '-15px',\n bottom: '-15px',\n right: '-21px',\n left: '-21px',\n }[arrowPlacement];\n\n const rotateArrow = {\n top: 'rotate(180deg)',\n right: 'rotate(-90deg)',\n bottom: '',\n left: 'rotate(90deg)',\n }[arrowPlacement];\n\n return {\n position: strategy,\n top: arrow?.y ?? '',\n left: arrow?.x ?? '',\n [arrowPlacement]: arrowPlacementOffset,\n transform: rotateArrow,\n };\n}\n\nfunction placementToArrowPlacement(placement: Placement) {\n switch (placement) {\n case 'top':\n case 'top-start':\n case 'top-end':\n return 'bottom';\n\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n return 'top';\n\n case 'left':\n case 'left-start':\n case 'left-end':\n return 'right';\n\n case 'right':\n case 'right-start':\n case 'right-end':\n return 'left';\n }\n}\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Fanger fokus i en loop inni et element. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const componentRef = useFocusTrap<HTMLDivElement>(props.isOpen);\n *\n * return props.isOpen ? <div ref={componentRef}><button>click</button></div> : null;\n *\n * }\n * ```\n * @param active om focus skal fanges, f.eks. når en modal åpnes.\n * @param initialFocusRef Ref som skal motta focus når focus trap er aktiv.\n * @returns ref til elementet som fanger fokus.\n */\n\nexport function useFocusTrap<T extends HTMLElement>(\n active: boolean,\n initialFocusRef: RefObject<HTMLElement> | undefined = undefined,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current) return;\n\n const focusableElements = getFocusableElements(elementRef);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n\n const element = elementRef.current;\n\n if (element && active) {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Tillater effekter og animasjoner å bli gjennomført like etter et element blir lagt til eller like før det blir fjernet fra DOM.\n * Typisk bruk:\n * ```\n * // CSS\n * .component {\n * transition: opacity 0.2s;\n * opacity: 0;\n * }\n *\n * .transitionedIn.mounted {\n * opacity: 1;\n * }\n *\n * const MyComponent = (props) => {\n *\n * const hasTransitionedIn = useMountTransition(props.isMounted, 500);\n *\n * return props.isMounted || hasTransitionedIn ? (\n * <div\n * className={`component ${hasTransitionedIn && 'transitionedIn'} ${props.isMounted && 'mounted'}`}\n * >\n * innhold\n * </div>)\n * : null;\n *\n * }\n * ```\n * @param isMounted om elementet er mounted.\n * @param unmountDelay hvor lenge transition skal vare før unmount.\n * @returns om transition er ferdig.\n */\n\nexport const useMountTransition = (\n isMounted: boolean,\n unmountDelay: number,\n) => {\n const [hasTransitionedIn, setHasTransitionedIn] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n if (isMounted && !hasTransitionedIn) setHasTransitionedIn(true);\n else if (!isMounted && hasTransitionedIn) {\n timeoutId = setTimeout(() => setHasTransitionedIn(false), unmountDelay);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [unmountDelay, isMounted, hasTransitionedIn]);\n return hasTransitionedIn;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når brukeren klikker utenfor et element, f.eks at elementet fjernes fra DOM.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnClickOutside(ref, () => setOpen(false));\n *\n * return <div ref={ref}>innhold</div>\n * ```\n * @param element HTML elementet man klikker utenfor.\n * @param handler funksjonen som kjøres ved klikk utenfor.\n */\n\nexport function useOnClickOutside(\n element: HTMLElement | null | (HTMLElement | null)[],\n handler: (event: MouseEvent | TouchEvent) => void,\n) {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const elements = Array.isArray(element) ? element : [element];\n\n const hasClickedInside = elements.some(el =>\n el?.contains(event.target as HTMLElement),\n );\n\n // ClearIndicator in react-select removes itself from DOM before this handler goes off.\n // Therefore a click on it will always be counted as a click outside, for everything.\n // This is not a great solution, but it is a fair assumption that this will do more good than harm.\n const clickedOnSomethingInDocument = document.contains(\n event.target as Node,\n );\n if (hasClickedInside || !clickedOnSomethingInDocument) return;\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [element, handler]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når en spesifisert tast blir trykt ned.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnKeyDown(['Escape', 'Esc'], () => setOpen(false));\n *\n * return isOpen ? <div>innhold</div> : null;\n * ```\n * @param key tasten som trykkes.\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useOnKeyDown = (\n key: string | string[],\n handler: (event: KeyboardEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n const keys = Array.isArray(key) ? key : [key];\n if (keys.indexOf(event.key) !== -1) {\n handler(event);\n }\n };\n\n document.addEventListener('keydown', listener, true);\n\n return () => {\n document.removeEventListener('keydown', listener, true);\n };\n }, [handler]);\n};\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Returnerer fokus til et element når første eller siste barn i en container mister fokus ved tastaturnavigasjon. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const [isOpen, setOpen] = useState(true);\n * const close = () => setOpen(false);\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const containerRef = useReturnFocusOnBlur<HTMLDivElement>(\n * isOpen,\n * triggerRef.current,\n * () => close()\n * );\n *\n * return (\n * <div>\n * <button ref={triggerRef} >Åpne popover</button>\n * <div ref={containerRef}>\n * <button>gjør noe</button>\n * </div>\n * </div>\n * )\n * }\n * ```\n * @param active om container skal få fokus, f.eks. når en modal åpnes.\n * @param triggerElement elementet som skal få fokus når fokus forlater container.\n * @param onBlur ekstra logikk når fokus forlater container.\n * @returns ref til container som får fokus.\n */\n\nexport function useReturnFocusOnBlur<T extends HTMLElement>(\n active: boolean,\n onBlur: () => void,\n triggerElement?: HTMLElement | null,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current || !triggerElement)\n return;\n\n const focusableElements = getFocusableElements(elementRef);\n const lastElement = focusableElements[focusableElements.length - 1];\n const firstElement = focusableElements[0];\n\n if (\n (!e.shiftKey && document.activeElement === lastElement) ||\n (e.shiftKey && document.activeElement === firstElement) ||\n (e.shiftKey && document.activeElement === element)\n ) {\n triggerElement.focus();\n e.preventDefault();\n onBlur();\n }\n }\n\n const element = elementRef.current;\n if (element && active) {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import {\n type Dispatch,\n type KeyboardEvent,\n type SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nimport { type Direction } from '../types';\n\nexport const isKeyboardEvent = (\n e: Event | KeyboardEvent<Element>,\n): e is KeyboardEvent<Element> =>\n (e as KeyboardEvent<Element>).key !== undefined;\n\n/**\n * Bytter fokus mellom elementer i en gruppe med piltaster og ikke Tab, og looper fokus i gruppen. Typisk bruk:\n * ```\n * import elements from './elements';\n * import RoveItem from './RoveItem';\n *\n * const MyComponent = () => {\n * const [focus, setFocus] = useRoveFocus(elements.length);\n *\n * return (\n * <ul>\n * {elements.map((element, index) => (\n * <li key={element}>\n * <RoveItem index={index} focus={focus === index} setFocus={setFocus}>{element.name}</RoveItem>\n * </li>\n * ))}\n * </ul>)\n * }\n * ```\n * @param size antall elementer i gruppen.\n * @param reset om fokus i gruppen skal nullstilles; når man tabber seg inn i gruppen skal focus være nullstilt.\n * @param direction retning elementene blas i.\n * @returns hook par: indeksen til fokuserte elemenentet og funksjonen som håndterer fokus.\n */\n\nexport function useRoveFocus(\n size?: number,\n reset?: boolean,\n direction: Direction = 'column',\n): [number, Dispatch<SetStateAction<number>>] {\n const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n\n const nextKey = direction === 'row' ? 'ArrowRight' : 'ArrowDown';\n const previousKey = direction === 'row' ? 'ArrowLeft' : 'ArrowUp';\n\n const handleKeyDown = useCallback(\n (e: Event) => {\n if (!size || !isKeyboardEvent(e)) return;\n if (reset) setCurrentFocusIndex(-1);\n if (e.key === nextKey) {\n // Down arrow\n e.preventDefault();\n setCurrentFocusIndex(\n currentFocusIndex === size - 1 ? 0 : currentFocusIndex + 1,\n );\n } else if (e.key === previousKey) {\n // Up arrow\n e.preventDefault();\n if (currentFocusIndex !== -1) {\n setCurrentFocusIndex(\n currentFocusIndex === 0 ? size - 1 : currentFocusIndex - 1,\n );\n } else setCurrentFocusIndex(size - 1);\n }\n },\n [size, currentFocusIndex, setCurrentFocusIndex, reset],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [handleKeyDown]);\n\n return [currentFocusIndex, setCurrentFocusIndex];\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { useEffect, useState } from 'react';\n\nconst { breakpoints } = ddsBaseTokens;\n\nexport enum ScreenSize {\n XSmall = 0,\n Small,\n Medium,\n Large,\n XLarge,\n}\n\nconst screenSizesAndMediaQueries: [ScreenSize, string][] = [\n [\n ScreenSize.XLarge,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXl})`,\n ],\n [\n ScreenSize.Large,\n `only screen and (min-width: ${breakpoints.DdsBreakpointLg})`,\n ],\n [\n ScreenSize.Medium,\n `only screen and (min-width: ${breakpoints.DdsBreakpointMd})`,\n ],\n [\n ScreenSize.Small,\n `only screen and (min-width: ${breakpoints.DdsBreakpointSm})`,\n ],\n [\n ScreenSize.XSmall,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXs})`,\n ],\n];\n\n/**\n * Sjekker skjermstørrelsen basert på brekkpunkter definerte i designsystemet. Eksempel på bruk:\n * ```\n * const MyComponent = () => {\n * const screenSize = useScreenSize();\n * const isSmallScreen = screenSize === ScreenSize.Small;\n *\n * return <div className={isSmallScreen && 'smallDiv'} >innhold</div>\n * }\n * ```\n * @returns den aktuelle skjermstørrelsen basert på {@link ScreenSize}.\n */\n\nexport const useScreenSize = function () {\n const [screenSize, setScreenSize] = useState(ScreenSize.Large);\n\n useEffect(() => {\n function listener() {\n for (const [screenSize, mediaQuery] of screenSizesAndMediaQueries) {\n if (window.matchMedia(mediaQuery).matches) {\n setScreenSize(screenSize);\n return;\n }\n }\n }\n listener();\n\n window.addEventListener('resize', listener);\n return () => window.removeEventListener('resize', listener);\n }, []);\n\n return screenSize;\n};\n","import { type StandardProperties } from 'csstype';\n\nimport { ScreenSize } from '../../../hooks';\n\nexport type ScreenSizeLiteral = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport const getLiteralScreenSize = (\n screenSize: ScreenSize,\n): ScreenSizeLiteral => {\n switch (screenSize) {\n case ScreenSize.XLarge:\n return 'xl';\n case ScreenSize.Large:\n return 'lg';\n case ScreenSize.Medium:\n return 'md';\n case ScreenSize.Small:\n return 'sm';\n case ScreenSize.XSmall:\n return 'xs';\n }\n};\n\nexport type BreakpointBasedProps<T extends keyof StandardProperties> = {\n [k in ScreenSizeLiteral]?: StandardProperties[T];\n};\n","import {\n ENVIRONMENT_BANNER_HEIGHT,\n type Environment,\n EnvironmentBanner,\n} from '@norges-domstoler/development-utils';\nimport { type PropsWithChildren, type ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { AppShellContextProvider } from './AppShellContext';\nimport { Navigation } from './Navigation/Navigation';\nimport { type User } from './Navigation/TopBar';\nimport { type OverflowMenuProps } from '../OverflowMenu';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n /**\n * `title` brukes for å definere en egen tittel øverst i komponenten.\n * Når `title` er undefined blir tittel satt til `Lovisa`.\n */\n title?: string;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n title = 'Lovisa',\n}: AppShellProps) => {\n const environmentBannerActive = environment !== 'PROD';\n return (\n <AppShellContextProvider>\n <AppShellContainer>\n <EnvironmentBanner environment={environment} />\n <Navigation\n user={user}\n userMenuItems={userMenuItems}\n version={version}\n internal={internal}\n external={external}\n environmentBannerActive={environmentBannerActive}\n title={title}\n />\n <MainContent environmentBannerActive={environmentBannerActive}>\n {children}\n </MainContent>\n </AppShellContainer>\n </AppShellContextProvider>\n );\n};\n\nAppShell.displayName = 'AppShell';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors, spacing, fontPackages, borderRadius, breakpoints } =\n ddsBaseTokens;\n\nconst navigationItems = {\n gap: spacing.SizesDdsSpacingX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX05,\n external: {\n ...fontPackages.body_sans_01.base,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDark,\n },\n active: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorPrimaryDarker,\n },\n },\n};\n\nconst logoAndVersion = {\n padding: '36px 24px',\n color: colors.DdsColorNeutralsWhite,\n logo: {\n ...fontPackages.heading_sans_05.base,\n fontWeight: 700,\n small: {\n ...fontPackages.heading_sans_03.base,\n fontWeight: 600,\n },\n },\n version: {\n ...fontPackages.supportingStyle_tiny_01.base,\n },\n};\n\nconst topBar = {\n padding: spacing.SizesDdsSpacingX025,\n height: `calc(${spacing.SizesDdsSpacingX3} + 2 * ${spacing.SizesDdsSpacingX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n useState,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => null,\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { Children, type ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { NavigationItem } from './NavigationItem';\nimport { NavigationLogo } from './NavigationLogo';\nimport { TopBar, type User } from './TopBar';\nimport { Divider } from '../../Divider';\nimport { type OverflowMenuProps } from '../../OverflowMenu';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n title: string;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\n title,\n}: NavigationProps) => {\n const { isOpen, setOpen } = useAppShellContext();\n\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n if (event.key === 'o') {\n setOpen(prev => !prev);\n }\n };\n\n window.addEventListener('keypress', listener);\n return () => window.removeEventListener('keypress', listener);\n });\n\n return (\n <div>\n <TopBar\n user={user}\n userMenuItems={userMenuItems}\n isNavigationOpen={isOpen}\n onNavigationOpenChange={newOpen => setOpen(newOpen)}\n environmentBannerActive={environmentBannerActive}\n title={title}\n />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>{title}</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { type MouseEventHandler } from 'react';\nimport styled from 'styled-components';\n\nimport { type As, type PropsOf } from '../../../types';\nimport { Icon } from '../../Icon';\nimport { ChevronRightIcon, OpenExternalIcon } from '../../Icon/icons';\nimport { type SvgIcon } from '../../Icon/utils';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst navItemTokens = navTokens.navigationItems.item;\n\nconst IconContainer = styled.div`\n grid-area: icon;\n display: flex;\n align-items: center;\n`;\n\nconst TextContainer = styled.span`\n grid-area: text;\n`;\n\nconst ChevronContainer = styled.div`\n display: flex;\n align-items: center;\n opacity: 0;\n grid-area: chevron;\n`;\n\nconst BaseLink = styled.a`\n padding: ${navItemTokens.padding};\n gap: ${navItemTokens.gap};\n border-radius: ${navItemTokens.borderRadius};\n\n text-decoration: none;\n color: ${navItemTokens.color};\n font-size: ${navItemTokens.fontSize};\n font-style: ${navItemTokens.fontStyle};\n font-family: ${navItemTokens.fontFamily};\n font-weight: ${navItemTokens.fontWeight};\n line-height: ${navItemTokens.lineHeight};\n letter-spacing: ${navItemTokens.letterSpacing};\n\n &:hover:not(.active) {\n background-color: ${navItemTokens.hover.backgroundColor};\n }\n\n &.active {\n color: ${navItemTokens.active.color};\n background-color: ${navItemTokens.active.backgroundColor};\n }\n`;\n\nconst InternalNavItem = styled(BaseLink)`\n display: grid;\n align-items: center;\n grid-template-areas: 'icon text chevron';\n grid-template-columns: min-content 1fr min-content;\n\n &.active ${ChevronContainer} {\n opacity: 1;\n }\n`;\n\nconst ExternalNavItem = styled(BaseLink)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n font-size: ${navItemTokens.external.fontSize};\n font-style: ${navItemTokens.external.fontStyle};\n font-family: ${navItemTokens.external.fontFamily};\n font-weight: ${navItemTokens.external.fontWeight};\n line-height: ${navItemTokens.external.lineHeight};\n letter-spacing: ${navItemTokens.external.letterSpacing};\n`;\n\ntype BaseNavigationItemProps = (\n | {\n icon: SvgIcon;\n active?: boolean;\n external?: undefined | false;\n }\n | { external: true; active?: undefined | false; icon?: undefined }\n) & { onClick?: MouseEventHandler };\n\ntype NavigationItemProps<T extends As = 'a'> = PropsOf<T> &\n BaseNavigationItemProps;\n\nexport const NavigationItem = <T extends As = 'a'>({\n as: _as,\n active,\n icon,\n external,\n children,\n onClick: propOnClick,\n ...rest\n}: NavigationItemProps<T>) => {\n const { setOpen } = useAppShellContext();\n const Comp = _as ?? 'a';\n\n const onClick: MouseEventHandler = e => {\n propOnClick?.(e);\n setOpen(false);\n };\n if (external) {\n return (\n <ExternalNavItem as={Comp} {...rest} onClick={onClick}>\n {children}\n <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />\n </ExternalNavItem>\n );\n }\n\n return (\n <InternalNavItem\n as={Comp}\n {...rest}\n onClick={onClick}\n className={[active ? 'active' : '', rest.className].join(' ')}\n >\n <IconContainer>{icon && <Icon icon={icon} />}</IconContainer>\n <TextContainer>{children}</TextContainer>\n <ChevronContainer>\n <Icon icon={ChevronRightIcon} />\n </ChevronContainer>\n </InternalNavItem>\n );\n};\n\nNavigationItem.displayName = 'AppShell.NavItem';\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport styled from 'styled-components';\n\nimport { EmbeteIcon, type EmbeteType } from './EmbeteIcon';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport { CloseIcon, MenuIcon } from '../../Icon/icons';\nimport { type SvgProps } from '../../Icon/utils';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n type OverflowMenuProps,\n} from '../../OverflowMenu';\nimport { appShellTokens } from '../AppShell.tokens';\n\nconst { navigation: navTokens, floatingActionButtons } = appShellTokens;\n\nconst LogoBurgerGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst ActionButtonGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst IconButton = styled(Button).attrs({\n appearance: 'borderless',\n purpose: 'secondary',\n})`\n color: ${navTokens.topBar.buttonTextColor};\n > :first-child {\n font-size: 1.65rem;\n }\n @media (max-width: ${navTokens.mobile.breakpoint}) {\n border: 0;\n box-shadow: none;\n padding: 12px;\n &:hover,\n &:active {\n color: ${navTokens.topBar.buttonTextColor};\n text-decoration-color: ${navTokens.topBar.buttonTextColor};\n box-shadow: none;\n }\n gap: 0;\n }\n`;\n\nconst IconButtonText = styled.span`\n display: none; // Ikke vis tekst på mobil\n width: 0;\n`;\n\nconst Bar = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${navTokens.topBar.gap};\n width: 100vw;\n height: ${navTokens.topBar.height};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n z-index: 101;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : '0'};\n left: 0;\n right: 0;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n justify-content: flex-end;\n background-color: transparent;\n margin-left: ${navTokens.width};\n width: calc(100vw - ${navTokens.width});\n\n pointer-events: none;\n & > * {\n pointer-events: initial;\n }\n\n ${LogoBurgerGroup} {\n display: none;\n }\n\n ${ActionButtonGroup} {\n padding-right: calc(2 * ${navTokens.topBar.gap});\n gap: ${floatingActionButtons.gap};\n }\n\n ${IconButton} {\n background-color: ${floatingActionButtons.backgroundColor};\n color: ${floatingActionButtons.textColor};\n box-shadow: 8px 16px 32px 0px rgba(0, 0, 0, 0.1);\n border-radius: ${floatingActionButtons.borderRadius};\n\n ${IconButtonText} {\n display: unset;\n }\n }\n }\n`;\n\ninterface TopBarProps {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n title: string;\n}\n\nexport interface User {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n}\n\nexport interface Embete {\n /**Navnet på embetet. */\n name: string;\n /**Hvilken instans embetet er. */\n type: EmbeteType;\n}\n\nexport const TopBar = ({\n user,\n userMenuItems,\n isNavigationOpen,\n onNavigationOpenChange,\n environmentBannerActive,\n title,\n}: TopBarProps) => {\n const Icon = (props: SvgProps) => (\n <EmbeteIcon {...props} type={user.embete.type} />\n );\n\n return (\n <Bar environmentBannerActive={environmentBannerActive}>\n <LogoBurgerGroup>\n <IconButton\n icon={isNavigationOpen ? CloseIcon : MenuIcon}\n onClick={() => onNavigationOpenChange(!isNavigationOpen)}\n />\n <NavigationLogo small>{title}</NavigationLogo>\n </LogoBurgerGroup>\n <ActionButtonGroup>\n <OverflowMenuGroup>\n <IconButton\n icon={Icon}\n label={<IconButtonText>{user.name}</IconButtonText>}\n />\n <OverflowMenu items={userMenuItems} />\n </OverflowMenuGroup>\n </ActionButtonGroup>\n </Bar>\n );\n};\n","import {\n JordskifterettIcon,\n LagmannsrettIcon,\n PersonIcon,\n TingrettIcon,\n} from '../../Icon/icons';\nimport { type SvgProps } from '../../Icon/utils';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import { type ElementType, type MouseEvent, forwardRef } from 'react';\n\nimport { ButtonWrapper, Label, StyledIconWrapperSpan } from './Button.styles';\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { type ButtonProps } from './Button.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { Spinner } from '../Spinner';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import styled, { css } from 'styled-components';\n\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n type ButtonAppearance,\n type ButtonPurpose,\n type ButtonSize,\n type IconPosition,\n} from './Button.types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n selection,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { type StaticTypographyType } from '../Typography';\n\nimport { type ButtonSize } from '.';\n\nconst { colors, border, spacing, fontPackages, borderRadius, outerShadow } =\n ddsBaseTokens;\n\nexport const typographyTypes: {\n [k in ButtonSize]: StaticTypographyType;\n} = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTinyPx = calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeSmallPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeMediumPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n);\nconst iconSizeLargePx = calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n);\n\nconst svgOffset = spacing.SizesDdsSpacingX0125NumberPx;\n\nconst filledButtonColors = {\n primary: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray8,\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray2,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray3,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n },\n danger: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorDangerDarker,\n borderColor: colors.DdsColorDangerDarker,\n },\n },\n },\n};\n\nconst sizes = {\n large: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeLargePx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX1} ${\n spacing.SizesDdsSpacingX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX075} ${\n spacing.SizesDdsSpacingX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX05} ${\n spacing.SizesDdsSpacingX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type Property } from 'csstype';\nimport { useId, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { type TextColor, getTextColor } from '../../utils';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\n\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport {\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '../../hooks';\nimport { getBaseHTMLProps } from '../../types';\nimport { Divider } from '../Divider';\nimport { selection, visibilityTransition } from '../helpers';\nimport { PersonIcon } from '../Icon/icons';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nimport {\n type OverflowMenuContextItem,\n type OverflowMenuNavItem,\n type OverflowMenuProps,\n} from '.';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { border, borderRadius, colors, spacing, fontPackages } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst element = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1}`,\n gap: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst iconHeight = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst link = {\n iconWrapper: {\n height: `${iconHeight}px`,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nconst container = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst divider = {\n marginRight: spacing.SizesDdsSpacingX15,\n marginLeft: spacing.SizesDdsSpacingX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingX0125NumberPx,\n};\n","import {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n type Dispatch,\n type ForwardedRef,\n type KeyboardEvent,\n type MouseEvent,\n type SetStateAction,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { useCombinedRef } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { normalizeButton } from '../helpers';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport { focusVisibleLink, getFontStyling } from '../Typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nexport type DividerColor = 'primary' | 'primaryLighter';\n\nconst StyledDivider = styled.hr<DividerProps>`\n border: 0;\n background-color: transparent;\n border-top: ${tokens.borderTop};\n margin-top: ${tokens.marginTop};\n margin-bottom: ${tokens.marginBottom};\n ${({ color }) =>\n color &&\n css`\n border-color: ${tokens.color[color].borderColor};\n `}\n`;\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje. */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { color = 'primary', id, className, htmlProps, ...rest } = props;\n\n const lineProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n color,\n };\n\n return <StyledDivider ref={ref} {...lineProps} />;\n});\n\nDivider.displayName = 'Divider';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing } = ddsBaseTokens;\n\nconst divider = {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n marginTop: spacing.SizesDdsSpacingX1,\n marginBottom: spacing.SizesDdsSpacingX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import {\n type MouseEvent,\n type RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nconst { track, thumb, minThumbHeightPx } = tokens;\n\nconst ScrollbarOuterWrapper = styled.div``;\n\nconst ScrollbarElements = styled.div`\n display: block;\n height: 100%;\n position: relative;\n display: grid;\n justify-items: center;\n`;\n\nconst Track = styled.div`\n bottom: 0;\n top: 0;\n position: absolute;\n background-color: ${track.backgroundColor};\n border-radius: ${track.borderRadius};\n width: ${track.width};\n`;\n\nconst Thumb = styled.div`\n position: absolute;\n background-color: ${thumb.base.backgroundColor};\n border-radius: ${thumb.base.borderRadius};\n width: ${thumb.base.width};\n transition: background-color 0.2s;\n &:hover {\n background-color: ${thumb.hover.backgroundColor};\n }\n`;\n\nexport type ScrollbarProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Ref til container med innholdet som skal scrolles. */\n contentRef?: RefObject<HTMLDivElement>;\n }\n>;\n\nexport const Scrollbar = (props: ScrollbarProps) => {\n const { id, className, htmlProps, contentRef, ...rest } = props;\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const [thumbHeight, setThumbHeight] = useState(minThumbHeightPx);\n const [isScrollable, setIsScrollable] = useState(true);\n const [thumbTop, setThumbTop] = useState<number>(0);\n const observer = useRef<ResizeObserver | null>(null);\n const [scrollStartPosition, setScrollStartPosition] = useState<number>(0);\n const [initialScrollTop, setInitialScrollTop] = useState<number>(0);\n const [isDragging, setIsDragging] = useState(false);\n\n function handleResize(ref: HTMLDivElement, trackSize: number) {\n const { clientHeight, scrollHeight } = ref;\n setIsScrollable(clientHeight !== scrollHeight);\n setThumbHeight(\n Math.max((clientHeight / scrollHeight) * trackSize, minThumbHeightPx),\n );\n }\n\n const handleTrackClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (contentRef?.current) {\n const { current: trackCurrent } = trackRef;\n const { current: contentCurrent } = contentRef;\n if (trackCurrent && contentCurrent) {\n const { clientY } = e;\n const target = e.target as HTMLDivElement;\n const rect = target.getBoundingClientRect();\n const trackTop = rect.top;\n const thumbOffset = -(thumbHeight / 2);\n const clickRatio =\n (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;\n const scrollAmount = Math.floor(\n clickRatio * contentCurrent.scrollHeight,\n );\n contentCurrent.scrollTo({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n },\n [thumbHeight],\n );\n\n const handleThumbPositioning = useCallback(() => {\n if (!contentRef?.current || !trackRef.current || !thumbRef.current) {\n return;\n }\n const { scrollTop: contentTop, scrollHeight: contentHeight } =\n contentRef.current;\n const { clientHeight } = trackRef.current;\n let newTop = (+contentTop / +contentHeight) * clientHeight;\n newTop = Math.min(newTop, clientHeight - thumbHeight);\n setThumbTop(newTop);\n }, []);\n\n useEffect(() => {\n if (contentRef?.current && trackRef.current) {\n const ref = contentRef.current;\n const { clientHeight } = trackRef.current;\n observer.current = new ResizeObserver(() => {\n handleResize(ref, clientHeight);\n });\n observer.current.observe(ref);\n ref.addEventListener('scroll', handleThumbPositioning);\n return () => {\n observer.current?.unobserve(ref);\n ref.removeEventListener('scroll', handleThumbPositioning);\n };\n }\n }, []);\n\n const handleThumbMousedown = useCallback((e: MouseEvent<HTMLDivElement>) => {\n setScrollStartPosition(e.clientY);\n if (contentRef?.current) setInitialScrollTop(contentRef.current.scrollTop);\n setIsDragging(true);\n }, []);\n\n const handleThumbMouseup = useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n }\n }, [isDragging]);\n\n const handleThumbMousemove = useCallback(\n (e: globalThis.MouseEvent) => {\n if (contentRef?.current) {\n if (isDragging) {\n const {\n scrollHeight: contentScrollHeight,\n offsetHeight: contentOffsetHeight,\n } = contentRef.current;\n\n const deltaY =\n (e.clientY - scrollStartPosition) *\n (contentOffsetHeight / thumbHeight);\n const newScrollTop = Math.min(\n initialScrollTop + deltaY,\n contentScrollHeight - contentOffsetHeight,\n );\n\n contentRef.current.scrollTop = newScrollTop;\n }\n }\n },\n [isDragging, scrollStartPosition, thumbHeight],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', handleThumbMousemove);\n document.addEventListener('mouseup', handleThumbMouseup);\n document.addEventListener('mouseleave', handleThumbMouseup);\n return () => {\n document.removeEventListener('mousemove', handleThumbMousemove);\n document.removeEventListener('mouseup', handleThumbMouseup);\n document.removeEventListener('mouseleave', handleThumbMouseup);\n };\n }, [handleThumbMousemove, handleThumbMouseup]);\n\n return isScrollable ? (\n <ScrollbarOuterWrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ScrollbarElements>\n <Track ref={trackRef} onClick={handleTrackClick} />\n <Thumb\n style={{\n height: thumbHeight,\n top: thumbTop,\n }}\n ref={thumbRef}\n onMouseDown={handleThumbMousedown}\n />\n </ScrollbarElements>\n </ScrollbarOuterWrapper>\n ) : null;\n};\n\nScrollbar.displayName = 'Scrollbar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nexport const scrollbarWidthNumberPx = 10;\nconst scrollbarWidth = `${scrollbarWidthNumberPx}px`;\nconst { colors, spacing } = ddsBaseTokens;\n\nconst track = {\n backgroundColor: 'transparent',\n borderRadius: '100px',\n width: scrollbarWidth,\n};\n\nconst thumb = {\n base: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',\n borderRadius: '100px',\n width: scrollbarWidth,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)',\n },\n};\n\nconst content = {\n paddingRight: spacing.SizesDdsSpacingX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { type Property } from 'csstype';\nimport { useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Scrollbar } from './Scrollbar';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { type Property } from 'csstype';\n\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n Children as ReactChildren,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { type AppShellProps, AppShell as BaseAppShell } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { type ChangeEvent, forwardRef, useId } from 'react';\n\nimport { type RadioButtonProps } from './RadioButton.types';\nimport {\n type RadioButtonGroup,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { type Nullable, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\nimport { Container, CustomSelectionControl } from '../SelectionControl.styles';\n\nconst isValueEqualToGroupValueOrFalsy = (\n value: unknown,\n group: Nullable<RadioButtonGroup>,\n): boolean => {\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n return !!value;\n};\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n disabled = false,\n readOnly = false,\n error = false,\n checked,\n value,\n children,\n required = false,\n onChange,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n type: 'radio',\n name: name ?? radioButtonGroup?.name,\n disabled:\n disabled ||\n readOnly ||\n !!radioButtonGroup?.disabled ||\n !!radioButtonGroup?.readOnly,\n required: required || !!radioButtonGroup?.required,\n checked:\n typeof checked !== 'undefined'\n ? checked\n : isValueEqualToGroupValueOrFalsy(value, radioButtonGroup),\n onChange: handleChange,\n value: value,\n 'aria-describedby':\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': error || radioButtonGroup?.error ? true : undefined,\n };\n\n return (\n <Container\n $error={error || radioButtonGroup?.error}\n disabled={disabled || radioButtonGroup?.disabled}\n $readOnly={readOnly || radioButtonGroup?.readOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n $hasLabel={hasLabel}\n htmlFor={uniqueId}\n $controlType=\"radio\"\n >\n <HiddenInput {...inputProps} ref={ref} />\n <CustomSelectionControl $controlType=\"radio\" />\n <Typography as=\"span\">{children ?? label}</Typography>\n </Container>\n );\n },\n);\n\nRadioButton.displayName = 'RadioButton';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type Nullable } from '../../../types';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\nimport { type Direction } from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\n\nconst {\n selectionControl,\n container,\n checkmark,\n groupContainer,\n outerGroupContainer,\n} = selectionControlTokens;\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\nexport const CustomSelectionControl = styled.span<{\n $controlType?: SelectionControlType;\n}>`\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: ${selectionControl.base.border};\n border-color: ${selectionControl.base.borderColor};\n background-color: ${selectionControl.base.backgroundColor};\n border-radius: ${selectionControl.base.borderRadius};\n height: ${selectionControl.base.height};\n width: ${selectionControl.base.width};\n ${({ $controlType }) =>\n $controlType === 'radio' &&\n css`\n border-radius: 50%;\n `}\n &:after {\n content: '';\n position: absolute;\n display: none;\n }\n`;\n\nexport const Container = styled.label<{\n $hasLabel?: boolean;\n disabled?: boolean;\n $readOnly?: boolean;\n $error?: boolean;\n $controlType: SelectionControlType;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n width: fit-content;\n color: ${container.color};\n ${({ $hasLabel }) =>\n $hasLabel\n ? css`\n padding-left: ${container.withLabel.paddingLeft};\n `\n : css`\n padding: ${container.noLabel.padding};\n `}\n\n input ~ ${CustomSelectionControl} {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s;\n }\n }\n\n &:focus-within {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.base.backgroundColor};\n box-shadow: ${selectionControl.hover.base.boxShadow};\n border-color: ${selectionControl.hover.base.borderColor};\n }\n\n input:checked:enabled\n ~ ${CustomSelectionControl},\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n border-color: ${selectionControl.checked.base.borderColor};\n background-color: ${selectionControl.checked.base.backgroundColor};\n }\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:enabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.hover.backgroundColor};\n box-shadow: ${selectionControl.checked.hover.boxShadow};\n border-color: ${selectionControl.checked.hover.borderColor};\n }\n\n ${({ $error }) =>\n $error &&\n css`\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.danger.backgroundColor};\n box-shadow: ${selectionControl.hover.danger.boxShadow};\n border-color: ${selectionControl.hover.danger.borderColor};\n }\n input\n ~ ${CustomSelectionControl},\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl} {\n box-shadow: ${selectionControl.danger.boxShadow};\n border-color: ${selectionControl.danger.borderColor};\n }\n `}\n input:disabled ~ ${CustomSelectionControl} {\n ${selectionControl.disabled}\n }\n input:checked:disabled\n ~ ${CustomSelectionControl},\n input:disabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.disabled.backgroundColor};\n border-color: ${selectionControl.checked.disabled.borderColor};\n }\n input:checked\n ~ ${CustomSelectionControl}:after,\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl}:after {\n display: block;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: not-allowed;\n color: ${container.disabled.color};\n `}\n ${({ $controlType }) =>\n $controlType === 'checkbox'\n ? css`\n ${CustomSelectionControl}:after {\n border: solid ${checkmark.checkbox.borderColor};\n\n border-width: 0 1px 1px 0;\n left: 35%;\n top: 10%;\n width: 30%;\n height: 65%;\n transform: rotate(45deg);\n }\n input[data-indeterminate='true'] ~ ${CustomSelectionControl}:after {\n border-width: 1px 0 0 0;\n left: 25%;\n top: 50%;\n width: 50%;\n height: 1px;\n transform: none;\n }\n `\n : css`\n ${CustomSelectionControl}:after {\n border-radius: 50%;\n background-color: ${checkmark.radio.backgroundColor};\n width: ${checkmark.radio.width};\n height: ${checkmark.radio.height};\n left: ${checkmark.radio.left};\n top: ${checkmark.radio.top};\n }\n `}\n`;\n\nexport const OuterGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerGroupContainer.gap};\n`;\n\nexport const GroupContainer = styled.div<{ $direction: Direction }>`\n display: flex;\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${groupContainer[$direction].gap};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\nimport { dangerInputfield, hoverInputfield } from '../helpers';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nconst checkmark = {\n checkbox: {\n borderColor: colors.DdsColorNeutralsWhite,\n },\n radio: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n height: spacing.SizesDdsSpacingX05,\n width: spacing.SizesDdsSpacingX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingX05NumberPx / 2}px)`,\n },\n};\n\nconst selectionControl = {\n base: {\n border: '1px solid',\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n height: selectionControlSize,\n width: selectionControlSize,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${hoverInputfield.borderColor}`,\n borderColor: hoverInputfield.borderColor,\n },\n danger: {\n backgroundColor: colors.DdsColorDangerLightest,\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n },\n danger: {\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: { backgroundColor: 'transparent' },\n checked: {\n base: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveDark,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n borderColor: colors.DdsColorInteractiveDark,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n readOnly: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n },\n checkbox: {\n indeterminate: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n },\n};\n\nconst container = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n withLabel: {\n paddingLeft: `${\n selectionControlSizeNumberPx + spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingX075,\n },\n column: { gap: spacing.SizesDdsSpacingX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n type ChangeEvent,\n type HTMLAttributes,\n type ReactElement,\n type Ref,\n forwardRef,\n useId,\n useState,\n} from 'react';\n\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { combineHandlers } from '../../../utils';\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Ledetekst for hele gruppen. */\n label?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /**Legger en markør (*) bak label som indikerer at input er påkrevd. Gjør alle barna påkrevd ved å gi dem `required` prop. */\n required?: boolean;\n /**Meldingen som vises ved valideringsfeil. Gir alle barna error prop. */\n errorMessage?: string;\n /**Hjelpetekst for gruppen. */\n tip?: string;\n /**Gir alle barna `disabled` prop. */\n disabled?: boolean;\n /**Gir alle barna `readOnly` prop */\n readOnly?: boolean;\n /**Retningen radioknappene skal gjengis i. */\n direction?: Direction;\n /**Default verdi - en `<RadioButton />` blir forhåndsvalgt. **OBS!** brukes kun når brukeren ikke skal fylle ut selv. */\n value?: T | undefined;\n /**custom id for for gruppen, knytter `label` til gruppen via `aria-label`. */\n groupId?: string;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nconst RadioButtonGroupInner = <T extends string | number = string>(\n props: RadioButtonGroupProps<T>,\n ref: Ref<HTMLDivElement>,\n) => {\n const {\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [groupValue, setGroupValue] = useState<\n string | number | null | undefined\n >(value);\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps = {\n name,\n disabled,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n ref={ref}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"radiogroup\"\n $direction={direction}\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n >\n {children}\n </GroupContainer>\n </RadioButtonGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nexport const RadioButtonGroup = forwardRef(RadioButtonGroupInner) as <\n T extends string | number = string,\n>(\n props: RadioButtonGroupProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n// @ts-expect-error TODO fix RadioButtonGroup type\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","import { forwardRef, useId } from 'react';\n\nimport { type CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { getBaseHTMLProps } from '../../../types';\nimport { cn, spaceSeparatedIdListGenerator } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\nimport { Container, CustomSelectionControl } from '../SelectionControl.styles';\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n\n const {\n style,\n className: htmlPropsClassName,\n ...restHtmlProps\n } = htmlProps;\n\n type AriaChecked = 'mixed' | boolean | undefined;\n\n return (\n <Container\n $error={error || checkboxGroup?.error}\n disabled={disabled}\n htmlFor={uniqueId}\n $hasLabel={hasLabel}\n $controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n ref={ref}\n name={name}\n disabled={disabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={error || checkboxGroup?.error ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? ('mixed' as AriaChecked) : undefined}\n aria-readonly={readOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n />\n <CustomSelectionControl $controlType=\"checkbox\" />\n {hasLabel && (\n <Typography color=\"inherit\" as=\"span\" typographyType=\"bodySans02\">\n {label}\n </Typography>\n )}\n </Container>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { createContext, useContext } from 'react';\n\nimport { type Nullable } from '../../../types';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\n\nimport {\n CheckboxGroupContext,\n type CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { derivativeIdGenerator } from '../../../utils';\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna gjengis i. */\n direction?: Direction;\n /**Custom id for for gruppen, knytter ledetekst til gruppen via `aria-label`. */\n groupId?: string;\n /**Meldingen som vises ved valideringsfeil. Sender error-tilstand til barna når det finnes og setter `aria-describedby` for barna. */\n errorMessage?: string;\n tip?: string;\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Innebærer visuell endring. **OBS!** `required` må i tillegg gis til `<Checkbox />` manuelt. */\n required?: boolean;\n }\n>;\n\nexport const CheckboxGroup = (props: CheckboxGroupProps) => {\n const {\n label,\n direction = 'row',\n errorMessage,\n tip,\n required = false,\n groupId,\n children,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = htmlProps;\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-checkboxGroup`;\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueGroupId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueGroupId, 'tip');\n\n const contextProps: CheckboxGroupContextProps = {\n error: hasErrorMessage,\n errorMessageId: errorMessage ? errorMessageId : undefined,\n uniqueGroupId,\n tipId: tip ? tipId : undefined,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n $direction={direction}\n >\n {children}\n </GroupContainer>\n </CheckboxGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import { type Property } from 'csstype';\nimport React, {\n forwardRef,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport CharCounter from './CharCounter';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\nimport { textInputTokens } from './TextInput.tokens';\nimport { type TextAffixProps, type TextInputProps } from './TextInput.types';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n InputAffixContainer,\n InputContainer,\n type InputSize,\n OuterInputContainer,\n StatefulInput,\n getDefaultText,\n} from '../helpers';\nimport { Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { useId } from 'react';\nimport styled from 'styled-components';\n\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Typography } from '../Typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\nimport { type InputProps, type InputSize, StatefulInput } from '../helpers';\nimport { Icon } from '../Icon';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX025NumberPx\n }px`,\n },\n },\n};\n\nconst affix = {\n border: {\n color: colors.DdsColorNeutralsGray5,\n },\n};\n\nconst icon = {\n color: colors.DdsColorNeutralsGray9,\n sizes: {\n medium: {\n top: spacing.SizesDdsSpacingX075,\n left: spacing.SizesDdsSpacingX075,\n },\n small: {\n top: spacing.SizesDdsSpacingX075,\n left: spacing.SizesDdsSpacingX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingX05,\n left: spacing.SizesDdsSpacingX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { type Property } from 'csstype';\nimport { type HTMLAttributes, type ReactNode, forwardRef, useId } from 'react';\nimport {\n type GroupBase,\n type OptionProps,\n default as ReactSelect,\n type Props as ReactSelectProps,\n type SelectInstance,\n type SingleValueProps,\n} from 'react-select';\n\nimport { Container, getCustomStyles, prefix } from './Select.styles';\nimport {\n CustomOption,\n CustomSingleValue,\n DDSClearIndicator,\n DDSControl,\n DDSDropdownIndicator,\n DDSInput,\n DDSMultiValueRemove,\n DDSNoOptionsMessage,\n DDSOption,\n} from './SelectComponents';\nimport { type WithRequiredIf } from '../../types';\nimport {\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { type InputSize } from '../helpers';\nimport { type SvgIcon } from '../Icon/utils';\nimport { Label } from '../Typography';\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst getPlaceholder = (\n placeholder?: ReactNode,\n isMulti?: boolean,\n): ReactNode =>\n placeholder\n ? placeholder\n : isMulti\n ? '-- Velg en eller flere --'\n : '-- Velg fra listen --';\n\ntype WrappedReactSelectProps<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n> = WithRequiredIf<\n Option extends SelectOption ? false : true,\n ReactSelectProps<Option, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<Option = unknown, IsMulti extends boolean = false> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten. */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir disabled og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n customOptionElement?: (\n props: OptionProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<Option, IsMulti, GroupBase<Option>>;\n\ntype ForwardRefType<Option, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<Option, IsMulti, GroupBase<Option>>\n>;\n\nfunction SelectInner<Option = unknown, IsMulti extends boolean = false>(\n props: SelectProps<Option, IsMulti>,\n ref: ForwardRefType<Option, IsMulti>,\n) {\n const {\n id,\n label,\n componentSize = 'medium',\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n readOnly,\n options,\n isMulti,\n value,\n icon,\n defaultValue,\n width = defaultWidth,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n customOptionElement,\n customSingleValueElement,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const containerProps = {\n $width: width,\n $componentSize: componentSize,\n $errorMessage: errorMessage,\n $isDisabled: isDisabled,\n $readOnly: readOnly,\n $isMulti: isMulti,\n className,\n style,\n };\n\n const reactSelectProps: ReactSelectProps<\n Option,\n IsMulti,\n GroupBase<Option>\n > = {\n options,\n value,\n defaultValue,\n isDisabled: !!isDisabled || readOnly,\n isClearable,\n placeholder: getPlaceholder(placeholder, isMulti),\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n classNamePrefix: prefix,\n styles: getCustomStyles<Option>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n}\n\nexport const Select = forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { type Property } from 'csstype';\nimport { type GroupBase, type StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\n\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport {\n type InputSize,\n dangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { getFontStyling } from '../Typography';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nimport {\n type InputSize,\n type InputTypographyTypes,\n inputTypographyTypes,\n} from '../helpers';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst placeholderTypographyTypes: { [k in InputSize]: StaticTypographyType } = {\n medium: 'supportingStylePlaceholderText01',\n small: 'supportingStylePlaceholderText02',\n tiny: 'supportingStylePlaceholderText03',\n};\n\nconst multiValueLabelTypographyTypes: {\n [k in InputSize]: StaticTypographyType;\n} = {\n medium: 'bodySans01',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nexport const typographyTypes: {\n control: InputTypographyTypes;\n option: InputTypographyTypes;\n placeholder: { [k in InputSize]: StaticTypographyType };\n noOptionsMessage: { [k in InputSize]: StaticTypographyType };\n groupHeading: StaticTypographyType;\n multiValueLabel: { [k in InputSize]: StaticTypographyType };\n} = {\n control: inputTypographyTypes,\n option: inputTypographyTypes,\n placeholder: placeholderTypographyTypes,\n noOptionsMessage: placeholderTypographyTypes,\n groupHeading: 'supportingStyleHelperText01',\n multiValueLabel: multiValueLabelTypographyTypes,\n};\n\nconst control = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: {\n borderColor: 'transparent',\n backgroundColor: 'transparent',\n },\n isMulti: {\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n};\n\nconst placeholder = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst dropdownIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: {\n color: colors.DdsColorInteractiveBase,\n },\n readOnly: {\n color: 'transparent',\n },\n};\n\nconst clearIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: { color: colors.DdsColorInteractiveBase },\n};\n\nconst loadingIndicator = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst menu = {\n border: '1px solid',\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n marginTop: spacing.SizesDdsSpacingX025,\n marginBottom: spacing.SizesDdsSpacingX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingX05,\n padding: `${spacing.SizesDdsSpacingX075}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n selected: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst noOptionsMessage = {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingX025}`,\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n};\n\nconst valueContainer = {\n isMulti: {\n gap: spacing.SizesDdsSpacingX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingX05,\n};\n\nexport const selectTokens = {\n control,\n dropdownIndicator,\n placeholder,\n menu,\n groupHeading,\n option,\n valueContainer,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n clearIndicator,\n loadingIndicator,\n icon,\n};\n","import {\n type ClearIndicatorProps,\n type ControlProps,\n type DropdownIndicatorProps,\n type GroupBase,\n type InputProps,\n type MultiValueRemoveProps,\n type NoticeProps,\n type OptionProps,\n type SingleValueProps,\n components,\n} from 'react-select';\n\nimport { InnerSingleValue, StyledIcon } from './Select.styles';\nimport { getFormInputIconSize } from '../../utils';\nimport { type InputSize } from '../helpers';\nimport { Icon, type SvgIcon } from '../Icon';\nimport { CheckIcon, ChevronDownIcon, CloseSmallIcon } from '../Icon/icons';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport const DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nexport const CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nexport const CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <InnerSingleValue id={id}>\n {Element ? <Element {...props} /> : props.children}\n </InnerSingleValue>\n </SingleValue>\n);\n\nexport const DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nexport const DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getFormInputIconSize(size)} />\n </ClearIndicator>\n);\n\nexport const DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nexport const DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <DropdownIndicator {...props}>\n <Icon icon={ChevronDownIcon} iconSize={getFormInputIconSize(size)} />\n </DropdownIndicator>\n);\n\nexport const DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nexport const DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n icon?: SvgIcon,\n) => (\n <Control {...props}>\n {icon && (\n <StyledIcon icon={icon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Control>\n);\n","import type { SelectOption } from './Select';\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n","import { forwardRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n purposeVariants,\n globalMessageTokens as tokens,\n typographyType,\n} from './GlobalMessage.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography, getFontStyling } from '../Typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type GlobalMessagePurpose } from './GlobalMessage';\nimport { type ButtonPurpose } from '../Button';\nimport { ErrorIcon, InfoIcon, WarningIcon } from '../Icon/icons';\nimport { type SvgIcon } from '../Icon/utils';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingX1}`,\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingX15,\n paddingTop: spacing.SizesDdsSpacingX075,\n paddingBottom: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingX075,\n },\n};\n\nexport const purposeVariants: {\n [k in GlobalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n};\n\nexport const globalMessageTokens = {\n container,\n contentContainer,\n icon: {\n marginRight: `${spacing.SizesDdsSpacingX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import { type Property } from 'csstype';\nimport { forwardRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Button } from '../Button';\nimport { selection } from '../helpers';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport {\n Typography,\n defaultTypographyType,\n getFontStyling,\n} from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type LocalMessagePurpose } from './LocalMessage';\nimport { type ButtonPurpose } from '../Button';\nimport {\n CheckCircledIcon,\n ErrorIcon,\n InfoIcon,\n TipIcon,\n WarningIcon,\n} from '../Icon/icons';\nimport { type SvgIcon } from '../Icon/utils';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border, outerShadow } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n base: {\n boxShadow: outerShadow.DdsShadow1Onlight,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n padding: spacing.SizesDdsSpacingX075,\n gap: spacing.SizesDdsSpacingX05,\n },\n purpose: {\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n success: {\n borderColor: colors.DdsColorSuccessLighter,\n backgroundColor: colors.DdsColorSuccessLightest,\n },\n tips: {\n borderColor: colors.DdsColorPrimaryLighter,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n confidential: {\n borderColor: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n },\n};\n\nconst purposeVariants: {\n [k in LocalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n success: {\n icon: CheckCircledIcon,\n closeButtonPurpose: 'secondary',\n },\n tips: {\n icon: TipIcon,\n closeButtonPurpose: 'secondary',\n },\n confidential: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n};\n\nconst icon = {\n marginRight: `${spacing.SizesDdsSpacingX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n success: {\n color: colors.DdsColorSuccessDarkest,\n },\n tips: {\n color: colors.DdsColorPrimaryDarkest,\n },\n confidential: {\n color: colors.DdsColorDangerDarkest,\n },\n};\n\nexport const localMessageTokens = {\n container,\n purposeVariants,\n icon,\n};\n","import {\n type ButtonHTMLAttributes,\n type ChangeEvent,\n type InputHTMLAttributes,\n type MouseEvent,\n forwardRef,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport {\n Input as BaseInput,\n type InputProps as BaseInputProps,\n} from '../helpers';\nimport { Icon, type IconSize } from '../Icon';\nimport { CloseSmallIcon, SearchIcon } from '../Icon/icons';\nimport { Label, getFontStyling } from '../Typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type RefObject,\n createContext,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nimport { type SearchSize } from './Search';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { spacing, iconSizes, colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport const typographyTypes: { [k in SearchSize]: StaticTypographyType } = {\n small: 'bodySans01',\n medium: 'bodySans02',\n large: 'bodySans04',\n};\n\nconst paddingLeftSmall = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingX25,\n paddingLeft: spacing.SizesDdsSpacingX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingX05,\n paddingBottom: spacing.SizesDdsSpacingX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingX075,\n paddingBottom: spacing.SizesDdsSpacingX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingX1,\n paddingBottom: spacing.SizesDdsSpacingX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingX075,\n color: textDefault.textColor,\n },\n small: {\n top: `calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`,\n },\n medium: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n large: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n};\n\nconst clearButton = {\n right: spacing.SizesDdsSpacingX075,\n top: `calc(50% - 14px)`, // Knappen er 28px høy. Trekker fra 14px for å få den midtstilt.\n color: textDefault.textColor,\n};\n\nconst suggestionsContainer = {\n marginTop: spacing.SizesDdsSpacingX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { type ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => null,\n stopPropagation: () => null,\n nativeEvent: new Event('input'),\n persist: () => null,\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import { type MouseEvent, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { type SearchProps, type SearchSize } from './Search';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { useRoveFocus } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { derivativeIdGenerator } from '../../utils';\nimport { Paper, removeListStyling, visibilityTransition } from '../helpers';\nimport {\n OverflowMenuItem,\n type OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { Typography, getFontStyling } from '../Typography';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import styled from 'styled-components';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n AutocompleteSearchContext,\n type AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\nimport { searchFilter } from '../../utils';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import {\n Search as BaseSearch,\n type SearchProps,\n type SearchSize,\n} from './Search';\nimport {\n SearchAutocompleteWrapper,\n type SearchAutocompleteWrapperProps,\n type SearchData,\n type WeightedSearchData,\n} from './SearchAutocompleteWrapper';\nimport {\n SearchSuggestions,\n type SearchSuggestionsProps,\n} from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import {\n type ElementType,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n forwardRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { useIsInTableHead } from './Head';\nimport { tableTokens } from './Table.tokens';\nimport { DescriptionListDesc } from '../DescriptionList';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**\n * Type celle. Returnerer enten `<td>` eller `<th>`.\n * @default 'data' hvis den er brukt i `<Table.Body>` eller `<Table.Foot>`, 'head' hvis den er i `<Table.Head>`.\n */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type: _type, layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'data');\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import {\n type HTMLAttributes,\n createContext,\n forwardRef,\n useContext,\n} from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n <HeadContext.Provider value={true}>{children}</HeadContext.Provider>\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n\nconst HeadContext = createContext(false);\n\nexport function useIsInTableHead(): boolean {\n const isInTableHead = useContext(HeadContext);\n return isInTableHead;\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingX075,\n marginRight: spacing.SizesDdsSpacingX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { selection } from '../helpers';\n\nconst { term, desc, list } = tokens;\n\ntype DListProps = Pick<DescriptionListProps, 'appearance' | 'direction'>;\n\nconst DList = styled.dl.withConfig({\n shouldForwardProp: prop => prop !== 'appearance' && prop !== 'direction',\n})<DListProps>`\n margin: 0;\n *::selection {\n ${selection}\n }\n ${({ appearance }) =>\n appearance &&\n css`\n dt {\n color: ${term.appearance[appearance].color};\n ${appearance === 'bold' &&\n css`\n font-weight: 600;\n `}\n }\n `}\n display: flex;\n flex-direction: column;\n &:not(:has(> dt):has(> dd)) {\n flex-direction: ${({ direction = 'column' }) => direction};\n }\n flex-wrap: wrap;\n column-gap: ${list.rowDirection.columnGap};\n row-gap: 0;\n & > dt:first-of-type {\n margin-top: ${term.firstOfType.marginTop};\n }\n & > dd:last-child {\n margin-bottom: ${desc.lastChild.marginBottom};\n }\n dd + dt {\n margin-top: ${list.beforeNextTerm.marginTop};\n }\n`;\n\nexport type DescriptionListAppearance = 'small' | 'bold';\n\nexport type DescriptionListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**Påvirker tekst styling. */\n appearance?: DescriptionListAppearance;\n /**Setter flex-direction. NB! Fungerer kun ved bruk av `DescriptionListGroup` som barn av `DescriptionList`.\n * @default \"column\"\n */\n direction?: 'row' | 'column';\n }\n>;\n\nexport const DescriptionList = forwardRef<\n HTMLDListElement,\n DescriptionListProps\n>((props, ref) => {\n const {\n appearance = 'bold',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n appearance,\n direction,\n ref,\n };\n\n return <DList {...dListProps}>{children}</DList>;\n});\n\nDescriptionList.displayName = 'DescriptionList';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst term = {\n appearance: {\n small: {\n color: colors.DdsColorNeutralsGray7,\n },\n bold: {\n color: colors.DdsColorNeutralsGray9,\n },\n },\n firstOfType: {\n marginTop: spacing.SizesDdsSpacingX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { type Property } from 'csstype';\nimport { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n Children,\n Fragment,\n type ReactElement,\n cloneElement,\n forwardRef,\n isValidElement,\n useEffect,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { useCollapsibleTableContext } from './Table.context';\nimport { Table } from '..';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport {\n AnimatedChevronUpDown,\n focusVisible,\n focusVisibleTransitionValue,\n removeButtonStyling,\n} from '../../helpers';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useIsInTableHead } from '../Head';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\nimport { type TableRowProps } from '../Table.types';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type: _type, mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'body');\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { createContext, useContext } from 'react';\n\nimport { type HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import styled, { css } from 'styled-components';\n\nimport { tableTokens } from './Table.tokens';\nimport { type RowMode, type TableRowType } from './Table.types';\nimport { focusVisibleInset } from '../helpers';\nimport { defaultTypographyType, getFontStyling } from '../Typography';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { CollapsibleTableContext } from './Table.context';\nimport { Table } from '../Table';\nimport { type CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tableTokens } from './Table.tokens';\nimport { type TableDensity, type TableProps } from './Table.types';\nimport { selection } from '../helpers';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\n\nimport { useIsInTableHead } from './Head';\nimport { StyledRow } from './Table.styles';\nimport { type TableRowProps } from './Table.types';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type: _type, mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n const isInHeader = useIsInTableHead();\n const type = _type ?? (isInHeader ? 'head' : 'body');\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import { type MouseEvent, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Cell, type TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\nimport { focusVisible, normalizeButton, removeButtonStyling } from '../helpers';\nimport { Icon } from '../Icon';\nimport { ChevronDownIcon, ChevronUpIcon, UnfoldMoreIcon } from '../Icon/icons';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { type HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Body, type TableBodyProps } from './Body';\nimport {\n Cell,\n type TableCellLayout,\n type TableCellProps,\n type TableCellType,\n} from './Cell';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport { Foot, type TableFootProps } from './Foot';\nimport { Head, type TableHeadProps } from './Head';\nimport { Row } from './Row';\nimport { SortCell, type SortOrder, type TableSortCellProps } from './SortCell';\nimport { Table as BaseTable } from './Table';\nimport {\n type CollapsibleTableProps,\n type TableDensity,\n type TableProps,\n type TableRowProps,\n type TableRowType,\n} from './Table.types';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import {\n type AnchorHTMLAttributes,\n type HTMLAttributes,\n forwardRef,\n} from 'react';\n\nimport { Typography } from '../Typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { Children, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { removeListStyling } from '../helpers';\nimport { Icon } from '../Icon';\nimport { ChevronRightIcon } from '../Icon/icons';\nimport { getFontStyling } from '../Typography';\n\nconst { icon, list, listItem } = breadcrumbTokens;\n\nconst List = styled.ol`\n ${removeListStyling}\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${list.gap};\n`;\nList.displayName = 'List';\n\nconst ListItem = styled.li`\n align-items: center;\n display: flex;\n gap: ${listItem.gap};\n ${getFontStyling(typographyType)}\n`;\nListItem.displayName = 'ListItem';\n\nconst StyledIcon = styled(Icon)`\n color: ${icon.color};\n`;\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<HTMLElement>;\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { children, id, className, htmlProps, ...rest } = props;\n\n const childrenArray = Children.toArray(children);\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <ListItem key={`breadcrumb-${index}`}>\n {index !== 0 && <StyledIcon icon={ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst listItem = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { type HTMLAttributes, forwardRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport {\n ChevronFirstIcon,\n ChevronLastIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from '../Icon/icons';\nimport { Select } from '../Select';\nimport { Typography } from '../Typography';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { type ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\nimport { listTokens as tokens } from './List.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { selection } from '../helpers';\nimport { type TypographyBodyType, getFontStyling } from '../Typography';\n\nconst { list, listItem, bullet } = tokens;\n\ninterface StyledListProps {\n $listType: ListType;\n $typographyType: ListTypographyType;\n}\n\nconst StyledList = styled.ul<StyledListProps>`\n margin: ${list.base.margin};\n color: ${list.base.color};\n ul,\n ol {\n margin: 0;\n }\n *::selection {\n ${selection}\n }\n\n ${({ $typographyType }) =>\n $typographyType === 'inherit'\n ? css`\n font: inherit;\n `\n : css`\n ${getFontStyling($typographyType)}\n `}\n\n ${({ $listType }) =>\n $listType === 'unordered'\n ? css`\n padding-left: ${list.ul.paddingLeft};\n list-style: none;\n li {\n position: relative;\n padding-left: ${listItem.ul.paddingLeft};\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: ${bullet.top};\n left: 0;\n background-size: contain;\n background-repeat: no-repeat;\n background-image: ${`url('${bulletLvl1}')`};\n }\n ul > li:before {\n background-image: ${`url('${bulletLvl2}')`};\n }\n ul > li > ul > li:before {\n background-image: ${`url('${bulletLvl3}')`};\n }\n }\n `\n : css`\n padding-left: ${list.ol.paddingLeft};\n & > li > ol {\n list-style-type: lower-alpha;\n }\n & > li > ol > li > ol {\n list-style-type: lower-roman;\n }\n `}\n`;\n\nexport type ListType = 'ordered' | 'unordered';\nexport type ListTypographyType = TypographyBodyType | 'inherit';\n\nexport type ListProps = BaseComponentPropsWithChildren<\n HTMLUListElement | HTMLOListElement,\n {\n /**Spesifiserer om komponenten skal returnere `<ul />` (punktliste) eller `<ol />` (nummerert liste). */\n listType?: ListType;\n /**Spesifiserer typografi for listen. Komponenten arver i utgangspunktet fra forelder, men hvis forelder stiller ikke med relevant styling må det velges `TypographyBodyType` som brukes i `<body>` ellers på siden. */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n (props, ref) => {\n const {\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <StyledList\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as={as}\n ref={ref}\n $listType={listType}\n $typographyType={typographyType}\n >\n {children}\n </StyledList>\n );\n },\n);\n\nList.displayName = 'List';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst ulLiPaddingLeft = `1em + ${spacing.SizesDdsSpacingX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingX2,\n },\n ul: {\n paddingLeft: `calc(${ulPaddingLeft})`,\n },\n};\n\nconst listItem = {\n lineHeight: '2.5em',\n ul: {\n paddingLeft: `calc(${ulLiPaddingLeft})`,\n },\n};\n\nconst bullet = {\n top: `calc((${listItem.lineHeight} / 2) - 0.5em )`,\n};\n\nexport const listTokens = {\n list,\n listItem,\n bullet,\n spaceLeft: spacing.SizesDdsSpacingX2,\n};\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { type AnchorHTMLAttributes, type RefObject } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { cardTokens as tokens } from './Card.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { focusVisibleWithBorder, hoverWithBorder, selection } from '../helpers';\nimport { defaultTypographyType, getFontStyling } from '../Typography';\n\ninterface ContainerProps {\n color: CardColor;\n cardType: CardType;\n}\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'color' && prop !== 'cardType',\n})<ContainerProps>`\n border: ${tokens.base.border};\n ${getFontStyling(defaultTypographyType)};\n &::selection,\n *::selection {\n ${selection}\n }\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n ${({ color }) =>\n color &&\n css`\n color: ${tokens.colors[color].color};\n background-color: ${tokens.colors[color].backgroundColor};\n border-color: ${tokens.colors[color].borderColor};\n `}\n ${({ cardType }) =>\n cardType === 'navigation'\n ? css`\n text-decoration: none;\n &:hover {\n ${hoverWithBorder}\n }\n &:focus {\n ${focusVisibleWithBorder}\n }\n `\n : cardType === 'expandable'\n ? css`\n width: 100%;\n box-sizing: border-box;\n &:not(:first-of-type) {\n border-top: none;\n }\n `\n : ''}\n`;\nexport type CardColor =\n | 'filledDark'\n | 'filledLight'\n | 'strokeDark'\n | 'strokeLight';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Fargepalett i komponenten. */\n color?: CardColor;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. Ved `'expandable'` må alle `<Card />` grupperte sammen ligge egen `<div>` container. */\n cardType: 'info';\n};\n\nexport type NavigationCardProps = BaseCardProps<HTMLAnchorElement> & {\n cardType: 'navigation';\n} & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n\nexport type ExpandableCardProps = BaseCardProps<HTMLDivElement> & {\n cardType: 'expandable';\n};\n\nexport type CardProps =\n | InfoCardProps\n | NavigationCardProps\n | ExpandableCardProps;\n\nexport const Card = (props: CardProps) => {\n const {\n color = 'filledLight',\n cardType,\n cardRef,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"a\"\n ref={cardRef}\n href={href}\n target={target}\n >\n {children}\n </Container>\n );\n }\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"div\"\n ref={cardRef}\n >\n {children}\n </Container>\n );\n};\n\nCard.displayName = 'Card';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, border } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst base = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n};\n\nconst cardColors = {\n filledLight: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n borderColor: colors.DdsColorPrimaryLightest,\n color: textDefault.textColor,\n },\n filledDark: {\n backgroundColor: colors.DdsColorPrimaryBase,\n borderColor: colors.DdsColorPrimaryBase,\n color: colors.DdsColorNeutralsWhite,\n },\n strokeDark: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n strokeLight: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n};\n\nexport const cardTokens = {\n base: base,\n colors: cardColors,\n};\n","import { forwardRef, useCallback, useEffect, useId, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { CardAccordionContextProvider } from './CardAccordionContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nconst Wrapper = styled.div``;\n\nexport type CardAccordionProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om body skal være utvidet ved innlastning. */\n isExpanded?: boolean;\n /**For å lytte til endringer i expanded-state. */\n onChange?: (expanded: boolean) => void;\n }\n>;\n\nexport const CardAccordion = forwardRef<HTMLDivElement, CardAccordionProps>(\n (props, ref) => {\n const {\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [expanded, setExpanded] = useState(isExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-cardAccordion`;\n\n useEffect(() => {\n setExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n setExpanded(prevExpanded => {\n const newExpanded = !prevExpanded;\n\n if (onChange) {\n onChange(newExpanded);\n }\n\n return newExpanded;\n });\n }, [onChange]);\n\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} ref={ref}>\n <CardAccordionContextProvider\n headerId={`${accordionId}-header`}\n bodyId={`${accordionId}-body`}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n >\n {children}\n </CardAccordionContextProvider>\n </Wrapper>\n );\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { type ReactNode, createContext, useContext } from 'react';\n\ninterface CardAccordionContext {\n headerId: string;\n bodyId: string;\n isExpanded: boolean;\n toggleExpanded: () => void;\n}\n\nconst CardAccordionContext = createContext<Partial<CardAccordionContext>>({});\n\nexport const CardAccordionContextProvider = ({\n children,\n ...values\n}: CardAccordionContext & { children: ReactNode }) => {\n return (\n <CardAccordionContext.Provider value={values}>\n {children}\n </CardAccordionContext.Provider>\n );\n};\n\nexport const useCardAccordionContext = (): CardAccordionContext => {\n const context = useContext(CardAccordionContext);\n\n if (!context) {\n throw new Error(\n 'useCardAccordionContext must be used within a CardAccordionContextProvider. Have you wrapped <CardAccordionHeader> and <CardAccordionBody> inside a <CardAccordion>?',\n );\n }\n\n return context as CardAccordionContext;\n};\n","import { type Property } from 'csstype';\nimport { type ButtonHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n AnimatedChevronUpDown,\n normalizeButton,\n removeButtonStyling,\n} from '../../helpers';\nimport { type StaticTypographyType, getFontStyling } from '../../Typography';\n\nconst { header, chevronWrapper } = tokens;\n\nconst ContentWrapper = styled.div`\n text-align: left;\n`;\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType ?? typographyTypes.header;\n}\n\ninterface HeaderProps {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n}\n\nconst HeaderContainer = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'padding' && prop !== 'typographyType' && prop !== 'bold',\n})<HeaderProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n padding: ${({ padding }) => padding ?? header.padding};\n ${props => getFontStyling(getTypographyType(props))}\n ${props =>\n props.bold &&\n css`\n font-weight: 600;\n `}\n`;\n\nconst HeaderWrapperButton = styled.button`\n ${normalizeButton}\n user-select: text;\n position: relative;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n ${removeButtonStyling}\n display: block;\n width: 100%;\n &:hover {\n box-shadow: ${header.hover.boxShadow};\n }\n\n &:focus-visible,\n &.focus-visible {\n outline: none;\n box-shadow: ${header.focus.boxShadow};\n }\n`;\n\nconst ChevronWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${chevronWrapper.width};\n height: ${chevronWrapper.height};\n margin-left: ${chevronWrapper.marginLeft};\n`;\n\nexport type CardAccordionHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const {\n headerId: id,\n bodyId,\n toggleExpanded,\n isExpanded,\n } = useCardAccordionContext();\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: toggleExpanded,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type StaticTypographyType } from '../../Typography';\n\nconst { spacing, border, iconSizes } = ddsBaseTokens;\n\nexport const typographyTypes: {\n body: StaticTypographyType;\n header: StaticTypographyType;\n} = {\n body: 'bodySans03',\n header: 'headingSans03',\n};\n\nconst header = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n hover: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusInputfieldStrokeWeight} ${border.BordersDdsBorderFocusInputfieldStroke}`,\n },\n focus: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusCardStrokeWeight} ${border.BordersDdsBorderFocusCardStroke}`,\n },\n};\n\nconst chevronWrapper = {\n width: iconSizes.DdsIconsizeMedium,\n height: iconSizes.DdsIconsizeMedium,\n marginLeft: spacing.SizesDdsSpacingX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingX1} ${\n spacing.SizesDdsSpacingX2NumberPx + spacing.SizesDdsSpacingX075NumberPx\n }px ${spacing.SizesDdsSpacingX2} ${spacing.SizesDdsSpacingX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingX05,\n },\n};\n","import { type Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport { useElementHeight } from './useElementHeight';\nimport { useIsMounted } from '../../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n type Nullable,\n getBaseHTMLProps,\n} from '../../../types';\nimport { getFontStyling } from '../../Typography';\n\nconst expandingAnimation = css`\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n`;\n\nfunction getPadding(props: BodyContainerProps): string {\n const { padding } = props;\n\n return padding ?? tokens.body.padding;\n}\n\ninterface BodyProps {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n}\n\nconst Body = styled.div.withConfig({\n shouldForwardProp: prop => {\n return prop !== 'animate' && prop !== 'height' && prop !== 'isExpanded';\n },\n})<BodyProps>`\n ${({ isExpanded }) =>\n !isExpanded &&\n css`\n display: none;\n `}\n @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Overskriver default padding på toppen. Brukes når barn har spacing på toppen, f.eks. en overskrift. */\n paddingTop?: Property.PaddingTop<string>;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n >,\n 'id'\n>;\n\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const { children, className, htmlProps, padding, paddingTop, ...rest } =\n props;\n\n const { headerId, isExpanded, bodyId: id } = useCardAccordionContext();\n\n const bodyRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyRef.current);\n\n const [initialExpandedHeight, setIntialExpandedHeight] =\n useState<Nullable<number>>(null);\n\n useLayoutEffect(() => {\n // For å unngå initiell animasjon dersom Accordion er satt til å være åpen som default.\n if (bodyRef.current && isExpanded) {\n setIntialExpandedHeight(bodyRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n return (\n <Body\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n isExpanded={isExpanded}\n role=\"region\"\n height={height ?? initialExpandedHeight ?? 0}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer\n ref={bodyRef}\n isExpanded={isExpanded}\n padding={padding}\n paddingTop={paddingTop}\n animate={animate}\n >\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { useEffect, useState } from 'react';\n\nimport { type Nullable } from '../../../types';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\n\nimport {\n ApplicationNameWrapper,\n BannerLeftWrapper,\n BannerWrapper,\n ContextMenuGroup,\n LovisaWrapper,\n Navigation,\n NavigationList,\n OuterContainer,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { type InternalHeaderProps } from './InternalHeader.types';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { NavigationItem } from './NavigationItem';\nimport { getBaseHTMLProps } from '../../types';\nimport { Button } from '../Button';\nimport { MenuIcon, MoreVerticalIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\n\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { type InternalHeaderProps } from './InternalHeader.types';\nimport { selection } from '../helpers';\nimport { OverflowMenu } from '../OverflowMenu';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type StaticTypographyType } from '../Typography';\n\nconst { border, colors, spacing } = ddsBaseTokens;\n\nconst borderStyle = `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `;\n\nexport const typographyTypes: Record<string, StaticTypographyType> = {\n navLink: 'bodySans01',\n};\n\nconst navLink = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX15}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDark,\n },\n current: {\n color: colors.DdsColorInteractiveDarkest,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n};\n\nconst outerContainer = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n};\n\nconst applicationNameWrapper = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingX075,\n top: spacing.SizesDdsSpacingX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { type AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { focusVisible } from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { type Property } from 'csstype';\nimport { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { skipToContentTokens as tokens } from './SkipToContent.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { focusVisibleOnDark, focusVisibleTransitionValue } from '../helpers';\nimport { defaultTypographyType, getFontStyling } from '../Typography';\n\nconst { wrapper, link } = tokens;\n\nconst Wrapper = styled.div<{\n $top: Property.Top;\n}>`\n box-sizing: border-box;\n position: absolute;\n top: ${({ $top: top }) => top};\n text-align: center;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n width: 1px;\n white-space: nowrap;\n background-color: ${wrapper.backgroundColor};\n padding: ${wrapper.padding};\n opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n\n &:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: 250;\n opacity: 1;\n }\n`;\n\nconst Link = styled.a`\n text-decoration: none;\n color: ${link.base.color};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n &:focus {\n ${focusVisibleOnDark}\n }\n &:hover {\n color: ${link.base.color};\n }\n`;\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka. */\n text?: string;\n /**Spesifiserer hvor det skal hoppes til via `id`-attributtet til innholdet. */\n href: string;\n /**Avstand fra top i nærmeste posisjonert container. */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = forwardRef<HTMLAnchorElement, SkipToContentProps>(\n (props, ref) => {\n const {\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n return (\n <Wrapper\n $top={top}\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)} ref={ref}>\n {text}\n </Link>\n </Wrapper>\n );\n },\n);\n\nSkipToContent.displayName = 'SkipToContent';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst link = {\n base: {\n color: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst wrapper = {\n backgroundColor: colors.DdsColorPrimaryBase,\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import { type Placement } from '@floating-ui/react-dom';\nimport React, {\n type HTMLAttributes,\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { useCombinedRef, useFloatPosition, useOnKeyDown } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\n\nconst { svgArrow } = tokens;\n\ntype AnchorElement = React.ReactElement & React.RefAttributes<HTMLElement>;\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'style' | 'onMouseLeave' | 'onMouseOver'\n>;\n\nexport type TooltipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /**Innhold i tooltip. */\n text: string;\n /**Plassering i forhold til anchor-elementet. */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder. */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (props, ref) => {\n const {\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueTooltipId = tooltipId ?? `${generatedId}-tooltip`;\n const [open, setOpen] = useState(false);\n const [inView, setInView] = useState(false);\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null);\n const { refs, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => null);\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\n\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { Paper, type PaperProps, visibilityTransition } from '../helpers';\nimport { defaultTypographyType, getFontStyling } from '../Typography';\n\nconst { wrapper } = tokens;\n\nexport const SvgArrow = styled.svg`\n width: 36px;\n height: 9px;\n`;\n\nexport const ArrowWrapper = styled.div``;\n\nexport const Container = styled.div`\n width: fit-content;\n`;\n\ntype WrapperProps = PaperProps & {\n open: boolean;\n};\n\nexport const TooltipWrapper = styled(Paper)<WrapperProps>`\n ${({ open }) => visibilityTransition(open)}\n width: fit-content;\n position: absolute;\n z-index: 80;\n text-align: center;\n padding: ${wrapper.padding};\n ${getFontStyling(defaultTypographyType)};\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import {\n type ReactNode,\n type RefObject,\n forwardRef,\n useEffect,\n useId,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from 'styled-components';\n\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from './Backdrop';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Button } from '../Button';\nimport { Paper, focusVisible, selection } from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n /**Ref som skal motta fokus når Modal åpnes. Hvis utelatt blir Modal fokusert. */\n initialFocusRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const {\n isOpen = false,\n parentElement = document.body,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n className,\n htmlProps,\n ...rest\n } = props;\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose();\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }, [isOpen]);\n\n useOnClickOutside(modalRef.current, () => handleClose());\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport styled from 'styled-components';\n\nimport { changeRGBAAlpha } from '../../../utils';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingX1,\n gap: spacing.SizesDdsSpacingX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import { type Property } from 'csstype';\nimport { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { ScrollableContainer } from '../ScrollableContainer';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { type Property } from 'csstype';\nimport { type ReactNode, type RefObject, forwardRef, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Button } from '../Button';\nimport { Paper, focusVisible } from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Typography } from '../Typography';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => {\n if (isOpen) {\n onClose?.();\n }\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n placement,\n ref: combinedRef,\n isOpen: hasTransitionedIn && isOpen,\n tabIndex: -1,\n role: 'dialog',\n 'aria-labelledby': headerId,\n size,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Container {...containerProps} elevation={4}>\n <ScrollableContainer>\n <ContentContainer>\n {hasHeader && (\n <HeaderContainer {...headerContainerProps}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n </ScrollableContainer>\n <StyledButton\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </Container>,\n parentElement,\n )\n : null;\n});\n\nDrawer.displayName = 'Drawer';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst contentContainerPaddingNumberPx = spacing.SizesDdsSpacingX025NumberPx;\nconst contentContainerPadding = `${contentContainerPaddingNumberPx}px`;\n\nconst container = {\n padding: `${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingX15NumberPx - contentContainerPaddingNumberPx\n }px`,\n};\n\nconst contentContainer = {\n gap: spacing.SizesDdsSpacingX1,\n padding: contentContainerPadding,\n};\n\nexport const drawerTokens = {\n container,\n contentContainer,\n};\n","import {\n Children as ReactChildren,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { GregorianCalendar } from '@internationalized/date';\nimport {\n type AriaCalendarProps,\n type DateValue,\n useCalendar,\n} from '@react-aria/calendar';\nimport { useCalendarState } from '@react-stately/calendar';\nimport { type FC, type PropsWithChildren } from 'react';\nimport styled from 'styled-components';\n\nimport {\n ArrowLeftIcon,\n ArrowRightIcon,\n Button,\n Heading,\n} from '@norges-domstoler/dds-components';\n\nimport { CalendarGrid } from './CalendarGrid';\nimport { locale } from '../constants';\n\nconst CalendarHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst CalendarContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst Month: FC<PropsWithChildren> = styled(Heading).attrs({\n level: 2,\n typographyType: 'headingSans02',\n})`\n text-transform: capitalize;\n`;\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\nexport type CalendarProps<T extends DateValue> = AriaCalendarProps<T>;\n\nexport function Calendar<T extends DateValue>(props: CalendarProps<T>) {\n const state = useCalendarState({\n ...props,\n createCalendar,\n locale,\n });\n const {\n calendarProps,\n prevButtonProps: { onPress: onPrev, 'aria-label': prevAriaLabel },\n nextButtonProps: { onPress: onNext, 'aria-label': nextAriaLabel },\n title,\n } = useCalendar(props, state);\n\n return (\n <CalendarContainer {...calendarProps}>\n <CalendarHeader>\n <Button\n type=\"button\"\n aria-label={prevAriaLabel}\n onClick={e => onPrev?.(e as never)}\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n icon={ArrowLeftIcon}\n />\n <Month>{title}</Month>\n <Button\n type=\"button\"\n aria-label={nextAriaLabel}\n onClick={e => onNext?.(e as never)}\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n icon={ArrowRightIcon}\n />\n </CalendarHeader>\n <CalendarGrid state={state} />\n </CalendarContainer>\n );\n}\n\nCalendar.displayName = 'Calendar';\n","import { getWeeksInMonth } from '@internationalized/date';\nimport {\n type AriaCalendarGridProps,\n useCalendarGrid,\n} from '@react-aria/calendar';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport styled from 'styled-components';\n\nimport { calendarTokens } from './Calendar.tokens';\nimport { CalendarCell } from './CalendarCell';\nimport { getWeekNumber } from '../../utils/getWeekNumber';\nimport { locale } from '../constants';\n\nconst { grid: gridTokens } = calendarTokens;\n\ninterface CalendarGridProps extends AriaCalendarGridProps {\n state: CalendarState | RangeCalendarState;\n}\n\nconst Th = styled.th`\n font-family: ${gridTokens.headers.fontFamily};\n font-size: ${gridTokens.headers.fontSize};\n font-style: ${gridTokens.headers.fontStyle};\n font-weight: ${gridTokens.headers.fontWeight};\n letter-spacing: ${gridTokens.headers.letterSpacing};\n line-height: ${gridTokens.headers.lineHeight};\n color: ${gridTokens.headers.color};\n`;\n\nconst WeekNumber = styled.td`\n font-family: ${gridTokens.weekNumbers.fontFamily};\n font-size: ${gridTokens.weekNumbers.fontSize};\n font-style: ${gridTokens.weekNumbers.fontStyle};\n font-weight: ${gridTokens.weekNumbers.fontWeight};\n letter-spacing: ${gridTokens.weekNumbers.letterSpacing};\n line-height: ${gridTokens.weekNumbers.lineHeight};\n color: ${gridTokens.headers.color};\n width: ${calendarTokens.cell.width};\n height: ${calendarTokens.cell.height};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport function CalendarGrid({ state, ...props }: CalendarGridProps) {\n const {\n gridProps: { onKeyDown, ...gridProps },\n headerProps,\n } = useCalendarGrid(props, state);\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weekDays = ['Ma', 'Ti', 'On', 'To', 'Fr', 'Lø', 'Sø'];\n\n return (\n <table\n {...gridProps}\n onKeyDown={e => {\n if (\n (e.key === 'Enter' || e.key === ' ') &&\n state.isCellUnavailable(state.focusedDate)\n ) {\n return;\n }\n\n onKeyDown?.(e);\n }}\n cellPadding=\"0\"\n >\n <thead {...headerProps}>\n <tr>\n <Th>#</Th>\n {weekDays.map((day, index) => (\n <Th key={index}>{day}</Th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map(weekIndex => {\n const datesInWeek = state.getDatesInWeek(weekIndex);\n const firstExistingDay = datesInWeek.find(Boolean);\n const weekNumber = firstExistingDay\n ? getWeekNumber(firstExistingDay)\n : '';\n return (\n <tr key={weekIndex}>\n <WeekNumber>{weekNumber}</WeekNumber>\n {datesInWeek.map((date, i) =>\n date ? (\n <CalendarCell key={i} state={state} date={date} />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n\nCalendarGrid.displayName = 'CalendarGrid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type CSSProperties } from 'react';\n\nexport type CellVariant = 'default' | 'selected' | 'unavailable';\ninterface CellStyle {\n bg: CSSProperties['background'];\n borderColor?: CSSProperties['backgroundColor'];\n color: CSSProperties['color'];\n fontWeight?: CSSProperties['fontWeight'];\n textDecoration?: CSSProperties['textDecoration'];\n cursor?: CSSProperties['cursor'];\n hover?: Pick<CellStyle, 'bg' | 'color' | 'borderColor'>;\n today?: Pick<CellStyle, 'textDecoration' | 'borderColor'>;\n}\n\nconst cellVariantStyles: Record<CellVariant, CellStyle> = {\n default: {\n bg: 'transparent',\n color: ddsBaseTokens.colors.DdsColorNeutralsGray9,\n hover: {\n bg: ddsBaseTokens.colors.DdsColorInteractiveLightest,\n borderColor: ddsBaseTokens.colors.DdsColorInteractiveBase,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray9,\n },\n today: {\n textDecoration: 'underline',\n },\n },\n selected: {\n bg: ddsBaseTokens.colors.DdsColorInteractiveBase,\n borderColor: ddsBaseTokens.colors.DdsColorInteractiveBase,\n color: ddsBaseTokens.colors.DdsColorNeutralsWhite,\n fontWeight: 600,\n today: {\n textDecoration: 'underline',\n },\n },\n unavailable: {\n bg: ddsBaseTokens.colors.DdsColorNeutralsGray1,\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray1,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n textDecoration: 'line-through',\n cursor: 'not-allowed',\n today: {\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n textDecoration: 'underline line-through',\n },\n },\n};\n\nconst cell = {\n width: '40px',\n height: '40px',\n font: ddsBaseTokens.fontPackages.body_sans_01.base,\n borderWidth: ddsBaseTokens.border.BordersDdsBorderStyleDarkStrokeWeight,\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n variants: cellVariantStyles,\n today: {\n borderColor: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n textDecoration: 'underline',\n },\n};\n\nconst grid = {\n headers: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_02.base,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n },\n weekNumbers: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_02.base,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n },\n gap: '2px',\n};\n\nconst popover = {\n backgroundColor: ddsBaseTokens.colors.DdsColorNeutralsWhite,\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n border: `2px solid ${ddsBaseTokens.border.BordersDdsBorderFocusInputfieldStroke}`,\n padding: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n zIndex: 100,\n};\n\nexport const calendarTokens = { grid, cell, popover };\n","import { isToday } from '@internationalized/date';\nimport {\n type AriaCalendarCellProps,\n useCalendarCell,\n} from '@react-aria/calendar';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport { useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n focusVisible,\n normalizeButton,\n} from '@norges-domstoler/dds-components';\n\nimport { type CellVariant, calendarTokens } from './Calendar.tokens';\nimport { timezone } from '../constants';\n\ninterface CalendarCellProps extends AriaCalendarCellProps {\n state: CalendarState | RangeCalendarState;\n}\n\ninterface CellProps {\n $variant: CellVariant;\n $isToday: boolean;\n}\n\nconst Cell = styled.button<CellProps>`\n ${normalizeButton}\n width: ${calendarTokens.cell.width};\n height: ${calendarTokens.cell.height};\n\n font-family: ${calendarTokens.cell.font.fontFamily};\n font-size: ${calendarTokens.cell.font.fontSize};\n font-style: ${calendarTokens.cell.font.fontStyle};\n font-weight: ${calendarTokens.cell.font.fontWeight};\n letter-spacing: ${calendarTokens.cell.font.letterSpacing};\n line-height: ${calendarTokens.cell.font.lineHeight};\n\n border: ${calendarTokens.cell.borderWidth} solid\n ${({ $isToday }) =>\n $isToday ? calendarTokens.cell.today.borderColor : 'transparent'};\n border-radius: ${calendarTokens.cell.borderRadius};\n\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n &:focus-visible {\n ${focusVisible}\n }\n\n ${({ $variant, $isToday }) => {\n const variantStyles = calendarTokens.cell.variants[$variant];\n return css`\n background-color: ${variantStyles.bg};\n color: ${variantStyles.color};\n border-color: ${variantStyles.borderColor};\n font-weight: ${variantStyles.fontWeight};\n text-decoration: ${variantStyles.textDecoration};\n cursor: ${variantStyles.cursor};\n\n ${() =>\n variantStyles.today &&\n $isToday &&\n css`\n border-color: ${variantStyles.today.borderColor};\n text-decoration: ${variantStyles.today.textDecoration};\n `}\n\n ${variantStyles.hover &&\n css`\n &:hover {\n background-color: ${variantStyles.hover.bg};\n color: ${variantStyles.hover.color};\n border-color: ${variantStyles.hover.borderColor ??\n calendarTokens.cell.today.borderColor};\n }\n `}\n `;\n }}\n`;\n\nexport function CalendarCell({ date, state }: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n buttonProps,\n cellProps,\n isOutsideVisibleRange,\n formattedDate,\n isSelected,\n isDisabled,\n isUnavailable,\n } = useCalendarCell({ date }, state, ref);\n if (isDisabled) {\n return <td {...cellProps} />;\n }\n\n const variant: CellVariant = isSelected\n ? 'selected'\n : isUnavailable || isDisabled\n ? 'unavailable'\n : 'default';\n\n return (\n <td {...cellProps}>\n <Cell\n {...buttonProps}\n type=\"button\"\n $isToday={isToday(date, timezone)}\n $variant={variant}\n ref={ref}\n hidden={isOutsideVisibleRange}\n >\n {formattedDate}\n </Cell>\n </td>\n );\n}\n\nCalendarCell.displayName = 'CalendarCell';\n","export const locale = 'no-NO' as const;\nexport const timezone = 'Europe/Oslo' as const;\n","import {\n type CalendarDate,\n type CalendarDateTime,\n type ZonedDateTime,\n endOfYear,\n startOfWeek,\n startOfYear,\n} from '@internationalized/date';\n\n/**\n * Calculates the week number following the ISO-8601 format.\n * @returns week number, 1 indexed\n */\nexport function getWeekNumber(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const dayOfWeek = getDayOfWeek(date);\n const dayOfYear = getDayOfYear(date);\n const jan1DayOfWeek = getDayOfWeek(startOfYear(date));\n\n const isPartOfLastWeekOfPreviousYear =\n dayOfYear <= 8 - jan1DayOfWeek && jan1DayOfWeek > 4;\n\n if (isPartOfLastWeekOfPreviousYear) {\n if (\n jan1DayOfWeek === 5 ||\n (jan1DayOfWeek === 6 && isLeapYear(date.subtract({ years: 1 })))\n ) {\n return 53;\n }\n return 52;\n }\n\n const daysInYear = getDayOfYear(endOfYear(date));\n if (daysInYear - dayOfYear < 4 - dayOfWeek) {\n return 1;\n }\n\n const weekNum = (dayOfYear + (7 - dayOfWeek) + (jan1DayOfWeek - 1)) / 7;\n if (jan1DayOfWeek > 4) {\n return weekNum - 1;\n }\n\n return weekNum;\n}\n\n/**\n * Mon = 1\n * Tue = 2\n * Wed = 3\n * Thu = 4\n * Fri = 5\n * Sat = 6\n * Sun = 7\n * @returns day of week, 1 indexed\n */\nexport function getDayOfWeek(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const weekStart = startOfWeek(date, 'no-NO');\n return (\n date.calendar.toJulianDay(date) -\n weekStart.calendar.toJulianDay(weekStart) +\n 1\n );\n}\n\n/**\n * @returns day of year, 1 indexed\n */\nexport function getDayOfYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const yearStart = startOfYear(date);\n return (\n date.calendar.toJulianDay(date) -\n yearStart.calendar.toJulianDay(yearStart) +\n 1\n );\n}\n\nexport function isLeapYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n return (\n (date.year % 4 === 0 && date.year % 100 !== 0) || date.year % 400 === 0\n );\n}\n","import { type CalendarDate } from '@internationalized/date';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport type { AriaDatePickerProps } from '@react-types/datepicker';\nimport type * as CSS from 'csstype';\nimport { type Ref, forwardRef, useRef } from 'react';\n\nimport { useCombinedRef } from '@norges-domstoler/dds-components';\n\nimport { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { DateField, type DateFieldProps } from './DateField/DateField';\nimport {\n type FocusableRef,\n useFocusManagerRef,\n} from '../utils/useFocusManagerRef';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<CalendarDate>, 'granularity'>,\n Pick<DateFieldProps<CalendarDate>, 'componentSize' | 'tip' | 'style'> {\n label?: string;\n errorMessage?: string;\n /**\n * For å sette en egendefinert bredde på komponenten.\n */\n width?: CSS.Properties['width'];\n}\n\nconst refIsFocusable = (ref: Ref<unknown>): ref is FocusableRef => {\n return typeof ref === 'object' && ref !== null && 'focus' in ref;\n};\n\nexport function _DatePicker(\n { errorMessage, componentSize, tip, style, width, ...props }: DatePickerProps,\n forwardedRef: Ref<HTMLElement>,\n) {\n const state = useDatePickerState(props);\n const domRef = useFocusManagerRef(\n refIsFocusable(forwardRef) ? forwardedRef : null,\n );\n const ref = useRef<HTMLElement>(null);\n const combinedRef = useCombinedRef(ref, domRef);\n const { buttonProps, calendarProps, fieldProps } = useDatePicker(\n { ...props, granularity: 'day' },\n state,\n ref,\n );\n\n return (\n <CalendarPopover isOpen={state.isOpen} onClose={state.close}>\n <CalendarPopoverAnchor>\n <DateField\n {...fieldProps}\n ref={combinedRef}\n componentSize={componentSize}\n tip={tip}\n label={props.label}\n errorMessage={errorMessage}\n buttonProps={buttonProps}\n isOpen={state.isOpen}\n style={style}\n width={width}\n />\n </CalendarPopoverAnchor>\n <CalendarPopoverContent>\n <Calendar {...calendarProps} />\n </CalendarPopoverContent>\n </CalendarPopover>\n );\n}\n\nexport const DatePicker = forwardRef(_DatePicker);\n\nDatePicker.displayName = 'DatePicker';\n","import {\n type ReactElement,\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport {\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '@norges-domstoler/dds-components';\n\nimport { calendarTokens } from './Calendar/Calendar.tokens';\nconst { popover: popoverTokens } = calendarTokens;\n\n/**------------------------------------------------------------------------\n * CalendarPopover\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContextValue {\n anchorRef: RefObject<HTMLDivElement> | null;\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst CalendarPopoverContext = createContext<CalendarPopoverContextValue>({\n anchorRef: null,\n isOpen: false,\n onClose: () => null,\n});\n\ninterface CalendarPopoverProps {\n children: ReactNode;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const CalendarPopover = ({\n children,\n isOpen,\n onClose,\n}: CalendarPopoverProps) => {\n const anchorRef = useRef<HTMLDivElement>(null);\n useOnKeyDown('Escape', onClose);\n return (\n <CalendarPopoverContext.Provider value={{ anchorRef, isOpen, onClose }}>\n {children}\n </CalendarPopoverContext.Provider>\n );\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverAnchor\n *------------------------------------------------------------------------*/\n\nconst Anchor = styled.div`\n display: inline-flex;\n`;\n\ninterface CalendarPopoverAnchorProps {\n children: ReactElement;\n}\n\nexport const CalendarPopoverAnchor = ({\n children,\n}: CalendarPopoverAnchorProps) => {\n const { anchorRef } = useContext(CalendarPopoverContext);\n return <Anchor ref={anchorRef ?? undefined}>{children}</Anchor>;\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverContent\n *------------------------------------------------------------------------*/\n\nconst PopoverContentContainer = styled.div`\n background-color: ${popoverTokens.backgroundColor};\n border: ${popoverTokens.border};\n border-radius: ${popoverTokens.borderRadius};\n padding: ${popoverTokens.padding};\n z-index: ${popoverTokens.zIndex};\n`;\n\ninterface CalendarPopoverContentProps {\n children: ReactNode;\n}\n\nexport const CalendarPopoverContent = ({\n children,\n}: CalendarPopoverContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { refs, styles } = useFloatPosition(null, {\n placement: 'bottom-start',\n });\n const { isOpen, onClose, anchorRef } = useContext(CalendarPopoverContext);\n const combinedRef = useCombinedRef(refs.setFloating, ref);\n\n useOnClickOutside(ref.current, onClose);\n\n useEffect(() => {\n refs.setReference(anchorRef?.current ?? null);\n }, []);\n\n if (!isOpen) return null;\n\n return (\n <PopoverContentContainer\n ref={combinedRef}\n style={styles.floating}\n onBlur={e => {\n const newFocus = e.relatedTarget;\n if (ref.current && !ref.current.contains(newFocus)) {\n onClose();\n }\n }}\n >\n {children}\n </PopoverContentContainer>\n );\n};\n","import {\n type CalendarDate,\n type DateValue,\n createCalendar,\n} from '@internationalized/date';\nimport {\n type AriaDateFieldOptions,\n useDateField,\n type useDatePicker,\n} from '@react-aria/datepicker';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport type * as CSS from 'csstype';\nimport { forwardRef, useRef } from 'react';\n\nimport { type InputProps } from '@norges-domstoler/dds-components';\n\nimport { CalendarButton } from './CalendarButton';\nimport { DateSegment } from './DateSegment';\nimport { DateInput } from '../../common/DateInput';\nimport { locale } from '../constants';\n\nexport type DateFieldProps<T extends DateValue = CalendarDate> =\n AriaDateFieldOptions<T> & {\n className?: string;\n buttonProps?: ReturnType<typeof useDatePicker>['buttonProps'];\n /**\n * For å sette en egendefinert bredde på komponenten.\n */\n width?: CSS.Properties['width'];\n } & Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'disabled' | 'style'\n >;\n\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n ({ componentSize = 'medium', buttonProps, ...props }, forwardedRef) => {\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const ref = useRef<HTMLInputElement>(null);\n const { labelProps, fieldProps } = useDateField(props, state, ref);\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n componentSize={componentSize}\n label={props.label}\n disabled={disabled}\n required={props.isRequired}\n ref={forwardedRef}\n internalRef={ref}\n readOnly={props.isReadOnly}\n prefix={\n !props.isReadOnly && (\n <CalendarButton\n componentSize={componentSize}\n {...buttonProps}\n isDisabled={disabled}\n />\n )\n }\n labelProps={labelProps}\n fieldProps={fieldProps}\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n },\n);\n\nDateField.displayName = 'DateField';\n","import { type AriaButtonProps, useButton } from '@react-aria/button';\nimport { useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n CalendarIcon,\n Icon,\n focusVisible,\n normalizeButton,\n selection,\n} from '@norges-domstoler/dds-components';\n\nimport type { DateFieldProps } from './DateField';\nimport { datePickerTokens } from '../DatePicker.tokens';\n\nconst StyledButton = styled.button<{\n $componentSize: DateFieldProps['componentSize'];\n $isDisabled: DateFieldProps['disabled'];\n}>`\n ${normalizeButton}\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ $componentSize = 'medium' }) => css`\n height: ${datePickerTokens.calendarButton[$componentSize].size};\n width: ${datePickerTokens.calendarButton[$componentSize].size};\n margin: calc(0px - ${datePickerTokens.calendarButton[$componentSize].size})\n 0;\n `}\n margin-left: -1px; // To align with TextInputs icons\n border: 0;\n padding: 0;\n border-radius: ${datePickerTokens.calendarButton.borderRadius};\n\n background-color: ${datePickerTokens.calendarButton.background};\n color: ${({ $isDisabled }) =>\n $isDisabled\n ? datePickerTokens.calendarButton.disabled.color\n : datePickerTokens.calendarButton.color};\n\n transition: 50ms;\n\n &:hover:not(.disabled) {\n background-color: ${datePickerTokens.calendarButton.hover.background};\n color: ${datePickerTokens.calendarButton.hover.color};\n }\n\n &:focus-visible:not(.disabled) {\n ${focusVisible}\n outline-offset: 0;\n }\n\n &.disabled {\n outline: none;\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface CalendarButtonProps extends AriaButtonProps {\n componentSize: DateFieldProps['componentSize'];\n}\n\nexport function CalendarButton({\n componentSize,\n ...props\n}: CalendarButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(props, ref);\n return (\n <StyledButton\n {...buttonProps}\n ref={ref}\n type=\"button\"\n $isDisabled={props.isDisabled}\n $componentSize={componentSize}\n onClick={e => {\n if (!props.isDisabled) {\n buttonProps.onClick?.(e);\n }\n }}\n className={[props.isDisabled ? 'disabled' : false]\n .filter(Boolean)\n .join(' ')}\n >\n <Icon\n icon={CalendarIcon}\n iconSize={componentSize === 'medium' ? 'medium' : 'small'}\n />\n </StyledButton>\n );\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors } = ddsBaseTokens;\n\nconst segment = {\n medium: {\n font: {\n ...ddsBaseTokens.fontPackages.body_sans_02.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_01.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n small: {\n font: {\n ...ddsBaseTokens.fontPackages.body_sans_01.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_02.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n tiny: {\n font: {\n ...ddsBaseTokens.fontPackages.supportingStyle_tiny_01.base,\n },\n placeholder: {\n ...ddsBaseTokens.fontPackages.supportingStyle_placeholdertext_03.base,\n textColor: colors.DdsColorNeutralsGray6,\n },\n },\n padding: {\n x: '0.05rem',\n y: '0',\n },\n focus: {\n textColor: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n};\n\nconst calendarButton = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n background: 'transparent',\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n hover: {\n background: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveBase,\n },\n active: {\n background: colors.DdsColorInteractiveLighter,\n color: colors.DdsColorInteractiveBase,\n },\n medium: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeMedium} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n small: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeSmall} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n tiny: {\n size: `calc(${ddsBaseTokens.iconSizes.DdsIconsizeSmall} + ${ddsBaseTokens.spacing.SizesDdsSpacingX05})`,\n },\n};\n\nconst datefield = {\n medium: {\n minWidth: '160px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n small: {\n minWidth: '140px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n tiny: {\n minWidth: '125px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX025,\n },\n disabled: {\n background: ddsBaseTokens.colors.DdsColorNeutralsGray5,\n color: ddsBaseTokens.colors.DdsColorNeutralsGray7,\n },\n segment,\n};\n\nexport const datePickerTokens = {\n gap: ddsBaseTokens.spacing.SizesDdsSpacingX025,\n labelGap: ddsBaseTokens.spacing.SizesDdsSpacingX0125,\n datefield,\n calendarButton,\n};\n","import { useDateSegment } from '@react-aria/datepicker';\nimport type {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { type DatePickerProps } from '../DatePicker';\nimport { datePickerTokens } from '../DatePicker.tokens';\nconst {\n datefield: { segment: segmentTokens },\n} = datePickerTokens;\n\ninterface DateSegmentProps\n extends Pick<Required<DatePickerProps>, 'componentSize'> {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nconst Segment = styled.div<{\n $componentSize: DateSegmentProps['componentSize'];\n}>`\n display: block;\n width: max-content;\n font-variant-numeric: tabular-nums;\n outline: none;\n padding: ${segmentTokens.padding.y} ${segmentTokens.padding.x};\n ${({ $componentSize }) => css`\n font-family: ${segmentTokens[$componentSize].font.fontFamily};\n font-size: ${segmentTokens[$componentSize].font.fontSize};\n font-style: ${segmentTokens[$componentSize].font.fontStyle};\n font-weight: ${segmentTokens[$componentSize].font.fontWeight};\n line-height: ${segmentTokens[$componentSize].font.lineHeight};\n `}\n\n &:focus:not([aria-readonly]) {\n background-color: ${segmentTokens.focus.backgroundColor};\n color: ${segmentTokens.focus.textColor};\n }\n`;\n\nconst SegmentPlaceholder = styled.span<{\n $componentSize: DateSegmentProps['componentSize'];\n}>`\n display: block;\n width: 100%;\n font-variant-numeric: tabular-nums;\n\n ${({ $componentSize }) => css`\n font-family: ${segmentTokens[$componentSize].placeholder.fontFamily};\n font-size: ${segmentTokens[$componentSize].placeholder.fontSize};\n font-style: ${segmentTokens[$componentSize].placeholder.fontStyle};\n font-weight: ${segmentTokens[$componentSize].placeholder.fontWeight};\n line-height: ${segmentTokens[$componentSize].placeholder.lineHeight};\n color: ${segmentTokens[$componentSize].placeholder.textColor};\n `}\n\n ${Segment}:focus & {\n color: ${segmentTokens.focus.textColor};\n }\n`;\n\nexport function DateSegment({\n segment,\n state,\n componentSize,\n}: DateSegmentProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <Segment\n {...segmentProps}\n $componentSize={componentSize}\n ref={ref}\n style={{\n ...segmentProps.style,\n minWidth:\n segment.maxValue != null\n ? String(segment.maxValue).length + 'ch'\n : undefined,\n }}\n >\n <SegmentPlaceholder\n aria-hidden=\"true\"\n $componentSize={componentSize}\n style={{\n visibility: segment.isPlaceholder ? undefined : 'hidden',\n height: segment.isPlaceholder ? undefined : 0,\n width: segment.isPlaceholder ? undefined : 0,\n pointerEvents: 'none',\n }}\n >\n {segment.placeholder}\n </SegmentPlaceholder>\n {segment.isPlaceholder\n ? ''\n : segment.text.padStart(String(segment.maxValue ?? '').length, '0')}\n </Segment>\n );\n}\n\nDateSegment.displayName = 'DateSegment';\n","import { type useDateField } from '@react-aria/datepicker';\nimport type * as CSS from 'csstype';\nimport { type ReactNode, type Ref, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n InputMessage,\n type InputProps,\n Label,\n StatefulInput,\n type StyledInputProps,\n cn,\n} from '@norges-domstoler/dds-components';\n\nimport { datePickerTokens } from '../DatePicker/DatePicker.tokens';\n\nexport type DateInputProps = {\n className?: string;\n active?: boolean;\n children: ReactNode;\n prefix?: ReactNode;\n label?: ReactNode;\n internalRef: Ref<HTMLDivElement>;\n width?: CSS.Properties['width'];\n} & Pick<ReturnType<typeof useDateField>, 'fieldProps' | 'labelProps'> &\n Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'required'\n | 'readOnly'\n >;\n\nconst DateFieldContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n gap: ${datePickerTokens.labelGap};\n`;\n\nconst InputDiv = styled(StatefulInput).attrs({\n as: 'div',\n})<StyledInputProps & { $width: CSS.Properties['width'] }>`\n ${({ $width, componentSize = 'medium' }) =>\n $width\n ? css`\n width: ${$width};\n `\n : css`\n min-width: ${datePickerTokens.datefield[componentSize].minWidth};\n `}\n display: inline-flex;\n flex-direction: row;\n gap: ${datePickerTokens.gap};\n align-items: center;\n padding-left: ${({ componentSize = 'medium' }) =>\n datePickerTokens.datefield[componentSize].paddingX};\n padding-right: ${({ componentSize = 'medium' }) =>\n datePickerTokens.datefield[componentSize].paddingX};\n`;\n\nconst DateSegmentContainer = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nexport const DateInput = forwardRef<HTMLDivElement, DateInputProps>(\n (\n {\n errorMessage,\n tip,\n componentSize = 'medium',\n style,\n className,\n disabled,\n active,\n internalRef,\n readOnly,\n required,\n children,\n prefix: button,\n labelProps,\n fieldProps,\n width,\n ...props\n },\n forwardedRef,\n ) => {\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = props.label != null;\n const hasMessage = hasErrorMessage || hasTip;\n\n return (\n <DateFieldContainer className={className} ref={forwardedRef}>\n {hasLabel && (\n <Label {...labelProps} showRequiredStyling={required}>\n {props.label}\n </Label>\n )}\n <InputDiv\n {...fieldProps}\n $width={width}\n style={style}\n disabled={disabled}\n componentSize={componentSize}\n ref={internalRef}\n hasErrorMessage={hasErrorMessage}\n className={cn(\n disabled && 'disabled',\n active && 'active',\n readOnly && 'read-only',\n )}\n >\n {button}\n <DateSegmentContainer>{children}</DateSegmentContainer>\n </InputDiv>\n {hasMessage && (\n <InputMessage\n messageType={hasErrorMessage ? 'error' : 'tip'}\n message={errorMessage ?? tip ?? ''}\n />\n )}\n </DateFieldContainer>\n );\n },\n);\n\nDateInput.displayName = 'DateInput';\n","import { createFocusManager } from '@react-aria/focus';\nimport { type Ref, type RefObject, useImperativeHandle, useRef } from 'react';\n\ninterface DOMRefValue<T extends HTMLElement = HTMLElement> {\n UNSAFE_getDOMNode(): T | null;\n}\n\nexport interface FocusableRefValue<\n T extends HTMLElement = HTMLElement,\n D extends HTMLElement = T,\n> extends DOMRefValue<D> {\n focus(): void;\n}\n\nexport type DOMRef<T extends HTMLElement = HTMLElement> = Ref<DOMRefValue<T>>;\nexport type FocusableRef<T extends HTMLElement = HTMLElement> = Ref<\n FocusableRefValue<T>\n>;\n\nexport function useFocusManagerRef<T extends HTMLElement = HTMLElement>(\n ref: Ref<unknown>,\n) {\n const domRef = useRef<T>(null);\n useImperativeHandle(ref, () => ({\n ...createDOMRef(domRef),\n focus() {\n createFocusManager(domRef).focusFirst({ tabbable: true });\n },\n }));\n return domRef;\n}\n\nfunction createDOMRef<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n): DOMRefValue<T> {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n },\n };\n}\n","import { type Time } from '@internationalized/date';\nimport { type AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport type * as CSS from 'csstype';\nimport { type Ref, forwardRef, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport { type InputProps } from '../../helpers/Input/Input.types';\nimport { Icon } from '../../Icon';\nimport { TimeIcon } from '../../Icon/icons';\nimport { DateInput } from '../common/DateInput';\nimport { locale } from '../DatePicker/constants';\nimport { DateSegment } from '../DatePicker/DateField/DateSegment';\nimport { datePickerTokens } from '../DatePicker/DatePicker.tokens';\n\nconst TimePickerIcon = styled(Icon)<{\n $componentSize: Exclude<TimePickerProps['componentSize'], undefined>;\n}>`\n color: ${datePickerTokens.calendarButton.color};\n width: ${({ $componentSize }) =>\n datePickerTokens.calendarButton[$componentSize].size};\n margin-left: -1px; // To align with TextInputs icons\n`;\n\nexport type TimePickerProps = Omit<AriaTimeFieldProps<Time>, 'hideTimeZone'> & {\n className?: string;\n /**\n * For å sette en egendefinert bredde på komponenten.\n */\n width?: CSS.Properties['width'];\n} & Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'disabled' | 'style'\n >;\n\nfunction _TimePicker(\n { componentSize = 'medium', width, ...props }: TimePickerProps,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const ref = useRef<HTMLInputElement>(null);\n const state = useTimeFieldState({\n ...props,\n locale,\n });\n const { labelProps, fieldProps } = useTimeField(\n { ...props, hideTimeZone: true, granularity: 'hour' },\n state,\n ref,\n );\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n width={width}\n disabled={disabled}\n required={props.isRequired}\n componentSize={componentSize}\n ref={forwardedRef}\n internalRef={ref}\n readOnly={props.isReadOnly}\n labelProps={labelProps}\n fieldProps={fieldProps}\n prefix={\n !props.isReadOnly && (\n <TimePickerIcon\n $componentSize={componentSize}\n icon={TimeIcon}\n iconSize={componentSize == 'medium' ? 'medium' : 'small'}\n />\n )\n }\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nexport const TimePicker = forwardRef(_TimePicker);\n\nTimePicker.displayName = 'TimePicker';\n","import {\n CalendarDate,\n type DateValue,\n Time,\n fromDate,\n} from '@internationalized/date';\n\nexport function nativeDateToDateValue(\n date: Date,\n timeZone: string | undefined = 'Europe/Oslo',\n): DateValue {\n return fromDate(date, timeZone);\n}\n\nexport function dateValueToNativeDate(\n date: DateValue,\n timeZone: string | undefined = 'Europe/Oslo',\n): Date {\n return date.toDate(timeZone);\n}\n\nexport function nativeDateToCalendarDate(date: Date): CalendarDate {\n return new CalendarDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n}\n\nexport function nativeDateToTime(date: Date): Time {\n return new Time(date.getHours(), date.getMinutes(), date.getSeconds());\n}\n\nexport function calendarDateToNativeDate(\n date: CalendarDate,\n time: Time = new Time(12, 0, 0, 0),\n): Date {\n return new Date(\n date.year,\n date.month - 1,\n date.day,\n time.hour,\n time.minute,\n time.second,\n );\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type Property } from 'csstype';\nimport { type ReactNode, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport {\n type Placement,\n useCombinedRef,\n useFloatPosition,\n useMountTransition,\n useOnClickOutside,\n useReturnFocusOnBlur,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Button } from '../Button';\nimport {\n Paper,\n type PaperProps,\n focusVisible,\n visibilityTransition,\n} from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { spacing: Spacing } = ddsBaseTokens;\nconst { wrapper, content, closeButton, title } = tokens;\n\ninterface WrapperProps extends PaperProps {\n $sizeProps?: PopoverSizeProps;\n $hasTransitionedIn?: boolean;\n $isOpen: boolean;\n}\n\nconst Wrapper = styled(Paper)<WrapperProps>`\n opacity: 0;\n ${({ $hasTransitionedIn, $isOpen }) =>\n $hasTransitionedIn && visibilityTransition($hasTransitionedIn && $isOpen)}\n position: absolute;\n width: fit-content;\n z-index: 100;\n padding: ${wrapper.padding};\n\n &:focus-visible {\n ${focusVisible}\n }\n ${({ $sizeProps }) =>\n $sizeProps &&\n css`\n width: ${$sizeProps.width};\n height: ${$sizeProps.height};\n min-width: ${$sizeProps.minWidth};\n min-height: ${$sizeProps.minHeight};\n max-width: ${$sizeProps.maxWidth};\n max-height: ${$sizeProps.maxHeight};\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ninterface ContentContainerProps {\n $hasTitle: boolean;\n $withCloseButton: boolean;\n}\n\nconst ContentContainer = styled.div<ContentContainerProps>`\n ${({ $withCloseButton, $hasTitle }) =>\n $withCloseButton &&\n !$hasTitle &&\n css`\n margin-top: ${content.noTitle.marginTop};\n `}\n`;\n\nconst StyledButton = styled(Button)`\n position: absolute;\n top: ${closeButton.top};\n right: ${closeButton.right};\n`;\n\nexport interface PopoverSizeProps {\n width?: Property.Width<string>;\n height?: Property.Height<string>;\n minWidth?: Property.MinWidth<string>;\n minHeight?: Property.MinHeight<string>;\n maxWidth?: Property.MaxWidth<string>;\n maxHeight?: Property.MaxHeight<string>;\n}\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Tittel. */\n title?: string | ReactNode;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Spesifiserer om `<Popover />` skal vises. */\n isOpen?: boolean;\n /**Om lukkeknapp skal vises. */\n withCloseButton?: boolean;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Anchor-elementet. */\n anchorElement?: HTMLElement;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet. */\n placement?: Placement;\n /**Avstand fra anchor-elementet i px. */\n offset?: number;\n /** Ekstra logikk kjørt når lukkeknappen trykkes. */\n onCloseButtonClick?: () => void;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, ref) => {\n const {\n title,\n isOpen = false,\n withCloseButton = true,\n onBlur,\n onCloseButtonClick,\n onClose,\n anchorElement,\n children,\n placement = 'bottom',\n offset = Spacing.SizesDdsSpacingX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n // Use position from anchor element for the popover\n refs.setReference(anchorElement || null);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX15} ${spacing.SizesDdsSpacingX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingX025,\n right: spacing.SizesDdsSpacingX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n Children as ReactChildren,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { useOnKeyDown } from '../../hooks';\n\nexport interface PopoverGroupProps {\n /**Callback når det trykkes på lukkeknappen. */\n onCloseButtonClick?: () => void;\n /** Callback når det trykkes på anchor-elementet (trigger-elementet). */\n onTriggerClick?: () => void;\n /**Forteller `<Popover />` om den skal være åpen. */\n isOpen?: boolean;\n /** `id` til `<Popover />.` */\n popoverId?: string;\n /** Barna til wrapperen: anchor-element som det første og `<Popover />` so det adnre. */\n children: ReactNode;\n}\n\nexport const PopoverGroup = ({\n isOpen = false,\n onCloseButtonClick,\n onTriggerClick,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [open, setOpen] = useState(isOpen);\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n\n const handleOnCloseButtonClick = () => {\n setOpen(false);\n onCloseButtonClick && onCloseButtonClick();\n };\n\n const handleOnTriggerClick = () => {\n setOpen(!open);\n onTriggerClick && onTriggerClick();\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n setOpen(false);\n buttonRef.current?.focus();\n }\n });\n\n const handleClose = () => setOpen(false);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleOnTriggerClick,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: open,\n 'aria-hidden': !open,\n id: uniquePopoverId,\n onCloseButtonClick: handleOnCloseButtonClick,\n anchorElement: buttonRef.current,\n ref: popoverRef,\n onClose: handleClose,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import { forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { type ToggleButtonProps } from './ToggleButton.types';\nimport { getBaseHTMLProps } from '../../types';\nimport {\n HiddenInput,\n focusVisible,\n focusVisibleTransitionValue,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\n\nconst { toggleButton } = tokens;\n\ninterface ContentProps {\n $hasIcon?: boolean;\n}\n\nconst Content = styled.span<ContentProps>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: fit-content;\n border: ${toggleButton.border};\n background-color: ${toggleButton.backgroundColor};\n color: ${toggleButton.color};\n border-radius: ${toggleButton.borderRadius};\n padding: ${toggleButton.padding};\n ${getFontStyling(typographyType)}\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $hasIcon }) =>\n $hasIcon &&\n css`\n gap: ${toggleButton.gap};\n `}\n\n &::selection,\n *::selection {\n ${selection}\n }\n &:hover {\n background-color: ${toggleButton.hover.backgroundColor};\n box-shadow: ${toggleButton.hover.boxShadow};\n border-color: ${toggleButton.hover.borderColor};\n }\n`;\n\nconst Container = styled.label`\n width: fit-content;\n ${HiddenInput}:checked + ${Content} {\n background-color: ${toggleButton.checked.backgroundColor};\n border-color: ${toggleButton.checked.borderColor};\n color: ${toggleButton.checked.color};\n }\n ${HiddenInput}:checked + ${Content}:hover {\n background-color: ${toggleButton.checked.hover.backgroundColor};\n border-color: ${toggleButton.checked.hover.borderColor};\n box-shadow: ${toggleButton.checked.hover.boxShadow};\n }\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n }\n`;\n\nexport const ToggleButton = forwardRef<HTMLInputElement, ToggleButtonProps>(\n ({ id, label, icon, className, htmlProps, ...rest }, ref) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n\n return (\n <Container htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n ref={ref}\n type=\"checkbox\"\n />\n <Content $hasIcon={!!icon}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </Content>\n </Container>\n );\n },\n);\n\nToggleButton.displayName = 'ToggleButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { buttonTokens, typographyTypes } from '../Button/Button.tokens';\nimport { selectionControlTokens } from '../SelectionControl/SelectionControl.tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\nconst { button } = buttonTokens;\nconst { selectionControl } = selectionControlTokens;\n\nexport const typographyType = typographyTypes.small;\n\nconst toggleButton = {\n border: button.base.border,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray7,\n gap: spacing.SizesDdsSpacingX05,\n borderRadius: button.appearances.rounded.base.borderRadius,\n padding: button.sizes.small.text.padding,\n hover: selectionControl.hover.base,\n checked: {\n ...selectionControl.checked.base,\n color: colors.DdsColorNeutralsWhite,\n hover: selectionControl.checked.hover,\n },\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Typography } from '../Typography';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import { type Property } from 'csstype';\nimport {\n type HTMLAttributes,\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { TabsContext } from './Tabs.context';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { type RefObject, createContext, useContext } from 'react';\n\nimport { type Direction } from '../../types';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import type * as CSS from 'csstype';\nimport {\n type ButtonHTMLAttributes,\n type Dispatch,\n type KeyboardEvent,\n type MouseEvent,\n type SetStateAction,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { useTabsContext } from './Tabs.context';\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useSetTabWidth } from './TabWidthContext';\nimport { useCombinedRef, useOnKeyDown } from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n removeButtonStyling,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport { defaultTypographyType, getFontStyling } from '../Typography';\n\nconst { tab } = tokens;\n\ninterface ButtonProps {\n $active: boolean;\n $direction: Direction;\n}\n\nconst Button = styled.button<ButtonProps>`\n ${normalizeButton}\n ${removeButtonStyling}\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: ${tab.base.borderBottom};\n color: ${tab.base.color};\n padding: ${tab.base.padding};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-bottom 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${tab[$direction].gap};\n `};\n\n ${({ $active }) =>\n $active &&\n css`\n background-color: ${tab.active.backgroundColor};\n border-color: ${tab.active.borderColor};\n color: ${tab.active.color};\n box-shadow: ${tab.active.boxShadow};\n `}\n\n &:focus-visible {\n ${focusVisible}\n outline-offset: -1px;\n }\n\n &:hover {\n border-color: ${tab.hover.borderColor};\n color: ${tab.hover.color};\n box-shadow: ${tab.hover.boxShadow};\n }\n`;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv. */\n active?: boolean;\n /** Ikon. */\n icon?: SvgIcon;\n /** Spesifiserer om `<Tab />` skal ha fokus. **OBS!** settes automatisk av forelder.*/\n focus?: boolean;\n /** Callback som setter fokus. **OBS!** settes automatisk av forelder.*/\n setFocus?: Dispatch<SetStateAction<number>>;\n /** Indeksen til `<Tab />`. **OBS!** settes automatisk av forelder.*/\n index?: number;\n /**\n * Bredden til `<Tab />`. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default '1fr'\n */\n width?: CSS.Properties['width'];\n } & Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>\n>;\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>((props, ref) => {\n const {\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps,\n width = '1fr',\n ...rest\n } = props;\n\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabPanelsRef, setHasTabFocus, tabContentDirection } =\n useTabsContext();\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n setHasTabFocus(true);\n }\n }, [focus]);\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n return (\n <Button\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\n $active={active}\n $direction={tabContentDirection}\n onClick={handleOnClick}\n onKeyDown={handleOnKeyDown}\n tabIndex={focus ? 0 : -1}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n <span>{children}</span>\n </Button>\n );\n});\n\nTab.displayName = 'Tab';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing, colors } = ddsBaseTokens;\n\nconst tabList = {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`,\n};\nconst tab = {\n base: {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid transparent`,\n color: colors.DdsColorNeutralsGray7,\n padding: spacing.SizesDdsSpacingX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingX025,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n hover: {\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n};\n\nconst panel = {\n padding: spacing.SizesDdsSpacingX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import type * as CSS from 'csstype';\nimport {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n useLayoutEffect,\n} from 'react';\n\ntype Width = CSS.Properties['width'];\n\ninterface TabContextState {\n updateWidth: (index: number, width: Width) => void;\n removeTab: (index: number) => void;\n}\n\nconst TabContext = createContext<TabContextState | null>(null);\n\ninterface TabWidthContextProviderProps {\n children: ReactNode;\n onChangeWidths: Dispatch<SetStateAction<Width[]>>;\n}\n\nexport function TabWidthContextProvider({\n children,\n onChangeWidths,\n}: TabWidthContextProviderProps) {\n return (\n <TabContext.Provider\n value={{\n updateWidth: (index, newWidth) => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue[index] = newWidth;\n return newValue;\n });\n },\n removeTab: index => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue.splice(index, 1);\n return newValue;\n });\n },\n }}\n >\n {children}\n </TabContext.Provider>\n );\n}\n\nexport function useSetTabWidth(index: number, width: Width) {\n const context = useContext(TabContext);\n\n useLayoutEffect(() => {\n context?.updateWidth(index, width);\n return () => context?.removeTab(index);\n }, [index, width]);\n}\n","import type * as CSS from 'csstype';\nimport {\n Children,\n type FocusEvent,\n type HTMLAttributes,\n type ReactElement,\n cloneElement,\n forwardRef,\n isValidElement,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { useTabsContext } from './Tabs.context';\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { TabWidthContextProvider } from './TabWidthContext';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '../../hooks';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { tabList } = tokens;\n\nconst autoFlow = css`\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nconst templateColumns = (templateColumns: string) => css`\n grid-template-columns: ${templateColumns};\n`;\n\nconst TabRow = styled.div<{ $gridTemplateColumns: string }>`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n ${({ $gridTemplateColumns }) =>\n $gridTemplateColumns === ''\n ? autoFlow\n : templateColumns($gridTemplateColumns)}\n overflow-x: auto;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n scroll-snap-type: x mandatory;\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: ${focusVisibleTransitionValue};\n }\n &:focus-visible {\n ${focusVisible}\n }\n &:focus-visible button {\n outline: none;\n }\n`;\n\nexport type TabListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n ({ children, id, onFocus, ...rest }, ref) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n tabPanelsRef,\n setHasTabFocus,\n } = useTabsContext();\n\n const uniqueId = id ?? `${tabsId}-tablist`;\n const childrenArray = Children.toArray(children).length;\n const [focus, setFocus] = useRoveFocus(childrenArray, !hasTabFocus, 'row');\n const combinedRef = useCombinedRef(ref, tabListRef);\n\n const tabListChildren = Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-tab-${index}`,\n 'aria-controls': `${tabsId}-panel-${index}`,\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: () => handleTabChange(index),\n })\n );\n });\n\n const [widths, setWidths] = useState<CSS.Properties['width'][]>([]);\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n useOnClickOutside((tabListRef?.current as HTMLElement) || null, () => {\n setHasTabFocus(false);\n });\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const tabListProps = {\n ...rest,\n ref: combinedRef,\n role: 'tablist',\n 'aria-label': 'Bruk venste og høyre piltast for å bla',\n id: uniqueId,\n tabIndex: 0,\n onFocus: handleOnFocus,\n };\n\n return (\n <TabWidthContextProvider onChangeWidths={setWidths}>\n <TabRow {...tabListProps} $gridTemplateColumns={widths.join(' ')}>\n {tabListChildren}\n </TabRow>\n </TabWidthContextProvider>\n );\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n Children,\n type HTMLAttributes,\n type ReactElement,\n cloneElement,\n forwardRef,\n isValidElement,\n} from 'react';\n\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef } from '../../hooks';\n\nexport type TabPanelsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabPanels = forwardRef<HTMLDivElement, TabPanelsProps>(\n ({ children, ...rest }, ref) => {\n const { activeTab, tabsId, tabPanelsRef } = useTabsContext();\n const combinedRef = useCombinedRef(ref, tabPanelsRef);\n\n const panelChildren = Children.map(children, (child, index) => {\n const active = index === activeTab;\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-panel-${index}`,\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n active,\n 'aria-expanded': active,\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n },\n);\n\nTabPanels.displayName = 'TabPanels';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '../Typography';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, borderRadius, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst wrapper = {\n border: '1px solid',\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n padding: `${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX025}`,\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n },\n success: localMessageTokens.container.purpose.success,\n danger: localMessageTokens.container.purpose.danger,\n warning: localMessageTokens.container.purpose.warning,\n info: localMessageTokens.container.purpose.info,\n },\n};\n\nexport const tagTokens = {\n wrapper,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Button } from '../Button';\nimport { CloseIcon } from '../Icon/icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '../Typography';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingX025,\n padding: `${spacing.SizesDdsSpacingX0125} ${spacing.SizesDdsSpacingX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { Children, type HTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { chipTokens as tokens } from './Chip.tokens';\nimport { removeListStyling } from '../helpers';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { type Property } from 'csstype';\nimport { type ChangeEvent, useId, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { type ToggleBarProps, type ToggleBarValue } from './ToggleBar.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\nimport { selection } from '../helpers';\nimport { Typography } from '../Typography';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type ToggleBarSize, type ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type ToggleBarSize } from './ToggleBar.types';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, border, borderRadius, fontPackages } = ddsBaseTokens;\n\nexport const typographyTypes: { [k in ToggleBarSize]: StaticTypographyType } = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTiny = `${calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeSmall = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeMedium = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n)}px`;\nconst iconSizeLarge = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n)}px`;\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst label = {\n base: {\n borderColor: colors.DdsColorNeutralsGray5,\n borderRight: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n firstChild: {\n borderLeft: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTopLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n lastChild: {\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n};\n\nconst content = {\n base: { backgroundColor: colors.DdsColorNeutralsGray1 },\n active: {\n color: colors.DdsColorInteractiveDarkest,\n borderColor: colors.DdsColorInteractiveDarker,\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n size: {\n tiny: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX025} ${spacing.SizesDdsSpacingX075}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX05} ${spacing.SizesDdsSpacingX1}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX075} ${spacing.SizesDdsSpacingX15}`,\n gap: spacing.SizesDdsSpacingX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingX1} ${spacing.SizesDdsSpacingX2}`,\n gap: spacing.SizesDdsSpacingX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n forwardRef,\n useId,\n} from 'react';\n\nimport {\n type ToggleBarContextType,\n useToggleBarContext,\n} from './ToggleBar.context';\nimport { Content, Label } from './ToggleRadio.styles';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { HiddenInput } from '../helpers';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\n\ntype PickedInputHTMLAttributes = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'checked' | 'value' | 'onChange' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ToggleRadioProps = BaseComponentProps<\n HTMLInputElement,\n {\n /**Ledetekst som vises i komponenten. */\n label?: string;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n } & PickedInputHTMLAttributes,\n Omit<InputHTMLAttributes<HTMLInputElement>, keyof PickedInputHTMLAttributes>\n>;\n\n/**Beregner om en ToggleRadio skal være checked eller ikke.\n *\n * Returnerer checked hvis den er definert.\n *\n * Returnerer true hvis både verdien fra context og verdien i ToggleRadio er truthy og like.\n * Returnerer true hvis verdien i ToggleRadio er truthy, men context ikke finnes.\n *\n * Returnerer false hvis verdiene er ulike eller hvis verdien i ToggleRadio er falsy.\n */\nconst calculateChecked = (\n value: unknown,\n group: ToggleBarContextType,\n checked?: boolean,\n): boolean => {\n if (typeof checked !== 'undefined') return checked;\n\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n\n return !!value;\n};\n\nexport const ToggleRadio = forwardRef<HTMLInputElement, ToggleRadioProps>(\n (props, ref) => {\n const {\n value,\n name,\n onChange,\n checked,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleRadio`;\n const group = useToggleBarContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n group?.onChange && group.onChange(event);\n };\n\n return (\n <Label size={group.size} htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n type=\"radio\"\n ref={ref}\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n />\n <Content $size={group.size} $justIcon={!!icon && !label}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Content>\n </Label>\n );\n },\n);\n\nToggleRadio.displayName = 'ToggleRadio';\n","import styled, { css } from 'styled-components';\n\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\nimport { type ToggleBarSize } from './ToggleBar.types';\nimport {\n HiddenInput,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import { type HTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { GridContext } from './Grid.context';\nimport { gridTokens } from './Grid.tokens';\nimport { type ScreenSize, useScreenSize } from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { type BreakpointBasedProps, getLiteralScreenSize } from '../helpers';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { createContext, useContext } from 'react';\n\nimport { ScreenSize } from '../../hooks';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { ScreenSize } from '../../hooks';\n\nconst { grid, spacing } = ddsBaseTokens;\n\nconst allColumns = '1 / -1';\nconst halfWayColumn: Record<ScreenSize, number> = {\n [ScreenSize.XSmall]: grid.DdsGridXs0599Count / 2 + 1,\n [ScreenSize.Small]: grid.DdsGridSm600959Count / 2 + 1,\n [ScreenSize.Medium]: grid.DdsGridMd9601279Count / 2 + 1,\n [ScreenSize.Large]: grid.DdsGridLg12801919Count / 2 + 1,\n [ScreenSize.XLarge]: grid.DdsGridXl1920Count / 2 + 1,\n};\n\nexport const gridTokens = {\n [ScreenSize.XSmall]: {\n grid: {\n columns: grid.DdsGridXs0599Count,\n columnGap: grid.DdsGridXs0599GutterSize,\n marginLeft: spacing.SizesDdsSpacingX1,\n marginRight: spacing.SizesDdsSpacingX1,\n },\n\n columns: {\n firstHalf: {\n gridColumn: allColumns,\n },\n secondHalf: {\n gridColumn: allColumns,\n },\n },\n },\n [ScreenSize.Small]: {\n grid: {\n columns: grid.DdsGridSm600959Count,\n columnGap: grid.DdsGridSm600959GutterSize,\n marginLeft: spacing.SizesDdsSpacingX2,\n marginRight: spacing.SizesDdsSpacingX2,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Small]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Small]} / -1`,\n },\n },\n },\n [ScreenSize.Medium]: {\n grid: {\n columns: grid.DdsGridMd9601279Count,\n columnGap: grid.DdsGridMd9601279GutterSize,\n marginLeft: spacing.SizesDdsSpacingX4,\n marginRight: spacing.SizesDdsSpacingX4,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Medium]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Medium]} / -1`,\n },\n },\n },\n [ScreenSize.Large]: {\n grid: {\n columns: grid.DdsGridLg12801919Count,\n columnGap: grid.DdsGridLg12801919GutterSize,\n marginLeft: spacing.SizesDdsSpacingX6,\n marginRight: spacing.SizesDdsSpacingX6,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Large]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Large]} / -1`,\n },\n },\n },\n [ScreenSize.XLarge]: {\n grid: {\n columns: grid.DdsGridXl1920Count,\n columnGap: grid.DdsGridXl1920GutterSize,\n marginLeft: spacing.SizesDdsSpacingX10,\n marginRight: spacing.SizesDdsSpacingX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { type Property } from 'csstype';\nimport { type HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nimport { useGridContext } from './Grid.context';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { type ScreenSize } from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { type BreakpointBasedProps, getLiteralScreenSize } from '../helpers';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n type ForwardRefExoticComponent,\n Fragment,\n type ReactElement,\n type ReactNode,\n cloneElement,\n forwardRef,\n isValidElement,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { type IconSize } from '../Icon';\nimport { type StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyTypes: {\n number: StaticTypographyType;\n label: StaticTypographyType;\n} = {\n number: 'bodySans01',\n label: 'bodySans03',\n};\n\nconst itemsWrapper = {\n gap: spacing.SizesDdsSpacingX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '1.75rem',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport { type BaseComponentPropsWithChildren } from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\nimport { Icon } from '../Icon';\nimport { CheckIcon } from '../Icon/icons';\nimport { type SvgIcon } from '../Icon/utils';\nimport { getFontStyling } from '../Typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\n\nimport { InlineEdit } from './InlineEdit';\nimport { type InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n type ChangeEvent,\n Children,\n type FocusEvent,\n type FocusEventHandler,\n type ReactElement,\n cloneElement,\n isValidElement,\n useState,\n} from 'react';\n\nimport { type InlineEditProps } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { type TextareaHTMLAttributes, forwardRef, useId, useRef } from 'react';\n\nimport {\n IconWrapper,\n StyledInlineTextArea,\n defaultWidth,\n} from './InlineEdit.styles';\nimport { type BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { InputContainer, OuterInputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import { type Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { StatefulInput, type StyledInputProps } from '../helpers';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { inlineEdit, iconWrapper } = inlineEditTokens;\n\nexport const defaultWidth: Property.Width = '140px';\n\ntype StyledInlineInputProps = {\n isEditing?: boolean;\n hideIcon?: boolean;\n} & StyledInputProps;\n\nexport const StyledInlineInput = styled(StatefulInput).withConfig({\n shouldForwardProp: prop => prop !== 'isEditing' && prop !== 'hideIcon',\n})<StyledInlineInputProps>`\n border-color: transparent;\n background-color: ${inlineEdit.backgroundColor};\n padding: ${inlineEdit.padding};\n ${inlineEdit.font};\n ${({ isEditing, hideIcon }) =>\n !isEditing &&\n !hideIcon &&\n css`\n padding-left: ${inlineEdit.withIcon.paddingLeft};\n `}\n\n &:hover:enabled:read-write:not(:focus) {\n background-color: ${inlineEdit.hover.backgroundColor};\n border-color: transparent;\n box-shadow: none;\n }\n &:focus {\n background-color: ${inlineEdit.focus.backgroundColor};\n }\n`;\n\nexport const StyledInlineTextArea = styled(StyledInlineInput).attrs({\n as: 'textarea',\n})<StyledInlineInputProps>`\n resize: vertical;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport const IconWrapper = styled.span`\n position: absolute;\n left: ${iconWrapper.left};\n top: ${iconWrapper.top};\n z-index: 1;\n &:hover {\n cursor: text;\n }\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, fontPackages } = ddsBaseTokens;\n\nconst inlineEdit = {\n padding: spacing.SizesDdsSpacingX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingX05,\n left: spacing.SizesDdsSpacingX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\n\nimport { InlineEdit } from './InlineEdit';\nimport { type InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { type InputHTMLAttributes, forwardRef, useId, useRef } from 'react';\n\nimport {\n IconWrapper,\n StyledInlineInput,\n defaultWidth,\n} from './InlineEdit.styles';\nimport { type BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { InputContainer, OuterInputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { type Property } from 'csstype';\nimport { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { textAreaTokens } from './TextArea.tokens';\nimport { type TextAreaProps } from './TextArea.types';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n StatefulInput,\n type StyledInputProps,\n getDefaultText,\n inputTypographyTypes,\n} from '../helpers';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { Label, getFontStyling } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst { textarea } = textAreaTokens;\n\nexport const StyledTextArea = styled(StatefulInput)<StyledInputProps>`\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: ${textarea.paddingBottom};\n ${getFontStyling(inputTypographyTypes.medium)}\n`;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n className,\n style,\n width = defaultWidth,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textArea`;\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const multiRef = useCombinedRef(ref, textAreaRef);\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n\n useEffect(() => {\n if (textAreaRef?.current) {\n textAreaRef.current.style.height = `${\n textAreaRef.current.scrollHeight + 2\n }px`;\n }\n }, [text]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLTextAreaElement> = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = required || !!ariaRequired;\n\n const containerProps = {\n width,\n className,\n style,\n };\n\n const textAreaProps = {\n ref: multiRef,\n onChange: onChangeHandler,\n value,\n defaultValue,\n id: uniqueId,\n disabled,\n hasErrorMessage,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n return (\n <OuterInputContainer {...containerProps}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredStyling} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n <StyledTextArea {...textAreaProps} as=\"textarea\" />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst textarea = {\n paddingBottom: spacing.SizesDdsSpacingX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { tokens } from './SplitButton.tokens';\nimport { type ExtractStrict } from '../../types';\nimport {\n Button,\n type ButtonProps,\n type ButtonPurpose,\n type ButtonSize,\n} from '../Button';\nimport { ChevronDownIcon, ChevronUpIcon } from '../Icon/icons';\nimport {\n OverflowMenu,\n type OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { type StandardProperties } from 'csstype';\nimport { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'x0.125': spacing.SizesDdsSpacingX0125,\n 'x0.25': spacing.SizesDdsSpacingX025,\n 'x0.5': spacing.SizesDdsSpacingX05,\n 'x0.75': spacing.SizesDdsSpacingX075,\n x1: spacing.SizesDdsSpacingX1,\n 'x1.5': spacing.SizesDdsSpacingX15,\n x2: spacing.SizesDdsSpacingX2,\n 'x2.5': spacing.SizesDdsSpacingX25,\n x3: spacing.SizesDdsSpacingX3,\n x4: spacing.SizesDdsSpacingX4,\n x6: spacing.SizesDdsSpacingX6,\n x10: spacing.SizesDdsSpacingX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { type Property } from 'csstype';\nimport { useId } from 'react';\nimport styled from 'styled-components';\n\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { type FileList } from './types';\nimport { type FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { UploadIcon } from '../Icon/icons';\nimport { InputMessage } from '../InputMessage';\nimport { Label } from '../Typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\n\nimport { errorsTokens } from './FileUploader.tokens';\nimport { InputMessage } from '../InputMessage';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingX15,\n paddingBottom: spacing.SizesDdsSpacingX2,\n gap: spacing.SizesDdsSpacingX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingX05,\n paddingLeftRight: spacing.SizesDdsSpacingX05,\n paddingTopBottom: spacing.SizesDdsSpacingX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingX025,\n};\n","import styled from 'styled-components';\n\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { type FileUploaderFile } from './fileUploaderReducer';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { CloseIcon } from '../Icon/icons';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import {\n type FileWithPath,\n fromEvent as getFilesFromEvent,\n} from 'file-selector';\nimport type React from 'react';\nimport {\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type Ref,\n} from 'react';\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react';\n\nimport {\n type FileUploaderFile,\n type RootErrorList,\n fileUploaderReducer,\n} from './fileUploaderReducer';\nimport { type Accept, type FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { type FileWithPath } from 'file-selector';\nimport { type Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { type HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nimport { Typography } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst StyledEmptyContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: ${spacing.SizesDdsSpacingX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { backLinkTokens } from './BackLink.tokens';\nimport { icons } from '../..';\nimport { Icon } from '../Icon';\nimport { Typography } from '../Typography';\n\nconst Nav = styled('nav')`\n align-items: center;\n display: flex;\n gap: ${backLinkTokens.nav.gap};\n`;\n\nconst StyledIcon = styled(Icon)`\n color: ${backLinkTokens.icon.color};\n`;\n\nexport interface BackLinkProps {\n label: string;\n href: string;\n}\n\nexport const BackLink = forwardRef<HTMLElement, BackLinkProps>((props, ref) => {\n return (\n <Nav ref={ref}>\n <StyledIcon icon={icons.ArrowLeftIcon} iconSize=\"small\" />\n <Typography typographyType=\"a\" href={props.href}>\n {props.label}\n </Typography>\n </Nav>\n );\n});\n\nBackLink.displayName = 'BackLink';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst nav = {\n gap: spacing.SizesDdsSpacingX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\n\nimport { CommentComponent } from './CommentComponent';\nimport { type FeedbackProps, type Rating } from './Feedback.types';\nimport { RatingComponent } from './RatingComponent';\nimport { Paragraph } from '../Typography';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport styled from 'styled-components';\n\nimport { type Rating } from './Feedback.types';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { ThumbdownFilled, ThumbupFilled } from '../Icon/icons';\nimport { VStack } from '../Stack';\nimport { TextArea } from '../TextArea';\nimport { Paragraph } from '../Typography';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingX05};\n`;\n\ninterface CommentComponentType {\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"x1\" align=\"flex-start\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport styled, { css } from 'styled-components';\n\nimport { type Layout, type Rating } from './Feedback.types';\nimport { Button } from '../Button';\nimport { Thumbdown, Thumbup } from '../Icon/icons';\nimport { Spinner } from '../Spinner';\nimport { HStack } from '../Stack';\nimport { Tooltip } from '../Tooltip';\nimport { Label } from '../Typography';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingX1};\n ${({ $layout }) => css`\n flex-direction: ${$layout === 'horizontal' ? 'row' : 'column'};\n align-items: ${$layout === 'horizontal' ? 'center' : 'start'};\n `}\n`;\n\nconst RatingButton = styled(Button)`\n padding: 0px;\n color: ${ddsBaseTokens.colors.DdsColorNeutralsGray7};\n`;\n\ninterface RatingComponentType {\n layout: Layout;\n ratingLabel: string;\n loading: boolean;\n thumbUpTooltip: string;\n thumbDownTooltip: string;\n handleRatingChange: (rating: Rating) => void;\n}\n\nexport const RatingComponent = ({\n layout,\n ratingLabel,\n loading,\n thumbUpTooltip,\n thumbDownTooltip,\n handleRatingChange,\n}: RatingComponentType) => {\n return (\n <RatingContainer $layout={layout}>\n <Label>{ratingLabel}</Label>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAAC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","names":["AppShell","CollapsibleTable","List","ListItem","Search","TextInput","styled","import_styled_components","styled","import_styled_components","import_react","import_styled_components","styled","import_react","import_styled_components","import_dds_design_tokens","import_styled_components","element","import_dds_design_tokens","colors","spacing","border","colors","bold","typographyType","element","import_dds_design_tokens","colors","textDefault","colors","textDefault","prefix","import_styled_components","import_dds_design_tokens","colors","spacing","import_dds_design_tokens","icon","title","size","import_styled_components","styled","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","styled","message","import_jsx_runtime","import_jsx_runtime","styled","typographyType","bold","import_jsx_runtime","import_react","import_jsx_runtime","typographyType","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_styled_components","import_jsx_runtime","styled","typographyType","import_react","import_jsx_runtime","typographyType","import_dds_design_tokens","import_dds_design_tokens","border","import_dds_design_tokens","spacing","import_dds_design_tokens","Border","Colors","import_dds_design_tokens","colors","import_styled_components","input","container","styled","import_dds_design_tokens","import_styled_components","import_dds_design_tokens","colors","border","borderStyle","styled","import_dds_design_tokens","import_styled_components","import_jsx_runtime","styled","tokens","import_react","element","import_dds_design_tokens","floatingOffset","arrow","import_react","element","import_react","import_react","import_react","element","import_react","import_react","element","import_react","size","import_dds_design_tokens","import_react","ScreenSize","screenSize","import_development_utils","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","borderRadius","breakpoints","import_react","import_jsx_runtime","import_development_utils","import_react","import_styled_components","import_styled_components","import_jsx_runtime","styled","icon","import_styled_components","navTokens","styled","import_styled_components","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","border","spacing","fontPackages","borderRadius","outerShadow","sizes","appearances","styled","size","Label","import_dds_design_tokens","import_react","import_styled_components","import_jsx_runtime","styled","size","import_jsx_runtime","sizes","appearances","label","size","icon","Label","import_react","import_styled_components","import_dds_design_tokens","border","borderRadius","colors","spacing","fontPackages","container","import_react","import_styled_components","import_jsx_runtime","element","link","styled","Link","isAnchorProps","title","icon","import_react","import_styled_components","import_dds_design_tokens","border","spacing","divider","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","track","thumb","styled","import_react","import_styled_components","import_jsx_runtime","track","content","outerContainer","styled","thumb","track","scrollbarWidth","import_jsx_runtime","container","divider","styled","StyledDivider","_a","import_react","import_jsx_runtime","Children","ReactChildren","import_jsx_runtime","navTokens","floatingActionButtons","styled","title","Icon","import_jsx_runtime","navTokens","styled","StyledDivider","title","import_jsx_runtime","styled","title","AppShell","import_react","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","Container","import_jsx_runtime","group","label","Container","import_react","import_jsx_runtime","label","import_react","import_react","import_jsx_runtime","label","Container","import_react","import_jsx_runtime","label","import_react","import_styled_components","import_react","import_styled_components","import_jsx_runtime","styled","import_dds_design_tokens","import_styled_components","import_dds_design_tokens","colors","spacing","input","icon","iconSizes","input","icon","styled","import_jsx_runtime","size","styled","TextInput","label","icon","prefix","import_react","import_react_select","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","border","textDefault","typographyTypes","icon","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","typographyTypes","StyledIcon","size","import_jsx_runtime","Input","size","icon","StyledIcon","import_jsx_runtime","defaultWidth","placeholder","label","icon","option","props","Container","ReactSelect","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","container","import_jsx_runtime","container","contentContainer","icon","Container","styled","typographyType","message","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","border","outerShadow","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","icon","import_jsx_runtime","defaultWidth","container","icon","purposeVariants","Container","styled","MessageIconWrapper","TextContainer","message","import_react","import_styled_components","import_react","import_dds_design_tokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","import_react","import_styled_components","import_jsx_runtime","suggestionsContainer","suggestionsHeader","styled","typographyTypes","import_styled_components","import_jsx_runtime","Wrapper","styled","import_jsx_runtime","input","outerContainer","horisontalContainer","searchIcon","clearButton","size","Input","styled","typographyTypes","InputContainer","label","import_react","import_jsx_runtime","data","a","value","Search","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_react","import_styled_components","import_jsx_runtime","styled","import_dds_design_tokens","font","colors","border","spacing","iconSizes","borderRadius","import_react","import_styled_components","import_dds_design_tokens","spacing","colors","import_jsx_runtime","term","desc","list","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","icon","import_react","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_react","import_styled_components","row","styled","import_jsx_runtime","collapseButton","styled","prefix","a","import_react","import_styled_components","import_react","import_styled_components","import_jsx_runtime","cell","row","styled","Table","import_jsx_runtime","StyledTable","styled","Table","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_jsx_runtime","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","CollapsibleTable","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","icon","list","import_jsx_runtime","icon","list","listItem","styled","typographyType","StyledIcon","import_react","import_styled_components","import_dds_design_tokens","spacing","colors","list","outerContainer","import_jsx_runtime","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","OuterContainer","option","navigation","import_react","import_styled_components","import_dds_design_tokens","spacing","textDefault","list","listItem","import_jsx_runtime","list","listItem","bullet","styled","List","typographyType","import_react","import_styled_components","import_jsx_runtime","styled","ListItem","import_styled_components","import_dds_design_tokens","colors","border","textDefault","base","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_react","import_jsx_runtime","import_jsx_runtime","Wrapper","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","border","iconSizes","typographyTypes","import_jsx_runtime","header","chevronWrapper","styled","typographyType","typographyTypes","bold","import_react","import_styled_components","import_react","element","import_jsx_runtime","Body","styled","typographyTypes","import_react","import_styled_components","import_dds_design_tokens","border","colors","spacing","typographyTypes","outerContainer","navigation","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","Navigation","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","navLink","Link","styled","typographyTypes","NavigationItem","title","import_jsx_runtime","navigation","Navigation","rest","NavigationItem","OuterContainer","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","link","import_jsx_runtime","wrapper","link","Wrapper","styled","Link","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","wrapper","wrapper","styled","Container","import_jsx_runtime","svgArrow","ref","ReactChildren","Container","import_react","import_react_dom","import_styled_components","import_dds_design_tokens","import_styled_components","styled","container","import_dds_design_tokens","spacing","container","contentContainer","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_react_dom","import_styled_components","import_dds_design_tokens","spacing","container","contentContainer","import_jsx_runtime","container","contentContainer","size","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_jsx_runtime","Children","ReactChildren","import_date","import_calendar","import_styled_components","import_date","import_calendar","import_styled_components","import_dds_design_tokens","cell","import_react","import_styled_components","import_jsx_runtime","Cell","styled","import_date","import_jsx_runtime","styled","import_jsx_runtime","styled","title","import_datepicker","import_react","import_react","import_styled_components","import_jsx_runtime","styled","import_date","import_datepicker","import_react","import_react","import_styled_components","import_dds_design_tokens","colors","import_jsx_runtime","StyledButton","styled","import_react","import_styled_components","import_jsx_runtime","styled","segment","import_react","import_styled_components","import_jsx_runtime","styled","button","import_jsx_runtime","segment","import_react","import_jsx_runtime","import_datepicker","import_react","import_styled_components","import_jsx_runtime","styled","segment","import_date","import_dds_design_tokens","import_react","import_styled_components","import_dds_design_tokens","spacing","wrapper","content","popoverTokens","import_jsx_runtime","wrapper","content","closeButton","title","popoverTokens","Wrapper","styled","ContentContainer","StyledButton","import_react","import_jsx_runtime","Children","ReactChildren","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","button","selectionControl","typographyType","group","container","import_jsx_runtime","toggleButton","Content","styled","typographyType","Container","label","icon","import_react","import_styled_components","import_jsx_runtime","styled","Container","label","import_react","import_styled_components","import_react","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_design_tokens","border","spacing","colors","import_react","import_jsx_runtime","import_jsx_runtime","tab","Button","styled","icon","import_react","import_styled_components","import_jsx_runtime","tabList","templateColumns","styled","import_react","import_styled_components","import_jsx_runtime","panel","styled","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","borderRadius","spacing","typographyType","wrapper","import_jsx_runtime","wrapper","Wrapper","styled","typographyType","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","typographyType","container","group","import_jsx_runtime","container","Container","styled","typographyType","import_react","import_styled_components","import_jsx_runtime","Group","styled","import_react","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","border","borderRadius","fontPackages","typographyTypes","outerContainer","content","import_jsx_runtime","OuterContainer","styled","Bar","size","label","import_react","import_styled_components","content","label","Content","styled","typographyTypes","Label","import_jsx_runtime","group","icon","label","Label","Content","import_styled_components","import_react","import_dds_design_tokens","grid","spacing","gridTokens","import_jsx_runtime","tokens","gridTokens","styled","import_styled_components","import_jsx_runtime","styled","gridTokens","import_react","import_styled_components","import_react","import_dds_design_tokens","colors","spacing","typographyTypes","import_react","import_styled_components","import_jsx_runtime","itemNumber","itemText","itemContentWrapper","styled","typographyTypes","icon","import_jsx_runtime","styled","import_react","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","inlineEdit","iconWrapper","defaultWidth","styled","IconWrapper","import_jsx_runtime","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_react","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","defaultWidth","textarea","styled","label","import_react","import_styled_components","import_dds_design_tokens","tokens","import_jsx_runtime","Container","styled","tokens","size","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","styled","import_react","import_styled_components","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","MessageContainer","styled","message","import_styled_components","import_jsx_runtime","styled","import_react","accepted","accepted","getFilesFromEvent","import_jsx_runtime","defaultWidth","Wrapper","styled","label","import_dds_design_tokens","import_styled_components","import_jsx_runtime","colors","spacing","styled","title","message","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","icon","import_jsx_runtime","Nav","styled","StyledIcon","import_react","import_dds_design_tokens","import_styled_components","import_jsx_runtime","styled","import_dds_design_tokens","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime"]}