@norges-domstoler/dds-components 14.3.1 → 14.5.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.d.mts +1466 -1191
- package/dist/index.d.ts +1466 -1191
- package/dist/index.js +8523 -8101
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8580 -8148
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -8
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/Typography/Typography.tokens.tsx","../src/components/Typography/Typography/Typography.utils.ts","../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/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/dom.ts","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/types/BaseComponentProps.ts","../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/components/Typography/Typography/Typography.tsx","../src/components/Typography/Typography/Typography.styles.ts","../src/utils/renderInputMessage.tsx","../src/utils/searchFilter.tsx","../src/utils/text.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/Typography/Caption/Caption.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.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/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/normal/Body.tsx","../src/components/Table/normal/Cell.tsx","../src/components/Table/normal/Head.tsx","../src/components/Table/normal/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/normal/Foot.tsx","../src/components/Table/normal/Row.tsx","../src/components/Table/normal/Table.styles.tsx","../src/components/Table/normal/SortCell.tsx","../src/components/Table/normal/Table.tsx","../src/components/Table/normal/TableWrapper.tsx","../src/components/Table/normal/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/normal';\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/Typography/Typography.utils';\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: Array<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 {\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 { type ElementType } from 'react';\n\nimport {\n type InlineElement,\n type StaticTypographyType,\n type TypographyBodyType,\n type TypographyHeadingType,\n type TypographyType,\n} from './Typography.types';\nimport { typographyTokens } from '../Typography.tokens';\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: Array<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\nexport const getFontStyling = (\n type: StaticTypographyType,\n withColor?: boolean,\n) => {\n return {\n color: withColor\n ? typographyTokens.typographyType[type].base.color\n : undefined,\n ...typographyTokens.typographyType[type].base.font,\n };\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 { 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 | ReadonlyArray<string>,\n defaultValue?: string | number | ReadonlyArray<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>(\n ...refs: Array<React.Ref<T>>\n): 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 {\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","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: Array<unknown>) {\n return classNames.filter(Boolean).join(' ');\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: Array<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/Typography/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 { 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 { 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 {\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/color';\nimport { selection } from '../../helpers/styling/selection';\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: Array<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 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 { 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 { 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 | Array<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 | Array<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: Array<[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?: Array<ReactElement>;\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: Array<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: Array<ReactElement>;\n external: Array<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: Array<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: Array<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 { 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","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 { 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';\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: Array<\n 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 menuPortalTarget: document?.body,\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: Array<TValue>\n): Array<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: Array<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?: Array<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?: Array<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: Array<WeightedValue>;\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: 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<Array<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: Array<string> = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<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: Array<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 { 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 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 { type MouseEvent, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Cell, type TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\nimport {\n focusVisible,\n normalizeButton,\n removeButtonStyling,\n} from '../../helpers';\nimport { Icon } from '../../Icon';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n UnfoldMoreIcon,\n} 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 { 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, 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 { 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 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\nexport { Table };\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};\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?: Array<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): Array<string | number> {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: Array<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: Array<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: Array<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: Array<HTMLElement | null> = [\n drawerRef.current as HTMLElement,\n ];\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 { CalendarGrid } from './CalendarGrid';\nimport { Button } from '../../../Button';\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../Icon/icons';\nimport { Heading } from '../../../Typography';\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 { type CellVariant, calendarTokens } from './Calendar.tokens';\nimport { focusVisible, normalizeButton } from '../../../helpers';\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 { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { DateField, type DateFieldProps } from './DateField/DateField';\nimport { useCombinedRef } from '../../../hooks';\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 { calendarTokens } from './Calendar/Calendar.tokens';\nimport {\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../../hooks';\n\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 { CalendarButton } from './CalendarButton';\nimport { DateSegment } from './DateSegment';\nimport { type InputProps } from '../../../helpers';\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 type { DateFieldProps } from './DateField';\nimport { focusVisible, normalizeButton, selection } from '../../../helpers';\nimport { Icon } from '../../../Icon';\nimport { CalendarIcon } from '../../../Icon/icons';\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 { cn } from '../../../utils';\nimport {\n type InputProps,\n StatefulInput,\n type StyledInputProps,\n} from '../../helpers';\nimport { InputMessage } from '../../InputMessage';\nimport { Label } from '../../Typography';\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: Array<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<Array<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<Array<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: Array<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: Array<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: Array<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: Array<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: Array<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: Array<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: Array<{\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: Array<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: Array<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(\n evt,\n )) as Array<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: Array<string>;\n}\n\nexport type RootErrorList = Array<string>;\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'onRemoveFile';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: Array<FileUploaderFile>;\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: Array<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: Array<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 { Icon } from '../Icon';\nimport * as icons from '../Icon/icons';\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;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,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,mBAAAC;AAAA,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","names":["AppShell","List","ListItem","Search","Table","TextInput","styled","import_styled_components","styled","import_styled_components","import_dds_design_tokens","colors","spacing","element","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","element","import_dds_design_tokens","floatingOffset","arrow","import_react","import_dds_design_tokens","colors","textDefault","colors","textDefault","prefix","import_react","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_react","import_styled_components","import_dds_design_tokens","import_styled_components","border","colors","bold","typographyType","element","import_jsx_runtime","styled","typographyType","bold","import_jsx_runtime","styled","message","import_jsx_runtime","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","import_react","import_styled_components","styled","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","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_jsx_runtime","styled","import_react","import_styled_components","row","styled","import_jsx_runtime","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_jsx_runtime","cell","row","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","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"]}
|
|
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/Typography.tokens.tsx","../src/components/Typography/Typography/Typography.utils.ts","../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/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/dom.ts","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/types/BaseComponentProps.ts","../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/components/Typography/Typography/Typography.tsx","../src/components/Typography/Typography/Typography.styles.ts","../src/utils/renderInputMessage.tsx","../src/utils/searchFilter.tsx","../src/utils/text.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/Typography/Caption/Caption.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.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/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/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.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/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.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/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/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/EmptyContent/EmptyContent.tsx","../src/components/FavStar/FavStar.tsx","../src/components/FavStar/FavStar.tokens.ts","../src/hooks/useControllableState.ts","../src/hooks/useCallbackRef.ts","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/CommentComponent.tsx","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.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/VisuallyHidden/VisuallyHidden.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.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/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/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/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.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/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/Pagination/paginationGenerator.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/Popover/Popover.tsx","../src/components/Popover/Popover.tokens.tsx","../src/components/Popover/PopoverGroup.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/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/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/normal/Body.tsx","../src/components/Table/normal/Cell.tsx","../src/components/Table/normal/Head.tsx","../src/components/Table/normal/Table.tokens.tsx","../src/components/Table/normal/Foot.tsx","../src/components/Table/normal/Row.tsx","../src/components/Table/normal/Table.styles.tsx","../src/components/Table/normal/SortCell.tsx","../src/components/Table/normal/Table.tsx","../src/components/Table/normal/TableWrapper.tsx","../src/components/Table/normal/index.ts","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/index.ts","../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/TextInput/TextInput.tsx","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/TextInput/TextInput.tokens.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/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.tokens.tsx","../src/components/ToggleButton/ToggleButtonGroup.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/BackLink';\nexport * from './components/Breadcrumbs';\nexport * from './components/Button';\nexport * from './components/Card';\nexport * from './components/Chip';\nexport * from './components/date-inputs';\nexport * from './components/DescriptionList';\nexport * from './components/Divider';\nexport * from './components/Drawer';\nexport * from './components/EmptyContent';\nexport * from './components/FavStar';\nexport * from './components/Feedback';\nexport * from './components/FileUploader';\nexport * from './components/GlobalMessage';\nexport * from './components/Grid';\nexport * from './components/Icon';\nexport * from './components/InlineEdit';\nexport * from './components/InputMessage';\nexport * from './components/InternalHeader';\nexport * from './components/List';\nexport * from './components/LocalMessage';\nexport * from './components/Modal';\nexport * from './components/OverflowMenu';\nexport * from './components/Pagination';\nexport * from './components/Popover';\nexport * from './components/ProgressTracker';\nexport * from './components/ScrollableContainer';\nexport * from './components/Search';\nexport * from './components/Select';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SkipToContent';\nexport * from './components/Spinner';\nexport * from './components/SplitButton';\nexport * from './components/Stack';\nexport * from './components/Table';\nexport * from './components/Tabs';\nexport * from './components/Tag';\nexport * from './components/TextArea';\nexport * from './components/TextInput';\nexport * from './components/ToggleBar';\nexport * from './components/ToggleButton';\nexport * from './components/Tooltip';\nexport * from './components/Typography';\nexport * from './components/VisuallyHidden';\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/Typography/Typography.utils';\nimport {\n dangerInputfield,\n focusDangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../styling';\n\nimport { type StyledInputProps } from '.';\n\nconst { input } = 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: Array<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 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\nexport const inputTokens = {\n input,\n};\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 { type ElementType } from 'react';\n\nimport {\n type InlineElement,\n type StaticTypographyType,\n type TypographyBodyType,\n type TypographyHeadingType,\n type TypographyType,\n} from './Typography.types';\nimport { typographyTokens } from '../Typography.tokens';\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: Array<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\nexport const getFontStyling = (\n type: StaticTypographyType,\n withColor?: boolean,\n) => {\n return {\n color: withColor\n ? typographyTokens.typographyType[type].base.color\n : undefined,\n ...typographyTokens.typographyType[type].base.font,\n };\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};\nexport const focusVisibleCard = {\n outline: `${Border.BordersDdsBorderFocusCardStrokeWeight} ${Border.BordersDdsBorderFocusCardStroke} 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 | ReadonlyArray<string>,\n defaultValue?: string | number | ReadonlyArray<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>(\n ...refs: Array<React.Ref<T>>\n): 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 {\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","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: Array<unknown>) {\n return classNames.filter(Boolean).join(' ');\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: Array<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/Typography/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 { 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 { 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 {\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/color';\nimport { selection } from '../../helpers/styling/selection';\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: Array<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 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 { 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 { 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 | Array<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 | Array<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: Array<[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?: Array<ReactElement>;\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: Array<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: Array<ReactElement>;\n external: Array<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: Array<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: Array<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 { 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","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 { 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';\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: Array<\n 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 { forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { backLinkTokens } from './BackLink.tokens';\nimport { Icon } from '../Icon';\nimport * as icons from '../Icon/icons';\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 {\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 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 { focusVisibleCard, 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-visible {\n ${focusVisibleCard}\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 focusVisibleCard,\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 ${focusVisibleCard}\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};\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: Array<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 { 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 { 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 { CalendarGrid } from './CalendarGrid';\nimport { Button } from '../../../Button';\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../Icon/icons';\nimport { Heading } from '../../../Typography';\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 { type CellVariant, calendarTokens } from './Calendar.tokens';\nimport { focusVisible, normalizeButton } from '../../../helpers';\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 { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { DateField, type DateFieldProps } from './DateField/DateField';\nimport { useCombinedRef } from '../../../hooks';\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, groupProps } = 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 groupProps={groupProps}\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 { calendarTokens } from './Calendar/Calendar.tokens';\nimport {\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../../hooks';\n\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\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 {\n type ForwardRefExoticComponent,\n type Ref,\n type RefAttributes,\n forwardRef,\n useRef,\n} from 'react';\n\nimport { CalendarButton } from './CalendarButton';\nimport { DateSegment } from './DateSegment';\nimport { type InputProps } from '../../../helpers';\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 groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\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 _DateField(\n {\n componentSize = 'medium',\n buttonProps,\n groupProps,\n ...props\n }: DateFieldProps,\n forwardedRef: Ref<HTMLDivElement>,\n) {\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 groupProps={groupProps}\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\nexport const DateField: ForwardRefExoticComponent<\n DateFieldProps & RefAttributes<HTMLDivElement>\n> = forwardRef(_DateField);\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 type { DateFieldProps } from './DateField';\nimport { focusVisible, normalizeButton, selection } from '../../../helpers';\nimport { Icon } from '../../../Icon';\nimport { CalendarIcon } from '../../../Icon/icons';\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 width: '160px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n small: {\n width: '140px',\n paddingX: ddsBaseTokens.spacing.SizesDdsSpacingX05,\n },\n tiny: {\n width: '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 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, type useDatePicker } from '@react-aria/datepicker';\nimport type * as CSS from 'csstype';\nimport {\n type ForwardRefExoticComponent,\n type ReactNode,\n type Ref,\n type RefAttributes,\n forwardRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { cn } from '../../../utils';\nimport {\n type InputProps,\n OuterInputContainer,\n StatefulInput,\n} from '../../helpers';\nimport { InputMessage } from '../../InputMessage';\nimport { Label } from '../../Typography';\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 groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\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 InputDiv = styled(StatefulInput)`\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\nfunction _DateInput(\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 groupProps,\n width = datePickerTokens.datefield[componentSize].width,\n ...props\n }: DateInputProps,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = props.label != null;\n const hasMessage = hasErrorMessage || hasTip;\n\n return (\n <OuterInputContainer\n {...groupProps}\n $width={width}\n className={className}\n ref={forwardedRef}\n >\n {hasLabel && (\n <Label {...labelProps} showRequiredStyling={required}>\n {props.label}\n </Label>\n )}\n <InputDiv\n {...fieldProps}\n as=\"div\"\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 </OuterInputContainer>\n );\n}\n\nexport const DateInput: ForwardRefExoticComponent<\n DateInputProps & RefAttributes<HTMLDivElement>\n> = forwardRef(_DateInput);\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 { 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 { 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: Array<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: Array<HTMLElement | null> = [\n drawerRef.current as HTMLElement,\n ];\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 { 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 { type Ref, forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { favStarTokens } from './FavStar.tokens';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport {\n HiddenInput,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { StarFilledIcon, StarIcon } from '../Icon/icons';\n\ntype ComponentSize = 'medium' | 'large';\n\nexport interface FavStarProps\n extends BaseComponentPropsWithChildren<HTMLElement> {\n /**\n * Status på favorisering. `true` betyr at den er favorisert.\n */\n checked?: boolean;\n /**\n * Hvis du skal bruke `<FavStar>` uncontrolled så kan denne brukes til å sette den initielle \"favortitt\"-statusen.\n * @default false\n */\n defaultChecked?: boolean;\n /**\n * Callback som blir kalt når brukeren endrer status på favorisering.\n */\n onChange?: (checked: boolean) => void;\n /**\n * Størrelse på `<FavStar>`. `'medium'` er den mest vanlige størrelsen.\n * @default 'medium'\n */\n size?: ComponentSize;\n}\n\nconst TRANSITION_SPEED = '0.1s';\n\nconst Container = styled.label<{ size: ComponentSize }>`\n position: relative;\n cursor: pointer;\n width: ${({ size }) => favStarTokens(size).size};\n height: ${({ size }) => favStarTokens(size).size};\n\n &:has(${HiddenInput}:focus-visible) {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n ${TRANSITION_SPEED} color,\n ${TRANSITION_SPEED} background-color,\n ${TRANSITION_SPEED} transform;\n }\n\n ${({ size }) => getVariantStyle(size)}\n\n &:hover {\n ${({ size }) => getVariantStyle(size, 'hover')}\n }\n\n &:has(${HiddenInput}:checked) {\n ${({ size }) => getVariantStyle(size, 'checked')}\n &:hover {\n ${({ size }) => getVariantStyle(size, 'checkedHover')}\n }\n }\n\n &:active {\n transform: scale(0.75);\n }\n`;\n\nfunction getVariantStyle(\n size: ComponentSize,\n variant?: Parameters<typeof favStarTokens>[1],\n) {\n return css`\n color: ${favStarTokens(size, variant).color};\n background-color: ${favStarTokens(size, variant).backgroundColor};\n border-radius: ${favStarTokens(size, variant).borderRadius};\n `;\n}\n\nconst StyledIcon = styled(Icon)<{ $opacity?: number }>`\n color: currentColor;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n transition: ${TRANSITION_SPEED} opacity;\n opacity: ${({ $opacity = 1 }) => $opacity};\n`;\n\nexport const FavStar = forwardRef(\n (\n {\n id,\n className,\n onChange,\n checked: checkedProp,\n defaultChecked,\n size = 'medium',\n htmlProps,\n ...rest\n }: FavStarProps,\n ref: Ref<HTMLInputElement>,\n ) => {\n const { style, ...props } = getBaseHTMLProps(\n id,\n className,\n htmlProps,\n rest,\n );\n const generatedId = useId();\n const [checked, setChecked] = useControllableState({\n value: checkedProp,\n defaultValue: defaultChecked ?? false,\n onChange,\n });\n return (\n <Container\n size={size}\n className={className}\n style={style}\n htmlFor={id ?? generatedId}\n >\n <HiddenInput\n {...props}\n id={id ?? generatedId}\n checked={checked}\n onChange={e => setChecked(e.target.checked)}\n ref={ref}\n type=\"checkbox\"\n aria-label={props['aria-label'] ?? 'Favoriser'}\n />\n <StyledIcon iconSize={size} icon={StarIcon} />\n <StyledIcon\n iconSize={size}\n icon={StarFilledIcon}\n $opacity={checked ? 1 : 0}\n />\n </Container>\n );\n },\n);\n\nFavStar.displayName = 'FavStar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst tokens = {\n base: {\n color: ddsBaseTokens.colors.DdsColorNeutralsGray6,\n borderRadius: ddsBaseTokens.borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: 'transparent',\n },\n variants: {\n hover: {\n color: ddsBaseTokens.colors.DdsColorInteractiveDark,\n backgroundColor: ddsBaseTokens.colors.DdsColorInteractiveLightest,\n },\n checked: {\n color: ddsBaseTokens.colors.DdsColorInteractiveBase,\n },\n checkedHover: {\n color: ddsBaseTokens.colors.DdsColorInteractiveDark,\n },\n },\n medium: {\n size: ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n },\n large: {\n size: ddsBaseTokens.iconSizes.DdsIconsizeLarge,\n },\n} as const;\n\nexport function favStarTokens(\n size: 'medium' | 'large',\n variant?: keyof typeof tokens.variants,\n) {\n return {\n ...tokens.base,\n ...tokens[size],\n ...(variant ? tokens.variants[variant] : {}),\n };\n}\n","import { type Dispatch, type SetStateAction, useState } from 'react';\n\nimport { useCallbackRef } from './useCallbackRef';\n\nexport interface UseControllableStateProps<T> {\n value?: T;\n defaultValue?: T | (() => T);\n onChange?: (value: T) => void;\n}\n\n/**\n * The `useControllableState` hook returns the state and function that updates the state, just like React.useState does.\n */\nexport function useControllableState<T>(props: UseControllableStateProps<T>) {\n const { value: valueProp, defaultValue, onChange } = props;\n\n const onChangeProp = useCallbackRef(onChange);\n\n const [uncontrolledState, setUncontrolledState] = useState(defaultValue as T);\n const controlled = valueProp !== undefined;\n const value = controlled ? valueProp : uncontrolledState;\n\n const setValue = useCallbackRef(\n (next: SetStateAction<T>) => {\n const setter = next as (prevState?: T) => T;\n const nextValue = typeof next === 'function' ? setter(value) : next;\n\n if (!controlled) {\n setUncontrolledState(nextValue);\n }\n\n onChangeProp(nextValue);\n },\n [controlled, onChangeProp, value],\n );\n\n return [value, setValue] as [T, Dispatch<SetStateAction<T>>];\n}\n","import { type DependencyList, useCallback, useEffect, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args: Array<never>) => unknown>(\n callback: T | undefined,\n deps: DependencyList = [],\n) {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n return useCallback(((...args) => callbackRef.current?.(...args)) as T, deps);\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 { 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: Array<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 { 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: 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 { 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","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 { 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: Array<{\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: Array<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: Array<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(\n evt,\n )) as Array<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: Array<string>;\n}\n\nexport type RootErrorList = Array<string>;\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'onRemoveFile';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: Array<FileUploaderFile>;\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: Array<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: Array<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 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 { 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 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: Array<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: Array<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 { 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 { 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 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 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: Array<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 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 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?: Array<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): Array<string | number> {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: Array<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 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 menuPortalTarget: document?.body,\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: Array<TValue>\n): Array<SelectOption<TValue>> => args.map(v => ({ label: v, value: v }));\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: Array<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 {\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: Array<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: Array<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 {\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?: Array<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?: Array<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 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: Array<WeightedValue>;\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: 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<Array<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: Array<string> = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<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: Array<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 { 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 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 { 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 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 {\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 { 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 { 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: Array<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 {\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 {\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 { Table, type TableRowProps } from '../normal';\nimport { Cell } from '../normal/Cell';\nimport { useIsInTableHead } from '../normal/Head';\nimport { StyledRow } from '../normal/Table.styles';\nimport { tableTokens } from '../normal/Table.tokens';\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: Array<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 '../normal/Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: Array<number>;\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\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 { 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 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 { type MouseEvent, forwardRef } from 'react';\nimport styled from 'styled-components';\n\nimport { Cell, type TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\nimport {\n focusVisible,\n normalizeButton,\n removeButtonStyling,\n} from '../../helpers';\nimport { Icon } from '../../Icon';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n UnfoldMoreIcon,\n} 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 { 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, 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 { 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 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\nexport { Table };\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};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { type CollapsibleTableProps } from './CollapsibleTable.types';\nimport { CollapsibleTableContext } from './Table.context';\nimport { Table } from '../normal';\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 { CollapsibleRow } from './CollapsibleRow';\nimport { CollapsibleTable as BaseCollapsibleTable } from './CollapsibleTable';\nimport { type CollapsibleTableProps } from './CollapsibleTable.types';\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { CollapsibleTable, type CollapsibleTableProps };\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<Array<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<Array<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 { type ReactNode, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Icon } from '../Icon';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '../Typography';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n $withIcon: boolean;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n gap: ${tokens.wrapper.icon.gap};\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${({ $withIcon }) =>\n $withIcon ? wrapper.icon.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\nconst StyledIcon = styled(Icon)<Pick<WrapperProps, '$purpose'>>`\n color: ${({ $purpose }) => wrapper.purpose[$purpose].icon?.color};\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**\n * Innholdet til `<Tag>.` Kan brukes istedenfor `text`.\n */\n children?: ReactNode;\n /**\n * Samme oppførsel som `children`. Er `children` brukt vil denne ignoreres. Tekst som vises i `<Tag>`.\n */\n text?: string;\n /**\n * Formål med status eller kategorisering. Påvirker styling.\n * */\n purpose?: TagPurpose;\n /**\n * Om `<Tag>` skal ha et ikon til venstre for teksten. Tags med `purpose=\"default\"` har aldri ikon.\n * @default false\n */\n withIcon?: boolean;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n children,\n htmlProps,\n withIcon,\n ...rest\n } = props;\n\n const icon = tokens.wrapper.purpose[purpose].icon;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n $withIcon={Boolean(withIcon && icon)}\n >\n {withIcon && icon && (\n <StyledIcon\n $purpose={purpose}\n icon={icon.icon}\n iconSize={tokens.wrapper.icon.size}\n />\n )}\n <TextOverflowEllipsisInner>{children ?? text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport {\n CheckCircledIcon,\n ErrorIcon,\n InfoIcon,\n WarningIcon,\n} from '../Icon/icons';\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 icon: {\n padding: [\n spacing.SizesDdsSpacingX0125,\n spacing.SizesDdsSpacingX025,\n spacing.SizesDdsSpacingX0125,\n spacing.SizesDdsSpacingX0125,\n ].join(' '),\n gap: spacing.SizesDdsSpacingX0125,\n size: 'small',\n },\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n icon: undefined,\n },\n success: {\n ...localMessageTokens.container.purpose.success,\n icon: {\n icon: CheckCircledIcon,\n color: colors.DdsColorSuccessDarkest,\n },\n },\n danger: {\n ...localMessageTokens.container.purpose.danger,\n icon: {\n icon: ErrorIcon,\n color: colors.DdsColorDangerDarkest,\n },\n },\n warning: {\n ...localMessageTokens.container.purpose.warning,\n icon: {\n icon: WarningIcon,\n color: colors.DdsColorWarningDarkest,\n },\n },\n info: {\n ...localMessageTokens.container.purpose.info,\n icon: {\n icon: InfoIcon,\n color: colors.DdsColorInfoDarkest,\n },\n },\n },\n} as const;\n\nexport const tagTokens = {\n wrapper,\n};\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 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 { 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"],"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;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,eAAAC;AAAA,EAAA;AAAA;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","names":["AppShell","CollapsibleTable","List","ListItem","Search","Table","TextInput","styled","import_styled_components","styled","import_styled_components","import_dds_design_tokens","colors","spacing","element","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","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","element","import_dds_design_tokens","floatingOffset","arrow","import_react","import_dds_design_tokens","colors","textDefault","colors","textDefault","prefix","import_react","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_react","import_styled_components","import_dds_design_tokens","import_styled_components","border","colors","bold","typographyType","element","import_jsx_runtime","styled","typographyType","bold","import_jsx_runtime","styled","message","import_jsx_runtime","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","import_react","import_styled_components","styled","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","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","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_styled_components","import_dds_design_tokens","colors","spacing","icon","import_jsx_runtime","styled","import_react","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","icon","import_jsx_runtime","icon","list","listItem","styled","typographyType","StyledIcon","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","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","border","typographyTypes","import_jsx_runtime","header","chevronWrapper","styled","typographyType","typographyTypes","bold","import_react","import_styled_components","import_react","element","import_jsx_runtime","styled","typographyTypes","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","borderRadius","typographyType","container","import_jsx_runtime","container","Container","styled","typographyType","import_react","import_styled_components","import_jsx_runtime","styled","import_date","import_calendar","import_styled_components","import_date","import_calendar","import_styled_components","import_dds_design_tokens","import_react","import_styled_components","import_jsx_runtime","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","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_react","import_styled_components","import_dds_design_tokens","spacing","colors","list","group","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_react_dom","import_styled_components","import_dds_design_tokens","spacing","container","import_jsx_runtime","container","contentContainer","size","Container","styled","HeaderContainer","StyledButton","header","import_react","import_jsx_runtime","Children","ReactChildren","import_dds_design_tokens","import_styled_components","import_jsx_runtime","colors","spacing","styled","title","message","import_react","import_styled_components","import_dds_design_tokens","tokens","size","import_react","import_react","import_jsx_runtime","Container","styled","size","StyledIcon","import_react","import_dds_design_tokens","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","import_jsx_runtime","textarea","styled","label","import_jsx_runtime","styled","import_dds_design_tokens","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","wrapper","styled","Container","import_jsx_runtime","svgArrow","ref","ReactChildren","Container","import_jsx_runtime","styled","import_jsx_runtime","import_react","import_styled_components","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","styled","message","import_styled_components","import_jsx_runtime","styled","import_react","accepted","accepted","getFilesFromEvent","import_styled_components","import_jsx_runtime","Wrapper","styled","import_jsx_runtime","defaultWidth","Wrapper","styled","label","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","container","contentContainer","import_jsx_runtime","container","contentContainer","icon","Container","styled","typographyType","ContentContainer","message","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_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","border","colors","spacing","typographyTypes","outerContainer","navigation","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","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","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_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_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_styled_components","import_dds_design_tokens","spacing","colors","list","outerContainer","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_jsx_runtime","outerContainer","indicatorsContainer","truncationIcon","list","Nav","styled","List","ListItem","OuterContainer","option","navigation","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_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_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_jsx_runtime","input","outerContainer","horisontalContainer","searchIcon","clearButton","size","Input","styled","typographyTypes","OuterContainer","InputContainer","label","import_react","import_jsx_runtime","data","a","value","Search","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","label","Container","import_react","import_jsx_runtime","label","import_react","import_react","import_jsx_runtime","group","label","Container","import_react","import_jsx_runtime","label","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","link","wrapper","import_jsx_runtime","wrapper","link","Wrapper","styled","Link","import_react","import_styled_components","import_dds_design_tokens","tokens","import_jsx_runtime","Container","styled","tokens","size","import_react","import_styled_components","import_react","import_react","import_styled_components","import_jsx_runtime","styled","Body","import_react","import_styled_components","import_react","import_styled_components","import_jsx_runtime","styled","import_dds_design_tokens","font","colors","border","spacing","iconSizes","borderRadius","cell","import_jsx_runtime","cell","styled","Cell","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_jsx_runtime","cell","StyledButton","styled","Cell","import_react","import_styled_components","import_jsx_runtime","cell","row","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","Body","Cell","import_jsx_runtime","collapseButton","styled","Cell","prefix","a","Table","import_react","import_styled_components","import_jsx_runtime","StyledTable","styled","Table","CollapsibleTable","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","StyledIcon","icon","import_react","import_styled_components","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","import_dds_design_tokens","import_styled_components","import_dds_design_tokens","colors","spacing","iconSizes","input","icon","iconSizes","input","icon","MessageContainer","styled","StyledIcon","import_jsx_runtime","defaultWidth","size","styled","TextInput","label","icon","prefix","StyledIcon","MessageContainer","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_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","Group","styled","Container","label"]}
|