@norges-domstoler/dds-components 13.8.7 → 13.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/index.d.mts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -21
package/dist/index.mjs.map
CHANGED
|
@@ -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/FlexContainer.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 type 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<{ 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<{\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: transform 0.2s ease-in-out, 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 type 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\ntype 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<{ 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\ntype TopBarProps = {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n};\n\nexport type User = {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n};\n\nexport type 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<{ 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 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 = !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n label,\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 {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\ntype StyledSpinnerProps = Pick<SpinnerProps, 'size'> & {\n outerAnimationDelay: number;\n};\n\nconst StyledSpinner = styled.svg<StyledSpinnerProps>`\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\ntype CircleProps = Pick<SpinnerProps, 'color'> & {\n innerAnimationDelay: number;\n};\n\nconst Circle = styled.circle<CircleProps>`\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;\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,\n size,\n };\n\n const circleProps = {\n innerAnimationDelay,\n color,\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 {...circleProps}\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\ntype 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<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: background-color 0.2s, text-decoration-color 0.2s,\n box-shadow 0.2s, border-color 0.2s, color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) =>\n 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\ntype StyledIconWrapperSpanProps = {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n};\n\nexport const StyledIconWrapperSpan = styled.span<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\ntype LabelProps = {\n isHidden?: boolean;\n};\n\nexport const Label = styled.span<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\ntype ContainerProps = { isOpen: boolean };\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 { reference, floating, refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, floating);\n\n useEffect(() => {\n anchorRef ? reference(anchorRef.current) : reference(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(\n interactiveItems && interactiveItems.length,\n !isOpen\n );\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,\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 && 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 && 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 && contentRef.current)\n 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 && 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\ntype ContentProps = {\n height: Property.Height;\n};\n\nconst Content = styled.div<ContentProps>`\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\ntype 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 type 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 {\n getBaseHTMLProps,\n joinClassNames,\n Nullable,\n} 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,\n readOnly,\n error,\n checked,\n value,\n children,\n required,\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 const containerProps = {\n error: error || radioButtonGroup?.error,\n disabled: disabled || radioButtonGroup?.disabled,\n readOnly: readOnly || radioButtonGroup?.readOnly,\n style,\n className: joinClassNames(className, htmlPropsClassName),\n htmlFor: uniqueId,\n controlType: 'radio',\n hasLabel,\n };\n\n return (\n <Container {...containerProps} htmlFor={uniqueId} controlType=\"radio\">\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\ntype CustomSelectionControlProps = {\n controlType?: SelectionControlType;\n};\n\nexport const CustomSelectionControl = styled.span<CustomSelectionControlProps>`\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\ntype ContainerProps = {\n hasLabel?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n error?: boolean;\n indeterminate?: boolean;\n controlType: SelectionControlType;\n};\n\nexport const Container = styled.label<ContainerProps>`\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: box-shadow 0.2s, background-color 0.2s, 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,\n readOnly,\n direction = 'row',\n value,\n children,\n required,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = 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\ntype WrapperProps = {\n messageType: InputMessageType;\n};\n\nconst InputMessageWrapper = styled.div<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 joinClassNames,\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,\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 const containerProps = {\n error: error || checkboxGroup?.error,\n disabled,\n indeterminate,\n htmlFor: uniqueId,\n hasLabel,\n className: joinClassNames(className, htmlPropsClassName),\n style,\n };\n type AriaChecked = 'mixed' | boolean | undefined;\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n ref,\n name,\n indeterminate,\n 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 };\n\n return (\n <Container {...containerProps} controlType=\"checkbox\">\n <HiddenInput\n {...inputProps}\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,\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 { 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 errorMessage,\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 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 { InputSize, StatefulInput } 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\ntype 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};\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 { Property } from 'csstype';\nimport React, { HTMLAttributes, ReactNode, useId } from 'react';\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 type 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 Record<string, unknown>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends Record<string, unknown>,\n IsMulti extends boolean\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 Record<string, unknown>,\n IsMulti extends boolean = false\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,\n componentSize,\n errorMessage,\n isDisabled,\n readOnly,\n 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\ntype StyledContainerProps = {\n errorMessage?: string;\n isDisabled?: boolean;\n readOnly?: boolean;\n width?: Property.Width;\n componentSize: InputSize;\n isMulti?: boolean;\n};\n\nexport const Container = styled.div<StyledContainerProps>`\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\ntype ContainerProps = Pick<GlobalMessageProps, 'purpose'>;\n\nconst Container = styled.div<ContainerProps>`\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 }) =>\n purpose &&\n 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\ntype ContentContainerProps = Pick<GlobalMessageProps, 'closable'>;\n\nconst ContentContainer = styled.div<ContentContainerProps>`\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 const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n purpose,\n };\n\n return !isClosed ? (\n <Container {...containerProps}>\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<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\ntype InputProps = { componentSize: SearchSize };\n\nconst Input = styled(BaseInput)<InputProps>`\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 }) =>\n 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\ntype StyledSearchIconProps = {\n size: SearchSize;\n};\n\nconst StyledSearchIcon = styled(Icon)<StyledSearchIconProps>`\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\ntype HorisontalContainerProps = {\n hasSearchButton: boolean;\n};\n\nconst HorisontalContainer = styled.div<HorisontalContainerProps>`\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 containerProps = {\n className,\n style,\n };\n\n const inputProps = {\n ...rest,\n ref: combinedRef,\n componentSize,\n 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 !== undefined ? context.inputValue : value,\n onChange: handleChange,\n autoComplete: 'off',\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 {...containerProps}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...inputProps}\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 label={buttonLabel || 'Søk'}\n onClick={onClick}\n {...otherButtonProps}\n />\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 type 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 { OverflowMenuItem } 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\ntype SuggestionsContainerProps = {\n isHidden?: boolean;\n};\n\nconst SuggestionsContainer = styled(Paper)<SuggestionsContainerProps>`\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\ntype MenuItemProps = {\n size: SearchSize;\n};\n\nconst MenuItem = styled(OverflowMenuItem)<MenuItemProps>`\n ${({ 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(\n suggestions && suggestions.length,\n !showSuggestions\n );\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\ntype WeightedValue = {\n text: string;\n relevance: number;\n};\n\nexport type WeightedSearchData = {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n};\n\nexport type SearchData = {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n};\n\nexport type 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 ? filter(suggestion, query) : 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\ntype StyledTableProps = {\n density: TableDensity;\n stickyHeader?: boolean;\n withDividers?: boolean;\n};\n\nconst StyledTable = styled.table<StyledTableProps>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ density }) =>\n 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 ({ density = 'normal', children, ...rest }, ref) => {\n const tableProps = {\n ref,\n density,\n ...rest,\n };\n\n return <StyledTable {...tableProps}>{children}</StyledTable>;\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\ntype StyledTableProps = {\n isCollapsed?: boolean;\n};\n\nconst StyledTable = styled(Table)<StyledTableProps>`\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 const tableProps = {\n ref,\n density,\n isCollapsed,\n ...rest,\n };\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable {...tableProps}>{children}</StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ntype 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 const headProps = {\n ...rest,\n };\n\n return (\n <StyledHead ref={ref} {...headProps}>\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 const footProps = {\n ...rest,\n };\n\n return (\n <StyledFoot ref={ref} {...footProps}>\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 ({ type = 'body', mode = 'normal', children, ...rest }, ref) => {\n const rowProps = {\n type,\n mode,\n ...rest,\n };\n\n return (\n <StyledRow ref={ref} {...rowProps}>\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\ntype StyledProps = {\n type: TableRowType;\n mode?: RowMode;\n selected?: boolean;\n hoverable?: boolean;\n};\n\nexport const StyledRow = styled.tr<StyledProps>`\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s, border-color 0.2s, 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, selected, 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 ({ type = 'body', mode = 'normal', children, ...rest }, ref) => {\n const rowProps = {\n type,\n mode,\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=\"body\">\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} {...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 {...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} {...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<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\ntype StyledCellProps = { type: TableCellType };\n\nconst StyledCell = styled.td<StyledCellProps>`\n ${({ 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 }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport type 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 const cellProps = {\n as: as,\n type,\n ...rest,\n };\n\n const innerCellProps = {\n layout,\n };\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell ref={ref} {...cellProps}>\n <InnerCell {...innerCellProps}>{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 (\n wrapperRef &&\n wrapperRef.current &&\n isOverflowingX(wrapperRef.current)\n ) {\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 const wrapperProps = {\n ref: wrapperRef,\n overflowX,\n ...rest,\n };\n\n return <Wrapper {...wrapperProps}>{children}</Wrapper>;\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\ntype 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 type 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 setItemsPerPage(option?.value as number);\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 label={item.toString()}\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 ) : (\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,\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 label={activePage.toString()}\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n />\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\ntype 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 const listProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n listType,\n typographyType,\n as,\n ref,\n };\n\n return <StyledList {...listProps}>{children}</StyledList>;\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\ntype ContainerProps = {\n color: CardColor;\n cardType: CardType;\n};\n\nconst Container = styled.div<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: box-shadow 0.2s, 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 getPadding(props: HeaderProps): string {\n const { padding } = props;\n\n return padding || header.padding;\n}\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType || typographyTypes.header;\n}\n\ntype HeaderProps = {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n};\n\nconst HeaderContainer = styled.div`\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: ${getPadding};\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\ntype BodyProps = {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n};\n\nconst Body = styled.div<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\ntype 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<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\ntype 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: { [k: 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\ntype LinkProps = { isCurrent?: boolean };\n\nexport const Link = styled.a<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)`\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,\n readOnly,\n disabled,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired,\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 joinClassNames,\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\ntype WrapperProps = {\n top: Property.Top;\n};\n\nconst Wrapper = styled.div<WrapperProps>`\n box-sizing: border-box;\n position: absolute;\n 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 const wrapperProps = {\n top,\n className: joinClassNames(className, htmlPropsClassName),\n style,\n };\n\n return (\n <Wrapper {...wrapperProps}>\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 { reference, floating, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, floating, 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: reference,\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 } 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 = {\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 }\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 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);\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 const backdropProps = {\n isOpen: hasTransitionedIn && isOpen,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: combinedRef,\n role: 'dialog',\n 'aria-modal': true,\n 'aria-hidden': !isOpen,\n tabIndex: -1,\n 'aria-labelledby': headerId,\n id: modalId,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop {...backdropProps}>\n <Container {...containerProps} elevation={4}>\n <ContentContainer>\n {header && (\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 {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\ntype BackdropProps = { isOpen: boolean };\n\nexport const Backdrop = styled.div<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) || 0;\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\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\ntype ContainerProps = {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n};\n\nconst Container = styled(Paper)<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 ${widthProps}\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 type 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, () => isOpen && onClose && onClose());\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 type 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 { 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\ntype WrapperProps = {\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 ${sizeProps}\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ntype 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 type 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\n const popoverRef = useReturnFocusOnBlur(\n isOpen,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement\n );\n\n const { reference, floating, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n const multiRef = useCombinedRef(ref, popoverRef, floating);\n\n useEffect(() => {\n anchorElement ? reference(anchorElement) : reference(null);\n }, [anchorElement]);\n\n const elements: (HTMLElement | null)[] = [\n popoverRef.current as HTMLElement,\n ];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: multiRef,\n isOpen,\n hasTransitionedIn,\n tabIndex: -1,\n style: { ...htmlProps.style, ...styles.floating },\n role: 'dialog',\n };\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper {...wrapperProps} elevation={3} border=\"light\">\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer hasTitle={!!title} withCloseButton={withCloseButton}>\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 type 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\ntype 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: border-color 0.2s, background-color 0.2s, 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 const inputProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n type: 'checkbox',\n };\n\n const containerProps = {\n htmlFor: uniqueId,\n };\n\n return (\n <Container {...containerProps}>\n <HiddenInput {...inputProps} />\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\ntype GroupProps = { direction?: Direction };\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) =>\n 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\ntype 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\ntype 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\ntype 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: box-shadow 0.2s, border-bottom 0.2s, 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 const buttonProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: combinedRef,\n 'aria-selected': active,\n role: 'tab',\n active,\n direction: tabContentDirection,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n tabIndex: focus ? 0 : -1,\n };\n return (\n <Button {...buttonProps}>\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\ntype 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 const panelProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n tabIndex: 0,\n role: 'tabpanel',\n active,\n };\n return <Panel {...panelProps}>{children}</Panel>;\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\ntype 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\ntype 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 type 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 && 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\ntype 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: border-color 0.2s, background-color 0.2s, box-shadow 0.2s,\n color 0.2s, ${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\ntype 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\ntype 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<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) =>\n 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 type 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\ntype 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<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\nconst removeInvalidChildren = (children: ReactNode) =>\n Children.toArray(children).filter(isValidElement);\n\nconst passIndexPropToProgressTrackerItem = (children: ReactElement[]) =>\n Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\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\ntype 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\ntype ItemStyleProps = {\n state: ItemState;\n};\n\ntype 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: background-color 0.2s, border-color 0.2s, 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 }) => {\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 }) => {\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 }) =>\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 = {\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 as=\"textarea\"\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 } 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};\n\nexport const StyledInlineInput = styled(StatefulInput)<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)`\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 {\n forwardRef,\n TextareaHTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} 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 CommonInputProps,\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';\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 type TextAreaProps = CommonInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired,\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 && 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\ntype OptionButtonProps = {\n purpose: SplitButtonPurpose;\n};\n\nconst OptionButton = styled(Button)<OptionButtonProps>`\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 type 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<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\ntype RootProps = {\n isDragActive: boolean;\n hasRootErrors: boolean;\n};\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ hasRootErrors }) => (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 label=\"Velg fil\"\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 </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\ntype 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\ntype 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 type 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 onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\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 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 type 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 type 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 type 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 React, { 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 { FlexContainer } from './FlexContainer';\n\ntype RatingContainerProps = {\n layout: Layout;\n};\n\nconst RatingContainer = styled.div<RatingContainerProps>`\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\ntype 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 <FlexContainer flexDirection=\"row\">\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 </FlexContainer>\n )}\n </RatingContainer>\n );\n};\n","import { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\ntype FlexContainerProps = {\n flexDirection: CSSProperties['flexDirection'];\n};\n\nexport const FlexContainer = styled.div<FlexContainerProps>`\n display: flex;\n ${({ flexDirection }) => css`\n flex-direction: ${flexDirection};\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\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 { FlexContainer } from './FlexContainer';\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\n`;\n\ntype 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 <FlexContainer flexDirection=\"column\">\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 label=\"Send inn\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n />\n </FlexContainer>\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","joinClassNames","Typography","React","useContext","HiddenInput","jsx","jsxs","forwardRef","label","useId","joinClassNames","getBaseHTMLProps","Container","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","spaceSeparatedIdListGenerator","Label","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","typographyType","css","getFontStyling","List","forwardRef","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","getPadding","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","joinClassNames","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","ddsBaseTokens","colors","spacing","link","jsx","wrapper","link","Wrapper","styled","Link","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","forwardRef","joinClassNames","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","useEffect","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","useFloatPosition","useCombinedRef","useEffect","useOnClickOutside","useMountTransition","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","styled","css","ddsBaseTokens","jsx","jsxs","styled","ddsBaseTokens","css","Label","styled","ddsBaseTokens","Icon","jsx","jsxs","styled","ddsBaseTokens","Icon","jsx","useState","useEffect","Paragraph"]}
|
|
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/FlexContainer.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 type 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<{ 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<{\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: transform 0.2s ease-in-out, 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 type 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\ntype 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<{ 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\ntype TopBarProps = {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n};\n\nexport type User = {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n};\n\nexport type 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<{ 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\ntype StyledSpinnerProps = Pick<SpinnerProps, 'size'> & {\n outerAnimationDelay: number;\n};\n\nconst StyledSpinner = styled.svg<StyledSpinnerProps>`\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\ntype CircleProps = Pick<SpinnerProps, 'color'> & {\n innerAnimationDelay: number;\n};\n\nconst Circle = styled.circle<CircleProps>`\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;\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,\n size,\n };\n\n const circleProps = {\n innerAnimationDelay,\n color,\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 {...circleProps}\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\ntype 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<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: background-color 0.2s, text-decoration-color 0.2s,\n box-shadow 0.2s, border-color 0.2s, color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) =>\n 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\ntype StyledIconWrapperSpanProps = {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n};\n\nexport const StyledIconWrapperSpan = styled.span<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\ntype LabelProps = {\n isHidden?: boolean;\n};\n\nexport const Label = styled.span<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\ntype ContainerProps = { isOpen: boolean };\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 { reference, floating, refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, floating);\n\n useEffect(() => {\n anchorRef ? reference(anchorRef.current) : reference(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(\n interactiveItems && interactiveItems.length,\n !isOpen\n );\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,\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 && 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 && 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 && contentRef.current)\n 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 && 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\ntype ContentProps = {\n height: Property.Height;\n};\n\nconst Content = styled.div<ContentProps>`\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\ntype 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 type 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 {\n getBaseHTMLProps,\n joinClassNames,\n Nullable,\n} 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,\n readOnly,\n error,\n checked,\n value,\n children,\n required,\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 const containerProps = {\n error: error || radioButtonGroup?.error,\n disabled: disabled || radioButtonGroup?.disabled,\n readOnly: readOnly || radioButtonGroup?.readOnly,\n style,\n className: joinClassNames(className, htmlPropsClassName),\n htmlFor: uniqueId,\n controlType: 'radio',\n hasLabel,\n };\n\n return (\n <Container {...containerProps} htmlFor={uniqueId} controlType=\"radio\">\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\ntype CustomSelectionControlProps = {\n controlType?: SelectionControlType;\n};\n\nexport const CustomSelectionControl = styled.span<CustomSelectionControlProps>`\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\ntype ContainerProps = {\n hasLabel?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n error?: boolean;\n indeterminate?: boolean;\n controlType: SelectionControlType;\n};\n\nexport const Container = styled.label<ContainerProps>`\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: box-shadow 0.2s, background-color 0.2s, 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,\n readOnly,\n direction = 'row',\n value,\n children,\n required,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = 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\ntype WrapperProps = {\n messageType: InputMessageType;\n};\n\nconst InputMessageWrapper = styled.div<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 joinClassNames,\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,\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 const containerProps = {\n error: error || checkboxGroup?.error,\n disabled,\n indeterminate,\n htmlFor: uniqueId,\n hasLabel,\n className: joinClassNames(className, htmlPropsClassName),\n style,\n };\n type AriaChecked = 'mixed' | boolean | undefined;\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n ref,\n name,\n indeterminate,\n 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 };\n\n return (\n <Container {...containerProps} controlType=\"checkbox\">\n <HiddenInput\n {...inputProps}\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,\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 { 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 errorMessage,\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 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 { InputSize, StatefulInput } 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\ntype 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};\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 { Property } from 'csstype';\nimport React, { HTMLAttributes, ReactNode, useId } from 'react';\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 type 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 Record<string, unknown>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends Record<string, unknown>,\n IsMulti extends boolean\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 Record<string, unknown>,\n IsMulti extends boolean = false\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,\n componentSize,\n errorMessage,\n isDisabled,\n readOnly,\n 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\ntype StyledContainerProps = {\n errorMessage?: string;\n isDisabled?: boolean;\n readOnly?: boolean;\n width?: Property.Width;\n componentSize: InputSize;\n isMulti?: boolean;\n};\n\nexport const Container = styled.div<StyledContainerProps>`\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\ntype ContainerProps = Pick<GlobalMessageProps, 'purpose'>;\n\nconst Container = styled.div<ContainerProps>`\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 }) =>\n purpose &&\n 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\ntype ContentContainerProps = Pick<GlobalMessageProps, 'closable'>;\n\nconst ContentContainer = styled.div<ContentContainerProps>`\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 const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n purpose,\n };\n\n return !isClosed ? (\n <Container {...containerProps}>\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<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\ntype InputProps = { componentSize: SearchSize };\n\nconst Input = styled(BaseInput)<InputProps>`\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 }) =>\n 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\ntype StyledSearchIconProps = {\n size: SearchSize;\n};\n\nconst StyledSearchIcon = styled(Icon)<StyledSearchIconProps>`\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\ntype HorisontalContainerProps = {\n hasSearchButton: boolean;\n};\n\nconst HorisontalContainer = styled.div<HorisontalContainerProps>`\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 containerProps = {\n className,\n style,\n };\n\n const inputProps = {\n ...rest,\n ref: combinedRef,\n componentSize,\n 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 !== undefined ? context.inputValue : value,\n onChange: handleChange,\n autoComplete: 'off',\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 {...containerProps}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...inputProps}\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 type 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 { OverflowMenuItem } 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\ntype SuggestionsContainerProps = {\n isHidden?: boolean;\n};\n\nconst SuggestionsContainer = styled(Paper)<SuggestionsContainerProps>`\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\ntype MenuItemProps = {\n size: SearchSize;\n};\n\nconst MenuItem = styled(OverflowMenuItem)<MenuItemProps>`\n ${({ 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(\n suggestions && suggestions.length,\n !showSuggestions\n );\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\ntype WeightedValue = {\n text: string;\n relevance: number;\n};\n\nexport type WeightedSearchData = {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n};\n\nexport type SearchData = {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n};\n\nexport type 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 ? filter(suggestion, query) : 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\ntype StyledTableProps = {\n density: TableDensity;\n stickyHeader?: boolean;\n withDividers?: boolean;\n};\n\nconst StyledTable = styled.table<StyledTableProps>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ density }) =>\n 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 ({ density = 'normal', children, ...rest }, ref) => {\n const tableProps = {\n ref,\n density,\n ...rest,\n };\n\n return <StyledTable {...tableProps}>{children}</StyledTable>;\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\ntype StyledTableProps = {\n isCollapsed?: boolean;\n};\n\nconst StyledTable = styled(Table)<StyledTableProps>`\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 const tableProps = {\n ref,\n density,\n isCollapsed,\n ...rest,\n };\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable {...tableProps}>{children}</StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ntype 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 const headProps = {\n ...rest,\n };\n\n return (\n <StyledHead ref={ref} {...headProps}>\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 const footProps = {\n ...rest,\n };\n\n return (\n <StyledFoot ref={ref} {...footProps}>\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 ({ type = 'body', mode = 'normal', children, ...rest }, ref) => {\n const rowProps = {\n type,\n mode,\n ...rest,\n };\n\n return (\n <StyledRow ref={ref} {...rowProps}>\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\ntype StyledProps = {\n type: TableRowType;\n mode?: RowMode;\n selected?: boolean;\n hoverable?: boolean;\n};\n\nexport const StyledRow = styled.tr<StyledProps>`\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s, border-color 0.2s, 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, selected, 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 ({ type = 'body', mode = 'normal', children, ...rest }, ref) => {\n const rowProps = {\n type,\n mode,\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=\"body\">\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} {...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 {...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} {...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<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\ntype StyledCellProps = { type: TableCellType };\n\nconst StyledCell = styled.td<StyledCellProps>`\n ${({ 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 }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport type 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 const cellProps = {\n as: as,\n type,\n ...rest,\n };\n\n const innerCellProps = {\n layout,\n };\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell ref={ref} {...cellProps}>\n <InnerCell {...innerCellProps}>{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 (\n wrapperRef &&\n wrapperRef.current &&\n isOverflowingX(wrapperRef.current)\n ) {\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 const wrapperProps = {\n ref: wrapperRef,\n overflowX,\n ...rest,\n };\n\n return <Wrapper {...wrapperProps}>{children}</Wrapper>;\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\ntype 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 type 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 setItemsPerPage(option?.value as number);\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,\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\ntype 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 const listProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n listType,\n typographyType,\n as,\n ref,\n };\n\n return <StyledList {...listProps}>{children}</StyledList>;\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\ntype ContainerProps = {\n color: CardColor;\n cardType: CardType;\n};\n\nconst Container = styled.div<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: box-shadow 0.2s, 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 getPadding(props: HeaderProps): string {\n const { padding } = props;\n\n return padding || header.padding;\n}\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType || typographyTypes.header;\n}\n\ntype HeaderProps = {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n};\n\nconst HeaderContainer = styled.div`\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: ${getPadding};\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\ntype BodyProps = {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n};\n\nconst Body = styled.div<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\ntype 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<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\ntype 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: { [k: 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\ntype LinkProps = { isCurrent?: boolean };\n\nexport const Link = styled.a<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)`\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,\n readOnly,\n disabled,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired,\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 joinClassNames,\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\ntype WrapperProps = {\n top: Property.Top;\n};\n\nconst Wrapper = styled.div<WrapperProps>`\n box-sizing: border-box;\n position: absolute;\n 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 const wrapperProps = {\n top,\n className: joinClassNames(className, htmlPropsClassName),\n style,\n };\n\n return (\n <Wrapper {...wrapperProps}>\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 { reference, floating, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, floating, 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: reference,\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 } 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 = {\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 }\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 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);\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 const backdropProps = {\n isOpen: hasTransitionedIn && isOpen,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: combinedRef,\n role: 'dialog',\n 'aria-modal': true,\n 'aria-hidden': !isOpen,\n tabIndex: -1,\n 'aria-labelledby': headerId,\n id: modalId,\n };\n\n const headerContainerProps = {\n id: headerId,\n };\n\n return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop {...backdropProps}>\n <Container {...containerProps} elevation={4}>\n <ContentContainer>\n {header && (\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 {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\ntype BackdropProps = { isOpen: boolean };\n\nexport const Backdrop = styled.div<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) || 0;\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\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\ntype ContainerProps = {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n};\n\nconst Container = styled(Paper)<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 ${widthProps}\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 type 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, () => isOpen && onClose && onClose());\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 type 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 { 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\ntype WrapperProps = {\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 ${sizeProps}\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ntype 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 type 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\n const popoverRef = useReturnFocusOnBlur(\n isOpen,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement\n );\n\n const { reference, floating, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n const multiRef = useCombinedRef(ref, popoverRef, floating);\n\n useEffect(() => {\n anchorElement ? reference(anchorElement) : reference(null);\n }, [anchorElement]);\n\n const elements: (HTMLElement | null)[] = [\n popoverRef.current as HTMLElement,\n ];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: multiRef,\n isOpen,\n hasTransitionedIn,\n tabIndex: -1,\n style: { ...htmlProps.style, ...styles.floating },\n role: 'dialog',\n };\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper {...wrapperProps} elevation={3} border=\"light\">\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer hasTitle={!!title} withCloseButton={withCloseButton}>\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 type 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\ntype 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: border-color 0.2s, background-color 0.2s, 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 const inputProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n type: 'checkbox',\n };\n\n const containerProps = {\n htmlFor: uniqueId,\n };\n\n return (\n <Container {...containerProps}>\n <HiddenInput {...inputProps} />\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\ntype GroupProps = { direction?: Direction };\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) =>\n 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\ntype 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\ntype 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\ntype 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: box-shadow 0.2s, border-bottom 0.2s, 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 const buttonProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref: combinedRef,\n 'aria-selected': active,\n role: 'tab',\n active,\n direction: tabContentDirection,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n tabIndex: focus ? 0 : -1,\n };\n return (\n <Button {...buttonProps}>\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\ntype 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 const panelProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n tabIndex: 0,\n role: 'tabpanel',\n active,\n };\n return <Panel {...panelProps}>{children}</Panel>;\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\ntype 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\ntype 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 type 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 && 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\ntype 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: border-color 0.2s, background-color 0.2s, box-shadow 0.2s,\n color 0.2s, ${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\ntype 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\ntype 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<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) =>\n 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 type 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\ntype 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<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\nconst removeInvalidChildren = (children: ReactNode) =>\n Children.toArray(children).filter(isValidElement);\n\nconst passIndexPropToProgressTrackerItem = (children: ReactElement[]) =>\n Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\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\ntype 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\ntype ItemStyleProps = {\n state: ItemState;\n};\n\ntype 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: background-color 0.2s, border-color 0.2s, 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 }) => {\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 }) => {\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 }) =>\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 = {\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 as=\"textarea\"\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 } 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};\n\nexport const StyledInlineInput = styled(StatefulInput)<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)`\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,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired,\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 && 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\ntype OptionButtonProps = {\n purpose: SplitButtonPurpose;\n};\n\nconst OptionButton = styled(Button)<OptionButtonProps>`\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 type 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<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\ntype RootProps = {\n isDragActive: boolean;\n hasRootErrors: boolean;\n};\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ hasRootErrors }) => (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\ntype 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\ntype 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 type 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 onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\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 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 type 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 type 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 type 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 React, { 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 { FlexContainer } from './FlexContainer';\n\ntype RatingContainerProps = {\n layout: Layout;\n};\n\nconst RatingContainer = styled.div<RatingContainerProps>`\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\ntype 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 <FlexContainer flexDirection=\"row\">\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 </FlexContainer>\n )}\n </RatingContainer>\n );\n};\n","import { CSSProperties } from 'react';\nimport styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\ntype FlexContainerProps = {\n flexDirection: CSSProperties['flexDirection'];\n};\n\nexport const FlexContainer = styled.div<FlexContainerProps>`\n display: flex;\n ${({ flexDirection }) => css`\n flex-direction: ${flexDirection};\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\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 { FlexContainer } from './FlexContainer';\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\n`;\n\ntype 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 <FlexContainer flexDirection=\"column\">\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 </FlexContainer>\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","joinClassNames","Typography","React","useContext","HiddenInput","jsx","jsxs","forwardRef","label","useId","joinClassNames","getBaseHTMLProps","Container","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","spaceSeparatedIdListGenerator","Label","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","typographyType","css","getFontStyling","List","forwardRef","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","getPadding","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","joinClassNames","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","ddsBaseTokens","colors","spacing","link","jsx","wrapper","link","Wrapper","styled","Link","getFontStyling","defaultTypographyType","focusVisibleTransitionValue","forwardRef","joinClassNames","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","useEffect","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","useFloatPosition","useCombinedRef","useEffect","useOnClickOutside","useMountTransition","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","styled","css","ddsBaseTokens","jsx","jsxs","styled","ddsBaseTokens","css","Label","styled","ddsBaseTokens","Icon","jsx","jsxs","styled","ddsBaseTokens","Icon","jsx","useState","useEffect","Paragraph"]}
|