@norges-domstoler/dds-components 13.11.2 → 13.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.styles.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/utils/renderInputMessage.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/utils/icon.ts","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Table.tsx","../src/components/Table/Table.tokens.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Head.tsx","../src/components/Table/Body.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/Cell.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.tsx","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/Datepicker/Datepicker.tsx","../src/components/Datepicker/Datepicker.tokens.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/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/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Feedback/CommentComponent.tsx"],"sourcesContent":["export * from '@norges-domstoler/dds-core';\nexport * from '@norges-domstoler/dds-form';\nexport * from '@norges-domstoler/dds-icons';\nexport * from '@norges-domstoler/dds-typography';\n\nexport * from './components/AppShell';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/Button';\nexport * from './components/TextInput';\nexport * from './components/Select';\nexport * from './components/GlobalMessage';\nexport * from './components/LocalMessage';\nexport * from './components/Search';\nexport * from './components/Table';\nexport * from './components/Breadcrumbs';\nexport * from './components/Pagination';\nexport * from './components/Divider';\nexport * from './components/List';\nexport * from './components/DescriptionList';\nexport * from './components/Spinner';\nexport * from './components/Card';\nexport * from './components/InternalHeader';\nexport * from './components/Datepicker';\nexport * from './components/SkipToContent';\nexport * from './components/Tooltip';\nexport * from './components/Modal';\nexport * from './components/Drawer';\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/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';\n","import { PropsWithChildren, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { Navigation } from './Navigation/Navigation';\nimport { User } from './Navigation/TopBar';\nimport { OverflowMenuProps } from '../OverflowMenu';\nimport {\n Environment,\n EnvironmentBanner,\n ENVIRONMENT_BANNER_HEIGHT,\n} from '@norges-domstoler/development-utils';\nimport { AppShellContextProvider } from './AppShellContext';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n}: 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 />\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.SizesDdsSpacingLocalX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX025,\n height: `calc(${spacing.SizesDdsSpacingLayoutX3} + 2 * ${spacing.SizesDdsSpacingLocalX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingLocalX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingLocalX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingLocalX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import { Children, ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { Divider } from '../../Divider';\nimport { NavigationItem } from './NavigationItem';\nimport { TopBar, User } from './TopBar';\nimport { NavigationLogo } from './NavigationLogo';\nimport { OverflowMenuProps } from '../../OverflowMenu';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\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 />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>Lovisa</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\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.SizesDdsSpacingLocalX1,\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import styled from 'styled-components';\nimport { type PropsOf, type As } from '@norges-domstoler/dds-core';\nimport {\n Icon,\n SvgIcon,\n ChevronRightIcon,\n OpenExternalIcon,\n} from '@norges-domstoler/dds-icons';\nimport { type MouseEventHandler } from 'react';\n\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 {\n type ReactNode,\n type SetStateAction,\n type Dispatch,\n createContext,\n useState,\n useContext,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => {},\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import styled from 'styled-components';\nimport { MenuIcon, CloseIcon, SvgProps } from '@norges-domstoler/dds-icons';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\n\nimport { EmbeteIcon, EmbeteType } from './EmbeteIcon';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuProps,\n} from '../../OverflowMenu';\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}\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}: 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>Lovisa</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 SvgProps,\n TingrettIcon,\n} from '@norges-domstoler/dds-icons';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ElementType, forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\n\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { Spinner } from '../Spinner';\nimport { ButtonProps } from './Button.types';\nimport { ButtonWrapper, StyledIconWrapperSpan, Label } from './Button.styles';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nimport { 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.SizesDdsSpacingLocalX0125NumberPx;\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.SizesDdsSpacingLocalX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${\n spacing.SizesDdsSpacingLocalX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${\n spacing.SizesDdsSpacingLocalX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport { getTextColor, TextColor } from '@norges-domstoler/dds-core';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = React.useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import styled, { css } from 'styled-components';\nimport { normalizeButton, selection } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n ButtonAppearance,\n ButtonPurpose,\n ButtonSize,\n IconPosition,\n} from './Button.types';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { selection, visibilityTransition } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useFloatPosition,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { Divider } from '../Divider';\nimport {\n OverflowMenuContextItem,\n OverflowMenuNavItem,\n OverflowMenuProps,\n} from '.';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { PersonIcon } from '@norges-domstoler/dds-icons';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n RefObject,\n useEffect,\n useRef,\n useState,\n useCallback,\n MouseEvent,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\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.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Scrollbar } from './Scrollbar';\nimport { Property } from 'csstype';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Property } from 'csstype';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n Dispatch,\n SetStateAction,\n MouseEvent,\n KeyboardEvent,\n ForwardedRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { normalizeButton } from '@norges-domstoler/dds-core';\nimport {\n focusVisibleLink,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX025,\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.SizesDdsSpacingLocalX15,\n marginLeft: spacing.SizesDdsSpacingLocalX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingLocalX0125NumberPx,\n};\n","import {\n useRef,\n useState,\n Children as ReactChildren,\n ReactNode,\n isValidElement,\n cloneElement,\n ReactElement,\n useId,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { AppShell as BaseAppShell, AppShellProps } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { ChangeEvent, forwardRef, useId } from 'react';\nimport { getBaseHTMLProps, cn, Nullable } from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\n\nimport { RadioButtonProps } from './RadioButton.types';\nimport {\n RadioButtonGroup,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\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 { Nullable } from '@norges-domstoler/dds-core';\nimport React, { ChangeEvent, useContext } from 'react';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n React.createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\nimport { Direction } from '@norges-domstoler/dds-core';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n} from '@norges-domstoler/dds-form';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\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';\nimport { hoverInputfield, dangerInputfield } from '@norges-domstoler/dds-form';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\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.SizesDdsSpacingLocalX05,\n width: spacing.SizesDdsSpacingLocalX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 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.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingLocalX075,\n },\n column: { gap: spacing.SizesDdsSpacingLocalX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n ChangeEvent,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n Ref,\n useId,\n useState,\n} from 'react';\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n combineHandlers,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\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 styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { forwardRef } from 'react';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { ErrorIcon } from '@norges-domstoler/dds-icons';\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.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\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","import { forwardRef, useId } from 'react';\nimport {\n getBaseHTMLProps,\n cn,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\n\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { CustomSelectionControl, Container } from '../SelectionControl.styles';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\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 { Nullable } from '@norges-domstoler/dds-core';\nimport React, { useContext } from 'react';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n React.createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\nimport {\n CheckboxGroupContext,\n CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n OuterGroupContainer,\n GroupContainer,\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 React, {\n useState,\n forwardRef,\n useId,\n useRef,\n useLayoutEffect,\n ComponentProps,\n} from 'react';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n InputSize,\n getDefaultText,\n InputContainer,\n InputAffixContainer,\n StatefulInput,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens } from './TextInput.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport CharCounter from './CharCounter';\nimport { TextAffixProps, TextInputProps } from './TextInput.types';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX025NumberPx\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.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { InputSize } from '@norges-domstoler/dds-form';\nimport { IconSize } from '@norges-domstoler/dds-icons';\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","import { useId } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n InputProps,\n InputSize,\n StatefulInput,\n} from '@norges-domstoler/dds-form';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import React, { HTMLAttributes, ReactNode, useId } from 'react';\nimport { Property } from 'csstype';\nimport {\n ClearIndicatorProps,\n components,\n DropdownIndicatorProps,\n default as ReactSelect,\n GroupBase,\n InputProps,\n NoticeProps,\n OptionProps,\n Props as ReactSelectProps,\n SelectInstance,\n SingleValueProps,\n MultiValueRemoveProps,\n ControlProps,\n} from 'react-select';\nimport {\n CheckIcon,\n ChevronDownIcon,\n CloseSmallIcon,\n} from '@norges-domstoler/dds-icons';\nimport { WithRequiredIf } from '@norges-domstoler/dds-core';\nimport {\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n Container,\n getCustomStyles,\n InnerSingleValue,\n prefix,\n StyledIcon,\n} from './Select.styles';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { InputSize } from '@norges-domstoler/dds-form';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n\nconst 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\nconst 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\nconst 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\nconst DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nconst 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\nconst DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nconst 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\nconst 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\nconst 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\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 TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>,\n TValue = unknown,\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n TValue = unknown,\n> = {\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<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<TOption, IsMulti, GroupBase<TOption>>;\n\ntype ForwardRefType<TOption, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<TOption, IsMulti, GroupBase<TOption>>\n>;\n\nconst SelectInner = <\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean = false,\n TValue = unknown,\n>(\n props: SelectProps<TOption, IsMulti>,\n ref: ForwardRefType<TOption, 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 TOption,\n IsMulti,\n GroupBase<TOption>\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<TOption>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n};\n\nexport const Select = React.forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { GroupBase, StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport { Property } from 'csstype';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n InputSize,\n dangerInputfield,\n hoverDangerInputfield,\n focusInputfield,\n hoverInputfield,\n} from '@norges-domstoler/dds-form';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport {\n InputSize,\n InputTypographyTypes,\n inputTypographyTypes,\n} from '@norges-domstoler/dds-form';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\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.SizesDdsSpacingLocalX025,\n marginBottom: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX05,\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\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.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\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.SizesDdsSpacingLocalX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingLocalX05,\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 styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport {\n globalMessageTokens as tokens,\n purposeVariants,\n typographyType,\n} from './GlobalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ErrorIcon, InfoIcon, WarningIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { GlobalMessagePurpose } from './GlobalMessage';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingLocalX1}`,\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.SizesDdsSpacingLocalX15,\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Property } from 'csstype';\nimport {\n Typography,\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ErrorIcon,\n TipIcon,\n InfoIcon,\n WarningIcon,\n CheckCircledIcon,\n} from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { LocalMessagePurpose } from './LocalMessage';\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.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX075}`,\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 derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n useCombinedRef,\n} from '@norges-domstoler/dds-core';\nimport {\n Input as BaseInput,\n InputProps as BaseInputProps,\n} from '@norges-domstoler/dds-form';\nimport {\n CloseSmallIcon,\n Icon,\n IconSize,\n SearchIcon,\n} from '@norges-domstoler/dds-icons';\nimport { getFontStyling, Label } from '@norges-domstoler/dds-typography';\nimport {\n ButtonHTMLAttributes,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n MouseEvent,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n ChangeEvent,\n createContext,\n MouseEvent,\n RefObject,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { SearchSize } from './Search';\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.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingLocalX25,\n paddingLeft: spacing.SizesDdsSpacingLocalX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingLocalX05,\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingLocalX1,\n paddingBottom: spacing.SizesDdsSpacingLocalX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => {},\n stopPropagation: () => {},\n nativeEvent: new Event('input'),\n persist: () => {},\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport {\n OverflowMenuItem,\n OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { SearchProps, SearchSize } from './Search';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { forwardRef, MouseEvent } from 'react';\nimport { useRoveFocus } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport { derivativeIdGenerator } from '@norges-domstoler/dds-core';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n ChangeEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\nimport { searchFilter } from '@norges-domstoler/dds-core';\nimport {\n AutocompleteSearchContext,\n AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, SearchProps, SearchSize } from './Search';\nimport {\n SearchAutocompleteWrapper,\n SearchAutocompleteWrapperProps,\n SearchData,\n WeightedSearchData,\n} from './SearchAutocompleteWrapper';\n\nimport { SearchSuggestions, SearchSuggestionsProps } from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { tableTokens } from './Table.tokens';\nimport { TableDensity, TableProps } from './Table.types';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingLocalX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingLocalX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingLocalX075,\n marginRight: spacing.SizesDdsSpacingLocalX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Table } from '../Table';\nimport { CollapsibleTableContext } from './Table.context';\nimport { CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n {children}\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\nimport { TableRowProps } from './Table.types';\nimport { StyledRow } from './Table.styles';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import styled, { css } from 'styled-components';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { focusVisibleInset } from '@norges-domstoler/dds-form';\n\nimport { RowMode, TableRowType } from './Table.types';\nimport { tableTokens } from './Table.tokens';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import {\n forwardRef,\n Children,\n useState,\n isValidElement,\n cloneElement,\n ReactElement,\n Fragment,\n useEffect,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\nimport {\n removeButtonStyling,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n AnimatedChevronUpDown,\n} from '@norges-domstoler/dds-core';\n\nimport { Table } from '..';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useCollapsibleTableContext } from './Table.context';\nimport { TableRowProps } from '../Table.types';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n selection,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\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.SizesDdsSpacingLocalX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n ElementType,\n forwardRef,\n ThHTMLAttributes,\n TdHTMLAttributes,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { DescriptionListDesc } from '../DescriptionList';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**Type celle. Returnerer enten `<td>` eller `<th>`. */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type = 'data', layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import { forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n UnfoldMoreIcon,\n ChevronUpIcon,\n ChevronDownIcon,\n} from '@norges-domstoler/dds-icons';\nimport styled from 'styled-components';\nimport {\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport { Cell, TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Table as BaseTable } from './Table';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport {\n TableProps,\n TableDensity,\n CollapsibleTableProps,\n TableRowProps,\n TableRowType,\n} from './Table.types';\nimport { Head, TableHeadProps } from './Head';\nimport { Body, TableBodyProps } from './Body';\nimport { Foot, TableFootProps } from './Foot';\nimport { Row } from './Row';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { Cell, TableCellProps, TableCellLayout, TableCellType } from './Cell';\nimport { SortCell, TableSortCellProps, SortOrder } from './SortCell';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import { AnchorHTMLAttributes, forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, Children } from 'react';\nimport styled from 'styled-components';\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport {\n removeListStyling,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-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={icons.ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { forwardRef, HTMLAttributes, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport {\n MoreHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronFirstIcon,\n ChevronLastIcon,\n} from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","import { ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\nimport {\n TypographyBodyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\n\nimport { listTokens as tokens } from './List.tokens';\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.SizesDdsSpacingLocalX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingLocalX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingLocalX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\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.SizesDdsSpacingLocalX2,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { AnchorHTMLAttributes, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\nimport { cardTokens as tokens } from './Card.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n hoverWithBorder,\n focusVisibleWithBorder,\n} from '@norges-domstoler/dds-form';\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 {\n forwardRef,\n useState,\n useEffect,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useId,\n useCallback,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\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 const newExpanded = !expanded;\n\n setExpanded(newExpanded);\n\n if (onChange) {\n onChange(newExpanded);\n }\n }, [expanded, onChange]);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n const headerId = `${accordionId}-header`;\n const bodyId = `${accordionId}-body`;\n\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n isExpanded: expanded,\n toggleExpanded,\n id: headerId,\n bodyId,\n })\n : cloneElement(child as ReactElement, {\n isExpanded: expanded,\n id: bodyId,\n headerId,\n }))\n );\n });\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n return <Wrapper {...wrapperProps}>{Children}</Wrapper>;\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport {\n normalizeButton,\n removeButtonStyling,\n AnimatedChevronUpDown,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n StaticTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\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 = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller body er utvidet. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Callback for å styre utvidelse og sammentrukking. */\n toggleExpanded?: () => void;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionBody />`. */\n bodyId?: string;\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\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n isExpanded = false,\n toggleExpanded,\n bodyId,\n id,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const handleClick = () => {\n if (toggleExpanded) {\n toggleExpanded();\n }\n };\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: handleClick,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\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.SizesDdsSpacingLocalX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx +\n spacing.SizesDdsSpacingLocalX075NumberPx\n }px ${spacing.SizesDdsSpacingLocalX2} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingLocalX05,\n },\n};\n","import { Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useIsMounted,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n Nullable,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useElementHeight } from './useElementHeight';\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 @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller komponenten om den skal utvides. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionHeader />`. */\n headerId?: string;\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\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const {\n children,\n isExpanded,\n headerId,\n id,\n className,\n htmlProps,\n padding,\n paddingTop,\n ...rest\n } = props;\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 const bodyProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n isExpanded,\n role: 'region',\n height: height ?? initialExpandedHeight ?? 0,\n };\n const bodyContainerProps = {\n ref: bodyRef,\n isExpanded,\n padding,\n paddingTop,\n };\n\n return (\n <Body\n {...bodyProps}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer {...bodyContainerProps} animate={animate}>\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport { useEffect, useState } from 'react';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport {\n OuterContainer,\n Navigation,\n NavigationList,\n BannerWrapper,\n BannerLeftWrapper,\n LovisaWrapper,\n ApplicationNameWrapper,\n ContextMenuGroup,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { NavigationItem } from './NavigationItem';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { MenuIcon, MoreVerticalIcon } from '@norges-domstoler/dds-icons';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport { OverflowMenu } from '../OverflowMenu';\nimport { selection } from '@norges-domstoler/dds-core';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\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.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingLayoutX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { forwardRef, useId } from 'react';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\nimport CalendarIcon from './calendar_today.svg';\nimport {\n StatefulInput,\n OuterInputContainer,\n InputSize,\n InputProps,\n} from '@norges-domstoler/dds-form';\n\nimport { datepickerTokens as tokens } from './Datepicker.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\n\nconst StyledInput = styled(StatefulInput)<Pick<InputProps, 'componentSize'>>`\n &::-webkit-calendar-picker-indicator {\n background-image: ${`url('${CalendarIcon}')`};\n position: absolute;\n ${({ componentSize }) =>\n componentSize &&\n css`\n right: ${tokens.calendarIndicator.base.sizes[componentSize].right};\n height: ${tokens.calendarIndicator.base.sizes[componentSize].height};\n width: ${tokens.calendarIndicator.base.sizes[componentSize].width};\n `}\n margin-left: 0px;\n padding: 0;\n top: 50%;\n transform: translate(0, -50%);\n box-sizing: border-box;\n }\n\n &::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n &::-webkit-calendar-picker-indicator:focus-visible {\n outline: ${tokens.calendarIndicator.focus.outline};\n outline-offset: ${tokens.calendarIndicator.focus.outlineOffset};\n }\n\n &::-webkit-inner-spin-button {\n display: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field {\n transition: 0.2s;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus {\n ${selection}\n }\n`;\n\ntype DatepickerType = 'date' | 'datetime-local';\n\nexport type DatepickerProps = Omit<InputProps, 'type'> & {\n /** Angi dato-input med eller uten klokkeslett. */\n type?: DatepickerType;\n};\n\nexport const Datepicker = forwardRef<HTMLInputElement, DatepickerProps>(\n (\n {\n id,\n type = 'date',\n required = false,\n readOnly = false,\n disabled = false,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-datepickerInput`;\n\n const componentWidth = width ? width : getWidth(type, componentSize);\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const inputProps = {\n id: uniqueId,\n hasErrorMessage,\n ref,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n required,\n disabled,\n componentSize,\n type,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-required': ariaRequired,\n 'aria-invalid': hasErrorMessage ? true : undefined,\n max: getMax(type, max),\n ...rest,\n };\n\n const outerinputContainerProps = {\n width: componentWidth,\n style,\n className,\n };\n\n return (\n <OuterInputContainer {...outerinputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={!!showRequiredStyling}>\n {label}\n </Label>\n )}\n <StyledInput {...inputProps} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\nDatepicker.displayName = 'Datepicker';\n\nconst defaultWidths: {\n [k in DatepickerType]: { [k in InputSize]: Property.Width<string> };\n} = {\n date: {\n medium: '160px',\n small: '140px',\n tiny: '125px',\n },\n ['datetime-local']: {\n medium: '200px',\n small: '180px',\n tiny: '150px',\n },\n};\n\nconst getWidth = (\n type: DatepickerType,\n size: InputSize,\n): Property.Width<string> => defaultWidths[type][size];\n\nconst getMax = (\n type: DatepickerType,\n max?: string | number,\n): string | number | undefined => {\n if (max !== undefined) {\n return max;\n }\n\n // Limit the year-part to only four digits by default\n\n if (type === 'datetime-local') {\n return '9999-12-31T23:59';\n }\n\n if (type === 'date') {\n return '9999-12-31';\n }\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { iconSizes, spacing, border } = ddsBaseTokens;\n\nconst calendarIndicator = {\n base: {\n sizes: {\n medium: {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n },\n },\n focus: {\n outline: `${border.BordersDdsBorderFocusInputfieldStroke} solid ${border.BordersDdsBorderFocusInputfieldStrokeWeight}`,\n outlineOffset: spacing.SizesDdsSpacingLocalX0125,\n },\n};\n\nexport const datepickerTokens = {\n calendarIndicator,\n};\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n cn,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n focusVisibleOnDark,\n} from '@norges-domstoler/dds-form';\n\nimport { skipToContentTokens as tokens } from './SkipToContent.tokens';\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.SizesDdsSpacingLocalX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import React, {\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n Placement,\n useCombinedRef,\n useOnKeyDown,\n useFloatPosition,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\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', () => {});\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\nimport { Paper, PaperProps } from '@norges-domstoler/dds-core';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\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.SizesDdsSpacingLocalX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import { forwardRef, ReactNode, RefObject, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport { createPortal } from 'react-dom';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n Paper,\n selection,\n useMountTransition,\n useFocusTrap,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport {\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n Backdrop,\n} from './Backdrop';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n /**Ref som skal motta fokus når Modal åpnes. Hvis utelatt blir Modal fokusert. */\n initialFocusRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const {\n isOpen = false,\n parentElement = document.body,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n className,\n htmlProps,\n ...rest\n } = props;\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose();\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }, [isOpen]);\n\n useOnClickOutside(modalRef.current, () => handleClose());\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n gap: spacing.SizesDdsSpacingLocalX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { changeRGBAAlpha } from '@norges-domstoler/dds-core';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Property } from 'csstype';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { forwardRef, ReactNode, RefObject, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n useFocusTrap,\n Paper,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Property } from 'csstype';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => {\n if (isOpen) {\n onClose?.();\n }\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n placement,\n ref: combinedRef,\n isOpen: hasTransitionedIn && isOpen,\n tabIndex: -1,\n role: 'dialog',\n 'aria-labelledby': headerId,\n size,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Container {...containerProps} elevation={4}>\n <ScrollableContainer>\n <ContentContainer>\n {hasHeader && (\n <HeaderContainer {...headerContainerProps}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n </ScrollableContainer>\n <StyledButton\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </Container>,\n parentElement,\n )\n : null;\n});\n\nDrawer.displayName = 'Drawer';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst contentContainerPaddingNumberPx =\n spacing.SizesDdsSpacingLocalX025NumberPx;\nconst contentContainerPadding = `${contentContainerPaddingNumberPx}px`;\n\nconst container = {\n padding: `${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX15NumberPx - contentContainerPaddingNumberPx\n }px`,\n};\n\nconst contentContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n padding: contentContainerPadding,\n};\n\nexport const drawerTokens = {\n container,\n contentContainer,\n};\n","import {\n ReactNode,\n Children as ReactChildren,\n isValidElement,\n cloneElement,\n ReactElement,\n useState,\n useRef,\n useId,\n} from 'react';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { forwardRef, ReactNode, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { PaperProps, visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n Placement,\n useCombinedRef,\n useFloatPosition,\n useReturnFocusOnBlur,\n useMountTransition,\n useOnClickOutside,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\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.SizesDdsSpacingLocalX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n // Use position from anchor element for the popover\n refs.setReference(anchorElement || null);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingLocalX025,\n right: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingLocalX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n useState,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useRef,\n ReactNode,\n useId,\n} from 'react';\nimport { useOnKeyDown } from '@norges-domstoler/dds-core';\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';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { selection, getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { ToggleButtonProps } from './ToggleButton.types';\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.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import styled, { css } from 'styled-components';\nimport {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { TabsContext } from './Tabs.context';\nimport { Property } from 'csstype';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { createContext, RefObject, useContext } from 'react';\nimport { Direction } from '@norges-domstoler/dds-core';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import {\n ButtonHTMLAttributes,\n Dispatch,\n forwardRef,\n SetStateAction,\n useCallback,\n useEffect,\n MouseEvent,\n useRef,\n KeyboardEvent,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useCombinedRef,\n useOnKeyDown,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\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 } & 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 ...rest\n } = props;\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.SizesDdsSpacingLocalX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingLocalX025,\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.SizesDdsSpacingLocalX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n isValidElement,\n cloneElement,\n FocusEvent,\n ReactElement,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { tabList } = tokens;\n\nconst TabRow = styled.div`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\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 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 <TabRow {...tabListProps}>{tabListChildren}</TabRow>;\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { useTabsContext } from './Tabs.context';\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';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\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';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX025,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { forwardRef, HTMLAttributes, Children } from 'react';\nimport styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport { chipTokens as tokens } from './Chip.tokens';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { ChangeEvent, useState, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { Property } from 'csstype';\nimport { ToggleBarProps, ToggleBarValue } from './ToggleBar.types';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { ChangeEvent, createContext, useContext } from 'react';\nimport { ToggleBarSize, ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { ToggleBarSize } from './ToggleBar.types';\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.SizesDdsSpacingLocalX0125,\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.SizesDdsSpacingLocalX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX2}`,\n gap: spacing.SizesDdsSpacingLocalX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import { forwardRef, InputHTMLAttributes, ChangeEvent, useId } from 'react';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ToggleBarContextType, useToggleBarContext } from './ToggleBar.context';\nimport { Label, Content } from './ToggleRadio.styles';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\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';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { ScreenSize, useScreenSize } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { gridTokens } from './Grid.tokens';\nimport { GridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\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.SizesDdsSpacingLayoutX1,\n marginRight: spacing.SizesDdsSpacingLayoutX1,\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.SizesDdsSpacingLayoutX2,\n marginRight: spacing.SizesDdsSpacingLayoutX2,\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.SizesDdsSpacingLayoutX4,\n marginRight: spacing.SizesDdsSpacingLayoutX4,\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.SizesDdsSpacingLayoutX6,\n marginRight: spacing.SizesDdsSpacingLayoutX6,\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.SizesDdsSpacingLayoutX10,\n marginRight: spacing.SizesDdsSpacingLayoutX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { useContext, createContext } from 'react';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import styled from 'styled-components';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { Property } from 'csstype';\nimport { useGridContext } from './Grid.context';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n cloneElement,\n forwardRef,\n ForwardRefExoticComponent,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useEffect,\n useState,\n useMemo,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { IconSize } from '@norges-domstoler/dds-icons';\nimport { StaticTypographyType } from '@norges-domstoler/dds-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.SizesDdsSpacingLocalX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '28px',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { BaseComponentPropsWithChildren } from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n ChangeEvent,\n useState,\n FocusEventHandler,\n FocusEvent,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { InlineEditProps } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { forwardRef, TextareaHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineTextArea,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import styled, { css } from 'styled-components';\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { Property } from 'csstype';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { StatefulInput, StyledInputProps } from '@norges-domstoler/dds-form';\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.SizesDdsSpacingLocalX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { forwardRef, InputHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineInput,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n StatefulInput,\n StyledInputProps,\n inputTypographyTypes,\n getDefaultText,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { textAreaTokens } from './TextArea.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { TextAreaProps } from './TextArea.types';\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.SizesDdsSpacingLocalX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { ChevronDownIcon, ChevronUpIcon } from '@norges-domstoler/dds-icons';\nimport { ExtractStrict } from '@norges-domstoler/dds-core';\nimport { Button, ButtonProps, ButtonPurpose, ButtonSize } from '../Button';\nimport {\n OverflowMenu,\n OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\nimport { tokens } from './SplitButton.tokens';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { StandardProperties } from 'csstype';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'local-x0.125': spacing.SizesDdsSpacingLocalX0125,\n 'local-x0.25': spacing.SizesDdsSpacingLocalX025,\n 'local-x0.5': spacing.SizesDdsSpacingLocalX05,\n 'local-x0.75': spacing.SizesDdsSpacingLocalX075,\n 'local-x1': spacing.SizesDdsSpacingLocalX1,\n 'local-x1.5': spacing.SizesDdsSpacingLocalX15,\n 'local-x2': spacing.SizesDdsSpacingLocalX2,\n 'local-x2.5': spacing.SizesDdsSpacingLocalX25,\n 'local-x3': spacing.SizesDdsSpacingLocalX3,\n 'layout-x1': spacing.SizesDdsSpacingLayoutX1,\n 'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,\n 'layout-x2': spacing.SizesDdsSpacingLayoutX2,\n 'layout-x3': spacing.SizesDdsSpacingLayoutX3,\n 'layout-x4': spacing.SizesDdsSpacingLayoutX4,\n 'layout-x6': spacing.SizesDdsSpacingLayoutX6,\n 'layout-x10': spacing.SizesDdsSpacingLayoutX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { UploadIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InputMessage } from '../InputMessage';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { FileList } from './types';\nimport { FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport { Property } from 'csstype';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\nimport { InputMessage } from '../InputMessage';\nimport { errorsTokens } from './FileUploader.tokens';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingLocalX15,\n paddingBottom: spacing.SizesDdsSpacingLocalX2,\n gap: spacing.SizesDdsSpacingLocalX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingLocalX05,\n paddingLeftRight: spacing.SizesDdsSpacingLocalX05,\n paddingTopBottom: spacing.SizesDdsSpacingLayoutX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingLocalX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n","import styled from 'styled-components';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\n\nimport { Button } from '../Button';\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { FileUploaderFile } from './fileUploaderReducer';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import React, {\n ButtonHTMLAttributes,\n HTMLAttributes,\n InputHTMLAttributes,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n FileUploaderFile,\n fileUploaderReducer,\n RootErrorList,\n} from './fileUploaderReducer';\nimport { FileWithPath, fromEvent as getFilesFromEvent } from 'file-selector';\nimport { Accept, FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { FileWithPath } from 'file-selector';\nimport { Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-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.SizesDdsSpacingLayoutX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingLayoutX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingLayoutX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { backLinkTokens } from './BackLink.tokens';\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.SizesDdsSpacingLocalX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\nimport { FeedbackProps, Rating } from './Feedback.types';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\nimport { RatingComponent } from './RatingComponent';\nimport { CommentComponent } from './CommentComponent';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Thumbup, Thumbdown } from '@norges-domstoler/dds-icons';\nimport { Label } from '@norges-domstoler/dds-typography';\n\nimport { Layout, Rating } from './Feedback.types';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport { Button } from '../Button';\nimport { HStack } from '../Stack';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\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=\"layout-x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ThumbupFilled,\n ThumbdownFilled,\n Icon,\n} from '@norges-domstoler/dds-icons';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\nimport { VStack } from '../Stack';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\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=\"layout-x1\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n"],"mappings":"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","names":["styled","useEffect","styled","ddsBaseTokens","spacing","styled","jsx","jsx","styled","icon","styled","jsx","styled","navTokens","styled","forwardRef","Icon","getBaseHTMLProps","ddsBaseTokens","colors","border","spacing","fontPackages","borderRadius","styled","ddsBaseTokens","getBaseHTMLProps","jsx","jsxs","styled","css","sizes","appearances","css","styled","jsx","jsxs","sizes","appearances","forwardRef","label","icon","getBaseHTMLProps","Icon","forwardRef","useEffect","useId","styled","selection","useState","styled","getBaseHTMLProps","ddsBaseTokens","colors","spacing","jsx","jsxs","track","thumb","styled","useState","getBaseHTMLProps","useRef","styled","getBaseHTMLProps","focusVisibleTransitionValue","focusVisible","jsx","jsxs","track","content","outerContainer","styled","useRef","getBaseHTMLProps","thumb","track","scrollbarWidth","useCombinedRef","forwardRef","useCallback","useEffect","useRef","styled","css","ddsBaseTokens","calculateHeightWithLineHeight","border","borderRadius","colors","spacing","fontPackages","divider","Icon","getBaseHTMLProps","normalizeButton","getFontStyling","jsx","jsxs","element","link","css","styled","forwardRef","title","icon","useRef","useEffect","useCallback","getBaseHTMLProps","PersonIcon","Fragment","jsx","jsxs","container","divider","styled","selection","StyledDivider","forwardRef","useCombinedRef","useEffect","_a","useId","useRef","useState","useId","Fragment","jsx","Children","jsx","jsxs","navTokens","floatingActionButtons","styled","Icon","ENVIRONMENT_BANNER_HEIGHT","jsx","jsxs","navTokens","styled","ENVIRONMENT_BANNER_HEIGHT","StyledDivider","useEffect","ENVIRONMENT_BANNER_HEIGHT","jsx","jsxs","styled","ENVIRONMENT_BANNER_HEIGHT","AppShell","forwardRef","useId","getBaseHTMLProps","React","useContext","styled","css","focusVisible","focusVisibleTransitionValue","ddsBaseTokens","colors","spacing","borderRadius","ddsBaseTokens","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","css","Container","focusVisible","focusVisibleTransitionValue","jsx","jsxs","group","forwardRef","label","useId","getBaseHTMLProps","Container","forwardRef","useId","useState","Typography","getBaseHTMLProps","styled","css","Icon","ddsBaseTokens","colors","spacing","Typography","forwardRef","getBaseHTMLProps","jsx","jsxs","styled","css","message","Icon","Fragment","jsx","jsxs","jsx","jsxs","label","useState","useId","getBaseHTMLProps","Typography","RadioButtonGroup","forwardRef","forwardRef","useId","getBaseHTMLProps","cn","Typography","React","useContext","HiddenInput","jsx","jsxs","forwardRef","label","useId","Container","cn","getBaseHTMLProps","Typography","useId","Typography","RequiredMarker","getBaseHTMLProps","jsx","jsxs","label","useId","getBaseHTMLProps","Typography","RequiredMarker","useState","forwardRef","useId","useRef","Label","derivativeIdGenerator","spaceSeparatedIdListGenerator","StatefulInput","styled","css","ddsBaseTokens","colors","spacing","icon","useId","styled","getBaseHTMLProps","Typography","jsxs","styled","css","Icon","ddsBaseTokens","iconSizes","ddsBaseTokens","input","icon","styled","Icon","css","jsx","jsxs","styled","css","forwardRef","label","icon","prefix","useState","useRef","useId","derivativeIdGenerator","spaceSeparatedIdListGenerator","StatefulInput","Label","React","useId","derivativeIdGenerator","spaceSeparatedIdListGenerator","Icon","styled","css","selection","ddsBaseTokens","colors","spacing","borderRadius","border","typographyTypes","icon","Icon","getFontStyling","dangerInputfield","hoverInputfield","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","selection","css","typographyTypes","StyledIcon","Label","jsx","jsxs","Icon","icon","StyledIcon","defaultWidth","placeholder","label","useId","derivativeIdGenerator","option","props","spaceSeparatedIdListGenerator","Container","Label","React","styled","css","forwardRef","useState","ddsBaseTokens","ErrorIcon","colors","spacing","typographyType","container","Icon","Typography","getBaseHTMLProps","CloseIcon","getFontStyling","jsx","jsxs","container","contentContainer","icon","Container","styled","typographyType","css","forwardRef","message","useState","styled","css","forwardRef","useState","ddsBaseTokens","ErrorIcon","InfoIcon","WarningIcon","colors","spacing","borderRadius","border","outerShadow","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","InfoIcon","ErrorIcon","WarningIcon","icon","Icon","Typography","getFontStyling","getBaseHTMLProps","selection","CloseIcon","Fragment","jsx","jsxs","defaultWidth","container","icon","purposeVariants","Container","styled","css","MessageIconWrapper","TextContainer","forwardRef","message","useState","derivativeIdGenerator","spaceSeparatedIdListGenerator","useCombinedRef","CloseSmallIcon","Icon","getFontStyling","Label","forwardRef","useId","useState","styled","css","styled","getBaseHTMLProps","jsx","Wrapper","createContext","useContext","ddsBaseTokens","ddsReferenceTokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","styled","Typography","getFontStyling","getBaseHTMLProps","forwardRef","useRoveFocus","visibilityTransition","derivativeIdGenerator","jsx","jsxs","suggestionsContainer","suggestionsHeader","styled","getFontStyling","typographyTypes","Typography","forwardRef","useRoveFocus","getBaseHTMLProps","Fragment","jsx","jsxs","input","outerContainer","horisontalContainer","searchIcon","clearButton","Input","styled","css","getFontStyling","typographyTypes","Icon","InputContainer","forwardRef","label","useId","derivativeIdGenerator","useState","useCombinedRef","Label","spaceSeparatedIdListGenerator","CloseSmallIcon","useEffect","useRef","useState","useOnClickOutside","useOnKeyDown","searchFilter","jsx","useState","useEffect","data","searchFilter","value","useRef","useOnClickOutside","useOnKeyDown","Search","forwardRef","styled","css","selection","ddsBaseTokens","colors","border","spacing","iconSizes","borderRadius","jsx","cell","row","styled","selection","css","forwardRef","forwardRef","styled","css","useContext","createContext","jsx","StyledTable","styled","css","forwardRef","forwardRef","styled","jsx","forwardRef","styled","jsx","forwardRef","styled","jsx","forwardRef","styled","css","getFontStyling","defaultTypographyType","row","css","styled","getFontStyling","defaultTypographyType","jsx","forwardRef","forwardRef","Children","useState","isValidElement","cloneElement","Fragment","useEffect","styled","focusVisibleTransitionValue","focusVisible","derivativeIdGenerator","spaceSeparatedIdListGenerator","forwardRef","styled","css","selection","getBaseHTMLProps","ddsBaseTokens","spacing","colors","jsx","term","desc","list","styled","selection","css","forwardRef","getBaseHTMLProps","forwardRef","styled","jsx","forwardRef","styled","getBaseHTMLProps","Icon","jsx","jsxs","styled","forwardRef","icon","forwardRef","styled","getBaseHTMLProps","jsx","styled","forwardRef","getBaseHTMLProps","forwardRef","styled","css","jsx","cell","css","styled","forwardRef","Fragment","jsx","jsxs","collapseButton","styled","focusVisibleTransitionValue","focusVisible","forwardRef","useState","useEffect","Children","prefix","derivativeIdGenerator","isValidElement","cloneElement","Table","spaceSeparatedIdListGenerator","forwardRef","Icon","ChevronDownIcon","styled","normalizeButton","removeButtonStyling","focusVisible","jsx","jsxs","cell","styled","normalizeButton","removeButtonStyling","focusVisible","Icon","ChevronDownIcon","forwardRef","useEffect","useRef","useState","styled","css","jsx","Wrapper","styled","css","useState","useRef","useEffect","Table","CollapsibleTable","forwardRef","Typography","jsx","forwardRef","Children","styled","ddsBaseTokens","colors","spacing","typographyType","icon","list","Icon","removeListStyling","getBaseHTMLProps","getFontStyling","jsx","jsxs","icon","list","listItem","styled","typographyType","StyledIcon","forwardRef","Children","forwardRef","useState","styled","css","Typography","Icon","ddsBaseTokens","spacing","colors","list","outerContainer","ChevronRightIcon","getBaseHTMLProps","jsx","jsxs","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","css","OuterContainer","forwardRef","useState","option","Icon","navigation","Typography","forwardRef","styled","css","getFontStyling","getBaseHTMLProps","selection","ddsBaseTokens","ddsReferenceTokens","spacing","textDefault","list","listItem","jsx","list","listItem","bullet","styled","selection","css","getFontStyling","List","forwardRef","typographyType","getBaseHTMLProps","forwardRef","styled","jsx","styled","ListItem","forwardRef","styled","css","ddsBaseTokens","ddsReferenceTokens","colors","border","textDefault","base","getBaseHTMLProps","selection","getFontStyling","defaultTypographyType","jsx","Container","styled","css","forwardRef","useState","useEffect","ReactChildren","cloneElement","isValidElement","useId","useCallback","styled","getBaseHTMLProps","jsx","Wrapper","Children","forwardRef","styled","css","ddsBaseTokens","spacing","border","iconSizes","typographyTypes","normalizeButton","removeButtonStyling","AnimatedChevronUpDown","getBaseHTMLProps","getFontStyling","jsx","jsxs","header","chevronWrapper","styled","typographyType","typographyTypes","css","forwardRef","forwardRef","useEffect","useLayoutEffect","useRef","useState","styled","css","getBaseHTMLProps","getFontStyling","useEffect","useState","element","jsx","css","Body","styled","getFontStyling","typographyTypes","forwardRef","useRef","useState","useLayoutEffect","useEffect","getBaseHTMLProps","useRef","useState","Typography","styled","css","ddsBaseTokens","border","colors","spacing","typographyTypes","outerContainer","navigation","selection","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","css","Navigation","forwardRef","styled","css","getFontStyling","focusVisible","jsx","navLink","Link","styled","getFontStyling","typographyTypes","css","NavigationItem","forwardRef","title","forwardRef","styled","jsx","getBaseHTMLProps","MenuIcon","jsx","jsxs","useState","useRef","navigation","Navigation","rest","NavigationItem","OuterContainer","Typography","forwardRef","useId","derivativeIdGenerator","spaceSeparatedIdListGenerator","selection","Label","styled","css","StatefulInput","OuterInputContainer","ddsBaseTokens","iconSizes","spacing","border","jsx","jsxs","StyledInput","styled","StatefulInput","css","selection","forwardRef","label","useId","getWidth","derivativeIdGenerator","spaceSeparatedIdListGenerator","OuterInputContainer","Label","forwardRef","styled","getBaseHTMLProps","cn","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","ddsBaseTokens","colors","spacing","link","jsx","wrapper","link","Wrapper","styled","Link","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","forwardRef","cn","getBaseHTMLProps","ReactChildren","cloneElement","forwardRef","isValidElement","useEffect","useId","useRef","useState","useCombinedRef","useOnKeyDown","useFloatPosition","getBaseHTMLProps","combineHandlers","styled","Paper","visibilityTransition","defaultTypographyType","getFontStyling","ddsBaseTokens","colors","spacing","wrapper","wrapper","styled","Container","Paper","visibilityTransition","getFontStyling","defaultTypographyType","jsx","jsxs","svgArrow","forwardRef","useId","useState","useFloatPosition","useRef","useCombinedRef","useEffect","ref","useOnKeyDown","ReactChildren","isValidElement","cloneElement","combineHandlers","getBaseHTMLProps","Container","forwardRef","useEffect","useId","styled","ddsBaseTokens","spacing","container","contentContainer","Typography","useCombinedRef","useOnClickOutside","useOnKeyDown","Paper","selection","getBaseHTMLProps","CloseIcon","focusVisible","styled","ddsBaseTokens","container","jsx","jsxs","container","contentContainer","Container","styled","Paper","selection","focusVisible","ContentContainer","HeaderContainer","StyledButton","forwardRef","header","useId","useCombinedRef","useEffect","useOnClickOutside","useOnKeyDown","getBaseHTMLProps","Typography","CloseIcon","forwardRef","styled","getBaseHTMLProps","jsx","Container","styled","forwardRef","getBaseHTMLProps","forwardRef","styled","jsx","Container","styled","forwardRef","forwardRef","useId","createPortal","styled","css","Typography","useCombinedRef","useMountTransition","useOnClickOutside","useOnKeyDown","useFocusTrap","Paper","getBaseHTMLProps","CloseIcon","ddsBaseTokens","spacing","container","contentContainer","focusVisible","jsx","jsxs","container","contentContainer","Container","styled","Paper","css","ContentContainer","HeaderContainer","StyledButton","forwardRef","header","useId","useFocusTrap","useCombinedRef","useOnKeyDown","useOnClickOutside","useMountTransition","getBaseHTMLProps","createPortal","Typography","CloseIcon","ReactChildren","isValidElement","cloneElement","useState","useRef","useId","Fragment","jsxs","Children","ddsBaseTokens","forwardRef","styled","css","visibilityTransition","useCombinedRef","useFloatPosition","useMountTransition","useOnClickOutside","getBaseHTMLProps","Typography","ddsBaseTokens","spacing","wrapper","content","CloseIcon","Paper","focusVisible","jsx","jsxs","ddsBaseTokens","wrapper","content","closeButton","title","Wrapper","styled","visibilityTransition","css","ContentContainer","StyledButton","forwardRef","useMountTransition","useFloatPosition","useCombinedRef","useOnClickOutside","getBaseHTMLProps","Typography","useState","ReactChildren","cloneElement","isValidElement","useRef","useId","useOnKeyDown","Fragment","jsx","Children","forwardRef","useId","styled","css","Icon","selection","getBaseHTMLProps","getFontStyling","focusVisibleTransitionValue","HiddenInput","focusVisible","ddsBaseTokens","colors","spacing","ddsBaseTokens","button","selectionControl","typographyType","group","container","jsx","jsxs","toggleButton","Content","styled","getFontStyling","typographyType","focusVisibleTransitionValue","css","selection","Container","HiddenInput","focusVisible","forwardRef","label","icon","useId","getBaseHTMLProps","Icon","useId","styled","css","getBaseHTMLProps","Typography","jsx","jsxs","styled","css","Container","label","useId","getBaseHTMLProps","Typography","styled","css","forwardRef","useEffect","useId","useRef","useState","getBaseHTMLProps","createContext","useContext","jsx","Container","styled","css","forwardRef","useId","useState","useRef","useEffect","getBaseHTMLProps","forwardRef","useCallback","useEffect","useRef","styled","css","useCombinedRef","useOnKeyDown","getBaseHTMLProps","normalizeButton","removeButtonStyling","Icon","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","focusVisible","ddsBaseTokens","border","spacing","colors","jsx","jsxs","tab","Button","styled","normalizeButton","removeButtonStyling","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","css","focusVisible","forwardRef","icon","useRef","useCombinedRef","useEffect","useOnKeyDown","useCallback","getBaseHTMLProps","Icon","forwardRef","Children","isValidElement","cloneElement","styled","useCombinedRef","useOnClickOutside","useOnKeyDown","useRoveFocus","focusVisibleTransitionValue","focusVisible","jsx","tabList","styled","focusVisibleTransitionValue","focusVisible","forwardRef","Children","useRoveFocus","useCombinedRef","isValidElement","cloneElement","useOnKeyDown","useOnClickOutside","forwardRef","styled","css","getBaseHTMLProps","focusVisibleTransitionValue","focusVisible","jsx","panel","styled","focusVisibleTransitionValue","css","focusVisible","forwardRef","getBaseHTMLProps","forwardRef","Children","cloneElement","isValidElement","useCombinedRef","jsx","forwardRef","useCombinedRef","Children","isValidElement","cloneElement","forwardRef","styled","css","getBaseHTMLProps","getFontStyling","ddsBaseTokens","colors","borderRadius","spacing","ddsBaseTokens","typographyType","wrapper","jsx","wrapper","Wrapper","styled","getFontStyling","typographyType","css","forwardRef","getBaseHTMLProps","forwardRef","useState","styled","getBaseHTMLProps","CloseIcon","TextOverflowEllipsisInner","TextOverflowEllipsisWrapper","getFontStyling","ddsBaseTokens","colors","spacing","borderRadius","typographyType","container","group","jsx","jsxs","container","Container","styled","TextOverflowEllipsisWrapper","getFontStyling","typographyType","forwardRef","useState","getBaseHTMLProps","TextOverflowEllipsisInner","CloseIcon","forwardRef","Children","styled","removeListStyling","jsx","Group","styled","removeListStyling","forwardRef","Children","useState","useId","styled","css","selection","getBaseHTMLProps","combineHandlers","Typography","createContext","useContext","ddsBaseTokens","calculateHeightWithLineHeight","colors","spacing","border","borderRadius","fontPackages","typographyTypes","outerContainer","content","jsx","jsxs","OuterContainer","styled","selection","css","Bar","label","useId","useState","combineHandlers","getBaseHTMLProps","Typography","forwardRef","useId","getBaseHTMLProps","Icon","styled","css","getFontStyling","focusVisibleTransitionValue","HiddenInput","focusVisible","content","label","Content","styled","focusVisibleTransitionValue","css","getFontStyling","typographyTypes","Label","HiddenInput","focusVisible","HiddenInput","jsx","jsxs","group","forwardRef","icon","label","useId","Label","getBaseHTMLProps","Content","Icon","styled","css","getBaseHTMLProps","ddsBaseTokens","spacing","useContext","createContext","ScreenSize","jsx","tokens","styled","css","getBaseHTMLProps","styled","getBaseHTMLProps","getLiteralScreenSize","jsx","styled","Children","cloneElement","forwardRef","Fragment","isValidElement","useEffect","useState","useMemo","styled","getBaseHTMLProps","createContext","useContext","ddsBaseTokens","colors","spacing","typographyTypes","styled","css","CheckIcon","Icon","getFontStyling","focusVisibleTransitionValue","focusVisible","jsx","jsxs","itemNumber","itemText","itemContentWrapper","styled","getFontStyling","typographyTypes","css","icon","Icon","CheckIcon","jsx","jsxs","styled","forwardRef","useState","useEffect","getBaseHTMLProps","useMemo","Children","isValidElement","cloneElement","Fragment","forwardRef","useRef","useState","Children","cloneElement","isValidElement","useOnClickOutside","useOnKeyDown","Fragment","jsx","useCombinedRef","forwardRef","useId","useRef","Icon","derivativeIdGenerator","spaceSeparatedIdListGenerator","styled","css","ddsBaseTokens","colors","spacing","fontPackages","StatefulInput","inlineEdit","iconWrapper","defaultWidth","styled","css","IconWrapper","jsxs","useCombinedRef","OuterInputContainer","InputContainer","jsx","jsxs","forwardRef","defaultWidth","useId","derivativeIdGenerator","useRef","useCombinedRef","IconWrapper","Icon","spaceSeparatedIdListGenerator","jsx","forwardRef","useRef","useCombinedRef","forwardRef","useRef","useCombinedRef","forwardRef","useId","useRef","EditIcon","Icon","derivativeIdGenerator","spaceSeparatedIdListGenerator","useCombinedRef","OuterInputContainer","InputContainer","jsx","jsxs","forwardRef","defaultWidth","useId","derivativeIdGenerator","useRef","useCombinedRef","IconWrapper","Icon","EditIcon","spaceSeparatedIdListGenerator","jsx","forwardRef","useRef","useCombinedRef","forwardRef","useEffect","useId","useRef","useState","styled","useCombinedRef","derivativeIdGenerator","spaceSeparatedIdListGenerator","Label","getFontStyling","StatefulInput","inputTypographyTypes","getDefaultText","OuterInputContainer","ddsBaseTokens","spacing","jsx","jsxs","defaultWidth","textarea","styled","StatefulInput","getFontStyling","inputTypographyTypes","forwardRef","label","useId","useRef","useCombinedRef","useState","getDefaultText","useEffect","derivativeIdGenerator","spaceSeparatedIdListGenerator","OuterInputContainer","Label","forwardRef","useState","styled","ChevronDownIcon","ChevronUpIcon","ddsBaseTokens","jsx","jsxs","Container","styled","forwardRef","useState","ChevronUpIcon","ChevronDownIcon","forwardRef","styled","css","ddsBaseTokens","spacing","getBaseHTMLProps","jsx","styled","css","forwardRef","useId","styled","derivativeIdGenerator","spaceSeparatedIdListGenerator","Label","styled","ddsBaseTokens","colors","spacing","jsx","MessageContainer","styled","message","styled","CloseIcon","derivativeIdGenerator","spaceSeparatedIdListGenerator","jsx","jsxs","styled","derivativeIdGenerator","CloseIcon","spaceSeparatedIdListGenerator","useCallback","useEffect","useMemo","useRef","useRef","useMemo","useEffect","accepted","useCallback","jsx","jsxs","defaultWidth","Wrapper","styled","label","useId","derivativeIdGenerator","Label","spaceSeparatedIdListGenerator","ddsBaseTokens","styled","Typography","jsx","jsxs","colors","spacing","title","message","forwardRef","styled","Icon","icons","Typography","ddsBaseTokens","colors","spacing","icon","jsx","jsxs","Nav","styled","StyledIcon","Icon","forwardRef","icons","Typography","useEffect","useState","Paragraph","styled","css","ddsBaseTokens","Label","jsx","jsxs","styled","ddsBaseTokens","css","Label","styled","ddsBaseTokens","Icon","jsx","jsxs","styled","ddsBaseTokens","Icon","jsx","useState","useEffect","Paragraph"]}
1
+ {"version":3,"sources":["../src/components/helpers/Chevron/AnimatedChevronUpDown.styles.tsx","../src/components/helpers/Chevron/AnimatedChevronUpDown.tsx","../src/components/helpers/HiddenInput/HiddenInput.tsx","../src/components/helpers/Input/Input.styles.tsx","../src/components/helpers/Input/Input.tokens.tsx","../src/components/helpers/styling/danger.tsx","../src/components/helpers/styling/focus.tsx","../src/components/helpers/styling/focusVisible.tsx","../src/components/helpers/styling/hideInput.tsx","../src/components/helpers/styling/hover.tsx","../src/components/helpers/styling/normalize.tsx","../src/components/helpers/styling/removeButtonStyling.tsx","../src/components/helpers/styling/removeListStyling.tsx","../src/components/helpers/styling/selection.tsx","../src/components/helpers/styling/visibilityTransition.tsx","../src/components/Typography/Caption/Caption.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.tsx","../src/components/Typography/Typography/Typography.tsx","../src/components/Typography/Typography.tokens.tsx","../src/components/Typography/Typography/Typography.styles.ts","../src/components/Typography/Typography/Typography.utils.ts","../src/utils/dom.ts","../src/types/BaseComponentProps.ts","../src/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/utils/StyledSvg.ts","../src/components/Icon/icons/index.ts","../src/components/Icon/utils/SvgWrapper.tsx","../src/components/Icon/icons/addressShielded.tsx","../src/components/Icon/icons/agreement.tsx","../src/components/Icon/icons/apps.tsx","../src/components/Icon/icons/archive.tsx","../src/components/Icon/icons/arrowDown.tsx","../src/components/Icon/icons/arrowLeft.tsx","../src/components/Icon/icons/arrowRight.tsx","../src/components/Icon/icons/arrowUp.tsx","../src/components/Icon/icons/attachment.tsx","../src/components/Icon/icons/block.tsx","../src/components/Icon/icons/book.tsx","../src/components/Icon/icons/build.tsx","../src/components/Icon/icons/buildCircled.tsx","../src/components/Icon/icons/calendar.tsx","../src/components/Icon/icons/calendarMonth.tsx","../src/components/Icon/icons/calendarViewDay.tsx","../src/components/Icon/icons/calendarViewMonth.tsx","../src/components/Icon/icons/calendarViewWeek.tsx","../src/components/Icon/icons/call.tsx","../src/components/Icon/icons/caring.tsx","../src/components/Icon/icons/chat.tsx","../src/components/Icon/icons/check.tsx","../src/components/Icon/icons/checkCircled.tsx","../src/components/Icon/icons/checklist.tsx","../src/components/Icon/icons/chevronDown.tsx","../src/components/Icon/icons/chevronFirst.tsx","../src/components/Icon/icons/chevronLargeLeft.tsx","../src/components/Icon/icons/chevronLargeRight.tsx","../src/components/Icon/icons/chevronLast.tsx","../src/components/Icon/icons/chevronLeft.tsx","../src/components/Icon/icons/chevronRight.tsx","../src/components/Icon/icons/chevronUp.tsx","../src/components/Icon/icons/close.tsx","../src/components/Icon/icons/closeSmall.tsx","../src/components/Icon/icons/closeCircled.tsx","../src/components/Icon/icons/cloud.tsx","../src/components/Icon/icons/collapse.tsx","../src/components/Icon/icons/comment.tsx","../src/components/Icon/icons/copy.tsx","../src/components/Icon/icons/court.tsx","../src/components/Icon/icons/dateRange.tsx","../src/components/Icon/icons/deaths.tsx","../src/components/Icon/icons/doubleChevronLeft.tsx","../src/components/Icon/icons/doubleChevronRight.tsx","../src/components/Icon/icons/download.tsx","../src/components/Icon/icons/downloadDone.tsx","../src/components/Icon/icons/dragHandle.tsx","../src/components/Icon/icons/edit.tsx","../src/components/Icon/icons/error.tsx","../src/components/Icon/icons/exclaim.tsx","../src/components/Icon/icons/expand.tsx","../src/components/Icon/icons/facebook.tsx","../src/components/Icon/icons/family.tsx","../src/components/Icon/icons/feedback.tsx","../src/components/Icon/icons/file.tsx","../src/components/Icon/icons/fileAdd.tsx","../src/components/Icon/icons/fileShielded.tsx","../src/components/Icon/icons/fileText.tsx","../src/components/Icon/icons/filter.tsx","../src/components/Icon/icons/filterList.tsx","../src/components/Icon/icons/filterListOff.tsx","../src/components/Icon/icons/filterOff.tsx","../src/components/Icon/icons/findInPage.tsx","../src/components/Icon/icons/folder.tsx","../src/components/Icon/icons/folderAdd.tsx","../src/components/Icon/icons/folderShielded.tsx","../src/components/Icon/icons/fullsceenExit.tsx","../src/components/Icon/icons/fullscreen.tsx","../src/components/Icon/icons/gavel.tsx","../src/components/Icon/icons/help.tsx","../src/components/Icon/icons/helpFilled.tsx","../src/components/Icon/icons/home.tsx","../src/components/Icon/icons/hourglassBottom.tsx","../src/components/Icon/icons/hourglassDisabled.tsx","../src/components/Icon/icons/hourglassEmpty.tsx","../src/components/Icon/icons/hourglassFull.tsx","../src/components/Icon/icons/hourglassTop.tsx","../src/components/Icon/icons/image.tsx","../src/components/Icon/icons/info.tsx","../src/components/Icon/icons/instagram.tsx","../src/components/Icon/icons/jordskifterett.tsx","../src/components/Icon/icons/key.tsx","../src/components/Icon/icons/lagmannsrett.tsx","../src/components/Icon/icons/language.tsx","../src/components/Icon/icons/link.tsx","../src/components/Icon/icons/linkedIn.tsx","../src/components/Icon/icons/linkOff.tsx","../src/components/Icon/icons/list.tsx","../src/components/Icon/icons/listAlt.tsx","../src/components/Icon/icons/location.tsx","../src/components/Icon/icons/lock.tsx","../src/components/Icon/icons/lockOpen.tsx","../src/components/Icon/icons/login.tsx","../src/components/Icon/icons/logout.tsx","../src/components/Icon/icons/mail.tsx","../src/components/Icon/icons/mailOpen.tsx","../src/components/Icon/icons/menu.tsx","../src/components/Icon/icons/minus.tsx","../src/components/Icon/icons/minusCircled.tsx","../src/components/Icon/icons/moreHorizontal.tsx","../src/components/Icon/icons/moreVertical.tsx","../src/components/Icon/icons/notarial.tsx","../src/components/Icon/icons/notifications.tsx","../src/components/Icon/icons/notificationsOff.tsx","../src/components/Icon/icons/onlineMeeting.tsx","../src/components/Icon/icons/openExternal.tsx","../src/components/Icon/icons/payout.tsx","../src/components/Icon/icons/pdf.tsx","../src/components/Icon/icons/person.tsx","../src/components/Icon/icons/personAdd.tsx","../src/components/Icon/icons/personShielded.tsx","../src/components/Icon/icons/pin.tsx","../src/components/Icon/icons/plus.tsx","../src/components/Icon/icons/plusCircled.tsx","../src/components/Icon/icons/print.tsx","../src/components/Icon/icons/property.tsx","../src/components/Icon/icons/publish.tsx","../src/components/Icon/icons/questionAnswer.tsx","../src/components/Icon/icons/receipt.tsx","../src/components/Icon/icons/redo.tsx","../src/components/Icon/icons/refresh.tsx","../src/components/Icon/icons/replay.tsx","../src/components/Icon/icons/search.tsx","../src/components/Icon/icons/settings.tsx","../src/components/Icon/icons/sms.tsx","../src/components/Icon/icons/star.tsx","../src/components/Icon/icons/starFilled.tsx","../src/components/Icon/icons/starHalfFilled.tsx","../src/components/Icon/icons/sync.tsx","../src/components/Icon/icons/thumbdown.tsx","../src/components/Icon/icons/thumbdownFilled.tsx","../src/components/Icon/icons/thumbup.tsx","../src/components/Icon/icons/thumbupFilled.tsx","../src/components/Icon/icons/time.tsx","../src/components/Icon/icons/tingrett.tsx","../src/components/Icon/icons/tip.tsx","../src/components/Icon/icons/trash.tsx","../src/components/Icon/icons/twitter.tsx","../src/components/Icon/icons/undo.tsx","../src/components/Icon/icons/unfoldLess.tsx","../src/components/Icon/icons/unfoldMore.tsx","../src/components/Icon/icons/upload.tsx","../src/components/Icon/icons/visibilityOff.tsx","../src/components/Icon/icons/visibilityOn.tsx","../src/components/Icon/icons/warning.tsx","../src/components/Icon/icons/zoomIn.tsx","../src/components/Icon/icons/zoomOut.tsx","../src/components/Icon/icons/barChart.tsx","../src/components/Icon/icons/barChartBoxed.tsx","../src/components/Icon/icons/lineChart.tsx","../src/components/Icon/icons/trendingUp.tsx","../src/components/Icon/icons/trendingDown.tsx","../src/components/Icon/icons/libraryAdd.tsx","../src/utils/renderInputMessage.tsx","../src/utils/searchFilter.tsx","../src/utils/text.tsx","../src/components/Typography/Heading/Heading.tsx","../src/components/Typography/Label/Label.tsx","../src/components/Typography/Legend/Legend.tsx","../src/components/Typography/Link/Link.tsx","../src/components/Typography/Paragraph/Paragraph.tsx","../src/components/helpers/Input/Input.utils.tsx","../src/components/helpers/Paper/Paper.tsx","../src/components/helpers/Paper/Paper.tokens.tsx","../src/components/helpers/RequiredMarker/RequiredMarker.tsx","../src/hooks/useCombinedRefs.tsx","../src/hooks/useFloatPosition.tsx","../src/hooks/useFocusTrap.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useMountTransition.tsx","../src/hooks/useOnClickOutside.tsx","../src/hooks/useOnKeyDown.tsx","../src/hooks/useReturnFocusOnBlur.ts","../src/hooks/useRoveFocus.tsx","../src/hooks/useScreenSize.tsx","../src/components/helpers/ScreenSize/ScreenSize.utils.tsx","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.styles.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Table.tsx","../src/components/Table/Table.tokens.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Head.tsx","../src/components/Table/Body.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/Cell.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionContext.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.ts","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/Datepicker/Datepicker.tsx","../src/components/Datepicker/Datepicker.tokens.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/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/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Feedback/CommentComponent.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport interface StyledSvgChevronProps {\n $isUp?: boolean;\n}\n\nexport const SvgChevron = styled.svg`\n display: inline-block;\n flex-shrink: 0;\n position: relative;\n text-align: center;\n vertical-align: middle;\n`;\n\nexport const SvgChevronlGroup = styled.g<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform: ${({ $isUp }) => ($isUp ? 'translateY(3px)' : 'translateY(0)')};\n`;\n\nexport const SvgChevronlLeft = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 1px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(-90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n\nexport const SvgChevronlRight = styled.path<StyledSvgChevronProps>`\n transition: transform 0.2s linear;\n transform-origin: 7px 1px;\n transform: ${({ $isUp }) =>\n $isUp ? 'rotate(90deg) translateY(0)' : 'rotate(0) translateY(0)'};\n`;\n","import {\n SvgChevronlRight,\n SvgChevronlLeft,\n SvgChevronlGroup,\n SvgChevron,\n} from './AnimatedChevronUpDown.styles';\nimport { Property } from 'csstype';\n\nconst svgChevronLeftPath =\n 'M 1 0 L 5 4 C 5 4 5 4 5 4 L 4 5 C 4 5 4 5 4 5 C 4 5 4 5 4 5 L 0 1 C 0 1 0 1 0 1 L 1 0 C 1 0 1 0 1 0 C 1 0 1 0 1 0 L 1 0 Z';\nconst svgChevronRightPath =\n 'M 3 4 L 7 0 L 8 1 C 8 1 8 1 8 1 L 4 5 L 3 4 C 3 4 3 4 3 4 L 3 4 Z';\n\ninterface SvgChevronProps {\n isUp?: boolean;\n height?: Property.Height<string>;\n width?: Property.Width<string>;\n}\n\nexport const AnimatedChevronUpDown = ({\n isUp,\n height = '5px',\n width = '8px',\n}: SvgChevronProps) => {\n return (\n <SvgChevron\n viewBox=\"0 0 8 5\"\n width={width}\n height={height}\n fill=\"currentColor\"\n >\n <SvgChevronlGroup $isUp={isUp}>\n <SvgChevronlLeft d={svgChevronLeftPath} $isUp={isUp} />\n <SvgChevronlRight d={svgChevronRightPath} $isUp={isUp} />\n </SvgChevronlGroup>\n </SvgChevron>\n );\n};\n","import styled from 'styled-components';\n\nexport const HiddenInput = styled.input`\n clip: rect(0 0 0 0);\n position: absolute;\n height: 1px;\n width: 1px;\n margin: 0;\n`;\n","import styled, { css } from 'styled-components';\nimport { inputTokens as tokens, inputTypographyTypes } from './Input.tokens';\nimport { StyledInputProps } from '.';\nimport { Property } from 'csstype';\nimport {\n dangerInputfield,\n focusDangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../styling';\nimport { getFontStyling } from '../../Typography';\n\nconst { input, container } = tokens;\n\nexport const Input = styled.input`\n position: relative;\n color: ${input.base.color};\n border-radius: ${input.base.borderRadius};\n border: ${input.base.border};\n border-color: ${input.base.borderColor};\n background-color: ${input.base.backgroundColor};\n padding: ${input.base.padding};\n width: 100%;\n margin: 0;\n box-sizing: border-box;\n box-shadow: none;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s,\n background-color 0.2s;\n }\n &[type='text'],\n &[type='password'],\n &[type='number'],\n &[type='tel'],\n &[type='date'],\n &[type='url'],\n &[type='email'],\n &[type='search'],\n &[type='datetime-local'] {\n -webkit-appearance: none;\n }\n &::selection {\n ${selection}\n }\n\n &:not(.disabled):not(.read-only):not(.active):hover,\n &:hover:enabled:read-write {\n ${hoverInputfield}\n }\n &:not(.disabled):not(.read-only):focus-within,\n &.active,\n &:focus:enabled:read-write,\n &:active:enabled:read-write {\n ${focusInputfield}\n }\n`;\n\nexport const StatefulInput = styled(Input).withConfig({\n shouldForwardProp: prop => {\n const stylingProps: (keyof StyledInputProps)[] = [\n 'componentSize',\n 'hasErrorMessage',\n 'prefixLength',\n 'suffixLength',\n ];\n return !stylingProps.some(styleProp => styleProp === prop);\n },\n})<StyledInputProps>`\n -webkit-appearance: textfield;\n\n padding-left: ${({ prefixLength, readOnly }) =>\n prefixLength &&\n (readOnly\n ? `${prefixLength}px !important`\n : `calc(${input.affix.gap}px + ${prefixLength}px) !important`)};\n padding-right: ${({ suffixLength, readOnly }) =>\n suffixLength &&\n (readOnly\n ? `${suffixLength}px !important`\n : `calc(${input.affix.gap}px + ${suffixLength}px) !important`)};\n ${({ componentSize }) =>\n componentSize &&\n css`\n padding: ${input.sizes[componentSize].padding};\n ${getFontStyling(inputTypographyTypes[componentSize])}\n `}\n\n ${({ hasErrorMessage }) =>\n hasErrorMessage &&\n css`\n ${dangerInputfield}\n &:not(.disabled):hover,\n &:hover:enabled:read-write {\n ${hoverDangerInputfield}\n }\n &:not(.disabled):focus-within,\n &:focus-within:enabled:read-write,\n &:active:enabled:read-write {\n ${focusDangerInputfield}\n }\n `}\n &:not(.disabled).read-only,\n &:enabled:read-only {\n border: none;\n outline: none;\n cursor: default;\n background-color: ${input.readOnly.backgroundColor};\n padding-left: 0;\n }\n &.disabled,\n &:disabled {\n cursor: not-allowed;\n color: ${input.disabled.color};\n background-color: ${input.disabled.backgroundColor};\n }\n`;\n\ninterface OuterInputContainerProps {\n width?: Property.Width;\n}\n\nexport const OuterInputContainer = styled.div<OuterInputContainerProps>`\n position: relative;\n gap: ${container.gap};\n width: ${({ width }) => width};\n`;\n\n/**Brukes som container til input og ikon for posisjonering. */\n\nexport const InputContainer = styled.div`\n position: relative;\n`;\n\nexport const InputAffixContainer = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`;\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { InputTypographyTypes } from './Input.types';\n\nconst { colors, spacing, border } = ddsBaseTokens;\n\nconst { textInput: TextInput } = ddsReferenceTokens;\n\nexport const inputTypographyTypes: InputTypographyTypes = {\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst input = {\n base: {\n color: TextInput.input.textColor,\n borderRadius: TextInput.input.borderRadius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderColor: TextInput.input.borderColor,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\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.SizesDdsSpacingLocalX075,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n affix: {\n gap: spacing.SizesDdsSpacingLocalX1NumberPx,\n },\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const inputTokens = {\n input,\n container,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors: Colors } = ddsBaseTokens;\n\nexport const dangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border } = ddsBaseTokens;\n\nexport const focusInputfield = {\n outline: 'none',\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const focusDangerInputfield = {\n borderColor: border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 2px ${border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, spacing } = ddsBaseTokens;\n\nexport const outlineOffset = spacing.SizesDdsSpacingLocalX0125;\n\nexport const focusVisible = {\n outline: `${Border.BordersDdsBorderFocusBaseStrokeWeight} ${Border.BordersDdsBorderFocusBaseStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleOnDark = {\n outline: `${Border.BordersDdsBorderFocusOndarkStrokeWeight} ${Border.BordersDdsBorderFocusOndarkStroke} solid`,\n outlineOffset: outlineOffset,\n};\n\nexport const focusVisibleTransitionValue = 'outline-offset 0.2s';\n\nexport const focusVisibleWithBorder = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusCardStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n\nexport const focusVisibleThickWithBorderOnDark = {\n outline: 'none',\n borderColor: Border.BordersDdsBorderFocusOndarkStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusOndarkStroke}`,\n};\n\nexport const focusVisibleInset = {\n outline: 'none',\n boxShadow: `inset 0 0 0 2px ${Border.BordersDdsBorderFocusCardStroke}`,\n};\n","export const hideInput = {\n clip: 'rect(0 0 0 0)',\n position: 'absolute',\n height: '1px',\n width: '1px',\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border: Border, colors: Colors } = ddsBaseTokens;\n\nexport const hoverWithBorder = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `inset 0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverInputfield = {\n borderColor: Border.BordersDdsBorderFocusInputfieldStroke,\n boxShadow: `0 0 0 1px ${Border.BordersDdsBorderFocusInputfieldStroke}`,\n};\n\nexport const hoverDangerInputfield = {\n borderColor: Colors.DdsColorDangerBase,\n boxShadow: `0 0 0 1px ${Colors.DdsColorDangerBase}`,\n};\n","import { Property } from 'csstype';\n\nexport const normalizeButton = {\n margin: 0,\n textTransform: 'none' as Property.TextTransform,\n};\n","export const removeButtonStyling = {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n};\n","export const removeListStyling = {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors } = ddsBaseTokens;\n\nexport const selection = {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorTertiaryLightest,\n};\n","import { css } from 'styled-components';\n\nexport const visibilityTransition = (open: boolean) => {\n return css`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n visibility 0.4s,\n opacity 0.2s;\n }\n visibility: ${open ? 'visible' : 'hidden'};\n opacity: ${open ? 1 : 0};\n `;\n};\n","import { forwardRef } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type CaptionProps = BaseComponentPropsWithChildren<\n HTMLTableCaptionElement,\n BaseTypographyProps\n>;\n\nexport const Caption = forwardRef<HTMLTableCaptionElement, CaptionProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"headingSans03\"\n as=\"caption\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nCaption.displayName = 'Caption';\n","import styled from 'styled-components';\n\nexport const TextOverflowEllipsisWrapper = styled.span`\n max-width: 100%;\n`;\n\nexport const TextOverflowEllipsisInner = styled.span`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","import {\n forwardRef,\n ElementType,\n HTMLAttributes,\n AnchorHTMLAttributes,\n} from 'react';\nimport styled, { css, CSSObject } from 'styled-components';\n\nimport { typographyTokens as tokens } from '../Typography.tokens';\nimport {\n getAnchorStyling,\n getMarginStyling,\n getAdditionalFontStyle,\n} from './Typography.styles';\nimport {\n TypographyType,\n TypographyInteractionStyling,\n TypographyComponentProps,\n AnchorTypographyType,\n LabelTypographyType,\n OtherTypographyType,\n} from './Typography.types';\nimport { getElementType } from './Typography.utils';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { TextColor, getTextColor } from '../../../utils';\nimport { selection } from '../../helpers';\n\ninterface StyledTypographyProps {\n as: ElementType;\n typographyType: TypographyType;\n withMargins?: boolean;\n color: TextColor;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n interactionProps?: TypographyInteractionStyling;\n externalLink?: boolean;\n}\n\nconst StyledTypography = styled.p.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledTypographyProps)[] = [\n 'externalLink',\n 'typographyType',\n 'withMargins',\n 'interactionProps',\n 'bold',\n 'italic',\n 'underline',\n 'color',\n 'as',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledTypographyProps>`\n user-select: text;\n &::selection,\n *::selection {\n ${selection}\n }\n\n ${({ typographyType, externalLink, interactionProps }) =>\n typographyType === 'a'\n ? css`\n ${getAnchorStyling(externalLink, interactionProps)}\n `\n : css`\n color: ${tokens.typographyType[typographyType].base.color};\n ${tokens.typographyType[typographyType].base.font};\n `}\n\n ${({ interactionProps }) =>\n interactionProps?.hover &&\n css`\n &:hover {\n ${interactionProps.hover as CSSObject}\n }\n `}\n ${({ interactionProps }) =>\n interactionProps?.active &&\n css`\n &:active {\n ${interactionProps.active as CSSObject}\n }\n `}\n\n color: ${({ color }) => getTextColor(color)};\n\n ${({ typographyType, as, withMargins }) =>\n getMarginStyling(typographyType, as, withMargins)}\n\n ${({ bold, italic, underline }) =>\n getAdditionalFontStyle(bold, italic, underline)};\n`;\n\ntype AnchorTypographyProps = BaseComponentProps<\n HTMLAnchorElement,\n TypographyComponentProps & {\n /**nativ `href`-prop ved `typographyType='a'`. */\n href?: string | undefined;\n\n /** Spesifiserer om lenka er ekstern ved `typographyType='a'` eller `as='a'`.*/\n externalLink?: boolean;\n\n /**nativ `target`-prop ved `typographyType='a'`. */\n target?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n>;\n\ntype LabelTypographyProps = BaseComponentProps<\n HTMLLabelElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLLabelElement>\n>;\n\ntype OtherTypographyProps = BaseComponentProps<\n HTMLElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLElement>\n>;\n\nexport type TypographyProps =\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: AnchorTypographyType;\n } & AnchorTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: LabelTypographyType;\n } & LabelTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: OtherTypographyType;\n } & OtherTypographyProps);\n\nconst isAnchorProps = (\n props: TypographyProps,\n): props is AnchorTypographyProps => props.typographyType === 'a';\n\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(\n (props, ref) => {\n const {\n typographyType = 'bodySans02',\n as: propAs,\n children,\n style,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { style: htmlPropsStyle, ...restHtmlProps } = htmlProps;\n\n const as = propAs ? propAs : getElementType(typographyType as string);\n\n let relProp;\n let targetProp;\n let externalLinkProp;\n if (isAnchorProps(props)) {\n const { externalLink, target } = props;\n relProp = as === 'a' ? 'noopener noreferer' : undefined;\n targetProp = as !== 'a' ? undefined : externalLink ? '_blank' : target;\n externalLinkProp = as === 'a' && externalLink ? externalLink : undefined;\n }\n\n const typographyProps = {\n ...getBaseHTMLProps<HTMLElement>(id, className, restHtmlProps, rest),\n typographyType,\n as,\n style: { ...htmlPropsStyle, ...style },\n rel: relProp,\n target: targetProp,\n externalLink: externalLinkProp,\n };\n\n return (\n <StyledTypography ref={ref} {...typographyProps}>\n {children}\n </StyledTypography>\n );\n },\n);\n\nTypography.displayName = 'Typography';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, fontPackages, spacing } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst a = {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n icon: {\n marginTop: spacing.SizesDdsSpacingLocalX025,\n marginLeft: spacing.SizesDdsSpacingLocalX025,\n },\n};\n\nconst bold = {\n fontWeight: 600,\n};\n\nconst headingSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_01.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans01Top,\n },\n};\n\nconst headingSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_02.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans02Top,\n },\n};\n\nconst headingSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_03.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans03Top,\n },\n};\n\nconst headingSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_04.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans04Top,\n },\n};\n\nconst headingSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_05.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans05Top,\n },\n};\n\nconst headingSans06 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_06.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_06.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans06Top,\n },\n};\n\nconst headingSans07 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_07.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_07.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans07Top,\n },\n};\n\nconst headingSans08 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.heading_sans_08.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.heading_sans_08.paragraph.paragraphSpacing,\n paddingTop: spacing.SpacingDdsSpacingPaddingTopHeadingSans08Top,\n },\n};\n\nconst bodySans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst bodySans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.body_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.body_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_01.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_01.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_02.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_02.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans03 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_03.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_03.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans04 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_04.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_04.paragraph.paragraphSpacing,\n },\n};\n\nconst leadSans05 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.lead_sans_05.base,\n },\n margins: {\n marginTop: 0,\n marginBottom: fontPackages.lead_sans_05.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleLabel01 = {\n base: {\n color: colors.DdsColorNeutralsGray7,\n font: fontPackages.supportingStyle_label_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_label_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleHelperText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_helpertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_helpertext_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStylePlaceholderText01 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_01.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_01.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText02 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_02.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_02.paragraph\n .paragraphSpacing,\n },\n};\nconst supportingStylePlaceholderText03 = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n font: fontPackages.supportingStyle_placeholdertext_03.base,\n margin: 0,\n },\n margins: {\n marginTop:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_placeholdertext_03.paragraph\n .paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny01 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_01.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_01.paragraph.paragraphSpacing,\n },\n};\n\nconst supportingStyleTiny02 = {\n base: {\n color: textDefault.textColor,\n font: fontPackages.supportingStyle_tiny_02.base,\n margin: 0,\n },\n margins: {\n marginTop: fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n marginBottom:\n fontPackages.supportingStyle_tiny_02.paragraph.paragraphSpacing,\n },\n};\n\nexport const typographyTokens = {\n typographyType: {\n a,\n headingSans01,\n headingSans02,\n headingSans03,\n headingSans04,\n headingSans05,\n headingSans06,\n headingSans07,\n headingSans08,\n bodySans01,\n bodySans02,\n bodySans03,\n bodySans04,\n leadSans01,\n leadSans02,\n leadSans03,\n leadSans04,\n leadSans05,\n supportingStyleLabel01,\n supportingStyleHelperText01,\n supportingStylePlaceholderText01,\n supportingStylePlaceholderText02,\n supportingStylePlaceholderText03,\n supportingStyleTiny01,\n supportingStyleTiny02,\n },\n style: {\n bold,\n },\n};\n","import { ElementType } from 'react';\nimport { css, CSSObject } from 'styled-components';\nimport OpenExternalIcon from './openExternal.svg';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { border, colors } = ddsBaseTokens;\n\nimport { typographyTokens as tokens } from '../Typography.tokens';\nimport {\n StaticTypographyType,\n TypographyInteractionStyling,\n TypographyType,\n} from './Typography.types';\nimport { isHeading, isInlineElement } from './Typography.utils';\n\nexport const focusVisibleLink = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusBaseStroke,\n color: colors.DdsColorNeutralsWhite,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkOnDark = {\n outline: 'none',\n backgroundColor: border.BordersDdsBorderFocusOndarkStroke,\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n};\n\nexport const focusVisibleLinkTransitionValue =\n 'background-color 0.2s, text-decoration 0.2s, color 0.2s';\n\nexport const getFontStyling = (\n type: StaticTypographyType,\n withColor?: boolean,\n) => {\n return {\n color: withColor ? tokens.typographyType[type].base.color : undefined,\n ...tokens.typographyType[type].base.font,\n };\n};\n\nexport const getAdditionalFontStyle = (\n bold?: boolean,\n italic?: boolean,\n underline?: boolean,\n) => {\n return css`\n ${bold &&\n css`\n font-weight: ${tokens.style.bold.fontWeight};\n `}\n ${italic &&\n css`\n font-style: italic;\n `}\n ${underline &&\n css`\n text-decoration: underline;\n `}\n `;\n};\n\nexport const getMarginStyling = (\n typographyType: TypographyType,\n element: ElementType,\n withMargins?: boolean,\n) =>\n withMargins\n ? css`\n ${isInlineElement(element) &&\n element !== 'a' &&\n css`\n display: block;\n `}\n margin-top: ${tokens.typographyType[typographyType].margins.marginTop};\n margin-bottom: ${tokens.typographyType[typographyType].margins\n .marginBottom};\n ${isHeading(typographyType) &&\n css`\n padding-top: ${tokens.typographyType[typographyType].margins\n .paddingTop};\n `}\n `\n : css`\n margin: 0;\n `;\n\nexport const getAnchorStyling = (\n external?: boolean,\n interactionStyling?: TypographyInteractionStyling,\n typographyType?: StaticTypographyType,\n withMargins?: boolean,\n) => css`\n ${typographyType\n ? css`\n ${tokens.typographyType[typographyType].base.font};\n ${getMarginStyling(typographyType, 'a', withMargins)}\n `\n : css`\n font: inherit;\n ${getMarginStyling('a', 'a', withMargins)}\n `}\n color: ${tokens.typographyType.a.base.color};\n width: fit-content;\n text-decoration: underline;\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleLinkTransitionValue};\n }\n ${external &&\n css`\n padding-right: calc(1em + ${tokens.typographyType.a.icon.marginLeft});\n position: relative;\n &::after {\n mask: ${`url('${OpenExternalIcon}')`} no-repeat center / contain;\n background: 0 0;\n background-color: currentColor;\n width: 1em;\n height: 1em;\n content: '';\n position: absolute;\n margin-top: ${tokens.typographyType.a.icon.marginTop};\n margin-left: ${tokens.typographyType.a.icon.marginLeft};\n }\n `}\n &:hover {\n color: ${tokens.typographyType.a.hover.color};\n ${interactionStyling?.hover &&\n css`\n ${interactionStyling.hover as CSSObject}\n `}\n }\n ${interactionStyling?.active &&\n css`\n &:active {\n ${interactionStyling.active as CSSObject}\n }\n `}\n &:focus-visible, &.focus-visible, &:focus-visible::selection, &.focus-visible::selection {\n ${focusVisibleLink}\n }\n`;\n","import { ElementType } from 'react';\nimport {\n TypographyBodyType,\n TypographyType,\n TypographyHeadingType,\n InlineElement,\n} from './Typography.types';\n\nexport const defaultTypographyType: TypographyBodyType = 'bodySans02';\n\nexport const getElementType = (element: string): ElementType => {\n switch (element) {\n case 'a':\n return 'a';\n case 'headingSans01':\n return 'h6';\n case 'headingSans02':\n return 'h5';\n case 'headingSans03':\n return 'h4';\n case 'headingSans04':\n return 'h3';\n case 'headingSans05':\n return 'h2';\n case 'headingSans06':\n case 'headingSans07':\n case 'headingSans08':\n return 'h1';\n case 'supportingStyleLabel01':\n return 'label';\n case 'bodySans01':\n case 'bodySans02':\n case 'bodySans03':\n case 'bodySans04':\n case 'leadSans01':\n case 'leadSans02':\n case 'leadSans03':\n case 'leadSans04':\n case 'leadSans05':\n case 'supportingStyleHelperText01':\n case 'supportingStylePlaceholderText01':\n case 'supportingStylePlaceholderText02':\n case 'supportingStylePlaceholderText03':\n case 'supportingStyleTiny01':\n case 'supportingStyleTiny02':\n default:\n return 'p';\n }\n};\n\nexport const isHeading = (\n type: TypographyType,\n): type is TypographyHeadingType => {\n return true;\n};\n\nexport const inlineElements: ElementType[] = [\n 'a',\n 'abbr',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'br',\n 'button',\n 'canvas',\n 'cite',\n 'code',\n 'data',\n 'datalist',\n 'del',\n 'dfn',\n 'em',\n 'embed',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'map',\n 'mark',\n 'meter',\n 'noscript',\n 'object',\n 'output',\n 'picture',\n 'progress',\n 'q',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'svg',\n 'template',\n 'textarea',\n 'time',\n 'u',\n 'var',\n 'video',\n 'wbr',\n];\n\nexport const isInlineElement = (as: ElementType): as is InlineElement =>\n inlineElements.indexOf(as) !== -1;\n","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: unknown[]) {\n return classNames.filter(Boolean).join(' ');\n}\n","import { HTMLAttributes, PropsWithChildren } from 'react';\nimport { cn } from '../../../components/src/utils/dom';\n\n/**\n * Basetype for props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `HTMLAttributes`-props på komponenter som eksponeres\n * av designsystemet. Se også {@link BaseComponentPropsWithChildren} og\n * {@link getBaseHTMLProps}.\n *\n * @template TElement Element-type som genereres av komponenten.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template THTMLAttributesProps Standard `HTMLAttributes<T>` men kan overstyres for f.eks knapper hvis man trenger en annen basetype for `htmlProps`.\n */\nexport type BaseComponentProps<\n TElement extends Element,\n TOtherProps extends object = object,\n THTMLAttributesProps extends\n HTMLAttributes<TElement> = HTMLAttributes<TElement>,\n> = Pick<THTMLAttributesProps, 'id' | 'className'> &\n TOtherProps & {\n /**Ekstra HTML-attributter som vil settes på elementet som genereres. Untatt `id` og `className` som settes på toppnivå. */\n htmlProps?: THTMLAttributesProps;\n };\n\n/**\n * Utvidelese av {@link BaseComponentProps} med prop for `children`.\n *\n * {@link BaseComponentProps}\n */\nexport type BaseComponentPropsWithChildren<\n T extends Element,\n TProps extends object = object,\n THTMLProps extends HTMLAttributes<T> = HTMLAttributes<T>,\n> = BaseComponentProps<T, PropsWithChildren<TProps>, THTMLProps>;\n\ninterface GetBaseHTMLProps {\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n className: HTMLAttributes<T>['className'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n}\n\n/**\n * Slår sammen id, className, htmlProps og unknownProps til ett objekt\n * som kan spreades som baseprops for en komponent. `unknownProps` er\n * med for å sikre at aria- og data- attributter blir spreadet, alle\n * komponenter må derfor ta hensyn til `...rest` når de leser props.\n *\n * Typisk bruk:\n * ```\n * const Props = BaseComponentProps<HTMLElement, {\n * propA: string,\n * propB: string,\n * }>\n *\n * const MyComponent = (props: Props) => {\n * const { propA, propB, id, className, htmlProps, ...rest } = props;\n *\n * const wrapperProps = getBaseHTMLProps(id, className, htmlProps, rest)\n *\n * return <div {...wrapperProps}>innhold</div>\n * }\n * ```\n * @param id id fra props til komponenten.\n * @param className className for komponenten.\n * @param htmlProps htmlProps fra komponenten.\n * @param unknownProps andre ukjente props som skal spreades, kommer typisk fra `...rest` når man leser props til komponenten.\n * @returns Objekt med alle argumentene som kan spreades.\n *\n * Kan også kalles uten `className`-parameteret. Oppførselen er lik.\n */\nexport const getBaseHTMLProps: GetBaseHTMLProps = <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlPropsOrClassName:\n | HTMLAttributes<T>['className']\n | (HTMLAttributes<T> | undefined),\n htmlPropsOrUnknownProps: (HTMLAttributes<T> | undefined) | object,\n unknownPropsOrUndefined?: object,\n): HTMLAttributes<T> & object => {\n if (\n typeof htmlPropsOrClassName === 'string' ||\n unknownPropsOrUndefined != undefined\n ) {\n const {\n id: idFromHtmlProps,\n className: classNameFromHtmlProps,\n ...restHTMLProps\n } = (htmlPropsOrUnknownProps as HTMLAttributes<T> | undefined) ?? {};\n\n const propId = id ?? idFromHtmlProps;\n\n const propClassName = cn(\n htmlPropsOrClassName as string | undefined,\n classNameFromHtmlProps,\n );\n\n return {\n ...unknownPropsOrUndefined,\n ...restHTMLProps,\n ...(propClassName && { className: propClassName }),\n ...(propId && { id: propId }),\n };\n } else {\n const {\n id: htmlPropsId,\n className: htmlPropsClassName,\n ...restHTMLProps\n } = htmlPropsOrClassName ?? {};\n\n const propId = id ?? htmlPropsId;\n\n return {\n ...htmlPropsOrUnknownProps,\n ...restHTMLProps,\n ...(htmlPropsClassName && { className: htmlPropsClassName }),\n ...(propId && { id: propId }),\n };\n }\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\n\nconst { colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport type ColorAlphaFormat = 'hex8' | 'decimal';\n\nexport const convertAlpha = (\n value: number | string,\n typeFrom: ColorAlphaFormat,\n typeTo: ColorAlphaFormat,\n) => {\n if (typeFrom === 'decimal' && typeTo === 'hex8') {\n const numberValue = Number(value);\n\n if (typeof numberValue !== 'number' || numberValue > 1 || numberValue < 0)\n return '';\n const hex8 = Math.round(\n 255 * (Math.round(numberValue * 100) / 100),\n ).toString(16);\n\n return hex8.length === 1 ? '0' + hex8 : hex8;\n }\n if (typeFrom === 'hex8' && typeTo === 'decimal') {\n const regexCheck = new RegExp(/^[0-9a-fA-F]+$/).test(value.toString());\n if (value.toString().length > 2 || regexCheck === false) return '';\n const decimal =\n Math.round((parseInt(value.toString(), 16) / 256) * 100) / 100;\n return decimal;\n }\n};\n\nexport const hexToRGBA = (hex: string): string => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16),\n alpha = hex.length === 9 ? hex.slice(7, 9) : 'ff';\n\n return `rgba(${r}, ${g}, ${b}, ${convertAlpha(alpha, 'hex8', 'decimal')})`;\n};\n\nconst getRGBValues = (value: string) =>\n value.replace(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i);\n\nexport const addAlphaToRGB = (rgb: string, alpha: number | string) => {\n const values = getRGBValues(rgb);\n\n return values\n ? `rgba(${values[1]}, ${values[2]}, ${values[3]}, ${alpha})`\n : '';\n};\n\nexport const RGBToHex = (value: string): string => {\n const rgb = getRGBValues(value);\n const alpha = (rgb?.[4] ?? '').trim();\n const hex = rgb\n ? '#' +\n (parseInt(rgb[1]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[2]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[3]) | (1 << 8)).toString(16).slice(1) +\n convertAlpha(alpha, 'decimal', 'hex8')\n : '';\n\n return hex;\n};\n\nexport const changeRGBAAlpha = (value: string, alpha: number): string => {\n if (!value.startsWith('rgba(') || !value.endsWith(')')) {\n return '';\n }\n\n return value.replace(/[\\d.]+\\)$/g, alpha.toString() + ')');\n};\n\nexport const textColors = {\n interactive: colors.DdsColorInteractiveBase,\n primary: colors.DdsColorPrimaryBase,\n danger: colors.DdsColorDangerBase,\n success: colors.DdsColorSuccessBase,\n warning: colors.DdsColorWarningBase,\n onLight: textDefault.textColor,\n onDark: colors.DdsColorNeutralsWhite,\n gray1: colors.DdsColorNeutralsGray1,\n gray2: colors.DdsColorNeutralsGray2,\n gray3: colors.DdsColorNeutralsGray3,\n gray4: colors.DdsColorNeutralsGray4,\n gray5: colors.DdsColorNeutralsGray5,\n gray6: colors.DdsColorNeutralsGray6,\n gray7: colors.DdsColorNeutralsGray7,\n gray8: colors.DdsColorNeutralsGray8,\n gray9: colors.DdsColorNeutralsGray9,\n};\n\nexport type DDSTextColor =\n | 'interactive'\n | 'primary'\n | 'danger'\n | 'warning'\n | 'success'\n | 'onLight'\n | 'onDark'\n | 'gray1'\n | 'gray2'\n | 'gray3'\n | 'gray4'\n | 'gray5'\n | 'gray6'\n | 'gray7'\n | 'gray8'\n | 'gray9';\n\nexport const textColorsArray = [\n 'interactive',\n 'primary',\n 'danger',\n 'success',\n 'warning',\n 'onLight',\n 'onDark',\n 'gray1',\n 'gray2',\n 'gray3',\n 'gray4',\n 'gray5',\n 'gray6',\n 'gray7',\n 'gray8',\n 'gray9',\n];\n\nexport type TextColor = DDSTextColor | Property.Color;\n\nexport function isTextColor(color: string): color is DDSTextColor {\n return textColorsArray.indexOf(color) !== -1;\n}\n\nexport const getTextColor = (color: TextColor): TextColor => {\n if (isTextColor(color)) return textColors[color];\n return color;\n};\n","import { Callback } from '../types';\n\nexport const combineHandlers = <T,>(\n handler1?: Callback<T>,\n handler2?: Callback<T>,\n): Callback<T> => {\n const callback: Callback<T> = event => {\n handler1 && handler1(event);\n handler2 && handler2(event);\n };\n return callback;\n};\n","import { RefObject } from 'react';\n\nexport function getFocusableElements<T extends HTMLElement>(\n elementRef: RefObject<T>,\n): NodeListOf<HTMLElement> | [] {\n return elementRef && elementRef.current\n ? elementRef.current.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n : [];\n}\n","import { InputSize } from '../components/helpers';\nimport { IconSize } from '../components/Icon';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'tiny':\n return 'small';\n }\n};\n","export const derivativeIdGenerator = (prefix: string, suffix: string): string =>\n `${prefix}-${suffix}`;\n\nexport const spaceSeparatedIdListGenerator = (\n values: (string | undefined)[],\n): string | undefined => {\n const filtered = values.filter(Boolean);\n\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n};\n","import styled, { css } from 'styled-components';\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { forwardRef } from 'react';\n\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { ErrorIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\ninterface WrapperProps {\n messageType: InputMessageType;\n}\n\nconst InputMessageWrapper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'messageType',\n})<WrapperProps>`\n display: flex;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n ${({ messageType }) =>\n messageType === 'error'\n ? css`\n color: ${tokens.message.error.color};\n background-color: ${tokens.message.error.backgroundColor};\n padding: ${tokens.message.error.padding};\n gap: ${tokens.message.error.gap};\n `\n : ''}\n svg {\n margin-top: ${tokens.icon.marginTop};\n }\n`;\n\nexport type InputMessageType = 'error' | 'tip';\n\nexport type InputMessageProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Meldingen som vises til brukeren. */\n message: string;\n /** Formålet med meldingen. Påvirker styling. */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = forwardRef<HTMLDivElement, InputMessageProps>(\n (props, ref) => {\n const { message, messageType, id, className, htmlProps, ...rest } = props;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n messageType,\n };\n\n const isError = messageType === 'error';\n\n return (\n <InputMessageWrapper {...wrapperProps}>\n {isError && <Icon icon={ErrorIcon} iconSize=\"inherit\" />}\n <Typography\n typographyType={\n isError ? 'supportingStyleLabel01' : 'supportingStyleHelperText01'\n }\n as=\"span\"\n bold={isError ? true : undefined}\n color={isError ? tokens.message.error.color : undefined}\n >\n {message}\n </Typography>\n </InputMessageWrapper>\n );\n },\n);\n\nInputMessage.displayName = 'InputMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst message = {\n tip: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n error: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { SvgIcon } from './utils';\n\nconst getSize = (iconSize: IconSize): string => {\n switch (iconSize) {\n case 'small':\n return ddsBaseTokens.iconSizes.DdsIconsizeSmall;\n case 'medium':\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n case 'large':\n return ddsBaseTokens.iconSizes.DdsIconsizeLarge;\n case 'inherit':\n return '1em';\n default:\n return ddsBaseTokens.iconSizes.DdsIconsizeMedium;\n }\n};\n\nexport type IconSize = 'small' | 'medium' | 'large' | 'inherit';\n\nexport type IconProps = BaseComponentProps<\n SVGSVGElement,\n {\n /**Ikonet importert fra `@norges-domstoler/dds-components`. */\n icon: SvgIcon;\n /**Størrelsen på ikonet. */\n iconSize?: IconSize;\n /**Fargen på ikonet. */\n color?: Property.Color;\n }\n>;\n\nexport function Icon(props: IconProps) {\n const {\n id,\n iconSize = 'medium',\n color = 'currentcolor',\n icon,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const { title, 'aria-hidden': ariaHidden = true } = htmlProps;\n\n const size = getSize(iconSize);\n\n return icon({\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n title,\n height: size,\n width: size,\n fill: color,\n 'aria-hidden': ariaHidden,\n });\n}\n\nIcon.displayName = 'Icon';\n","import { SVGAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst size = 24;\nconst sizePx = `${size}px`;\n\ntype StyledSvgProps = SVGAttributes<SVGSVGElement>;\n\nexport const StyledSvg = styled.svg.attrs<StyledSvgProps>(\n ({ height, width, fill }) => {\n return {\n height: height ? height : sizePx,\n width: width ? width : sizePx,\n fill: fill ? fill : 'currentColor',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `0 0 ${size} ${size}`,\n };\n },\n)<StyledSvgProps>`\n display: inline-block;\n transition: fill 0.2s;\n flex-shrink: 0;\n`;\n","export * from './addressShielded';\nexport * from './agreement';\nexport * from './apps';\nexport * from './archive';\nexport * from './arrowDown';\nexport * from './arrowLeft';\nexport * from './arrowRight';\nexport * from './arrowUp';\nexport * from './attachment';\nexport * from './block';\nexport * from './book';\nexport * from './build';\nexport * from './buildCircled';\nexport * from './calendar';\nexport * from './calendarMonth';\nexport * from './calendarViewDay';\nexport * from './calendarViewMonth';\nexport * from './calendarViewWeek';\nexport * from './call';\nexport * from './caring';\nexport * from './chat';\nexport * from './check';\nexport * from './checkCircled';\nexport * from './checklist';\nexport * from './chevronDown';\nexport * from './chevronFirst';\nexport * from './chevronLargeLeft';\nexport * from './chevronLargeRight';\nexport * from './chevronLast';\nexport * from './chevronLeft';\nexport * from './chevronRight';\nexport * from './chevronUp';\nexport * from './close';\nexport * from './closeSmall';\nexport * from './closeCircled';\nexport * from './cloud';\nexport * from './collapse';\nexport * from './comment';\nexport * from './copy';\nexport * from './court';\nexport * from './dateRange';\nexport * from './deaths';\nexport * from './doubleChevronLeft';\nexport * from './doubleChevronRight';\nexport * from './download';\nexport * from './downloadDone';\nexport * from './dragHandle';\nexport * from './edit';\nexport * from './error';\nexport * from './exclaim';\nexport * from './expand';\nexport * from './facebook';\nexport * from './family';\nexport * from './feedback';\nexport * from './file';\nexport * from './fileAdd';\nexport * from './fileShielded';\nexport * from './fileText';\nexport * from './filter';\nexport * from './filterList';\nexport * from './filterListOff';\nexport * from './filterOff';\nexport * from './findInPage';\nexport * from './folder';\nexport * from './folderAdd';\nexport * from './folderShielded';\nexport * from './fullsceenExit';\nexport * from './fullscreen';\nexport * from './gavel';\nexport * from './help';\nexport * from './helpFilled';\nexport * from './home';\nexport * from './hourglassBottom';\nexport * from './hourglassDisabled';\nexport * from './hourglassEmpty';\nexport * from './hourglassFull';\nexport * from './hourglassTop';\nexport * from './image';\nexport * from './info';\nexport * from './instagram';\nexport * from './jordskifterett';\nexport * from './key';\nexport * from './lagmannsrett';\nexport * from './language';\nexport * from './link';\nexport * from './linkedIn';\nexport * from './linkOff';\nexport * from './list';\nexport * from './listAlt';\nexport * from './location';\nexport * from './lock';\nexport * from './lockOpen';\nexport * from './login';\nexport * from './logout';\nexport * from './mail';\nexport * from './mailOpen';\nexport * from './menu';\nexport * from './minus';\nexport * from './minusCircled';\nexport * from './moreHorizontal';\nexport * from './moreVertical';\nexport * from './notarial';\nexport * from './notifications';\nexport * from './notificationsOff';\nexport * from './onlineMeeting';\nexport * from './openExternal';\nexport * from './payout';\nexport * from './pdf';\nexport * from './person';\nexport * from './personAdd';\nexport * from './personShielded';\nexport * from './pin';\nexport * from './plus';\nexport * from './plusCircled';\nexport * from './print';\nexport * from './property';\nexport * from './publish';\nexport * from './questionAnswer';\nexport * from './receipt';\nexport * from './redo';\nexport * from './refresh';\nexport * from './replay';\nexport * from './search';\nexport * from './settings';\nexport * from './sms';\nexport * from './star';\nexport * from './starFilled';\nexport * from './starHalfFilled';\nexport * from './sync';\nexport * from './thumbdown';\nexport * from './thumbdownFilled';\nexport * from './thumbup';\nexport * from './thumbupFilled';\nexport * from './time';\nexport * from './tingrett';\nexport * from './tip';\nexport * from './trash';\nexport * from './twitter';\nexport * from './undo';\nexport * from './unfoldLess';\nexport * from './unfoldMore';\nexport * from './upload';\nexport * from './visibilityOff';\nexport * from './visibilityOn';\nexport * from './warning';\nexport * from './zoomIn';\nexport * from './zoomOut';\nexport * from './barChart';\nexport * from './barChartBoxed';\nexport * from './lineChart';\nexport * from './trendingUp';\nexport * from './trendingDown';\nexport * from './libraryAdd';\n","import { SvgProps } from './propTypes';\nimport { StyledSvg } from './StyledSvg';\n\nexport function SvgWrapper(props: SvgProps) {\n const { title, children, ...rest } = props;\n\n return (\n <StyledSvg {...rest}>\n {title && <title>{title}</title>}\n {children}\n </StyledSvg>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function AddressShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 4V10H16.7889L12 5.69L7 10.19V18H9V12H14V14H11V20H5V12H2L12 3L16 6.6V4H19Z\" />\n <path d=\"M10 10H14C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10Z\" />\n <path d=\"M20 15V14C20 12.9 19.1 12 18 12C16.9 12 16 12.9 16 14V15C15.45 15 15 15.45 15 16V19C15 19.55 15.45 20 16 20H20C20.55 20 21 19.55 21 19V16C21 15.45 20.55 15 20 15ZM17 15V14C17 13.45 17.45 13 18 13C18.55 13 19 13.45 19 14V15H17Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AgreementIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.22 19.85c-.18.18-.5.21-.71 0-.18-.18-.21-.5 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.19.2-.51.19-.71 0-.21-.21-.18-.53 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.19-.19-.51 0-.71l3.39-3.39-1.42-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.2-.19-.51 0-.71L9.52 8.4l1.87 1.86c.95.95 2.59.94 3.54 0 .98-.98.98-2.56 0-3.54l-1.86-1.86.28-.28c.78-.78 2.05-.78 2.83 0l4.24 4.24c.78.78.78 2.05 0 2.83l-8.2 8.2zm9.61-6.78c1.56-1.56 1.56-4.09 0-5.66l-4.24-4.24c-1.56-1.56-4.09-1.56-5.66 0l-.28.28-.28-.28c-1.56-1.56-4.09-1.56-5.66 0L2.17 6.71C.75 8.13.62 10.34 1.77 11.9l1.45-1.45c-.39-.75-.26-1.7.37-2.33l3.54-3.54c.78-.78 2.05-.78 2.83 0l3.56 3.56c.18.18.21.5 0 .71-.21.21-.53.18-.71 0L9.52 5.57l-5.8 5.79c-.98.97-.98 2.56 0 3.54.39.39.89.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.54.31 1.03.7 1.42.47.47 1.1.73 1.77.73.67 0 1.3-.26 1.77-.73l8.21-8.19z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function AppsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArchiveIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2zm-1 18H5V9h14v11zm1-13H4V4h16v3z\" />\n <path d=\"M9 12h6v2H9v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ArrowDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ArrowUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function AttachmentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 115 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 005 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BlockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8 0 1.853-.63 3.55-1.682 4.904L7.096 5.682A7.965 7.965 0 0112 4zM5.682 7.096l11.222 11.222A7.965 7.965 0 0112 20c-4.43 0-8-3.57-8-8 0-1.853.63-3.55 1.682-4.904z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5-1.95 0-4.05.4-5.5 1.5v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\" />\n <path d=\"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zm4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BuildIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.5 1c-.873 0-1.707.176-2.467.488l-1.388.57L7.585 6 6 7.586 2.059 3.645l-.57 1.388A6.474 6.474 0 001 7.5C1 11.078 3.922 14 7.5 14c.619 0 1.181-.183 1.748-.346l8.908 8.907a1.514 1.514 0 002.121 0l2.285-2.288a1.516 1.516 0 00-.002-2.119l-8.906-8.906c.162-.567.346-1.13.346-1.748C14 3.922 11.078 1 7.5 1zm0 2C9.998 3 12 5.002 12 7.5c0 .607-.122 1.182-.34 1.713l-.252.617 9.385 9.385-1.576 1.578-9.387-9.387-.617.254c-.53.219-1.105.34-1.713.34A4.484 4.484 0 013 7.5c0-.026.013-.047.014-.072L6 10.414 10.414 6 7.428 3.014c.025 0 .046-.014.072-.014z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function BuildCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.49 11.38c.43-1.22.17-2.64-.81-3.62a3.468 3.468 0 00-4.1-.59l2.35 2.35-1.41 1.41-2.35-2.35c-.71 1.32-.52 2.99.59 4.1.98.98 2.4 1.24 3.62.81l3.41 3.41c.2.2.51.2.71 0l1.4-1.4c.2-.2.2-.51 0-.71l-3.41-3.41z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.6 3.2h-1.1V1h-2.2v2.2H7.5V1H5.3v2.2H4.2a2.19 2.19 0 00-2.189 2.2L2 20.8A2.2 2.2 0 004.2 23h15.4c1.21 0 2.2-.99 2.2-2.2V5.4c0-1.21-.99-2.2-2.2-2.2zm0 17.6H4.2v-11h15.4v11zm0-13.2H4.2V5.4h15.4v2.2zm-11 6.6H6.4V12h2.2v2.2zm4.4 0h-2.2V12H13v2.2zm4.4 0h-2.2V12h2.2v2.2zm-8.8 4.4H6.4v-2.2h2.2v2.2zm4.4 0h-2.2v-2.2H13v2.2zm4.4 0h-2.2v-2.2h2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewDayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 17h18v2H3v-2zm16-5v1H5v-1h14zm2-2H3v5h18v-5zM3 6h18v2H3V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8 11H4V6h4v5zm6 0h-4V6h4v5zm6 0h-4V6h4v5zM8 18H4v-5h4v5zm6 0h-4v-5h4v5zm6 0h-4v-5h4v5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CalendarViewWeekIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-7 2h2.5v12H13V6zm-2 12H8.5V6H11v12zM4 6h2.5v12H4V6zm16 12h-2.5V6H20v12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.54 5c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19zM7.5 3H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 00-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 01-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function CaringIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 13c3.09-2.81 6-5.44 6-7.7C22 3.45 20.55 2 18.7 2c-1.04 0-2.05.49-2.7 1.25C15.34 2.49 14.34 2 13.3 2 11.45 2 10 3.45 10 5.3c0 2.26 2.91 4.89 6 7.7zm-2.7-9c.44 0 .89.21 1.18.55L16 6.34l1.52-1.79c.29-.34.74-.55 1.18-.55.74 0 1.3.56 1.3 1.3 0 1.12-2.04 3.17-4 4.99-1.96-1.82-4-3.88-4-4.99 0-.74.56-1.3 1.3-1.3zM19 16h-2c0-1.2-.75-2.28-1.87-2.7L8.97 11H1v11h6v-1.44l7 1.94 8-2.5v-1c0-1.66-1.34-3-3-3zM3 20v-7h2v7H3zm10.97.41L7 18.48V13h1.61l5.82 2.17c.34.13.57.46.57.83 0 0-1.99-.05-2.3-.15l-2.38-.79-.63 1.9 2.38.79c.51.17 1.04.26 1.58.26H19c.39 0 .74.23.9.56l-5.93 1.84z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChatIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CheckIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.293 5.293L9 16.586l-4.293-4.293-1.414 1.414L9 19.414 21.707 6.707l-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CheckCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm4.293 4.293L10 14.586l-2.293-2.293-1.414 1.414L10 17.414l7.707-7.707-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChecklistIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 7h-9v2h9V7zm0 8h-9v2h9v-2zM5.54 11L2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 11zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 19z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronFirstIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6 1.41-1.41zM6 6h2v12H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLargeLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLargeRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLastIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6-1.41 1.41zM16 6h2v12h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ChevronUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4.707 3.293L3.293 4.707 10.586 12l-7.293 7.293 1.414 1.414L12 13.414l7.293 7.293 1.414-1.414L13.414 12l7.293-7.293-1.414-1.414L12 10.586 4.707 3.293z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function CloseSmallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloseCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zM8.707 7.293L7.293 8.707 10.586 12l-3.293 3.293 1.414 1.414L12 13.414l3.293 3.293 1.414-1.414L13.414 12l3.293-3.293-1.414-1.414L12 10.586 8.707 7.293z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CloudIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11A2.98 2.98 0 0122 15c0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95A5.47 5.47 0 0112 6zm0-2C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96A7.49 7.49 0 0012 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CollapseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 3.41L16.71 8.7 20 12h-8V4l3.29 3.29L20.59 2 22 3.41zM3.41 22l5.29-5.29L12 20v-8H4l3.29 3.29L2 20.59 3.41 22z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CommentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4h16v12H5.17L4 17.17V4zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h8v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CopyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function CourtIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74zm0-2.26L2 6v2h19V6l-9.5-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DateRangeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.4 10.9h2.2v2.2H6.4v-2.2zm15.4-5.5v15.4c0 1.21-.99 2.2-2.2 2.2H4.2A2.2 2.2 0 012 20.8l.011-15.4c0-1.21.968-2.2 2.189-2.2h1.1V1h2.2v2.2h8.8V1h2.2v2.2h1.1c1.21 0 2.2.99 2.2 2.2zM4.2 7.6h15.4V5.4H4.2v2.2zm15.4 13.2v-11H4.2v11h15.4zm-4.4-7.7h2.2v-2.2h-2.2v2.2zm-4.4 0H13v-2.2h-2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DeathsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 3c-.96 0-1.9.25-2.73.69L12 9h3l-3 10 1-9h-3l1.54-5.39C10.47 3.61 9.01 3 7.5 3 4.42 3 2 5.42 2 8.5c0 4.13 4.16 7.18 10 12.5 5.47-4.94 10-8.26 10-12.5C22 5.42 19.58 3 16.5 3zm-6.26 13.73C6.45 13.34 4 11 4 8.5 4 6.54 5.54 5 7.5 5c.59 0 1.19.15 1.73.42L7.35 12h3.42l-.53 4.73zm4.89-1.2L17.69 7h-2.91l.61-1.82c.36-.12.74-.18 1.11-.18C18.46 5 20 6.54 20 8.5c0 2.21-2.02 4.43-4.87 7.03z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DoubleChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 18.414,7.41398L 17,6L 11,12L 17,18L 18.414,16.586L 13.828,12L 18.414,7.41398 Z M 12.414,7.41398L 11,6L 5.00001,12L 11,18L 12.414,16.586L 7.82801,12L 12.414,7.41398 Z \" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DoubleChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 5.586,7.41398L 7,6L 13,12L 7,18L 5.586,16.586L 10.172,12L 5.586,7.41398 Z M 11.586,7.41399L 13,6.00001L 19,12L 13,18L 11.586,16.586L 16.172,12L 11.586,7.41399 Z \" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DownloadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 5v6h1.17L12 13.17 9.83 11H11V5h2zm2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DownloadDoneIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.13 5.41L18.72 4l-9.19 9.19-4.25-4.24-1.41 1.41 5.66 5.66 10.6-10.61zM5 18h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function DragHandleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function EditIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83a.996.996 0 000-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ErrorIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99zM12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ExclaimIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 21a2 2 0 100-4 2 2 0 000 4zM10 3h4v12h-4V3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ExpandIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10L21 11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FacebookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.625 2.625H3.375a.75.75 0 00-.75.75v17.25c0 .415.335.75.75.75h17.25a.75.75 0 00.75-.75V3.375a.75.75 0 00-.75-.75zm-2.166 5.473h-1.497c-1.175 0-1.402.557-1.402 1.378v1.807h2.803l-.365 2.829H15.56v7.263h-2.923v-7.26h-2.444v-2.832h2.444V9.197c0-2.421 1.48-3.74 3.64-3.74 1.036 0 1.925.077 2.185.112v2.529h-.003z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FamilyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.66 13.07c.15 0 .29-.01.43-.03A3.15 3.15 0 0012 15c1.31 0 2.44-.81 2.91-1.96a3.144 3.144 0 003.57-3.11c0-.71-.25-1.39-.67-1.93.43-.54.67-1.22.67-1.93a3.144 3.144 0 00-3.57-3.11A3.15 3.15 0 0012 1c-1.31 0-2.44.81-2.91 1.96a3.145 3.145 0 00-3.57 3.11c0 .71.25 1.39.67 1.93-.43.54-.68 1.22-.68 1.93 0 1.73 1.41 3.14 3.15 3.14zM12 13c-.62 0-1.12-.49-1.14-1.1l.12-1.09c.32.12.66.19 1.02.19s.71-.07 1.03-.19l.11 1.09c-.02.61-.52 1.1-1.14 1.1zm3.34-1.93c-.24 0-.46-.07-.64-.2l-.81-.57c.55-.45.94-1.09 1.06-1.83l.88.42c.4.19.66.59.66 1.03 0 .64-.52 1.15-1.15 1.15zm-.65-5.94c.2-.13.42-.2.65-.2.63 0 1.14.51 1.14 1.14 0 .44-.25.83-.66 1.03l-.88.42c-.12-.74-.51-1.38-1.07-1.83l.82-.56zM12 3c.62 0 1.12.49 1.14 1.1l-.11 1.09C12.71 5.07 12.36 5 12 5s-.7.07-1.02.19l-.12-1.09c.02-.61.52-1.1 1.14-1.1zM8.66 4.93c.24 0 .46.07.64.2l.81.56c-.55.45-.94 1.09-1.06 1.83l-.88-.42c-.4-.2-.66-.59-.66-1.03 0-.63.52-1.14 1.15-1.14zM8.17 8.9l.88-.42c.12.74.51 1.38 1.07 1.83l-.81.55c-.2.13-.42.2-.65.2-.63 0-1.14-.51-1.14-1.14-.01-.43.25-.82.65-1.02zM12 22a9 9 0 009-9 9 9 0 00-9 9zm2.44-2.44c.71-1.9 2.22-3.42 4.12-4.12a7.04 7.04 0 01-4.12 4.12zM3 13a9 9 0 009 9 9 9 0 00-9-9zm2.44 2.44c1.9.71 3.42 2.22 4.12 4.12a7.04 7.04 0 01-4.12-4.12z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FeedbackIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2v-2zm0-6h2v4h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FileIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2c-1.094 0-2 .906-2 2v16c0 1.094.906 2 2 2h12c1.094 0 2-.906 2-2V8l-6-6H6zm0 2h7v5h5v11H6V4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function FileAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3v-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FileShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 2H5C3.9 2 3 2.9 3 4V20C3 21.1 3.89 22 4.99 22H13V20H5V4H12V9H17V12H19V8L13 2Z\" />\n <path d=\"M20 17V16C20 14.9 19.1 14 18 14C16.9 14 16 14.9 16 16V17C15.45 17 15 17.45 15 18V21C15 21.55 15.45 22 16 22H20C20.55 22 21 21.55 21 21V18C21 17.45 20.55 17 20 17ZM17 17V16C17 15.45 17.45 15 18 15C18.55 15 19 15.45 19 16V17H17Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FileTextIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterListOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10.83 8H21V6H8.83l2 2zm5 5H18v-2h-4.17l2 2zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41L14 16.83z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FilterOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.95 6l-3.57 4.55 1.43 1.43c1.03-1.31 4.98-6.37 4.98-6.37A.998.998 0 0019 4H6.83l2 2h8.12zM2.81 2.81L1.39 4.22 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.17l5.78 5.78 1.41-1.41L2.81 2.81z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FindInPageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 4h7l5 5v8.58l-1.84-1.84a4.992 4.992 0 00-.64-6.28A4.96 4.96 0 0012 8a5 5 0 00-4.612 3.077A4.98 4.98 0 008.47 16.51a4.982 4.982 0 006.28.63L17.6 20H6V4zm8.11 11.1c-.56.56-1.31.88-2.11.88-.8 0-1.55-.31-2.11-.88-.56-.56-.88-1.31-.88-2.11 0-.8.31-1.55.88-2.11.56-.57 1.31-.88 2.11-.88.8 0 1.55.31 2.11.88.56.56.88 1.31.88 2.11 0 .8-.31 1.55-.88 2.11z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FolderIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4c-1.094 0-2 .906-2 2v12c0 1.094.906 2 2 2h16c1.094 0 2-.906 2-2V8c0-1.094-.906-2-2-2h-8l-2-2H4zm0 2h5.172l2 2H20v10H4V6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function FolderAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function FolderShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M1 6C1 4.90575 1.90575 4 3 4H9L11 6H19C20.0943 6 21 6.90575 21 8V10H19V8H10.1719L8.17188 6H3V18H15V20H3C1.90575 20 1 19.0943 1 18V6Z\" />\n <path d=\"M22 15V14C22 12.9 21.1 12 20 12C18.9 12 18 12.9 18 14V15C17.45 15 17 15.45 17 16V19C17 19.55 17.45 20 18 20H22C22.55 20 23 19.55 23 19V16C23 15.45 22.55 15 22 15ZM19 15V14C19 13.45 19.45 13 20 13C20.55 13 21 13.45 21 14V15H19Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FullscreenExitIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function FullscreenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function GavelIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.112 15.528L3.302 9.86l1.393-1.43 5.81 5.669-1.393 1.429zM15.385 9.097L9.575 3.43 10.967 2l5.81 5.668-1.393 1.43zM21.606 21.44l-9.095-8.87 1.394-1.43L23 20.012l-1.394 1.429zM10.802 12.993L5.75 8.066l3.485-3.573 5.052 4.929-3.485 3.572zM3.998 18.686h8.984v1.996H3.998v-1.996z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 20.183h10.98v1.997H3v-1.997z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HelpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HelpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HomeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2.1L1 12h3v9h7v-6h2v6h7v-9h3L12 2.1zm0 2.691l6 5.4V19h-3v-6H9v6H6v-8.809l6-5.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassBottom(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m18 22-.01-6L14 12l3.99-4.01L18 2H6v6l4 4-4 3.99V22h12zM8 7.5V4h8v3.5l-4 4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassDisabled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 4h8v3.5l-2.84 2.84 1.25 1.25L18 8.01 17.99 8H18V2H6v1.17l2 2zM2.1 2.1.69 3.51l8.9 8.9L6 16l.01.01H6V22h12v-1.17l2.49 2.49 1.41-1.41L2.1 2.1zM16 20H8v-3.5l2.84-2.84L16 18.83V20z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassEmpty(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassFull(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function HourglassTop(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m6 2 .01 6L10 12l-3.99 4.01L6 22h12v-6l-4-4 4-3.99V2H6zm10 14.5V20H8v-3.5l4-4 4 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ImageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 5v14H5V5h14zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86L11 16l-2-2.86L6 17h12l-3.86-5.14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function InfoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 3v2h2V7h-2zm0 4v6h2v-6h-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function InstagramIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 7.193A4.8 4.8 0 007.193 12 4.8 4.8 0 0012 16.807 4.8 4.8 0 0016.807 12 4.8 4.8 0 0012 7.193zm0 7.931A3.13 3.13 0 018.876 12 3.13 3.13 0 0112 8.876 3.13 3.13 0 0115.124 12 3.13 3.13 0 0112 15.124zm5.004-9.248a1.121 1.121 0 100 2.245A1.12 1.12 0 0018.04 6.57a1.122 1.122 0 00-1.037-.693zM21.37 12c0-1.294.012-2.576-.06-3.867-.073-1.5-.415-2.831-1.512-3.928-1.1-1.1-2.428-1.44-3.928-1.512-1.294-.073-2.576-.061-3.868-.061-1.293 0-2.575-.012-3.867.061-1.5.073-2.831.415-3.928 1.512-1.1 1.099-1.439 2.428-1.512 3.928-.072 1.294-.06 2.576-.06 3.867s-.012 2.576.06 3.867c.073 1.5.415 2.831 1.512 3.928 1.1 1.1 2.428 1.44 3.928 1.512 1.294.073 2.576.061 3.867.061 1.294 0 2.576.012 3.867-.061 1.5-.073 2.832-.415 3.929-1.512 1.099-1.099 1.439-2.428 1.511-3.928.075-1.291.061-2.573.061-3.867zm-2.062 5.527A2.978 2.978 0 0118.6 18.6c-.33.33-.647.537-1.073.708-1.233.49-4.16.38-5.527.38-1.366 0-4.296.11-5.529-.378a2.98 2.98 0 01-1.073-.708 2.999 2.999 0 01-.708-1.073c-.488-1.235-.378-4.163-.378-5.529 0-1.366-.11-4.296.378-5.529.17-.426.377-.745.708-1.073A3.03 3.03 0 016.47 4.69c1.233-.488 4.163-.377 5.529-.377 1.366 0 4.296-.11 5.529.377.427.17.745.377 1.073.708.33.33.537.647.708 1.073.488 1.233.378 4.163.378 5.529 0 1.366.11 4.294-.38 5.527z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function JordskifterettIcon(props: SvgProps) {\n const { title, ...rest } = props;\n return (\n <SvgWrapper\n width=\"24\"\n height=\"24\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n {title && <title>{title}</title>}\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function KeyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 10h-8.35A5.99 5.99 0 007 6c-3.31 0-6 2.69-6 6s2.69 6 6 6a5.99 5.99 0 005.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LagmannsrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 10h15.65v3.913H4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function LanguageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 00-1.38-3.56A8.03 8.03 0 0118.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 015.08 16zm2.95-8H5.08a7.987 7.987 0 014.33-3.56A15.65 15.65 0 008.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 01-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkedInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.838A1.838 1.838 0 012.838 1H21.16A1.836 1.836 0 0123 2.838V21.16A1.838 1.838 0 0121.161 23H2.838A1.839 1.839 0 011 21.161V2.838zm8.708 6.55h2.979v1.496c.43-.86 1.53-1.634 3.183-1.634 3.169 0 3.92 1.713 3.92 4.856v5.822h-3.207v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.145 1.089-2.145 2.8v5.106H9.708V9.388zm-5.5 10.403h3.208V9.25H4.208V19.791zM7.875 5.812a2.063 2.063 0 11-4.125.09 2.063 2.063 0 014.125-.09z\"\n />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LinkOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.39 11L16 12.61V11h-1.61zM17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.27-.77 2.37-1.87 2.84l1.4 1.4A4.986 4.986 0 0022 12c0-2.76-2.24-5-5-5zM2 4.27l3.11 3.11A4.991 4.991 0 002 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4.01 1.41-1.41L3.41 2.86 2 4.27z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ListAltIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6v-2zM7 7h2v2H7V7zm0 4h2v2H7v-2zm0 4h2v2H7v-2zM20.1 3H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM19 19H5V5h14v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LocationIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C8.676 1 6 3.676 6 7v1c-.522 0-1.055.191-1.432.568C4.191 8.945 4 9.478 4 10v10c0 .522.191 1.055.568 1.432.377.377.91.568 1.432.568h12c.522 0 1.055-.191 1.432-.568.377-.377.568-.91.568-1.432V10c0-.522-.191-1.055-.568-1.432C19.055 8.191 18.522 8 18 8V7c0-3.324-2.676-6-6-6zm0 2c2.276 0 4 1.724 4 4v1H8V7c0-2.276 1.724-4 4-4zm-6 7h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LockOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 1C9.128 1 6.719 3.046 6.123 5.787l1.955.426C8.482 4.353 10.072 3 12 3c2.276 0 4 1.724 4 4v1H6c-1.093 0-2 .907-2 2v10c0 1.093.907 2 2 2h12c1.093 0 2-.907 2-2V10c0-1.093-.907-2-2-2V7c0-3.324-2.676-6-6-6zm-6 9h12v10H6V10zm6 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LoginIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LogoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 8l-1.41 1.41L17.17 11H9v2h8.17l-1.58 1.58L17 16l4-4-4-4zM5 5h7V3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h7v-2H5V5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MailIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MailOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zm-2 0v.01L12 13 4 8l8-4.68L19.99 8zM4 18v-7.66l8 5.02 7.99-4.99L20 18H4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MenuIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MinusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998H5v-2h14v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MinusCirledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function MoreHorizontalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 12a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function MoreVerticalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotarialIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotificationsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function NotificationsOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm0-15.5c2.49 0 4 2.02 4 4.5v.1l2 2V11c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.24.06-.47.15-.69.23l1.64 1.64c.18-.02.36-.05.55-.05zM5.41 3.35L4 4.76l2.81 2.81C6.29 8.57 6 9.74 6 11v5l-2 2v1h14.24l1.74 1.74 1.41-1.41L5.41 3.35zM16 17H8v-6c0-.68.12-1.32.34-1.9L16 16.76V17z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function OnlineMeetingIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zm-6-5.4l3 2.4V7l-3 2.4V7H7v6h7v-2.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function OpenExternalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils/propTypes';\nimport { SvgWrapper } from '../utils/SvgWrapper';\nexport function PayoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v4h5v12H6zm5-1h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4v-2h-2V9h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function PdfIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1v-2zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PersonIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9a2.1 2.1 0 110 4.199A2.1 2.1 0 0112 5.9zm0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1zM12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PersonAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9V6h-2v3h-3v2h3v3h2v-3h3V9h-3zM9 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm6.39 8.56C13.71 13.7 11.53 13 9 13s-4.71.7-6.39 1.56A2.97 2.97 0 001 17.22V20h16v-2.78c0-1.12-.61-2.15-1.61-2.66zM15 18H3v-.78c0-.38.2-.72.52-.88C4.71 15.73 6.63 15 9 15c2.37 0 4.29.73 5.48 1.34.32.16.52.5.52.88V18z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function PersonShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9C12.2758 5.9 12.5489 5.95432 12.8036 6.05985C13.0584 6.16539 13.2899 6.32007 13.4849 6.51508C13.6799 6.71008 13.8346 6.94158 13.9401 7.19636C14.0457 7.45115 14.1 7.72422 14.1 8C14.1 8.27578 14.0457 8.54885 13.9401 8.80364C13.8346 9.05842 13.6799 9.28992 13.4849 9.48492C13.2899 9.67993 13.0584 9.83461 12.8036 9.94015C12.5489 10.0457 12.2758 10.1 12 10.1C11.443 10.1 10.9089 9.87875 10.5151 9.48492C10.1212 9.0911 9.9 8.55695 9.9 8C9.9 7.44305 10.1212 6.9089 10.5151 6.51508C10.9089 6.12125 11.443 5.9 12 5.9ZM12 4C9.79 4 8 5.79 8 8C8 10.21 9.79 12 12 12C14.21 12 16 10.21 16 8C16 5.79 14.21 4 12 4Z\" />\n <path d=\"M5.9 18.1V17C5.9 16.36 9.03 14.9 12 14.9C12.3329 14.9 12.6677 14.9183 13 14.9518V13.0517C12.6402 13.0173 12.303 13 12 13C9.33 13 4 14.34 4 17V20H12V18.1H5.9Z\" />\n <path d=\"M19 15V14C19 12.9 18.1 12 17 12C15.9 12 15 12.9 15 14V15C14.45 15 14 15.45 14 16V19C14 19.55 14.45 20 15 20H19C19.55 20 20 19.55 20 19V16C20 15.45 19.55 15 19 15ZM16 15V14C16 13.45 16.45 13 17 13C17.55 13 18 13.45 18 14V15H16Z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PinIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4h4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PlusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998h-6v6h-2v-6H5v-2h6v-6h2v6h6v2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PlusCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm-1 3v4H7v2h4v4h2v-4h4v-2h-4V7h-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PrintIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\" />\n <path d=\"M18 12.5a1 1 0 100-2 1 1 0 000 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PropertyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 9.3V4h-3v2.6L12 3 2 12h3v8h6v-6h2v6h6v-8h3l-3-2.7zM17 18h-2v-6H9v6H7v-7.81l5-4.5 5 4.5V18z\" />\n <path d=\"M10 10h4c0-1.1-.9-2-2-2s-2 .9-2 2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function PublishIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 4h14v2H5V4zm0 10h4v6h6v-6h4l-7-7-7 7zm8-2v6h-2v-6H9.83L12 9.83 14.17 12H13z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function QuestionAnswerIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15 4v7H5.17l-.59.59-.58.58V4h11zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ReceiptIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6v-2zm0-4h12v2H6v-2zm0-4h12v2H6V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function RedoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16a8.002 8.002 0 017.6-5.5c1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function RefreshIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function ReplayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SearchIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 2C5.146 2 2 5.146 2 9s3.146 7 7 7a6.958 6.958 0 004.574-1.719l.426.426V16l6 6 2-2-6-6h-1.293l-.426-.426A6.958 6.958 0 0016 9c0-3.854-3.146-7-7-7zm0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5-5-2.227-5-5 2.227-5 5-5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SettingsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9.666 2l-.451 2.477.014-.006.128-.041c-.05.012-.093.033-.142.047-.918.26-1.639.741-2.256 1.255l-.033.03h-.002l-2.389-.758-2.297 3.982 1.873 1.762.008-.045.01-.045C3.99 11.21 4 11.7 4 12c0 .3-.001.796.12 1.396l-.013-.064-1.882 1.66 2.328 4.035 2.39-.869.02.02.082.054c.643.429 1.388.856 2.162 1.188l.004.002L9.658 22h4.676l.451-2.477-.014.006-.128.041c.05-.012.093-.033.142-.047.918-.26 1.639-.741 2.256-1.255l.033-.03h.002l2.4.764 2.29-4.12-1.873-1.652-.012.067-.01.045C20.01 12.79 20 12.3 20 12c0-.3.01-.79-.129-1.342l.006.026 1.898-1.676-2.328-4.035-2.39.869-.02-.02-.082-.054a13.73 13.73 0 00-2.162-1.188l-.004-.002L14.342 2H9.666zm1.668 2h1.324l.352 2.021 1.02.407-.024-.008c.605.26 1.234.62 1.78.978l.757.76 2.01-.732.672 1.166-1.502 1.326.197 1.186.01.039c.062.247.07.557.07.857 0 .3-.008.61-.07.857l-.006.024-.217 1.088 1.527 1.35-.71 1.28-2-.636-.778.777c-.543.451-.983.738-1.588.889l-.066.017-1.076.43-.35 1.924h-1.324l-.352-2.021-1.02-.407.024.008c-.605-.26-1.234-.62-1.78-.978l-.757-.76-2.01.732-.672-1.166 1.518-1.34-.213-1.064C6 12.604 6 12.3 6 12c0-.3.008-.61.07-.857l.006-.024.213-1.066-1.527-1.44.703-1.217 2.012.641.777-.777c.543-.451.983-.738 1.588-.889l.066-.017 1.076-.43.35-1.924zM12 8c-1.25 0-2.315.505-2.998 1.273C8.319 10.043 8 11.028 8 12s.319 1.958 1.002 2.727C9.685 15.495 10.75 16 12 16c1.25 0 2.315-.505 2.998-1.273C15.681 13.957 16 12.972 16 12s-.319-1.958-1.002-2.727C14.315 8.505 13.25 8 12 8zm0 2c.75 0 1.185.245 1.502.602.317.356.498.87.498 1.398 0 .528-.181 1.042-.498 1.398-.317.357-.752.602-1.502.602s-1.185-.245-1.502-.602C10.181 13.042 10 12.528 10 12c0-.528.181-1.042.498-1.398.317-.357.752-.602 1.502-.602z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SmsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zM7 9h2v2H7V9zm8 0h2v2h-2V9zm-4 0h2v2h-2V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function StarHalfFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function SyncIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 0L8 4l4 4V5c3.859 0 7 3.14 7 7 0 .88-.17 1.72-.469 2.496l1.516 1.514A8.931 8.931 0 0021 12c0-4.962-4.037-9-9-9V0zM3.953 7.99A8.931 8.931 0 003 12c0 4.962 4.037 9 9 9v3l4-4-4-4v3c-3.859 0-7-3.14-7-7 0-.88.17-1.72.469-2.496L3.953 7.99z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function Thumbdown(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m10.89 18.28.57-2.89c.12-.59-.04-1.2-.42-1.66-.38-.46-.94-.73-1.54-.73H4v-1.08L6.57 6h8.09c.18 0 .34.16.34.34v7.84l-4.11 4.1M10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22zm10-7h2V4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ThumbdownFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2V4zM2.17 11.12c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function Thumbup(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m13.11 5.72-.57 2.89c-.12.59.04 1.2.42 1.66.38.46.94.73 1.54.73H20v1.08L17.43 18H9.34c-.18 0-.34-.16-.34-.34V9.82l4.11-4.1M14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.83C7 18.95 8.05 20 9.34 20h8.1c.71 0 1.36-.37 1.72-.97l2.67-6.15c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2zM4 9H2v11h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ThumbupFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TimeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TingrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 16.615c4.418 0 8-3.857 8-8.615H4c0 4.758 3.582 8.615 8 8.615z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TipIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TrashIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 9v10H8V9h8zm-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function TwitterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M23.643 4.937c-.835.37-1.732.62-2.675.733a4.67 4.67 0 002.048-2.578 9.3 9.3 0 01-2.958 1.13 4.66 4.66 0 00-7.938 4.25 13.229 13.229 0 01-9.602-4.868 4.66 4.66 0 001.442 6.22 4.647 4.647 0 01-2.11-.583v.06a4.66 4.66 0 003.737 4.568 4.692 4.692 0 01-2.104.08 4.661 4.661 0 004.352 3.234 9.348 9.348 0 01-5.786 1.995 9.5 9.5 0 01-1.112-.065 13.175 13.175 0 007.14 2.093c8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602a9.47 9.47 0 002.323-2.41l.002-.003z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UndoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UnfoldLessIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UnfoldMoreIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.59 18.17L8.42 15l-1.41 1.41L11.59 21l4.59-4.59L14.76 15l-3.17 3.17zm0-12.34L14.76 9l1.41-1.41L11.59 3 7 7.59 8.42 9l3.17-3.17z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function UploadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4v6zm2-2V8H9.828L12 5.828 14.172 8H13v6h-2zm-6 4h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function VisibilityOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5 9.648 9.648 0 01-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.04 7.841 1.766 9.55 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02a2.5 2.5 0 01-2.5-2.5c0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75a4.6 4.6 0 00-.36 1.78 4.507 4.507 0 006.27 4.14l.98.98c-.88.24-1.8.38-2.75.38a9.77 9.77 0 01-8.82-5.5c.7-1.43 1.72-2.61 2.93-3.53z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function VisibilityOnIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5A9.77 9.77 0 0112 17a9.77 9.77 0 01-8.82-5.5A9.77 9.77 0 0112 6zm0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function WarningIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" />\n <path d=\"M12 17a1 1 0 100-2 1 1 0 000 2zM11 7h2v7h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ZoomInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function ZoomOutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function BarChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function BarChartBoxedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7v-7zm4-3h2v10h-2V7zm4 6h2v4h-2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\n\nexport function LineChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99l1.5 1.5z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgProps } from '../utils';\nimport { SvgWrapper } from '../utils/SvgWrapper';\n\nexport function TrendingDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { SvgWrapper } from '../utils/SvgWrapper';\nimport { SvgProps } from '../utils/propTypes';\nexport function LibraryAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3v3z\" />\n </SvgWrapper>\n );\n}\n","import { InputMessage } from '../components/InputMessage';\n\nexport const renderInputMessage = (\n tip?: string,\n tipId?: string,\n errorMessage?: string,\n errorMessageId?: string,\n) => (\n <>\n {errorMessage && errorMessageId && (\n <InputMessage\n message={errorMessage}\n messageType=\"error\"\n id={errorMessageId}\n />\n )}\n {tip && tipId && !errorMessage && (\n <InputMessage message={tip} messageType=\"tip\" id={tipId} />\n )}\n </>\n);\n","export function escapeRegexCharacters(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function searchFilter(text: string, query: string): boolean {\n // Søkeordet er enten først i teksten, eller så har det mellomrom, bindestrek eller start-parentes før seg.\n const searchFilterRegex = new RegExp(\n `(?:^|[\\\\s-(])${escapeRegexCharacters(query.toLowerCase())}`,\n );\n return searchFilterRegex.test(text.toLowerCase());\n}\n","export const calculateHeightWithLineHeight = (\n lineHeight: number,\n fontSize: number,\n) => {\n return lineHeight * 0.01 * fontSize;\n};\n\nexport const firstLetterToUpperCase = (text: string) =>\n text.charAt(0).toUpperCase() + text.slice(1);\n","import { ElementType, forwardRef } from 'react';\nimport {\n TypographyHeadingType,\n BaseTypographyProps,\n Typography,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nconst getHeadingElement = (level: HeadingLevel): ElementType => `h${level}`;\n\nconst getDefaultTypographyType = (h: ElementType): TypographyHeadingType => {\n switch (h) {\n case 'h1':\n return 'headingSans06';\n case 'h2':\n return 'headingSans05';\n case 'h3':\n return 'headingSans04';\n case 'h4':\n return 'headingSans03';\n case 'h5':\n return 'headingSans02';\n case 'h6':\n return 'headingSans01';\n default:\n return 'headingSans06';\n }\n};\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps = BaseComponentPropsWithChildren<\n HTMLHeadingElement,\n {\n /**Nivå på overskriften. Komponenten returnerer HTML heading element med dette nivået med default styling. */\n level: HeadingLevel;\n /**Spesifiserer typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n } & BaseTypographyProps\n>;\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n level,\n ...rest\n } = props;\n\n const headingElement: ElementType = getHeadingElement(level);\n\n const headingProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType: typographyType\n ? typographyType\n : getDefaultTypographyType(headingElement),\n as: headingElement,\n ref,\n };\n\n return <Typography {...headingProps}>{children}</Typography>;\n },\n);\n\nHeading.displayName = 'Heading';\n","import { forwardRef, LabelHTMLAttributes } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker } from '../../helpers';\n\ntype PickedHTMLAttributes = Pick<\n LabelHTMLAttributes<HTMLLabelElement>,\n 'htmlFor'\n>;\n\ninterface BaseLabelProps {\n /** Spesifiserer om input etiketten er knyttet til er påkrevd; påvirker styling. */\n showRequiredStyling?: boolean;\n}\n\nexport type LabelProps = BaseComponentPropsWithChildren<\n HTMLLabelElement,\n BaseLabelProps & BaseTypographyProps & PickedHTMLAttributes,\n Omit<LabelHTMLAttributes<HTMLLabelElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { showRequiredStyling, id, className, htmlProps, children, ...rest } =\n props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n typographyType=\"supportingStyleLabel01\"\n >\n {children} {showRequiredStyling && <RequiredMarker />}\n </Typography>\n );\n});\n\nLabel.displayName = 'Label';\n","import { forwardRef } from 'react';\nimport { BaseTypographyProps, Typography } from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type LegendProps = BaseComponentPropsWithChildren<\n HTMLLegendElement,\n BaseTypographyProps\n>;\n\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n (props, ref) => {\n const { id, className, htmlProps, children, ...rest } = props;\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n as=\"legend\"\n typographyType=\"headingSans03\"\n >\n {children}\n </Typography>\n );\n },\n);\n\nLegend.displayName = 'Legend';\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled from 'styled-components';\nimport {\n TypographyBodyType,\n getAnchorStyling,\n BaseTypographyProps,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\ninterface StyledLinkProps {\n $typographyType?: TypographyBodyType;\n $withMargins?: boolean;\n $external?: boolean;\n}\n\nconst StyledLink = styled.a<StyledLinkProps>`\n ${({ $external, $typographyType, $withMargins }) =>\n getAnchorStyling($external, undefined, $typographyType, $withMargins)}\n`;\n\ntype PickedHTMLAttributes = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n 'onClick' | 'href' | 'target'\n>;\n\nexport type LinkProps = BaseComponentPropsWithChildren<\n HTMLAnchorElement,\n {\n /**Spesifiserer om lenken fører til et eksternt nettsted eller åpnes i nytt vindu. Påvirker styling og setter `target` prop. */\n external?: boolean;\n /**Spesifiserer typografistil basert på utvalget for brødtekst. */\n typographyType?: TypographyBodyType;\n } & BaseTypographyProps &\n PickedHTMLAttributes,\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType,\n external,\n target,\n ...rest\n } = props;\n\n return (\n <StyledLink\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...rest}\n $typographyType={typographyType}\n $external={external}\n ref={ref}\n rel=\"noopener noreferer\"\n target={external ? '_blank' : target}\n >\n {children}\n </StyledLink>\n );\n});\n\nLink.displayName = 'Link';\n","import { forwardRef } from 'react';\nimport {\n TypographyBodyType,\n TypographyLeadType,\n BaseTypographyProps,\n Typography,\n} from '../Typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\n\nexport type ParagraphProps = BaseComponentPropsWithChildren<\n HTMLParagraphElement,\n {\n /**Spesifiserer typografistil basert på utvalget for brødtekst og ingress. */\n typographyType?: TypographyBodyType | TypographyLeadType;\n } & BaseTypographyProps\n>;\n\nexport const Paragraph = forwardRef<HTMLParagraphElement, ParagraphProps>(\n (props, ref) => {\n const {\n id,\n className,\n htmlProps,\n children,\n typographyType = 'bodySans02',\n ...rest\n } = props;\n\n const paragraphProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n typographyType,\n ref,\n };\n\n return <Typography {...paragraphProps}>{children}</Typography>;\n },\n);\n\nParagraph.displayName = 'Paragraph';\n","export function getDefaultText(\n value?: string | number | readonly string[],\n defaultValue?: string | number | readonly string[],\n): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof defaultValue === 'string') {\n return defaultValue;\n }\n\n return '';\n}\n","import styled, { css } from 'styled-components';\nimport { selection } from '../styling';\nimport { paperTokens as tokens } from './Paper.tokens';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { outerShadow, border } = ddsBaseTokens;\n\ntype Elevation = 1 | 2 | 3 | 4;\n\nconst getElevation = (elevation: Elevation) => {\n switch (elevation) {\n case 1:\n return outerShadow.DdsShadow1Onlight;\n case 2:\n return outerShadow.DdsShadow2Onlight;\n case 3:\n return outerShadow.DdsShadow3Onlight;\n case 4:\n return outerShadow.DdsShadow4Onlight;\n }\n};\n\ntype Border = 'light' | 'dark';\n\nconst getBorder = (borderStyle: Border) => {\n switch (borderStyle) {\n case 'light':\n return `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`;\n case 'dark':\n return `${border.BordersDdsBorderStyleDarkStrokeWeight} solid ${border.BordersDdsBorderStyleDarkStroke}`;\n }\n};\n\nexport interface PaperProps {\n elevation?: Elevation;\n border?: Border;\n}\n\nexport const Paper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'elevation' && prop !== 'border',\n})<PaperProps>`\n box-sizing: border-box;\n margin: 0;\n background-color: ${tokens.paper.backgroundColor};\n font-family: ${tokens.paper.fontFamily};\n border-radius: ${tokens.paper.borderRadius};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ elevation }) =>\n elevation &&\n css`\n box-shadow: ${getElevation(elevation)};\n `}\n border: ${({ border }) => (border ? getBorder(border) : 'none')}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, borderRadius, font } = ddsBaseTokens;\n\nconst paper = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n fontFamily: font.DdsFontBodySans01FontFamily,\n};\n\nexport const paperTokens = {\n paper,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens as tokens } from '@norges-domstoler/dds-design-tokens';\n\nconst MarkerWrapper = styled.span`\n color: ${tokens.colors.DdsColorDangerBase};\n`;\n\nexport const RequiredMarker = () => <MarkerWrapper>*</MarkerWrapper>;\n","import type { MutableRefObject, RefCallback } from 'react';\nimport { useCallback } from 'react';\n\n/**\n * Kombinerer refs for et element.\n * Eksempel på bruk:\n * ```\n * const MyComponent = forwardRef<HTMLDivElement, Props>((props, ref) => {\n *\n * const itemRef = useRef<HTMLDivElement>(null);\n * const combinedRef = useCombinedRef(ref, itemRef);\n *\n * return <div ref={combinedRef}>innhold</div>\n * });\n * ```\n * @param refs array med refs.\n * @template T elementet som refereres til.\n * @returns callback med kombinerte refs.\n *\n * {@link useCombinedRef}\n */\n\nexport function useCombinedRef<T>(...refs: React.Ref<T>[]): RefCallback<T> {\n return useCallback((element: T) => {\n refs.forEach(ref => {\n if (typeof ref === 'function') ref(element);\n else if (ref && typeof ref === 'object')\n (ref as MutableRefObject<T>).current = element;\n });\n }, refs);\n}\n","import {\n arrow,\n autoUpdate,\n Coords,\n flip,\n offset as floatingOffset,\n shift,\n Strategy,\n useFloating,\n} from '@floating-ui/react-dom';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst defaultOffset = ddsBaseTokens.spacing.SizesDdsSpacingLocalX05NumberPx;\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\ninterface UseFloatPositionOptions {\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n * This is optimized for performance but can still be costly.\n * @default true\n */\n animationFrame?: boolean;\n /**\n * `offset` is used to displace the floating element from its core placement.\n * The value passed is logical, meaning its effect on the\n * physical result is dependent on the writing direction (e.g. RTL).\n * @default 8\n */\n offset?: number;\n /**\n * Where to place the floating element relative to its reference element.\n * @default 'bottom'\n */\n placement?: Placement;\n}\n\nexport const useFloatPosition = (\n arrowRef: HTMLElement | null,\n options: UseFloatPositionOptions = {},\n) => {\n const {\n animationFrame = true,\n offset = defaultOffset,\n placement = 'bottom',\n } = options;\n\n const middleware = [\n floatingOffset(offset),\n flip(),\n shift(),\n\n // Only add arrow(...) if arrowRef is set\n ...(arrowRef ? [arrow({ element: arrowRef })] : []),\n ];\n\n const {\n x,\n y,\n strategy,\n middlewareData,\n placement: actualPlacement,\n refs,\n } = useFloating({\n placement,\n middleware,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, { animationFrame }),\n });\n\n return {\n refs,\n styles: {\n floating: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n arrow: middlewareData.arrow\n ? getArrowStyling(strategy, actualPlacement, middlewareData.arrow)\n : undefined,\n },\n };\n};\n\ntype Arrow = Partial<Coords> & { centerOffset: number };\n\nfunction getArrowStyling(\n strategy: Strategy,\n placement: Placement,\n arrow: Arrow,\n) {\n const arrowPlacement = placementToArrowPlacement(placement);\n\n const arrowPlacementOffset = {\n top: '-15px',\n bottom: '-15px',\n right: '-21px',\n left: '-21px',\n }[arrowPlacement];\n\n const rotateArrow = {\n top: 'rotate(180deg)',\n right: 'rotate(-90deg)',\n bottom: '',\n left: 'rotate(90deg)',\n }[arrowPlacement];\n\n return {\n position: strategy,\n top: arrow?.y ?? '',\n left: arrow?.x ?? '',\n [arrowPlacement]: arrowPlacementOffset,\n transform: rotateArrow,\n };\n}\n\nfunction placementToArrowPlacement(placement: Placement) {\n switch (placement) {\n case 'top':\n case 'top-start':\n case 'top-end':\n return 'bottom';\n\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n return 'top';\n\n case 'left':\n case 'left-start':\n case 'left-end':\n return 'right';\n\n case 'right':\n case 'right-start':\n case 'right-end':\n return 'left';\n }\n}\n","import { RefObject, useEffect, useRef } from 'react';\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Fanger fokus i en loop inni et element. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const componentRef = useFocusTrap<HTMLDivElement>(props.isOpen);\n *\n * return props.isOpen ? <div ref={componentRef}><button>click</button></div> : null;\n *\n * }\n * ```\n * @param active om focus skal fanges, f.eks. når en modal åpnes.\n * @param initialFocusRef Ref som skal motta focus når focus trap er aktiv.\n * @returns ref til elementet som fanger fokus.\n */\n\nexport function useFocusTrap<T extends HTMLElement>(\n active: boolean,\n initialFocusRef: RefObject<HTMLElement> | undefined = undefined,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current) return;\n\n const focusableElements = getFocusableElements(elementRef);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n\n const element = elementRef.current;\n\n if (element && active) {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import { useRef, useEffect, useCallback } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Tillater effekter og animasjoner å bli gjennomført like etter et element blir lagt til eller like før det blir fjernet fra DOM.\n * Typisk bruk:\n * ```\n * // CSS\n * .component {\n * transition: opacity 0.2s;\n * opacity: 0;\n * }\n *\n * .transitionedIn.mounted {\n * opacity: 1;\n * }\n *\n * const MyComponent = (props) => {\n *\n * const hasTransitionedIn = useMountTransition(props.isMounted, 500);\n *\n * return props.isMounted || hasTransitionedIn ? (\n * <div\n * className={`component ${hasTransitionedIn && 'transitionedIn'} ${props.isMounted && 'mounted'}`}\n * >\n * innhold\n * </div>)\n * : null;\n *\n * }\n * ```\n * @param isMounted om elementet er mounted.\n * @param unmountDelay hvor lenge transition skal vare før unmount.\n * @returns om transition er ferdig.\n */\n\nexport const useMountTransition = (\n isMounted: boolean,\n unmountDelay: number,\n) => {\n const [hasTransitionedIn, setHasTransitionedIn] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n if (isMounted && !hasTransitionedIn) setHasTransitionedIn(true);\n else if (!isMounted && hasTransitionedIn) {\n timeoutId = setTimeout(() => setHasTransitionedIn(false), unmountDelay);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [unmountDelay, isMounted, hasTransitionedIn]);\n return hasTransitionedIn;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når brukeren klikker utenfor et element, f.eks at elementet fjernes fra DOM.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnClickOutside(ref, () => setOpen(false));\n *\n * return <div ref={ref}>innhold</div>\n * ```\n * @param element HTML elementet man klikker utenfor.\n * @param handler funksjonen som kjøres ved klikk utenfor.\n */\n\nexport function useOnClickOutside(\n element: HTMLElement | null | (HTMLElement | null)[],\n handler: (event: MouseEvent | TouchEvent) => void,\n) {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const elements = Array.isArray(element) ? element : [element];\n\n const hasClickedInside = elements.some(\n el => el?.contains(event.target as HTMLElement),\n );\n\n // ClearIndicator in react-select removes itself from DOM before this handler goes off.\n // Therefore a click on it will always be counted as a click outside, for everything.\n // This is not a great solution, but it is a fair assumption that this will do more good than harm.\n const clickedOnSomethingInDocument = document.contains(\n event.target as Node,\n );\n if (hasClickedInside || !clickedOnSomethingInDocument) return;\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [element, handler]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når en spesifisert tast blir trykt ned.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnKeyDown(['Escape', 'Esc'], () => setOpen(false));\n *\n * return isOpen ? <div>innhold</div> : null;\n * ```\n * @param key tasten som trykkes.\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useOnKeyDown = (\n key: string | string[],\n handler: (event: KeyboardEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n const keys = Array.isArray(key) ? key : [key];\n if (keys.indexOf(event.key) !== -1) {\n handler(event);\n }\n };\n\n document.addEventListener('keydown', listener, true);\n\n return () => {\n document.removeEventListener('keydown', listener, true);\n };\n }, [handler]);\n};\n","import { RefObject, useEffect, useRef } from 'react';\nimport { getFocusableElements } from '../../../components/src/utils';\n\n/**\n * Returnerer fokus til et element når første eller siste barn i en container mister fokus ved tastaturnavigasjon. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const [isOpen, setOpen] = useState(true);\n * const close = () => setOpen(false);\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const containerRef = useReturnFocusOnBlur<HTMLDivElement>(\n * isOpen,\n * triggerRef.current,\n * () => close()\n * );\n *\n * return (\n * <div>\n * <button ref={triggerRef} >Åpne popover</button>\n * <div ref={containerRef}>\n * <button>gjør noe</button>\n * </div>\n * </div>\n * )\n * }\n * ```\n * @param active om container skal få fokus, f.eks. når en modal åpnes.\n * @param triggerElement elementet som skal få fokus når fokus forlater container.\n * @param onBlur ekstra logikk når fokus forlater container.\n * @returns ref til container som får fokus.\n */\n\nexport function useReturnFocusOnBlur<T extends HTMLElement>(\n active: boolean,\n onBlur: () => void,\n triggerElement?: HTMLElement | null,\n): RefObject<T> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current || !triggerElement)\n return;\n\n const focusableElements = getFocusableElements(elementRef);\n const lastElement = focusableElements[focusableElements.length - 1];\n const firstElement = focusableElements[0];\n\n if (\n (!e.shiftKey && document.activeElement === lastElement) ||\n (e.shiftKey && document.activeElement === firstElement) ||\n (e.shiftKey && document.activeElement === element)\n ) {\n triggerElement.focus();\n e.preventDefault();\n onBlur();\n }\n }\n\n const element = elementRef.current;\n if (element && active) {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import {\n useCallback,\n useState,\n useEffect,\n Dispatch,\n SetStateAction,\n KeyboardEvent,\n} from 'react';\nimport { Direction } from '../types';\n\nexport const isKeyboardEvent = (\n e: Event | KeyboardEvent<Element>,\n): e is KeyboardEvent<Element> =>\n (e as KeyboardEvent<Element>).key !== undefined;\n\n/**\n * Bytter fokus mellom elementer i en gruppe med piltaster og ikke Tab, og looper fokus i gruppen. Typisk bruk:\n * ```\n * import elements from './elements';\n * import RoveItem from './RoveItem';\n *\n * const MyComponent = () => {\n * const [focus, setFocus] = useRoveFocus(elements.length);\n *\n * return (\n * <ul>\n * {elements.map((element, index) => (\n * <li key={element}>\n * <RoveItem index={index} focus={focus === index} setFocus={setFocus}>{element.name}</RoveItem>\n * </li>\n * ))}\n * </ul>)\n * }\n * ```\n * @param size antall elementer i gruppen.\n * @param reset om fokus i gruppen skal nullstilles; når man tabber seg inn i gruppen skal focus være nullstilt.\n * @param direction retning elementene blas i.\n * @returns hook par: indeksen til fokuserte elemenentet og funksjonen som håndterer fokus.\n */\n\nexport function useRoveFocus(\n size?: number,\n reset?: boolean,\n direction: Direction = 'column',\n): [number, Dispatch<SetStateAction<number>>] {\n const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n\n const nextKey = direction === 'row' ? 'ArrowRight' : 'ArrowDown';\n const previousKey = direction === 'row' ? 'ArrowLeft' : 'ArrowUp';\n\n const handleKeyDown = useCallback(\n (e: Event) => {\n if (!size || !isKeyboardEvent(e)) return;\n if (reset) setCurrentFocusIndex(-1);\n if (e.key === nextKey) {\n // Down arrow\n e.preventDefault();\n setCurrentFocusIndex(\n currentFocusIndex === size - 1 ? 0 : currentFocusIndex + 1,\n );\n } else if (e.key === previousKey) {\n // Up arrow\n e.preventDefault();\n if (currentFocusIndex !== -1) {\n setCurrentFocusIndex(\n currentFocusIndex === 0 ? size - 1 : currentFocusIndex - 1,\n );\n } else setCurrentFocusIndex(size - 1);\n }\n },\n [size, currentFocusIndex, setCurrentFocusIndex, reset],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown, false);\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [handleKeyDown]);\n\n return [currentFocusIndex, setCurrentFocusIndex];\n}\n","import { useEffect, useState } from 'react';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { breakpoints } = ddsBaseTokens;\n\nexport enum ScreenSize {\n XSmall = 0,\n Small,\n Medium,\n Large,\n XLarge,\n}\n\nconst screenSizesAndMediaQueries: [ScreenSize, string][] = [\n [\n ScreenSize.XLarge,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXl})`,\n ],\n [\n ScreenSize.Large,\n `only screen and (min-width: ${breakpoints.DdsBreakpointLg})`,\n ],\n [\n ScreenSize.Medium,\n `only screen and (min-width: ${breakpoints.DdsBreakpointMd})`,\n ],\n [\n ScreenSize.Small,\n `only screen and (min-width: ${breakpoints.DdsBreakpointSm})`,\n ],\n [\n ScreenSize.XSmall,\n `only screen and (min-width: ${breakpoints.DdsBreakpointXs})`,\n ],\n];\n\n/**\n * Sjekker skjermstørrelsen basert på brekkpunkter definerte i designsystemet. Eksempel på bruk:\n * ```\n * const MyComponent = () => {\n * const screenSize = useScreenSize();\n * const isSmallScreen = screenSize === ScreenSize.Small;\n *\n * return <div className={isSmallScreen && 'smallDiv'} >innhold</div>\n * }\n * ```\n * @returns den aktuelle skjermstørrelsen basert på {@link ScreenSize}.\n */\n\nexport const useScreenSize = function () {\n const [screenSize, setScreenSize] = useState(ScreenSize.Large);\n\n useEffect(() => {\n function listener() {\n for (const [screenSize, mediaQuery] of screenSizesAndMediaQueries) {\n if (window.matchMedia(mediaQuery).matches) {\n setScreenSize(screenSize);\n return;\n }\n }\n }\n listener();\n\n window.addEventListener('resize', listener);\n return () => window.removeEventListener('resize', listener);\n }, []);\n\n return screenSize;\n};\n","import { StandardProperties } from 'csstype';\nimport { ScreenSize } from '../../../hooks';\n\nexport type ScreenSizeLiteral = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport const getLiteralScreenSize = (\n screenSize: ScreenSize,\n): ScreenSizeLiteral => {\n switch (screenSize) {\n case ScreenSize.XLarge:\n return 'xl';\n case ScreenSize.Large:\n return 'lg';\n case ScreenSize.Medium:\n return 'md';\n case ScreenSize.Small:\n return 'sm';\n case ScreenSize.XSmall:\n return 'xs';\n }\n};\n\nexport type BreakpointBasedProps<T extends keyof StandardProperties> = {\n [k in ScreenSizeLiteral]?: StandardProperties[T];\n};\n","import { PropsWithChildren, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { Navigation } from './Navigation/Navigation';\nimport { User } from './Navigation/TopBar';\nimport { OverflowMenuProps } from '../OverflowMenu';\nimport {\n Environment,\n EnvironmentBanner,\n ENVIRONMENT_BANNER_HEIGHT,\n} from '@norges-domstoler/development-utils';\nimport { AppShellContextProvider } from './AppShellContext';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n}: 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 />\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.SizesDdsSpacingLocalX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX025,\n height: `calc(${spacing.SizesDdsSpacingLayoutX3} + 2 * ${spacing.SizesDdsSpacingLocalX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingLocalX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingLocalX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingLocalX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import { Children, ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { Divider } from '../../Divider';\nimport { NavigationItem } from './NavigationItem';\nimport { TopBar, User } from './TopBar';\nimport { NavigationLogo } from './NavigationLogo';\nimport { OverflowMenuProps } from '../../OverflowMenu';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\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 />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>Lovisa</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nexport type DividerColor = 'primary' | 'primaryLighter';\n\nconst StyledDivider = styled.hr<DividerProps>`\n border: 0;\n background-color: transparent;\n border-top: ${tokens.borderTop};\n margin-top: ${tokens.marginTop};\n margin-bottom: ${tokens.marginBottom};\n ${({ color }) =>\n color &&\n css`\n border-color: ${tokens.color[color].borderColor};\n `}\n`;\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje. */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { color = 'primary', id, className, htmlProps, ...rest } = props;\n\n const lineProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n color,\n };\n\n return <StyledDivider ref={ref} {...lineProps} />;\n});\n\nDivider.displayName = 'Divider';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing } = ddsBaseTokens;\n\nconst divider = {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n marginTop: spacing.SizesDdsSpacingLocalX1,\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import styled from 'styled-components';\nimport { type MouseEventHandler } from 'react';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\nimport { type As, type PropsOf } from '../../../types';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon, ChevronRightIcon } from '../../Icon/icons';\nimport { SvgIcon } from '../../Icon/utils';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst navItemTokens = navTokens.navigationItems.item;\n\nconst IconContainer = styled.div`\n grid-area: icon;\n display: flex;\n align-items: center;\n`;\n\nconst TextContainer = styled.span`\n grid-area: text;\n`;\n\nconst ChevronContainer = styled.div`\n display: flex;\n align-items: center;\n opacity: 0;\n grid-area: chevron;\n`;\n\nconst BaseLink = styled.a`\n padding: ${navItemTokens.padding};\n gap: ${navItemTokens.gap};\n border-radius: ${navItemTokens.borderRadius};\n\n text-decoration: none;\n color: ${navItemTokens.color};\n font-size: ${navItemTokens.fontSize};\n font-style: ${navItemTokens.fontStyle};\n font-family: ${navItemTokens.fontFamily};\n font-weight: ${navItemTokens.fontWeight};\n line-height: ${navItemTokens.lineHeight};\n letter-spacing: ${navItemTokens.letterSpacing};\n\n :hover:not(.active) {\n background-color: ${navItemTokens.hover.backgroundColor};\n }\n\n &.active {\n color: ${navItemTokens.active.color};\n background-color: ${navItemTokens.active.backgroundColor};\n }\n`;\n\nconst InternalNavItem = styled(BaseLink)`\n display: grid;\n align-items: center;\n grid-template-areas: 'icon text chevron';\n grid-template-columns: min-content 1fr min-content;\n\n &.active ${ChevronContainer} {\n opacity: 1;\n }\n`;\n\nconst ExternalNavItem = styled(BaseLink)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n font-size: ${navItemTokens.external.fontSize};\n font-style: ${navItemTokens.external.fontStyle};\n font-family: ${navItemTokens.external.fontFamily};\n font-weight: ${navItemTokens.external.fontWeight};\n line-height: ${navItemTokens.external.lineHeight};\n letter-spacing: ${navItemTokens.external.letterSpacing};\n`;\n\ntype BaseNavigationItemProps = (\n | {\n icon: SvgIcon;\n active?: boolean;\n external?: undefined | false;\n }\n | { external: true; active?: undefined | false; icon?: undefined }\n) & { onClick?: MouseEventHandler };\n\ntype NavigationItemProps<T extends As = 'a'> = PropsOf<T> &\n BaseNavigationItemProps;\n\nexport const NavigationItem = <T extends As = 'a'>({\n as: _as,\n active,\n icon,\n external,\n children,\n onClick: propOnClick,\n ...rest\n}: NavigationItemProps<T>) => {\n const { setOpen } = useAppShellContext();\n const Comp = _as ?? 'a';\n\n const onClick: MouseEventHandler = e => {\n propOnClick?.(e);\n setOpen(false);\n };\n if (external) {\n return (\n <ExternalNavItem as={Comp} {...rest} onClick={onClick}>\n {children}\n <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />\n </ExternalNavItem>\n );\n }\n\n return (\n <InternalNavItem\n as={Comp}\n {...rest}\n onClick={onClick}\n className={[active ? 'active' : '', rest.className].join(' ')}\n >\n <IconContainer>{icon && <Icon icon={icon} />}</IconContainer>\n <TextContainer>{children}</TextContainer>\n <ChevronContainer>\n <Icon icon={ChevronRightIcon} />\n </ChevronContainer>\n </InternalNavItem>\n );\n};\n\nNavigationItem.displayName = 'AppShell.NavItem';\n","import {\n type ReactNode,\n type SetStateAction,\n type Dispatch,\n createContext,\n useState,\n useContext,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => {},\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import styled from 'styled-components';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\n\nimport { EmbeteIcon, EmbeteType } from './EmbeteIcon';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuProps,\n} from '../../OverflowMenu';\nimport { CloseIcon, MenuIcon } from '../../Icon/icons';\nimport { SvgProps } from '../../Icon/utils';\n\nconst { navigation: navTokens, floatingActionButtons } = appShellTokens;\n\nconst LogoBurgerGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst ActionButtonGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst IconButton = styled(Button).attrs({\n appearance: 'borderless',\n purpose: 'secondary',\n})`\n color: ${navTokens.topBar.buttonTextColor};\n > :first-child {\n font-size: 1.65rem;\n }\n @media (max-width: ${navTokens.mobile.breakpoint}) {\n border: 0;\n box-shadow: none;\n padding: 12px;\n &:hover,\n &:active {\n color: ${navTokens.topBar.buttonTextColor};\n text-decoration-color: ${navTokens.topBar.buttonTextColor};\n box-shadow: none;\n }\n gap: 0;\n }\n`;\n\nconst IconButtonText = styled.span`\n display: none; // Ikke vis tekst på mobil\n width: 0;\n`;\n\nconst Bar = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${navTokens.topBar.gap};\n width: 100vw;\n height: ${navTokens.topBar.height};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n z-index: 101;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : '0'};\n left: 0;\n right: 0;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n justify-content: flex-end;\n background-color: transparent;\n margin-left: ${navTokens.width};\n width: calc(100vw - ${navTokens.width});\n\n pointer-events: none;\n & > * {\n pointer-events: initial;\n }\n\n ${LogoBurgerGroup} {\n display: none;\n }\n\n ${ActionButtonGroup} {\n padding-right: calc(2 * ${navTokens.topBar.gap});\n gap: ${floatingActionButtons.gap};\n }\n\n ${IconButton} {\n background-color: ${floatingActionButtons.backgroundColor};\n color: ${floatingActionButtons.textColor};\n box-shadow: 8px 16px 32px 0px rgba(0, 0, 0, 0.1);\n border-radius: ${floatingActionButtons.borderRadius};\n\n ${IconButtonText} {\n display: unset;\n }\n }\n }\n`;\n\ninterface TopBarProps {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n}\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}: 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>Lovisa</NavigationLogo>\n </LogoBurgerGroup>\n <ActionButtonGroup>\n <OverflowMenuGroup>\n <IconButton\n icon={Icon}\n label={<IconButtonText>{user.name}</IconButtonText>}\n />\n <OverflowMenu items={userMenuItems} />\n </OverflowMenuGroup>\n </ActionButtonGroup>\n </Bar>\n );\n};\n","import {\n JordskifterettIcon,\n TingrettIcon,\n LagmannsrettIcon,\n PersonIcon,\n} from '../../Icon/icons';\nimport { SvgProps } from '../../Icon/utils';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ElementType, forwardRef, MouseEvent } from 'react';\n\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { Spinner } from '../Spinner';\nimport { ButtonProps } from './Button.types';\nimport { ButtonWrapper, StyledIconWrapperSpan, Label } from './Button.styles';\nimport { getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { ButtonSize } from '.';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, border, spacing, fontPackages, borderRadius, outerShadow } =\n ddsBaseTokens;\n\nexport const typographyTypes: {\n [k in ButtonSize]: StaticTypographyType;\n} = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTinyPx = calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeSmallPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeMediumPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n);\nconst iconSizeLargePx = calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n);\n\nconst svgOffset = spacing.SizesDdsSpacingLocalX0125NumberPx;\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.SizesDdsSpacingLocalX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${\n spacing.SizesDdsSpacingLocalX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${\n spacing.SizesDdsSpacingLocalX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { getTextColor, TextColor } from '../../utils';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = React.useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import styled, { css } from 'styled-components';\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n ButtonAppearance,\n ButtonPurpose,\n ButtonSize,\n IconPosition,\n} from './Button.types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n selection,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { Divider } from '../Divider';\nimport {\n OverflowMenuContextItem,\n OverflowMenuNavItem,\n OverflowMenuProps,\n} from '.';\nimport {\n useFloatPosition,\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '../../hooks';\nimport { getBaseHTMLProps } from '../../types';\nimport { visibilityTransition, selection } from '../helpers';\nimport { PersonIcon } from '../Icon/icons';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n RefObject,\n useEffect,\n useRef,\n useState,\n useCallback,\n MouseEvent,\n} from 'react';\nimport styled from 'styled-components';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\n\nconst { track, thumb, minThumbHeightPx } = tokens;\n\nconst ScrollbarOuterWrapper = styled.div``;\n\nconst ScrollbarElements = styled.div`\n display: block;\n height: 100%;\n position: relative;\n display: grid;\n justify-items: center;\n`;\n\nconst Track = styled.div`\n bottom: 0;\n top: 0;\n position: absolute;\n background-color: ${track.backgroundColor};\n border-radius: ${track.borderRadius};\n width: ${track.width};\n`;\n\nconst Thumb = styled.div`\n position: absolute;\n background-color: ${thumb.base.backgroundColor};\n border-radius: ${thumb.base.borderRadius};\n width: ${thumb.base.width};\n transition: background-color 0.2s;\n &:hover {\n background-color: ${thumb.hover.backgroundColor};\n }\n`;\n\nexport type ScrollbarProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Ref til container med innholdet som skal scrolles. */\n contentRef?: RefObject<HTMLDivElement>;\n }\n>;\n\nexport const Scrollbar = (props: ScrollbarProps) => {\n const { id, className, htmlProps, contentRef, ...rest } = props;\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const [thumbHeight, setThumbHeight] = useState(minThumbHeightPx);\n const [isScrollable, setIsScrollable] = useState(true);\n const [thumbTop, setThumbTop] = useState<number>(0);\n const observer = useRef<ResizeObserver | null>(null);\n const [scrollStartPosition, setScrollStartPosition] = useState<number>(0);\n const [initialScrollTop, setInitialScrollTop] = useState<number>(0);\n const [isDragging, setIsDragging] = useState(false);\n\n function handleResize(ref: HTMLDivElement, trackSize: number) {\n const { clientHeight, scrollHeight } = ref;\n setIsScrollable(clientHeight !== scrollHeight);\n setThumbHeight(\n Math.max((clientHeight / scrollHeight) * trackSize, minThumbHeightPx),\n );\n }\n\n const handleTrackClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (contentRef?.current) {\n const { current: trackCurrent } = trackRef;\n const { current: contentCurrent } = contentRef;\n if (trackCurrent && contentCurrent) {\n const { clientY } = e;\n const target = e.target as HTMLDivElement;\n const rect = target.getBoundingClientRect();\n const trackTop = rect.top;\n const thumbOffset = -(thumbHeight / 2);\n const clickRatio =\n (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;\n const scrollAmount = Math.floor(\n clickRatio * contentCurrent.scrollHeight,\n );\n contentCurrent.scrollTo({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n },\n [thumbHeight],\n );\n\n const handleThumbPositioning = useCallback(() => {\n if (!contentRef?.current || !trackRef.current || !thumbRef.current) {\n return;\n }\n const { scrollTop: contentTop, scrollHeight: contentHeight } =\n contentRef.current;\n const { clientHeight } = trackRef.current;\n let newTop = (+contentTop / +contentHeight) * clientHeight;\n newTop = Math.min(newTop, clientHeight - thumbHeight);\n setThumbTop(newTop);\n }, []);\n\n useEffect(() => {\n if (contentRef?.current && trackRef.current) {\n const ref = contentRef.current;\n const { clientHeight } = trackRef.current;\n observer.current = new ResizeObserver(() => {\n handleResize(ref, clientHeight);\n });\n observer.current.observe(ref);\n ref.addEventListener('scroll', handleThumbPositioning);\n return () => {\n observer.current?.unobserve(ref);\n ref.removeEventListener('scroll', handleThumbPositioning);\n };\n }\n }, []);\n\n const handleThumbMousedown = useCallback((e: MouseEvent<HTMLDivElement>) => {\n setScrollStartPosition(e.clientY);\n if (contentRef?.current) setInitialScrollTop(contentRef.current.scrollTop);\n setIsDragging(true);\n }, []);\n\n const handleThumbMouseup = useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n }\n }, [isDragging]);\n\n const handleThumbMousemove = useCallback(\n (e: globalThis.MouseEvent) => {\n if (contentRef?.current) {\n if (isDragging) {\n const {\n scrollHeight: contentScrollHeight,\n offsetHeight: contentOffsetHeight,\n } = contentRef.current;\n\n const deltaY =\n (e.clientY - scrollStartPosition) *\n (contentOffsetHeight / thumbHeight);\n const newScrollTop = Math.min(\n initialScrollTop + deltaY,\n contentScrollHeight - contentOffsetHeight,\n );\n\n contentRef.current.scrollTop = newScrollTop;\n }\n }\n },\n [isDragging, scrollStartPosition, thumbHeight],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', handleThumbMousemove);\n document.addEventListener('mouseup', handleThumbMouseup);\n document.addEventListener('mouseleave', handleThumbMouseup);\n return () => {\n document.removeEventListener('mousemove', handleThumbMousemove);\n document.removeEventListener('mouseup', handleThumbMouseup);\n document.removeEventListener('mouseleave', handleThumbMouseup);\n };\n }, [handleThumbMousemove, handleThumbMouseup]);\n\n return isScrollable ? (\n <ScrollbarOuterWrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ScrollbarElements>\n <Track ref={trackRef} onClick={handleTrackClick} />\n <Thumb\n style={{\n height: thumbHeight,\n top: thumbTop,\n }}\n ref={thumbRef}\n onMouseDown={handleThumbMousedown}\n />\n </ScrollbarElements>\n </ScrollbarOuterWrapper>\n ) : null;\n};\n\nScrollbar.displayName = 'Scrollbar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nexport const scrollbarWidthNumberPx = 10;\nconst scrollbarWidth = `${scrollbarWidthNumberPx}px`;\nconst { colors, spacing } = ddsBaseTokens;\n\nconst track = {\n backgroundColor: 'transparent',\n borderRadius: '100px',\n width: scrollbarWidth,\n};\n\nconst thumb = {\n base: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',\n borderRadius: '100px',\n width: scrollbarWidth,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)',\n },\n};\n\nconst content = {\n paddingRight: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { useRef } from 'react';\nimport styled from 'styled-components';\nimport { Scrollbar } from './Scrollbar';\nimport { Property } from 'csstype';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Property } from 'csstype';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n Dispatch,\n SetStateAction,\n MouseEvent,\n KeyboardEvent,\n ForwardedRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { useCombinedRef } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { normalizeButton } from '../helpers';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling, focusVisibleLink } from '../Typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { border, borderRadius, colors, spacing, fontPackages } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst element = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX025,\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.SizesDdsSpacingLocalX15,\n marginLeft: spacing.SizesDdsSpacingLocalX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingLocalX0125NumberPx,\n};\n","import {\n useRef,\n useState,\n Children as ReactChildren,\n ReactNode,\n isValidElement,\n cloneElement,\n ReactElement,\n useId,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { AppShell as BaseAppShell, AppShellProps } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { ChangeEvent, forwardRef, useId } from 'react';\n\nimport { RadioButtonProps } from './RadioButton.types';\nimport {\n RadioButtonGroup,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { Container, CustomSelectionControl } from '../SelectionControl.styles';\nimport { Nullable, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nconst isValueEqualToGroupValueOrFalsy = (\n value: unknown,\n group: Nullable<RadioButtonGroup>,\n): boolean => {\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n return !!value;\n};\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n disabled = false,\n readOnly = false,\n error = false,\n checked,\n value,\n children,\n required = false,\n onChange,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n type: 'radio',\n name: name ?? radioButtonGroup?.name,\n disabled:\n disabled ||\n readOnly ||\n !!radioButtonGroup?.disabled ||\n !!radioButtonGroup?.readOnly,\n required: required || !!radioButtonGroup?.required,\n checked:\n typeof checked !== 'undefined'\n ? checked\n : isValueEqualToGroupValueOrFalsy(value, radioButtonGroup),\n onChange: handleChange,\n value: value,\n 'aria-describedby':\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': error || radioButtonGroup?.error ? true : undefined,\n };\n\n return (\n <Container\n $error={error || radioButtonGroup?.error}\n disabled={disabled || radioButtonGroup?.disabled}\n $readOnly={readOnly || radioButtonGroup?.readOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n $hasLabel={hasLabel}\n htmlFor={uniqueId}\n $controlType=\"radio\"\n >\n <HiddenInput {...inputProps} ref={ref} />\n <CustomSelectionControl $controlType=\"radio\" />\n <Typography as=\"span\">{children ?? label}</Typography>\n </Container>\n );\n },\n);\n\nRadioButton.displayName = 'RadioButton';\n","import React, { ChangeEvent, useContext } from 'react';\nimport { Nullable } from '../../../types';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n React.createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\nimport { Direction } from '../../types';\nimport { focusVisible, focusVisibleTransitionValue } from '../helpers';\n\nconst {\n selectionControl,\n container,\n checkmark,\n groupContainer,\n outerGroupContainer,\n} = selectionControlTokens;\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\nexport const CustomSelectionControl = styled.span<{\n $controlType?: SelectionControlType;\n}>`\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: ${selectionControl.base.border};\n border-color: ${selectionControl.base.borderColor};\n background-color: ${selectionControl.base.backgroundColor};\n border-radius: ${selectionControl.base.borderRadius};\n height: ${selectionControl.base.height};\n width: ${selectionControl.base.width};\n ${({ $controlType }) =>\n $controlType === 'radio' &&\n css`\n border-radius: 50%;\n `}\n &:after {\n content: '';\n position: absolute;\n display: none;\n }\n`;\n\nexport const Container = styled.label<{\n $hasLabel?: boolean;\n disabled?: boolean;\n $readOnly?: boolean;\n $error?: boolean;\n $controlType: SelectionControlType;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n width: fit-content;\n color: ${container.color};\n ${({ $hasLabel }) =>\n $hasLabel\n ? css`\n padding-left: ${container.withLabel.paddingLeft};\n `\n : css`\n padding: ${container.noLabel.padding};\n `}\n\n input ~ ${CustomSelectionControl} {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s;\n }\n }\n\n &:focus-within {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.base.backgroundColor};\n box-shadow: ${selectionControl.hover.base.boxShadow};\n border-color: ${selectionControl.hover.base.borderColor};\n }\n\n input:checked:enabled\n ~ ${CustomSelectionControl},\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n border-color: ${selectionControl.checked.base.borderColor};\n background-color: ${selectionControl.checked.base.backgroundColor};\n }\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:enabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.hover.backgroundColor};\n box-shadow: ${selectionControl.checked.hover.boxShadow};\n border-color: ${selectionControl.checked.hover.borderColor};\n }\n\n ${({ $error }) =>\n $error &&\n css`\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.danger.backgroundColor};\n box-shadow: ${selectionControl.hover.danger.boxShadow};\n border-color: ${selectionControl.hover.danger.borderColor};\n }\n input\n ~ ${CustomSelectionControl},\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl} {\n box-shadow: ${selectionControl.danger.boxShadow};\n border-color: ${selectionControl.danger.borderColor};\n }\n `}\n input:disabled ~ ${CustomSelectionControl} {\n ${selectionControl.disabled}\n }\n input:checked:disabled\n ~ ${CustomSelectionControl},\n input:disabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.disabled.backgroundColor};\n border-color: ${selectionControl.checked.disabled.borderColor};\n }\n input:checked\n ~ ${CustomSelectionControl}:after,\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl}:after {\n display: block;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: not-allowed;\n color: ${container.disabled.color};\n `}\n ${({ $controlType }) =>\n $controlType === 'checkbox'\n ? css`\n ${CustomSelectionControl}:after {\n border: solid ${checkmark.checkbox.borderColor};\n\n border-width: 0 1px 1px 0;\n left: 35%;\n top: 10%;\n width: 30%;\n height: 65%;\n transform: rotate(45deg);\n }\n input[data-indeterminate='true'] ~ ${CustomSelectionControl}:after {\n border-width: 1px 0 0 0;\n left: 25%;\n top: 50%;\n width: 50%;\n height: 1px;\n transform: none;\n }\n `\n : css`\n ${CustomSelectionControl}:after {\n border-radius: 50%;\n background-color: ${checkmark.radio.backgroundColor};\n width: ${checkmark.radio.width};\n height: ${checkmark.radio.height};\n left: ${checkmark.radio.left};\n top: ${checkmark.radio.top};\n }\n `}\n`;\n\nexport const OuterGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerGroupContainer.gap};\n`;\n\nexport const GroupContainer = styled.div<{ $direction: Direction }>`\n display: flex;\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${groupContainer[$direction].gap};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\nimport { hoverInputfield, dangerInputfield } from '../helpers';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nconst checkmark = {\n checkbox: {\n borderColor: colors.DdsColorNeutralsWhite,\n },\n radio: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n height: spacing.SizesDdsSpacingLocalX05,\n width: spacing.SizesDdsSpacingLocalX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 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.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingLocalX075,\n },\n column: { gap: spacing.SizesDdsSpacingLocalX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n ChangeEvent,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n Ref,\n useId,\n useState,\n} from 'react';\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { combineHandlers } from '../../../utils';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Ledetekst for hele gruppen. */\n label?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /**Legger en markør (*) bak label som indikerer at input er påkrevd. Gjør alle barna påkrevd ved å gi dem `required` prop. */\n required?: boolean;\n /**Meldingen som vises ved valideringsfeil. Gir alle barna error prop. */\n errorMessage?: string;\n /**Hjelpetekst for gruppen. */\n tip?: string;\n /**Gir alle barna `disabled` prop. */\n disabled?: boolean;\n /**Gir alle barna `readOnly` prop */\n readOnly?: boolean;\n /**Retningen radioknappene skal gjengis i. */\n direction?: Direction;\n /**Default verdi - en `<RadioButton />` blir forhåndsvalgt. **OBS!** brukes kun når brukeren ikke skal fylle ut selv. */\n value?: T | undefined;\n /**custom id for for gruppen, knytter `label` til gruppen via `aria-label`. */\n groupId?: string;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nconst RadioButtonGroupInner = <T extends string | number = string>(\n props: RadioButtonGroupProps<T>,\n ref: Ref<HTMLDivElement>,\n) => {\n const {\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [groupValue, setGroupValue] = useState<\n string | number | null | undefined\n >(value);\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps = {\n name,\n disabled,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n ref={ref}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"radiogroup\"\n $direction={direction}\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n >\n {children}\n </GroupContainer>\n </RadioButtonGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nexport const RadioButtonGroup = forwardRef(RadioButtonGroupInner) as <\n T extends string | number = string,\n>(\n props: RadioButtonGroupProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n// @ts-expect-error TODO fix RadioButtonGroup type\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","import { forwardRef, useId } from 'react';\n\nimport { CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { CustomSelectionControl, Container } from '../SelectionControl.styles';\nimport { getBaseHTMLProps } from '../../../types';\nimport { cn, spaceSeparatedIdListGenerator } from '../../../utils';\nimport { HiddenInput } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n\n const {\n style,\n className: htmlPropsClassName,\n ...restHtmlProps\n } = htmlProps;\n\n type AriaChecked = 'mixed' | boolean | undefined;\n\n return (\n <Container\n $error={error || checkboxGroup?.error}\n disabled={disabled}\n htmlFor={uniqueId}\n $hasLabel={hasLabel}\n $controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n ref={ref}\n name={name}\n disabled={disabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={error || checkboxGroup?.error ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? ('mixed' as AriaChecked) : undefined}\n aria-readonly={readOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n />\n <CustomSelectionControl $controlType=\"checkbox\" />\n {hasLabel && (\n <Typography color=\"inherit\" as=\"span\" typographyType=\"bodySans02\">\n {label}\n </Typography>\n )}\n </Container>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import React, { useContext } from 'react';\nimport { Nullable } from '../../../types';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n React.createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\nimport {\n CheckboxGroupContext,\n CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n OuterGroupContainer,\n GroupContainer,\n} from '../SelectionControl.styles';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../../types';\nimport { derivativeIdGenerator } from '../../../utils';\nimport { RequiredMarker } from '../../helpers';\nimport { Typography } from '../../Typography';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna gjengis i. */\n direction?: Direction;\n /**Custom id for for gruppen, knytter ledetekst til gruppen via `aria-label`. */\n groupId?: string;\n /**Meldingen som vises ved valideringsfeil. Sender error-tilstand til barna når det finnes og setter `aria-describedby` for barna. */\n errorMessage?: string;\n tip?: string;\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Innebærer visuell endring. **OBS!** `required` må i tillegg gis til `<Checkbox />` manuelt. */\n required?: boolean;\n }\n>;\n\nexport const CheckboxGroup = (props: CheckboxGroupProps) => {\n const {\n label,\n direction = 'row',\n errorMessage,\n tip,\n required = false,\n groupId,\n children,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = htmlProps;\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-checkboxGroup`;\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueGroupId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueGroupId, 'tip');\n\n const contextProps: CheckboxGroupContextProps = {\n error: hasErrorMessage,\n errorMessageId: errorMessage ? errorMessageId : undefined,\n uniqueGroupId,\n tipId: tip ? tipId : undefined,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n $direction={direction}\n >\n {children}\n </GroupContainer>\n </CheckboxGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import React, {\n useState,\n forwardRef,\n useId,\n useRef,\n useLayoutEffect,\n} from 'react';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens } from './TextInput.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport CharCounter from './CharCounter';\nimport { TextAffixProps, TextInputProps } from './TextInput.types';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport {\n InputSize,\n getDefaultText,\n InputContainer,\n InputAffixContainer,\n StatefulInput,\n OuterInputContainer,\n} from '../helpers';\nimport { Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX025NumberPx\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.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Typography } from '../Typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\nimport { InputSize, InputProps, StatefulInput } from '../helpers';\nimport { Icon } from '../Icon';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import React, { HTMLAttributes, ReactNode, useId } from 'react';\nimport { Property } from 'csstype';\nimport {\n ClearIndicatorProps,\n components,\n DropdownIndicatorProps,\n default as ReactSelect,\n GroupBase,\n InputProps,\n NoticeProps,\n OptionProps,\n Props as ReactSelectProps,\n SelectInstance,\n SingleValueProps,\n MultiValueRemoveProps,\n ControlProps,\n} from 'react-select';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { WithRequiredIf } from '../../types';\nimport {\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Icon } from '../Icon';\nimport { CheckIcon, CloseSmallIcon, ChevronDownIcon } from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { Label } from '../Typography';\nimport { InputSize } from '../helpers';\nimport {\n InnerSingleValue,\n StyledIcon,\n prefix,\n getCustomStyles,\n Container,\n} from './Select.styles';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n\nconst 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\nconst 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\nconst 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\nconst DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nconst 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\nconst DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nconst 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\nconst 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\nconst 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\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 TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>,\n TValue = unknown,\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n TValue = unknown,\n> = {\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<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<TOption, IsMulti, GroupBase<TOption>>;\n\ntype ForwardRefType<TOption, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<TOption, IsMulti, GroupBase<TOption>>\n>;\n\nconst SelectInner = <\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean = false,\n TValue = unknown,\n>(\n props: SelectProps<TOption, IsMulti>,\n ref: ForwardRefType<TOption, 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 TOption,\n IsMulti,\n GroupBase<TOption>\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<TOption>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n};\n\nexport const Select = React.forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { GroupBase, StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport { Property } from 'csstype';\nimport {\n InputSize,\n dangerInputfield,\n focusInputfield,\n hoverDangerInputfield,\n hoverInputfield,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport {\n InputSize,\n InputTypographyTypes,\n inputTypographyTypes,\n} from '../helpers';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst placeholderTypographyTypes: { [k in InputSize]: StaticTypographyType } = {\n medium: 'supportingStylePlaceholderText01',\n small: 'supportingStylePlaceholderText02',\n tiny: 'supportingStylePlaceholderText03',\n};\n\nconst multiValueLabelTypographyTypes: {\n [k in InputSize]: StaticTypographyType;\n} = {\n medium: 'bodySans01',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nexport const typographyTypes: {\n control: InputTypographyTypes;\n option: InputTypographyTypes;\n placeholder: { [k in InputSize]: StaticTypographyType };\n noOptionsMessage: { [k in InputSize]: StaticTypographyType };\n groupHeading: StaticTypographyType;\n multiValueLabel: { [k in InputSize]: StaticTypographyType };\n} = {\n control: inputTypographyTypes,\n option: inputTypographyTypes,\n placeholder: placeholderTypographyTypes,\n noOptionsMessage: placeholderTypographyTypes,\n groupHeading: 'supportingStyleHelperText01',\n multiValueLabel: multiValueLabelTypographyTypes,\n};\n\nconst control = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: {\n borderColor: 'transparent',\n backgroundColor: 'transparent',\n },\n isMulti: {\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\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.SizesDdsSpacingLocalX025,\n marginBottom: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX05,\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\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.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\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.SizesDdsSpacingLocalX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingLocalX05,\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 styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport {\n globalMessageTokens as tokens,\n purposeVariants,\n typographyType,\n} from './GlobalMessage.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport { getFontStyling, Typography } from '../Typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ButtonPurpose } from '../Button';\nimport { GlobalMessagePurpose } from './GlobalMessage';\nimport { InfoIcon, ErrorIcon, WarningIcon } from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingLocalX1}`,\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.SizesDdsSpacingLocalX15,\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport { Property } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\nimport { Icon } from '../Icon';\nimport { CloseIcon } from '../Icon/icons';\nimport {\n getFontStyling,\n defaultTypographyType,\n Typography,\n} from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ButtonPurpose } from '../Button';\nimport { LocalMessagePurpose } from './LocalMessage';\nimport {\n InfoIcon,\n ErrorIcon,\n WarningIcon,\n CheckCircledIcon,\n TipIcon,\n} from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius, border, outerShadow } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n base: {\n boxShadow: outerShadow.DdsShadow1Onlight,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n success: {\n color: colors.DdsColorSuccessDarkest,\n },\n tips: {\n color: colors.DdsColorPrimaryDarkest,\n },\n confidential: {\n color: colors.DdsColorDangerDarkest,\n },\n};\n\nexport const localMessageTokens = {\n container,\n purposeVariants,\n icon,\n};\n","import {\n ButtonHTMLAttributes,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n MouseEvent,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { IconSize, Icon } from '../Icon';\nimport { SearchIcon, CloseSmallIcon } from '../Icon/icons';\nimport { getFontStyling, Label } from '../Typography';\nimport { Input as BaseInput, InputProps as BaseInputProps } from '../helpers';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import styled from 'styled-components';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n ChangeEvent,\n createContext,\n MouseEvent,\n RefObject,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { SearchSize } from './Search';\nimport { StaticTypographyType } from '../Typography';\n\nconst { spacing, iconSizes, colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport const typographyTypes: { [k in SearchSize]: StaticTypographyType } = {\n small: 'bodySans01',\n medium: 'bodySans02',\n large: 'bodySans04',\n};\n\nconst paddingLeftSmall = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingLocalX25,\n paddingLeft: spacing.SizesDdsSpacingLocalX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingLocalX05,\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingLocalX1,\n paddingBottom: spacing.SizesDdsSpacingLocalX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX075,\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.SizesDdsSpacingLocalX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => {},\n stopPropagation: () => {},\n nativeEvent: new Event('input'),\n persist: () => {},\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import styled from 'styled-components';\nimport {\n OverflowMenuItem,\n OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { SearchProps, SearchSize } from './Search';\nimport { forwardRef, MouseEvent } from 'react';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { useRoveFocus } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { derivativeIdGenerator } from '../../utils';\nimport { Paper, visibilityTransition, removeListStyling } from '../helpers';\nimport { getFontStyling, Typography } from '../Typography';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n ChangeEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport {\n AutocompleteSearchContext,\n AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\nimport { searchFilter } from '../../utils';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, SearchProps, SearchSize } from './Search';\nimport {\n SearchAutocompleteWrapper,\n SearchAutocompleteWrapperProps,\n SearchData,\n WeightedSearchData,\n} from './SearchAutocompleteWrapper';\n\nimport { SearchSuggestions, SearchSuggestionsProps } from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { tableTokens } from './Table.tokens';\nimport { TableDensity, TableProps } from './Table.types';\nimport { selection } from '../helpers';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingLocalX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingLocalX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingLocalX075,\n marginRight: spacing.SizesDdsSpacingLocalX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Table } from '../Table';\nimport { CollapsibleTableContext } from './Table.context';\nimport { CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n {children}\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\nimport { TableRowProps } from './Table.types';\nimport { StyledRow } from './Table.styles';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import styled, { css } from 'styled-components';\n\nimport { RowMode, TableRowType } from './Table.types';\nimport { tableTokens } from './Table.tokens';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\nimport { focusVisibleInset } from '../helpers';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import {\n forwardRef,\n Children,\n useState,\n isValidElement,\n cloneElement,\n ReactElement,\n Fragment,\n useEffect,\n} from 'react';\nimport styled from 'styled-components';\nimport { Table } from '..';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useCollapsibleTableContext } from './Table.context';\nimport { TableRowProps } from '../Table.types';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport {\n removeButtonStyling,\n AnimatedChevronUpDown,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../../helpers';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\n\nconst { term, desc, list } = tokens;\n\ntype DListProps = Pick<DescriptionListProps, 'appearance' | 'direction'>;\n\nconst DList = styled.dl.withConfig({\n shouldForwardProp: prop => prop !== 'appearance' && prop !== 'direction',\n})<DListProps>`\n margin: 0;\n *::selection {\n ${selection}\n }\n ${({ appearance }) =>\n appearance &&\n css`\n dt {\n color: ${term.appearance[appearance].color};\n ${appearance === 'bold' &&\n css`\n font-weight: 600;\n `}\n }\n `}\n display: flex;\n flex-direction: column;\n &:not(:has(> dt):has(> dd)) {\n flex-direction: ${({ direction = 'column' }) => direction};\n }\n flex-wrap: wrap;\n column-gap: ${list.rowDirection.columnGap};\n row-gap: 0;\n & > dt:first-of-type {\n margin-top: ${term.firstOfType.marginTop};\n }\n & > dd:last-child {\n margin-bottom: ${desc.lastChild.marginBottom};\n }\n dd + dt {\n margin-top: ${list.beforeNextTerm.marginTop};\n }\n`;\n\nexport type DescriptionListAppearance = 'small' | 'bold';\n\nexport type DescriptionListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**Påvirker tekst styling. */\n appearance?: DescriptionListAppearance;\n /**Setter flex-direction. NB! Fungerer kun ved bruk av `DescriptionListGroup` som barn av `DescriptionList`.\n * @default \"column\"\n */\n direction?: 'row' | 'column';\n }\n>;\n\nexport const DescriptionList = forwardRef<\n HTMLDListElement,\n DescriptionListProps\n>((props, ref) => {\n const {\n appearance = 'bold',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n appearance,\n direction,\n ref,\n };\n\n return <DList {...dListProps}>{children}</DList>;\n});\n\nDescriptionList.displayName = 'DescriptionList';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst term = {\n appearance: {\n small: {\n color: colors.DdsColorNeutralsGray7,\n },\n bold: {\n color: colors.DdsColorNeutralsGray9,\n },\n },\n firstOfType: {\n marginTop: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n ElementType,\n forwardRef,\n ThHTMLAttributes,\n TdHTMLAttributes,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { DescriptionListDesc } from '../DescriptionList';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**Type celle. Returnerer enten `<td>` eller `<th>`. */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type = 'data', layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import { forwardRef, MouseEvent } from 'react';\nimport styled from 'styled-components';\n\nimport { Cell, TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\nimport { focusVisible, normalizeButton, removeButtonStyling } from '../helpers';\nimport { Icon } from '../Icon';\nimport { UnfoldMoreIcon, ChevronDownIcon, ChevronUpIcon } from '../Icon/icons';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Table as BaseTable } from './Table';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport {\n TableProps,\n TableDensity,\n CollapsibleTableProps,\n TableRowProps,\n TableRowType,\n} from './Table.types';\nimport { Head, TableHeadProps } from './Head';\nimport { Body, TableBodyProps } from './Body';\nimport { Foot, TableFootProps } from './Foot';\nimport { Row } from './Row';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { Cell, TableCellProps, TableCellLayout, TableCellType } from './Cell';\nimport { SortCell, TableSortCellProps, SortOrder } from './SortCell';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import { AnchorHTMLAttributes, forwardRef, HTMLAttributes } from 'react';\nimport { Typography } from '../Typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, Children } from 'react';\nimport styled from 'styled-components';\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport { removeListStyling } from '../helpers';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\nimport { ChevronRightIcon } from '../Icon/icons';\n\nconst { icon, list, listItem } = breadcrumbTokens;\n\nconst List = styled.ol`\n ${removeListStyling}\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${list.gap};\n`;\nList.displayName = 'List';\n\nconst ListItem = styled.li`\n align-items: center;\n display: flex;\n gap: ${listItem.gap};\n ${getFontStyling(typographyType)}\n`;\nListItem.displayName = 'ListItem';\n\nconst StyledIcon = styled(Icon)`\n color: ${icon.color};\n`;\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<HTMLElement>;\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { children, id, className, htmlProps, ...rest } = props;\n\n const childrenArray = Children.toArray(children);\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <ListItem key={`breadcrumb-${index}`}>\n {index !== 0 && <StyledIcon icon={ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst listItem = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { forwardRef, HTMLAttributes, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { Typography } from '../Typography';\nimport {\n MoreHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronFirstIcon,\n ChevronLastIcon,\n} from '../Icon/icons';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","import { ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\n\nimport { listTokens as tokens } from './List.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { selection } from '../helpers';\nimport { getFontStyling, TypographyBodyType } from '../Typography';\n\nconst { list, listItem, bullet } = tokens;\n\ninterface StyledListProps {\n $listType: ListType;\n $typographyType: ListTypographyType;\n}\n\nconst StyledList = styled.ul<StyledListProps>`\n margin: ${list.base.margin};\n color: ${list.base.color};\n ul,\n ol {\n margin: 0;\n }\n *::selection {\n ${selection}\n }\n\n ${({ $typographyType }) =>\n $typographyType === 'inherit'\n ? css`\n font: inherit;\n `\n : css`\n ${getFontStyling($typographyType)}\n `}\n\n ${({ $listType }) =>\n $listType === 'unordered'\n ? css`\n padding-left: ${list.ul.paddingLeft};\n list-style: none;\n li {\n position: relative;\n padding-left: ${listItem.ul.paddingLeft};\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: ${bullet.top};\n left: 0;\n background-size: contain;\n background-repeat: no-repeat;\n background-image: ${`url('${bulletLvl1}')`};\n }\n ul > li:before {\n background-image: ${`url('${bulletLvl2}')`};\n }\n ul > li > ul > li:before {\n background-image: ${`url('${bulletLvl3}')`};\n }\n }\n `\n : css`\n padding-left: ${list.ol.paddingLeft};\n & > li > ol {\n list-style-type: lower-alpha;\n }\n & > li > ol > li > ol {\n list-style-type: lower-roman;\n }\n `}\n`;\n\nexport type ListType = 'ordered' | 'unordered';\nexport type ListTypographyType = TypographyBodyType | 'inherit';\n\nexport type ListProps = BaseComponentPropsWithChildren<\n HTMLUListElement | HTMLOListElement,\n {\n /**Spesifiserer om komponenten skal returnere `<ul />` (punktliste) eller `<ol />` (nummerert liste). */\n listType?: ListType;\n /**Spesifiserer typografi for listen. Komponenten arver i utgangspunktet fra forelder, men hvis forelder stiller ikke med relevant styling må det velges `TypographyBodyType` som brukes i `<body>` ellers på siden. */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n (props, ref) => {\n const {\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <StyledList\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as={as}\n ref={ref}\n $listType={listType}\n $typographyType={typographyType}\n >\n {children}\n </StyledList>\n );\n },\n);\n\nList.displayName = 'List';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst ulLiPaddingLeft = `1em + ${spacing.SizesDdsSpacingLocalX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingLocalX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingLocalX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\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.SizesDdsSpacingLocalX2,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { AnchorHTMLAttributes, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\nimport { cardTokens as tokens } from './Card.tokens';\nimport { focusVisibleWithBorder, hoverWithBorder, selection } from '../helpers';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\n\ninterface ContainerProps {\n color: CardColor;\n cardType: CardType;\n}\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'color' && prop !== 'cardType',\n})<ContainerProps>`\n border: ${tokens.base.border};\n ${getFontStyling(defaultTypographyType)};\n &::selection,\n *::selection {\n ${selection}\n }\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n ${({ color }) =>\n color &&\n css`\n color: ${tokens.colors[color].color};\n background-color: ${tokens.colors[color].backgroundColor};\n border-color: ${tokens.colors[color].borderColor};\n `}\n ${({ cardType }) =>\n cardType === 'navigation'\n ? css`\n text-decoration: none;\n &:hover {\n ${hoverWithBorder}\n }\n &:focus {\n ${focusVisibleWithBorder}\n }\n `\n : cardType === 'expandable'\n ? css`\n width: 100%;\n box-sizing: border-box;\n &:not(:first-of-type) {\n border-top: none;\n }\n `\n : ''}\n`;\nexport type CardColor =\n | 'filledDark'\n | 'filledLight'\n | 'strokeDark'\n | 'strokeLight';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Fargepalett i komponenten. */\n color?: CardColor;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. Ved `'expandable'` må alle `<Card />` grupperte sammen ligge egen `<div>` container. */\n cardType: 'info';\n};\n\nexport type NavigationCardProps = BaseCardProps<HTMLAnchorElement> & {\n cardType: 'navigation';\n} & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n\nexport type ExpandableCardProps = BaseCardProps<HTMLDivElement> & {\n cardType: 'expandable';\n};\n\nexport type CardProps =\n | InfoCardProps\n | NavigationCardProps\n | ExpandableCardProps;\n\nexport const Card = (props: CardProps) => {\n const {\n color = 'filledLight',\n cardType,\n cardRef,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"a\"\n ref={cardRef}\n href={href}\n target={target}\n >\n {children}\n </Container>\n );\n }\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"div\"\n ref={cardRef}\n >\n {children}\n </Container>\n );\n};\n\nCard.displayName = 'Card';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, border } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst base = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n};\n\nconst cardColors = {\n filledLight: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n borderColor: colors.DdsColorPrimaryLightest,\n color: textDefault.textColor,\n },\n filledDark: {\n backgroundColor: colors.DdsColorPrimaryBase,\n borderColor: colors.DdsColorPrimaryBase,\n color: colors.DdsColorNeutralsWhite,\n },\n strokeDark: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n strokeLight: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n};\n\nexport const cardTokens = {\n base: base,\n colors: cardColors,\n};\n","import { forwardRef, useState, useEffect, useId, useCallback } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { CardAccordionContextProvider } from './CardAccordionContext';\n\nconst Wrapper = styled.div``;\n\nexport type CardAccordionProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om body skal være utvidet ved innlastning. */\n isExpanded?: boolean;\n /**For å lytte til endringer i expanded-state. */\n onChange?: (expanded: boolean) => void;\n }\n>;\n\nexport const CardAccordion = forwardRef<HTMLDivElement, CardAccordionProps>(\n (props, ref) => {\n const {\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [expanded, setExpanded] = useState(isExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-cardAccordion`;\n\n useEffect(() => {\n setExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n setExpanded(prevExpanded => {\n const newExpanded = !prevExpanded;\n\n if (onChange) {\n onChange(newExpanded);\n }\n\n return newExpanded;\n });\n }, [onChange]);\n\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} ref={ref}>\n <CardAccordionContextProvider\n headerId={`${accordionId}-header`}\n bodyId={`${accordionId}-body`}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n >\n {children}\n </CardAccordionContextProvider>\n </Wrapper>\n );\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { ReactNode, createContext, useContext } from 'react';\n\ninterface CardAccordionContext {\n headerId: string;\n bodyId: string;\n isExpanded: boolean;\n toggleExpanded: () => void;\n}\n\nconst CardAccordionContext = createContext<Partial<CardAccordionContext>>({});\n\nexport const CardAccordionContextProvider = ({\n children,\n ...values\n}: CardAccordionContext & { children: ReactNode }) => {\n return (\n <CardAccordionContext.Provider value={values}>\n {children}\n </CardAccordionContext.Provider>\n );\n};\n\nexport const useCardAccordionContext = (): CardAccordionContext => {\n const context = useContext(CardAccordionContext);\n\n if (!context) {\n throw new Error(\n 'useCardAccordionContext must be used within a CardAccordionContextProvider. Have you wrapped <CardAccordionHeader> and <CardAccordionBody> inside a <CardAccordion>?',\n );\n }\n\n return context as CardAccordionContext;\n};\n","import { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { Property } from 'csstype';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n normalizeButton,\n removeButtonStyling,\n AnimatedChevronUpDown,\n} from '../../helpers';\nimport { StaticTypographyType, getFontStyling } from '../../Typography';\n\nconst { header, chevronWrapper } = tokens;\n\nconst ContentWrapper = styled.div`\n text-align: left;\n`;\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType ?? typographyTypes.header;\n}\n\ninterface HeaderProps {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n}\n\nconst HeaderContainer = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'padding' && prop !== 'typographyType' && prop !== 'bold',\n})<HeaderProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n padding: ${({ padding }) => padding ?? header.padding};\n ${props => getFontStyling(getTypographyType(props))}\n ${props =>\n props.bold &&\n css`\n font-weight: 600;\n `}\n`;\n\nconst HeaderWrapperButton = styled.button`\n ${normalizeButton}\n user-select: text;\n position: relative;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n ${removeButtonStyling}\n display: block;\n width: 100%;\n &:hover {\n box-shadow: ${header.hover.boxShadow};\n }\n\n &:focus-visible,\n &.focus-visible {\n outline: none;\n box-shadow: ${header.focus.boxShadow};\n }\n`;\n\nconst ChevronWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${chevronWrapper.width};\n height: ${chevronWrapper.height};\n margin-left: ${chevronWrapper.marginLeft};\n`;\n\nexport type CardAccordionHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const {\n headerId: id,\n bodyId,\n toggleExpanded,\n isExpanded,\n } = useCardAccordionContext();\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: toggleExpanded,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../../Typography';\n\nconst { spacing, border, iconSizes } = ddsBaseTokens;\n\nexport const typographyTypes: {\n body: StaticTypographyType;\n header: StaticTypographyType;\n} = {\n body: 'bodySans03',\n header: 'headingSans03',\n};\n\nconst header = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\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.SizesDdsSpacingLocalX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx +\n spacing.SizesDdsSpacingLocalX075NumberPx\n }px ${spacing.SizesDdsSpacingLocalX2} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingLocalX05,\n },\n};\n","import { Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n Nullable,\n} from '../../../types';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useElementHeight } from './useElementHeight';\nimport { useCardAccordionContext } from './CardAccordionContext';\nimport { useIsMounted } from '../../../hooks';\nimport { getFontStyling } from '../../Typography';\n\nconst expandingAnimation = css`\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n`;\n\nfunction getPadding(props: BodyContainerProps): string {\n const { padding } = props;\n\n return padding ?? tokens.body.padding;\n}\n\ninterface BodyProps {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n}\n\nconst Body = styled.div.withConfig({\n shouldForwardProp: prop => {\n return prop !== 'animate' && prop !== 'height' && prop !== 'isExpanded';\n },\n})<BodyProps>`\n ${({ isExpanded }) =>\n !isExpanded &&\n css`\n display: none;\n `}\n @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Overskriver default padding på toppen. Brukes når barn har spacing på toppen, f.eks. en overskrift. */\n paddingTop?: Property.PaddingTop<string>;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n >,\n 'id'\n>;\n\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const { children, className, htmlProps, padding, paddingTop, ...rest } =\n props;\n\n const { headerId, isExpanded, bodyId: id } = useCardAccordionContext();\n\n const bodyRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyRef.current);\n\n const [initialExpandedHeight, setIntialExpandedHeight] =\n useState<Nullable<number>>(null);\n\n useLayoutEffect(() => {\n // For å unngå initiell animasjon dersom Accordion er satt til å være åpen som default.\n if (bodyRef.current && isExpanded) {\n setIntialExpandedHeight(bodyRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n return (\n <Body\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n isExpanded={isExpanded}\n role=\"region\"\n height={height ?? initialExpandedHeight ?? 0}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer\n ref={bodyRef}\n isExpanded={isExpanded}\n padding={padding}\n paddingTop={paddingTop}\n animate={animate}\n >\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { useEffect, useState } from 'react';\nimport { Nullable } from '../../../types';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport {\n OuterContainer,\n Navigation,\n NavigationList,\n BannerWrapper,\n BannerLeftWrapper,\n LovisaWrapper,\n ApplicationNameWrapper,\n ContextMenuGroup,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { NavigationItem } from './NavigationItem';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { getBaseHTMLProps } from '../../types';\nimport { MenuIcon, MoreVerticalIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport { OverflowMenu } from '../OverflowMenu';\nimport { selection } from '../helpers';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { border, colors, spacing } = ddsBaseTokens;\n\nconst borderStyle = `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `;\n\nexport const typographyTypes: Record<string, StaticTypographyType> = {\n navLink: 'bodySans01',\n};\n\nconst navLink = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\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.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingLayoutX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { getFontStyling } from '../Typography';\nimport { focusVisible } from '../helpers';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { forwardRef, useId } from 'react';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\nimport CalendarIcon from './calendar_today.svg';\n\nimport { datepickerTokens as tokens } from './Datepicker.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport {\n InputProps,\n InputSize,\n OuterInputContainer,\n StatefulInput,\n selection,\n} from '../helpers';\nimport { Label } from '../Typography';\n\nconst StyledInput = styled(StatefulInput)<Pick<InputProps, 'componentSize'>>`\n &::-webkit-calendar-picker-indicator {\n background-image: ${`url('${CalendarIcon}')`};\n position: absolute;\n ${({ componentSize }) =>\n componentSize &&\n css`\n right: ${tokens.calendarIndicator.base.sizes[componentSize].right};\n height: ${tokens.calendarIndicator.base.sizes[componentSize].height};\n width: ${tokens.calendarIndicator.base.sizes[componentSize].width};\n `}\n margin-left: 0px;\n padding: 0;\n top: 50%;\n transform: translate(0, -50%);\n box-sizing: border-box;\n }\n\n &::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n &::-webkit-calendar-picker-indicator:focus-visible {\n outline: ${tokens.calendarIndicator.focus.outline};\n outline-offset: ${tokens.calendarIndicator.focus.outlineOffset};\n }\n\n &::-webkit-inner-spin-button {\n display: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field {\n transition: 0.2s;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus {\n ${selection}\n }\n`;\n\ntype DatepickerType = 'date' | 'datetime-local';\n\nexport type DatepickerProps = Omit<InputProps, 'type'> & {\n /** Angi dato-input med eller uten klokkeslett. */\n type?: DatepickerType;\n};\n\nexport const Datepicker = forwardRef<HTMLInputElement, DatepickerProps>(\n (\n {\n id,\n type = 'date',\n required = false,\n readOnly = false,\n disabled = false,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-datepickerInput`;\n\n const componentWidth = width ? width : getWidth(type, componentSize);\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const inputProps = {\n id: uniqueId,\n hasErrorMessage,\n ref,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n required,\n disabled,\n componentSize,\n type,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-required': ariaRequired,\n 'aria-invalid': hasErrorMessage ? true : undefined,\n max: getMax(type, max),\n ...rest,\n };\n\n const outerinputContainerProps = {\n width: componentWidth,\n style,\n className,\n };\n\n return (\n <OuterInputContainer {...outerinputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={!!showRequiredStyling}>\n {label}\n </Label>\n )}\n <StyledInput {...inputProps} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\nDatepicker.displayName = 'Datepicker';\n\nconst defaultWidths: {\n [k in DatepickerType]: { [k in InputSize]: Property.Width<string> };\n} = {\n date: {\n medium: '160px',\n small: '140px',\n tiny: '125px',\n },\n ['datetime-local']: {\n medium: '200px',\n small: '180px',\n tiny: '150px',\n },\n};\n\nconst getWidth = (\n type: DatepickerType,\n size: InputSize,\n): Property.Width<string> => defaultWidths[type][size];\n\nconst getMax = (\n type: DatepickerType,\n max?: string | number,\n): string | number | undefined => {\n if (max !== undefined) {\n return max;\n }\n\n // Limit the year-part to only four digits by default\n\n if (type === 'datetime-local') {\n return '9999-12-31T23:59';\n }\n\n if (type === 'date') {\n return '9999-12-31';\n }\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { iconSizes, spacing, border } = ddsBaseTokens;\n\nconst calendarIndicator = {\n base: {\n sizes: {\n medium: {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n },\n },\n focus: {\n outline: `${border.BordersDdsBorderFocusInputfieldStroke} solid ${border.BordersDdsBorderFocusInputfieldStrokeWeight}`,\n outlineOffset: spacing.SizesDdsSpacingLocalX0125,\n },\n};\n\nexport const datepickerTokens = {\n calendarIndicator,\n};\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { skipToContentTokens as tokens } from './SkipToContent.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\nimport { focusVisibleTransitionValue, focusVisibleOnDark } from '../helpers';\n\nconst { wrapper, link } = tokens;\n\nconst Wrapper = styled.div<{\n $top: Property.Top;\n}>`\n box-sizing: border-box;\n position: absolute;\n top: ${({ $top: top }) => top};\n text-align: center;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n width: 1px;\n white-space: nowrap;\n background-color: ${wrapper.backgroundColor};\n padding: ${wrapper.padding};\n opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n\n &:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: 250;\n opacity: 1;\n }\n`;\n\nconst Link = styled.a`\n text-decoration: none;\n color: ${link.base.color};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n &:focus {\n ${focusVisibleOnDark}\n }\n &:hover {\n color: ${link.base.color};\n }\n`;\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka. */\n text?: string;\n /**Spesifiserer hvor det skal hoppes til via `id`-attributtet til innholdet. */\n href: string;\n /**Avstand fra top i nærmeste posisjonert container. */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = forwardRef<HTMLAnchorElement, SkipToContentProps>(\n (props, ref) => {\n const {\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n return (\n <Wrapper\n $top={top}\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)} ref={ref}>\n {text}\n </Link>\n </Wrapper>\n );\n },\n);\n\nSkipToContent.displayName = 'SkipToContent';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst link = {\n base: {\n color: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst wrapper = {\n backgroundColor: colors.DdsColorPrimaryBase,\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import React, {\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { Placement } from '@floating-ui/react-dom';\nimport { useFloatPosition, useCombinedRef, useOnKeyDown } from '../../hooks';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\n\nconst { svgArrow } = tokens;\n\ntype AnchorElement = React.ReactElement & React.RefAttributes<HTMLElement>;\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'style' | 'onMouseLeave' | 'onMouseOver'\n>;\n\nexport type TooltipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /**Innhold i tooltip. */\n text: string;\n /**Plassering i forhold til anchor-elementet. */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder. */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (props, ref) => {\n const {\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueTooltipId = tooltipId ?? `${generatedId}-tooltip`;\n const [open, setOpen] = useState(false);\n const [inView, setInView] = useState(false);\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null);\n const { refs, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => {});\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\nimport { PaperProps, Paper, visibilityTransition } from '../helpers';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\n\nconst { wrapper } = tokens;\n\nexport const SvgArrow = styled.svg`\n width: 36px;\n height: 9px;\n`;\n\nexport const ArrowWrapper = styled.div``;\n\nexport const Container = styled.div`\n width: fit-content;\n`;\n\ntype WrapperProps = PaperProps & {\n open: boolean;\n};\n\nexport const TooltipWrapper = styled(Paper)<WrapperProps>`\n ${({ open }) => visibilityTransition(open)}\n width: fit-content;\n position: absolute;\n z-index: 80;\n text-align: center;\n padding: ${wrapper.padding};\n ${getFontStyling(defaultTypographyType)};\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import { forwardRef, ReactNode, RefObject, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport { createPortal } from 'react-dom';\n\nimport {\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n Backdrop,\n} from './Backdrop';\nimport {\n useFocusTrap,\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useMountTransition,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisible, Paper, selection } from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n /**Ref som skal motta fokus når Modal åpnes. Hvis utelatt blir Modal fokusert. */\n initialFocusRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>((props, ref) => {\n const {\n isOpen = false,\n parentElement = document.body,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n className,\n htmlProps,\n ...rest\n } = props;\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose();\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }, [isOpen]);\n\n useOnClickOutside(modalRef.current, () => handleClose());\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n gap: spacing.SizesDdsSpacingLocalX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { changeRGBAAlpha } from '../../../utils';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Property } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { forwardRef, ReactNode, RefObject, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Property } from 'csstype';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport {\n useFocusTrap,\n useCombinedRef,\n useOnKeyDown,\n useOnClickOutside,\n useMountTransition,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisible, Paper } from '../helpers';\nimport { Typography } from '../Typography';\nimport { CloseIcon } from '../Icon/icons';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => {\n if (isOpen) {\n onClose?.();\n }\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n placement,\n ref: combinedRef,\n isOpen: hasTransitionedIn && isOpen,\n tabIndex: -1,\n role: 'dialog',\n 'aria-labelledby': headerId,\n size,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Container {...containerProps} elevation={4}>\n <ScrollableContainer>\n <ContentContainer>\n {hasHeader && (\n <HeaderContainer {...headerContainerProps}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n </ScrollableContainer>\n <StyledButton\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </Container>,\n parentElement,\n )\n : null;\n});\n\nDrawer.displayName = 'Drawer';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst contentContainerPaddingNumberPx =\n spacing.SizesDdsSpacingLocalX025NumberPx;\nconst contentContainerPadding = `${contentContainerPaddingNumberPx}px`;\n\nconst container = {\n padding: `${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX1NumberPx - contentContainerPaddingNumberPx\n }px ${\n spacing.SizesDdsSpacingLocalX15NumberPx - contentContainerPaddingNumberPx\n }px`,\n};\n\nconst contentContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n padding: contentContainerPadding,\n};\n\nexport const drawerTokens = {\n container,\n contentContainer,\n};\n","import {\n ReactNode,\n Children as ReactChildren,\n isValidElement,\n cloneElement,\n ReactElement,\n useState,\n useRef,\n useId,\n} from 'react';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { forwardRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport {\n Placement,\n useMountTransition,\n useFloatPosition,\n useReturnFocusOnBlur,\n useOnClickOutside,\n useCombinedRef,\n} from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport {\n PaperProps,\n Paper,\n visibilityTransition,\n focusVisible,\n} from '../helpers';\nimport { CloseIcon } from '../Icon/icons';\nimport { Typography } from '../Typography';\n\nconst { spacing: Spacing } = ddsBaseTokens;\nconst { wrapper, content, closeButton, title } = tokens;\n\ninterface WrapperProps extends PaperProps {\n $sizeProps?: PopoverSizeProps;\n $hasTransitionedIn?: boolean;\n $isOpen: boolean;\n}\n\nconst Wrapper = styled(Paper)<WrapperProps>`\n opacity: 0;\n ${({ $hasTransitionedIn, $isOpen }) =>\n $hasTransitionedIn && visibilityTransition($hasTransitionedIn && $isOpen)}\n position: absolute;\n width: fit-content;\n z-index: 100;\n padding: ${wrapper.padding};\n\n &:focus-visible {\n ${focusVisible}\n }\n ${({ $sizeProps }) =>\n $sizeProps &&\n css`\n width: ${$sizeProps.width};\n height: ${$sizeProps.height};\n min-width: ${$sizeProps.minWidth};\n min-height: ${$sizeProps.minHeight};\n max-width: ${$sizeProps.maxWidth};\n max-height: ${$sizeProps.maxHeight};\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ninterface ContentContainerProps {\n $hasTitle: boolean;\n $withCloseButton: boolean;\n}\n\nconst ContentContainer = styled.div<ContentContainerProps>`\n ${({ $withCloseButton, $hasTitle }) =>\n $withCloseButton &&\n !$hasTitle &&\n css`\n margin-top: ${content.noTitle.marginTop};\n `}\n`;\n\nconst StyledButton = styled(Button)`\n position: absolute;\n top: ${closeButton.top};\n right: ${closeButton.right};\n`;\n\nexport interface PopoverSizeProps {\n width?: Property.Width<string>;\n height?: Property.Height<string>;\n minWidth?: Property.MinWidth<string>;\n minHeight?: Property.MinHeight<string>;\n maxWidth?: Property.MaxWidth<string>;\n maxHeight?: Property.MaxHeight<string>;\n}\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Tittel. */\n title?: string | ReactNode;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Spesifiserer om `<Popover />` skal vises. */\n isOpen?: boolean;\n /**Om lukkeknapp skal vises. */\n withCloseButton?: boolean;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Anchor-elementet. */\n anchorElement?: HTMLElement;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet. */\n placement?: Placement;\n /**Avstand fra anchor-elementet i px. */\n offset?: number;\n /** Ekstra logikk kjørt når lukkeknappen trykkes. */\n onCloseButtonClick?: () => void;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, ref) => {\n const {\n title,\n isOpen = false,\n withCloseButton = true,\n onBlur,\n onCloseButtonClick,\n onClose,\n anchorElement,\n children,\n placement = 'bottom',\n offset = Spacing.SizesDdsSpacingLocalX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n // Use position from anchor element for the popover\n refs.setReference(anchorElement || null);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingLocalX025,\n right: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingLocalX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n useState,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useRef,\n ReactNode,\n useId,\n} from 'react';\nimport { useOnKeyDown } from '../../hooks';\n\nexport interface PopoverGroupProps {\n /**Callback når det trykkes på lukkeknappen. */\n onCloseButtonClick?: () => void;\n /** Callback når det trykkes på anchor-elementet (trigger-elementet). */\n onTriggerClick?: () => void;\n /**Forteller `<Popover />` om den skal være åpen. */\n isOpen?: boolean;\n /** `id` til `<Popover />.` */\n popoverId?: string;\n /** Barna til wrapperen: anchor-element som det første og `<Popover />` so det adnre. */\n children: ReactNode;\n}\n\nexport const PopoverGroup = ({\n isOpen = false,\n onCloseButtonClick,\n onTriggerClick,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [open, setOpen] = useState(isOpen);\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n\n const handleOnCloseButtonClick = () => {\n setOpen(false);\n onCloseButtonClick && onCloseButtonClick();\n };\n\n const handleOnTriggerClick = () => {\n setOpen(!open);\n onTriggerClick && onTriggerClick();\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n setOpen(false);\n buttonRef.current?.focus();\n }\n });\n\n const handleClose = () => setOpen(false);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleOnTriggerClick,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: open,\n 'aria-hidden': !open,\n id: uniquePopoverId,\n onCloseButtonClick: handleOnCloseButtonClick,\n anchorElement: buttonRef.current,\n ref: popoverRef,\n onClose: handleClose,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import { forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { ToggleButtonProps } from './ToggleButton.types';\nimport { getBaseHTMLProps } from '../../types';\nimport {\n HiddenInput,\n focusVisible,\n focusVisibleTransitionValue,\n selection,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { getFontStyling } from '../Typography';\n\nconst { toggleButton } = tokens;\n\ninterface ContentProps {\n $hasIcon?: boolean;\n}\n\nconst Content = styled.span<ContentProps>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: fit-content;\n border: ${toggleButton.border};\n background-color: ${toggleButton.backgroundColor};\n color: ${toggleButton.color};\n border-radius: ${toggleButton.borderRadius};\n padding: ${toggleButton.padding};\n ${getFontStyling(typographyType)}\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $hasIcon }) =>\n $hasIcon &&\n css`\n gap: ${toggleButton.gap};\n `}\n\n &::selection,\n *::selection {\n ${selection}\n }\n &:hover {\n background-color: ${toggleButton.hover.backgroundColor};\n box-shadow: ${toggleButton.hover.boxShadow};\n border-color: ${toggleButton.hover.borderColor};\n }\n`;\n\nconst Container = styled.label`\n width: fit-content;\n ${HiddenInput}:checked + ${Content} {\n background-color: ${toggleButton.checked.backgroundColor};\n border-color: ${toggleButton.checked.borderColor};\n color: ${toggleButton.checked.color};\n }\n ${HiddenInput}:checked + ${Content}:hover {\n background-color: ${toggleButton.checked.hover.backgroundColor};\n border-color: ${toggleButton.checked.hover.borderColor};\n box-shadow: ${toggleButton.checked.hover.boxShadow};\n }\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n }\n`;\n\nexport const ToggleButton = forwardRef<HTMLInputElement, ToggleButtonProps>(\n ({ id, label, icon, className, htmlProps, ...rest }, ref) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n\n return (\n <Container htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n ref={ref}\n type=\"checkbox\"\n />\n <Content $hasIcon={!!icon}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </Content>\n </Container>\n );\n },\n);\n\nToggleButton.displayName = 'ToggleButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { buttonTokens, typographyTypes } from '../Button/Button.tokens';\nimport { selectionControlTokens } from '../SelectionControl/SelectionControl.tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\nconst { button } = buttonTokens;\nconst { selectionControl } = selectionControlTokens;\n\nexport const typographyType = typographyTypes.small;\n\nconst toggleButton = {\n border: button.base.border,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray7,\n gap: spacing.SizesDdsSpacingLocalX05,\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.SizesDdsSpacingLocalX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { Typography } from '../Typography';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import styled, { css } from 'styled-components';\nimport {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { TabsContext } from './Tabs.context';\nimport { Property } from 'csstype';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '../../types';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { createContext, RefObject, useContext } from 'react';\nimport { Direction } from '../../types';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import {\n ButtonHTMLAttributes,\n Dispatch,\n forwardRef,\n SetStateAction,\n useCallback,\n useEffect,\n MouseEvent,\n useRef,\n KeyboardEvent,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef, useOnKeyDown } from '../../hooks';\nimport {\n Direction,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n normalizeButton,\n removeButtonStyling,\n} from '../helpers';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling, defaultTypographyType } from '../Typography';\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 } & 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 ...rest\n } = props;\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.SizesDdsSpacingLocalX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingLocalX025,\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.SizesDdsSpacingLocalX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n isValidElement,\n cloneElement,\n FocusEvent,\n ReactElement,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport {\n useRoveFocus,\n useCombinedRef,\n useOnKeyDown,\n useOnClickOutside,\n} from '../../hooks';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\nconst { tabList } = tokens;\n\nconst TabRow = styled.div`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\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 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 <TabRow {...tabListProps}>{tabListChildren}</TabRow>;\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef } from '../../hooks';\n\nexport type TabPanelsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabPanels = forwardRef<HTMLDivElement, TabPanelsProps>(\n ({ children, ...rest }, ref) => {\n const { activeTab, tabsId, tabPanelsRef } = useTabsContext();\n const combinedRef = useCombinedRef(ref, tabPanelsRef);\n\n const panelChildren = Children.map(children, (child, index) => {\n const active = index === activeTab;\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-panel-${index}`,\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n active,\n 'aria-expanded': active,\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n },\n);\n\nTabPanels.displayName = 'TabPanels';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport {\n TextOverflowEllipsisWrapper,\n getFontStyling,\n TextOverflowEllipsisInner,\n} from '../Typography';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, borderRadius, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst wrapper = {\n border: '1px solid',\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n },\n success: localMessageTokens.container.purpose.success,\n danger: localMessageTokens.container.purpose.danger,\n warning: localMessageTokens.container.purpose.warning,\n info: localMessageTokens.container.purpose.info,\n },\n};\n\nexport const tagTokens = {\n wrapper,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Button } from '../Button';\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport {\n TextOverflowEllipsisWrapper,\n getFontStyling,\n TextOverflowEllipsisInner,\n} from '../Typography';\nimport { CloseIcon } from '../Icon/icons';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX025,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { forwardRef, HTMLAttributes, Children } from 'react';\nimport styled from 'styled-components';\nimport { chipTokens as tokens } from './Chip.tokens';\nimport { removeListStyling } from '../helpers';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { ChangeEvent, useState, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { Property } from 'csstype';\nimport { ToggleBarProps, ToggleBarValue } from './ToggleBar.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\nimport { selection } from '../helpers';\nimport { Typography } from '../Typography';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { ChangeEvent, createContext, useContext } from 'react';\nimport { ToggleBarSize, ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { calculateHeightWithLineHeight } from '../../utils';\nimport { StaticTypographyType } from '../Typography';\n\nconst { colors, spacing, border, borderRadius, fontPackages } = ddsBaseTokens;\n\nexport const typographyTypes: { [k in ToggleBarSize]: StaticTypographyType } = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTiny = `${calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeSmall = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeMedium = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n)}px`;\nconst iconSizeLarge = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n)}px`;\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\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.SizesDdsSpacingLocalX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX2}`,\n gap: spacing.SizesDdsSpacingLocalX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import { forwardRef, InputHTMLAttributes, ChangeEvent, useId } from 'react';\nimport { ToggleBarContextType, useToggleBarContext } from './ToggleBar.context';\nimport { Label, Content } from './ToggleRadio.styles';\nimport { BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { Icon } from '../Icon';\nimport { SvgIcon } from '../Icon/utils';\nimport { HiddenInput } from '../helpers';\n\ntype PickedInputHTMLAttributes = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'checked' | 'value' | 'onChange' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ToggleRadioProps = BaseComponentProps<\n HTMLInputElement,\n {\n /**Ledetekst som vises i komponenten. */\n label?: string;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n } & PickedInputHTMLAttributes,\n Omit<InputHTMLAttributes<HTMLInputElement>, keyof PickedInputHTMLAttributes>\n>;\n\n/**Beregner om en ToggleRadio skal være checked eller ikke.\n *\n * Returnerer checked hvis den er definert.\n *\n * Returnerer true hvis både verdien fra context og verdien i ToggleRadio er truthy og like.\n * Returnerer true hvis verdien i ToggleRadio er truthy, men context ikke finnes.\n *\n * Returnerer false hvis verdiene er ulike eller hvis verdien i ToggleRadio er falsy.\n */\nconst calculateChecked = (\n value: unknown,\n group: ToggleBarContextType,\n checked?: boolean,\n): boolean => {\n if (typeof checked !== 'undefined') return checked;\n\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n\n return !!value;\n};\n\nexport const ToggleRadio = forwardRef<HTMLInputElement, ToggleRadioProps>(\n (props, ref) => {\n const {\n value,\n name,\n onChange,\n checked,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleRadio`;\n const group = useToggleBarContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n group?.onChange && group.onChange(event);\n };\n\n return (\n <Label size={group.size} htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n type=\"radio\"\n ref={ref}\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n />\n <Content $size={group.size} $justIcon={!!icon && !label}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Content>\n </Label>\n );\n },\n);\n\nToggleRadio.displayName = 'ToggleRadio';\n","import styled, { css } from 'styled-components';\n\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '../helpers';\nimport { getFontStyling } from '../Typography';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { gridTokens } from './Grid.tokens';\nimport { GridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport { ScreenSize, useScreenSize } from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getLiteralScreenSize, BreakpointBasedProps } from '../helpers';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ScreenSize } from '../../hooks';\n\nconst { grid, spacing } = ddsBaseTokens;\n\nconst allColumns = '1 / -1';\nconst halfWayColumn: Record<ScreenSize, number> = {\n [ScreenSize.XSmall]: grid.DdsGridXs0599Count / 2 + 1,\n [ScreenSize.Small]: grid.DdsGridSm600959Count / 2 + 1,\n [ScreenSize.Medium]: grid.DdsGridMd9601279Count / 2 + 1,\n [ScreenSize.Large]: grid.DdsGridLg12801919Count / 2 + 1,\n [ScreenSize.XLarge]: grid.DdsGridXl1920Count / 2 + 1,\n};\n\nexport const gridTokens = {\n [ScreenSize.XSmall]: {\n grid: {\n columns: grid.DdsGridXs0599Count,\n columnGap: grid.DdsGridXs0599GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX1,\n marginRight: spacing.SizesDdsSpacingLayoutX1,\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.SizesDdsSpacingLayoutX2,\n marginRight: spacing.SizesDdsSpacingLayoutX2,\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.SizesDdsSpacingLayoutX4,\n marginRight: spacing.SizesDdsSpacingLayoutX4,\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.SizesDdsSpacingLayoutX6,\n marginRight: spacing.SizesDdsSpacingLayoutX6,\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.SizesDdsSpacingLayoutX10,\n marginRight: spacing.SizesDdsSpacingLayoutX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { useContext, createContext } from 'react';\nimport { ScreenSize } from '../../hooks';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import styled from 'styled-components';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { Property } from 'csstype';\nimport { useGridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport { ScreenSize } from '../../hooks';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\nimport { getLiteralScreenSize, BreakpointBasedProps } from '../helpers';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n cloneElement,\n forwardRef,\n ForwardRefExoticComponent,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useEffect,\n useState,\n useMemo,\n} from 'react';\nimport styled from 'styled-components';\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '../Typography';\nimport { IconSize } from '../Icon';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyTypes: {\n number: StaticTypographyType;\n label: StaticTypographyType;\n} = {\n number: 'bodySans01',\n label: 'bodySans03',\n};\n\nconst itemsWrapper = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '1.75rem',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport { BaseComponentPropsWithChildren } from '../../types';\nimport { Icon } from '../Icon';\nimport { CheckIcon } from '../Icon/icons';\nimport { SvgIcon } from '../Icon/utils';\nimport { getFontStyling } from '../Typography';\nimport { focusVisibleTransitionValue, focusVisible } from '../helpers';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n ChangeEvent,\n useState,\n FocusEventHandler,\n FocusEvent,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { InlineEditProps } from './InlineEdit.types';\nimport { useOnKeyDown, useOnClickOutside } from '../../hooks';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { forwardRef, TextareaHTMLAttributes, useId, useRef } from 'react';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineTextArea,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { OuterInputContainer, InputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import styled, { css } from 'styled-components';\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { Property } from 'csstype';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { StyledInputProps, StatefulInput } from '../helpers';\n\nconst { inlineEdit, iconWrapper } = inlineEditTokens;\n\nexport const defaultWidth: Property.Width = '140px';\n\ntype StyledInlineInputProps = {\n isEditing?: boolean;\n hideIcon?: boolean;\n} & StyledInputProps;\n\nexport const StyledInlineInput = styled(StatefulInput).withConfig({\n shouldForwardProp: prop => prop !== 'isEditing' && prop !== 'hideIcon',\n})<StyledInlineInputProps>`\n border-color: transparent;\n background-color: ${inlineEdit.backgroundColor};\n padding: ${inlineEdit.padding};\n ${inlineEdit.font};\n ${({ isEditing, hideIcon }) =>\n !isEditing &&\n !hideIcon &&\n css`\n padding-left: ${inlineEdit.withIcon.paddingLeft};\n `}\n\n &:hover:enabled:read-write:not(:focus) {\n background-color: ${inlineEdit.hover.backgroundColor};\n border-color: transparent;\n box-shadow: none;\n }\n &:focus {\n background-color: ${inlineEdit.focus.backgroundColor};\n }\n`;\n\nexport const StyledInlineTextArea = styled(StyledInlineInput).attrs({\n as: 'textarea',\n})<StyledInlineInputProps>`\n resize: vertical;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport const IconWrapper = styled.span`\n position: absolute;\n left: ${iconWrapper.left};\n top: ${iconWrapper.top};\n z-index: 1;\n &:hover {\n cursor: text;\n }\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, fontPackages } = ddsBaseTokens;\n\nconst inlineEdit = {\n padding: spacing.SizesDdsSpacingLocalX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { forwardRef, InputHTMLAttributes, useId, useRef } from 'react';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineInput,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { OuterInputContainer, InputContainer } from '../helpers';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { textAreaTokens } from './TextArea.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { TextAreaProps } from './TextArea.types';\nimport { useCombinedRef } from '../../hooks';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport {\n StatefulInput,\n StyledInputProps,\n inputTypographyTypes,\n getDefaultText,\n OuterInputContainer,\n} from '../helpers';\nimport { getFontStyling, Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst { textarea } = textAreaTokens;\n\nexport const StyledTextArea = styled(StatefulInput)<StyledInputProps>`\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: ${textarea.paddingBottom};\n ${getFontStyling(inputTypographyTypes.medium)}\n`;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n className,\n style,\n width = defaultWidth,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textArea`;\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const multiRef = useCombinedRef(ref, textAreaRef);\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n\n useEffect(() => {\n if (textAreaRef?.current) {\n textAreaRef.current.style.height = `${\n textAreaRef.current.scrollHeight + 2\n }px`;\n }\n }, [text]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLTextAreaElement> = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = required || !!ariaRequired;\n\n const containerProps = {\n width,\n className,\n style,\n };\n\n const textAreaProps = {\n ref: multiRef,\n onChange: onChangeHandler,\n value,\n defaultValue,\n id: uniqueId,\n disabled,\n hasErrorMessage,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n return (\n <OuterInputContainer {...containerProps}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredStyling} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n <StyledTextArea {...textAreaProps} as=\"textarea\" />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst textarea = {\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button, ButtonProps, ButtonPurpose, ButtonSize } from '../Button';\nimport {\n OverflowMenu,\n OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\nimport { tokens } from './SplitButton.tokens';\nimport { ExtractStrict } from '../../types';\nimport { ChevronUpIcon, ChevronDownIcon } from '../Icon/icons';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport { StandardProperties } from 'csstype';\nimport { BaseComponentPropsWithChildren, getBaseHTMLProps } from '../../types';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'local-x0.125': spacing.SizesDdsSpacingLocalX0125,\n 'local-x0.25': spacing.SizesDdsSpacingLocalX025,\n 'local-x0.5': spacing.SizesDdsSpacingLocalX05,\n 'local-x0.75': spacing.SizesDdsSpacingLocalX075,\n 'local-x1': spacing.SizesDdsSpacingLocalX1,\n 'local-x1.5': spacing.SizesDdsSpacingLocalX15,\n 'local-x2': spacing.SizesDdsSpacingLocalX2,\n 'local-x2.5': spacing.SizesDdsSpacingLocalX25,\n 'local-x3': spacing.SizesDdsSpacingLocalX3,\n 'layout-x1': spacing.SizesDdsSpacingLayoutX1,\n 'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,\n 'layout-x2': spacing.SizesDdsSpacingLayoutX2,\n 'layout-x3': spacing.SizesDdsSpacingLayoutX3,\n 'layout-x4': spacing.SizesDdsSpacingLayoutX4,\n 'layout-x6': spacing.SizesDdsSpacingLayoutX6,\n 'layout-x10': spacing.SizesDdsSpacingLayoutX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { InputMessage } from '../InputMessage';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { FileList } from './types';\nimport { FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport { Property } from 'csstype';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { UploadIcon } from '../Icon/icons';\nimport { Label } from '../Typography';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\nimport { InputMessage } from '../InputMessage';\nimport { errorsTokens } from './FileUploader.tokens';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingLocalX15,\n paddingBottom: spacing.SizesDdsSpacingLocalX2,\n gap: spacing.SizesDdsSpacingLocalX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingLocalX05,\n paddingLeftRight: spacing.SizesDdsSpacingLocalX05,\n paddingTopBottom: spacing.SizesDdsSpacingLayoutX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingLocalX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n","import styled from 'styled-components';\n\nimport { Button } from '../Button';\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { FileUploaderFile } from './fileUploaderReducer';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { CloseIcon } from '../Icon/icons';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import React, {\n ButtonHTMLAttributes,\n HTMLAttributes,\n InputHTMLAttributes,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n FileUploaderFile,\n fileUploaderReducer,\n RootErrorList,\n} from './fileUploaderReducer';\nimport { FileWithPath, fromEvent as getFilesFromEvent } from 'file-selector';\nimport { Accept, FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { FileWithPath } from 'file-selector';\nimport { Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { Typography } from '../Typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst StyledEmptyContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: ${spacing.SizesDdsSpacingLayoutX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingLayoutX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingLayoutX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { backLinkTokens } from './BackLink.tokens';\nimport { Typography } from '../Typography';\nimport { icons } from '../..';\nimport { Icon } from '../Icon';\n\nconst Nav = styled('nav')`\n align-items: center;\n display: flex;\n gap: ${backLinkTokens.nav.gap};\n`;\n\nconst StyledIcon = styled(Icon)`\n color: ${backLinkTokens.icon.color};\n`;\n\nexport interface BackLinkProps {\n label: string;\n href: string;\n}\n\nexport const BackLink = forwardRef<HTMLElement, BackLinkProps>((props, ref) => {\n return (\n <Nav ref={ref}>\n <StyledIcon icon={icons.ArrowLeftIcon} iconSize=\"small\" />\n <Typography typographyType=\"a\" href={props.href}>\n {props.label}\n </Typography>\n </Nav>\n );\n});\n\nBackLink.displayName = 'BackLink';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst nav = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\nimport { FeedbackProps, Rating } from './Feedback.types';\nimport { RatingComponent } from './RatingComponent';\nimport { CommentComponent } from './CommentComponent';\nimport { Paragraph } from '../Typography';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { Layout, Rating } from './Feedback.types';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport { Button } from '../Button';\nimport { HStack } from '../Stack';\nimport { Label } from '../Typography';\nimport { Thumbup, Thumbdown } from '../Icon/icons';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\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=\"layout-x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\nimport { VStack } from '../Stack';\nimport { Icon } from '../Icon';\nimport { ThumbupFilled, ThumbdownFilled } from '../Icon/icons';\nimport { Paragraph } from '../Typography';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\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=\"layout-x1\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n"],"mappings":"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","names":["styled","styled","css","ddsBaseTokens","ddsBaseTokens","border","ddsBaseTokens","spacing","ddsBaseTokens","Border","Colors","ddsBaseTokens","colors","forwardRef","styled","forwardRef","styled","css","ddsBaseTokens","ddsReferenceTokens","colors","spacing","css","ddsBaseTokens","element","border","colors","ddsBaseTokens","bold","css","typographyType","element","ddsBaseTokens","ddsReferenceTokens","colors","textDefault","colors","textDefault","prefix","styled","css","ddsBaseTokens","colors","spacing","ddsBaseTokens","ddsBaseTokens","icon","title","size","styled","jsx","jsxs","title","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","title","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","styled","css","message","jsx","jsxs","jsx","styled","typographyType","css","bold","forwardRef","jsx","forwardRef","forwardRef","jsx","forwardRef","typographyType","forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","forwardRef","forwardRef","styled","jsx","styled","forwardRef","typographyType","forwardRef","jsx","forwardRef","typographyType","input","container","styled","css","styled","css","ddsBaseTokens","colors","ddsBaseTokens","border","borderStyle","styled","css","styled","jsx","element","ddsBaseTokens","arrow","element","useRef","useEffect","useCallback","useEffect","useEffect","element","useEffect","useEffect","useRef","useRef","useEffect","element","useCallback","useState","useEffect","size","useEffect","useState","ddsBaseTokens","ScreenSize","screenSize","styled","ddsBaseTokens","colors","spacing","fontPackages","borderRadius","breakpoints","useEffect","styled","forwardRef","styled","css","ddsBaseTokens","border","spacing","jsx","styled","css","forwardRef","styled","useState","jsx","jsx","jsxs","styled","icon","styled","jsx","styled","navTokens","styled","forwardRef","ddsBaseTokens","colors","border","spacing","fontPackages","borderRadius","outerShadow","ddsBaseTokens","styled","ddsBaseTokens","jsx","jsxs","styled","size","ddsBaseTokens","styled","css","sizes","appearances","css","styled","size","Label","Fragment","jsx","jsxs","sizes","appearances","forwardRef","label","size","icon","Label","forwardRef","useEffect","useId","styled","useEffect","useRef","useState","useCallback","styled","ddsBaseTokens","colors","spacing","jsx","jsxs","track","thumb","styled","useRef","useState","useCallback","useEffect","useRef","styled","jsx","jsxs","track","content","outerContainer","styled","useRef","thumb","track","scrollbarWidth","forwardRef","useCallback","useEffect","useRef","styled","css","ddsBaseTokens","border","borderRadius","colors","spacing","fontPackages","ddsBaseTokens","container","divider","jsx","jsxs","element","link","css","styled","Link","isAnchorProps","forwardRef","title","icon","useRef","useEffect","useCallback","Fragment","jsx","jsxs","container","divider","styled","StyledDivider","forwardRef","useEffect","_a","useId","useRef","useState","useId","Fragment","jsx","Children","jsx","jsxs","navTokens","floatingActionButtons","styled","Icon","ENVIRONMENT_BANNER_HEIGHT","jsx","jsxs","navTokens","styled","ENVIRONMENT_BANNER_HEIGHT","StyledDivider","useEffect","ENVIRONMENT_BANNER_HEIGHT","jsx","jsxs","styled","ENVIRONMENT_BANNER_HEIGHT","AppShell","forwardRef","useId","React","useContext","styled","css","ddsBaseTokens","colors","spacing","borderRadius","ddsBaseTokens","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","css","Container","jsx","jsxs","group","forwardRef","label","useId","Container","forwardRef","useId","useState","jsx","jsxs","label","useState","useId","RadioButtonGroup","forwardRef","forwardRef","useId","React","useContext","jsx","jsxs","forwardRef","label","useId","Container","useId","jsx","jsxs","label","useId","useState","forwardRef","useId","useRef","styled","css","ddsBaseTokens","colors","spacing","input","icon","useId","styled","jsxs","styled","useId","styled","css","ddsBaseTokens","iconSizes","ddsBaseTokens","input","icon","styled","css","jsx","jsxs","size","styled","css","TextInput","forwardRef","label","icon","prefix","useState","useRef","useId","React","useId","styled","css","ddsBaseTokens","ddsReferenceTokens","colors","spacing","borderRadius","border","ddsBaseTokens","textDefault","ddsReferenceTokens","typographyTypes","icon","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","css","typographyTypes","StyledIcon","size","jsx","jsxs","Input","size","icon","StyledIcon","defaultWidth","placeholder","label","useId","option","props","Container","React","styled","css","forwardRef","useState","ddsBaseTokens","colors","spacing","ddsBaseTokens","typographyType","container","jsx","jsxs","container","contentContainer","icon","Container","styled","typographyType","css","forwardRef","message","useState","styled","css","forwardRef","useState","ddsBaseTokens","colors","spacing","borderRadius","border","outerShadow","ddsBaseTokens","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","icon","Fragment","jsx","jsxs","defaultWidth","container","icon","purposeVariants","Container","styled","css","MessageIconWrapper","TextContainer","forwardRef","message","useState","forwardRef","useId","useState","styled","css","styled","jsx","Wrapper","styled","createContext","useContext","ddsBaseTokens","ddsReferenceTokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","styled","forwardRef","jsx","jsxs","suggestionsContainer","suggestionsHeader","styled","typographyTypes","forwardRef","Fragment","jsx","jsxs","input","outerContainer","horisontalContainer","searchIcon","clearButton","size","Input","styled","css","typographyTypes","InputContainer","forwardRef","label","useId","useState","useEffect","useRef","useState","jsx","useState","useEffect","data","a","value","useRef","Search","forwardRef","styled","css","ddsBaseTokens","font","colors","border","spacing","iconSizes","borderRadius","jsx","cell","row","styled","css","forwardRef","forwardRef","styled","css","useContext","createContext","jsx","StyledTable","styled","css","forwardRef","forwardRef","styled","jsx","forwardRef","styled","jsx","forwardRef","styled","jsx","forwardRef","styled","css","row","css","styled","jsx","forwardRef","forwardRef","Children","useState","isValidElement","cloneElement","Fragment","useEffect","styled","forwardRef","styled","css","ddsBaseTokens","spacing","colors","jsx","term","desc","list","styled","css","forwardRef","forwardRef","styled","jsx","forwardRef","styled","jsx","jsxs","styled","forwardRef","icon","forwardRef","styled","jsx","styled","forwardRef","forwardRef","styled","css","jsx","cell","css","styled","forwardRef","Fragment","jsx","jsxs","collapseButton","styled","forwardRef","useState","useEffect","Children","prefix","isValidElement","cloneElement","a","Table","forwardRef","styled","jsx","jsxs","cell","styled","forwardRef","useEffect","useRef","useState","styled","css","jsx","Wrapper","styled","css","useState","useRef","useEffect","Table","CollapsibleTable","forwardRef","jsx","forwardRef","forwardRef","Children","styled","ddsBaseTokens","colors","spacing","typographyType","icon","list","jsx","jsxs","icon","list","listItem","styled","typographyType","StyledIcon","forwardRef","Children","forwardRef","useState","styled","css","ddsBaseTokens","spacing","colors","list","outerContainer","jsx","jsxs","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","css","OuterContainer","forwardRef","useState","option","navigation","forwardRef","styled","css","ddsBaseTokens","ddsReferenceTokens","spacing","textDefault","list","listItem","jsx","list","listItem","bullet","styled","css","List","forwardRef","typographyType","forwardRef","styled","jsx","styled","ListItem","forwardRef","styled","css","ddsBaseTokens","ddsReferenceTokens","colors","border","textDefault","base","jsx","Container","styled","css","forwardRef","useState","useEffect","useId","useCallback","styled","createContext","useContext","jsx","jsx","Wrapper","styled","forwardRef","useState","useId","useEffect","useCallback","forwardRef","styled","css","ddsBaseTokens","spacing","border","iconSizes","typographyTypes","jsx","jsxs","header","chevronWrapper","styled","typographyType","typographyTypes","css","forwardRef","bold","forwardRef","useEffect","useLayoutEffect","useRef","useState","styled","css","useEffect","useState","element","jsx","css","Body","styled","typographyTypes","forwardRef","useRef","useState","useLayoutEffect","useEffect","useRef","useState","styled","css","ddsBaseTokens","border","colors","spacing","typographyTypes","outerContainer","navigation","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","css","Navigation","forwardRef","styled","css","jsx","navLink","Link","styled","typographyTypes","css","NavigationItem","forwardRef","title","forwardRef","styled","jsx","jsx","jsxs","useState","useRef","navigation","Navigation","rest","NavigationItem","OuterContainer","forwardRef","useId","styled","css","ddsBaseTokens","iconSizes","spacing","border","jsx","jsxs","StyledInput","styled","css","forwardRef","label","useId","getWidth","size","forwardRef","styled","ddsBaseTokens","colors","spacing","link","jsx","wrapper","link","Wrapper","styled","Link","forwardRef","ReactChildren","cloneElement","forwardRef","isValidElement","useEffect","useId","useRef","useState","styled","ddsBaseTokens","colors","spacing","wrapper","wrapper","styled","Container","jsx","jsxs","svgArrow","forwardRef","useId","useState","useRef","useEffect","ref","ReactChildren","isValidElement","cloneElement","Container","forwardRef","useEffect","useId","styled","ddsBaseTokens","spacing","container","contentContainer","styled","ddsBaseTokens","styled","ddsBaseTokens","container","jsx","jsxs","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","forwardRef","header","useId","useEffect","forwardRef","styled","jsx","Container","styled","forwardRef","forwardRef","styled","jsx","Container","styled","forwardRef","forwardRef","useId","createPortal","styled","css","ddsBaseTokens","spacing","container","contentContainer","jsx","jsxs","container","contentContainer","size","Container","styled","css","ContentContainer","HeaderContainer","StyledButton","forwardRef","header","useId","createPortal","ReactChildren","isValidElement","cloneElement","useState","useRef","useId","Fragment","jsxs","Children","ddsBaseTokens","forwardRef","styled","css","ddsBaseTokens","spacing","wrapper","content","jsx","jsxs","ddsBaseTokens","wrapper","content","closeButton","title","Wrapper","styled","css","ContentContainer","StyledButton","forwardRef","useState","ReactChildren","cloneElement","isValidElement","useRef","useId","Fragment","jsx","useState","useId","useRef","Children","ReactChildren","isValidElement","cloneElement","forwardRef","useId","styled","css","ddsBaseTokens","colors","spacing","ddsBaseTokens","button","selectionControl","typographyType","group","container","jsx","jsxs","toggleButton","Content","styled","typographyType","css","Container","forwardRef","label","icon","useId","useId","styled","css","jsx","jsxs","styled","css","Container","label","useId","styled","css","forwardRef","useEffect","useId","useRef","useState","createContext","useContext","jsx","Container","styled","css","forwardRef","useId","useState","useRef","useEffect","forwardRef","useCallback","useEffect","useRef","styled","css","ddsBaseTokens","border","spacing","colors","jsx","jsxs","tab","Button","styled","css","forwardRef","icon","useRef","useEffect","useCallback","forwardRef","Children","isValidElement","cloneElement","styled","jsx","tabList","styled","forwardRef","Children","isValidElement","cloneElement","forwardRef","styled","css","jsx","panel","styled","css","forwardRef","forwardRef","Children","cloneElement","isValidElement","jsx","forwardRef","Children","isValidElement","cloneElement","forwardRef","styled","css","ddsBaseTokens","colors","borderRadius","spacing","ddsBaseTokens","typographyType","wrapper","jsx","wrapper","Wrapper","styled","typographyType","css","forwardRef","forwardRef","useState","styled","ddsBaseTokens","colors","spacing","borderRadius","typographyType","container","group","jsx","jsxs","container","Container","styled","typographyType","forwardRef","useState","forwardRef","Children","styled","jsx","Group","styled","forwardRef","Children","useState","useId","styled","css","createContext","useContext","ddsBaseTokens","colors","spacing","border","borderRadius","fontPackages","ddsBaseTokens","typographyTypes","outerContainer","content","jsx","jsxs","OuterContainer","styled","css","Bar","size","label","useId","useState","forwardRef","useId","styled","css","content","label","Content","styled","css","typographyTypes","Label","jsx","jsxs","group","forwardRef","icon","label","useId","Label","Content","styled","css","ddsBaseTokens","spacing","ddsBaseTokens","useContext","createContext","createContext","useContext","jsx","tokens","styled","css","styled","jsx","styled","Children","cloneElement","forwardRef","Fragment","isValidElement","useEffect","useState","useMemo","styled","createContext","useContext","ddsBaseTokens","colors","spacing","typographyTypes","styled","css","jsx","jsxs","itemNumber","itemText","itemContentWrapper","styled","typographyTypes","css","icon","jsx","jsxs","styled","forwardRef","useState","useEffect","useMemo","Children","isValidElement","cloneElement","Fragment","forwardRef","useRef","useState","Children","cloneElement","isValidElement","Fragment","jsx","useState","Children","isValidElement","cloneElement","forwardRef","useId","useRef","styled","css","ddsBaseTokens","colors","spacing","fontPackages","inlineEdit","iconWrapper","defaultWidth","styled","css","IconWrapper","jsxs","jsx","jsxs","forwardRef","defaultWidth","useId","useRef","IconWrapper","jsx","forwardRef","useRef","forwardRef","useRef","forwardRef","useId","useRef","jsx","jsxs","forwardRef","defaultWidth","useId","useRef","IconWrapper","jsx","forwardRef","useRef","forwardRef","useEffect","useId","useRef","useState","styled","ddsBaseTokens","spacing","jsx","jsxs","defaultWidth","textarea","styled","forwardRef","label","useId","useRef","useState","useEffect","forwardRef","useState","styled","ddsBaseTokens","tokens","jsx","jsxs","Container","styled","tokens","forwardRef","size","useState","forwardRef","styled","css","ddsBaseTokens","spacing","jsx","styled","css","forwardRef","useId","styled","styled","ddsBaseTokens","colors","spacing","jsx","MessageContainer","styled","message","styled","jsx","jsxs","styled","useCallback","useEffect","useMemo","useRef","useRef","useMemo","useEffect","accepted","useCallback","jsx","jsxs","defaultWidth","Wrapper","styled","label","useId","ddsBaseTokens","styled","jsx","jsxs","colors","spacing","ddsBaseTokens","styled","title","message","forwardRef","styled","ddsBaseTokens","colors","spacing","icon","jsx","jsxs","Nav","styled","StyledIcon","forwardRef","useEffect","useState","styled","css","ddsBaseTokens","jsx","jsxs","styled","ddsBaseTokens","css","styled","ddsBaseTokens","jsx","jsxs","styled","ddsBaseTokens","jsx","useState","useEffect"]}