@norges-domstoler/dds-components 13.10.2 → 13.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.styles.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/utils/renderInputMessage.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/utils/icon.ts","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Table.tsx","../src/components/Table/Table.tokens.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Head.tsx","../src/components/Table/Body.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/Cell.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.tsx","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/Datepicker/Datepicker.tsx","../src/components/Datepicker/Datepicker.tokens.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.tokens.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.tokens.tsx","../src/components/ToggleButton/ToggleButtonGroup.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tokens.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Feedback/CommentComponent.tsx"],"sourcesContent":["export * from '@norges-domstoler/dds-core';\nexport * from '@norges-domstoler/dds-form';\nexport * from '@norges-domstoler/dds-icons';\nexport * from '@norges-domstoler/dds-typography';\n\nexport * from './components/AppShell';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/Button';\nexport * from './components/TextInput';\nexport * from './components/Select';\nexport * from './components/GlobalMessage';\nexport * from './components/LocalMessage';\nexport * from './components/Search';\nexport * from './components/Table';\nexport * from './components/Breadcrumbs';\nexport * from './components/Pagination';\nexport * from './components/Divider';\nexport * from './components/List';\nexport * from './components/DescriptionList';\nexport * from './components/Spinner';\nexport * from './components/Card';\nexport * from './components/InternalHeader';\nexport * from './components/Datepicker';\nexport * from './components/SkipToContent';\nexport * from './components/Tooltip';\nexport * from './components/Modal';\nexport * from './components/Drawer';\nexport * from './components/OverflowMenu';\nexport * from './components/Popover';\nexport * from './components/InputMessage';\nexport * from './components/ToggleButton';\nexport * from './components/Tabs';\nexport * from './components/Tag';\nexport * from './components/Chip';\nexport * from './components/VisuallyHidden';\nexport * from './components/ScrollableContainer';\nexport * from './components/ToggleBar';\nexport * from './components/Grid';\nexport * from './components/ProgressTracker';\nexport * from './components/InlineEdit';\nexport * from './components/TextArea';\nexport * from './components/SplitButton';\nexport * from './components/Stack';\nexport * from './components/FileUploader';\nexport * from './components/EmptyContent';\nexport * from './components/BackLink';\nexport * from './components/Feedback';\n","import { PropsWithChildren, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { Navigation } from './Navigation/Navigation';\nimport { User } from './Navigation/TopBar';\nimport { OverflowMenuProps } from '../OverflowMenu';\nimport {\n Environment,\n EnvironmentBanner,\n ENVIRONMENT_BANNER_HEIGHT,\n} from '@norges-domstoler/development-utils';\nimport { AppShellContextProvider } from './AppShellContext';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n}: AppShellProps) => {\n const environmentBannerActive = environment !== 'PROD';\n return (\n <AppShellContextProvider>\n <AppShellContainer>\n <EnvironmentBanner environment={environment} />\n <Navigation\n user={user}\n userMenuItems={userMenuItems}\n version={version}\n internal={internal}\n external={external}\n environmentBannerActive={environmentBannerActive}\n />\n <MainContent environmentBannerActive={environmentBannerActive}>\n {children}\n </MainContent>\n </AppShellContainer>\n </AppShellContextProvider>\n );\n};\n\nAppShell.displayName = 'AppShell';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors, spacing, fontPackages, borderRadius, breakpoints } =\n ddsBaseTokens;\n\nconst navigationItems = {\n gap: spacing.SizesDdsSpacingLocalX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\n external: {\n ...fontPackages.body_sans_01.base,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDark,\n },\n active: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorPrimaryDarker,\n },\n },\n};\n\nconst logoAndVersion = {\n padding: '36px 24px',\n color: colors.DdsColorNeutralsWhite,\n logo: {\n ...fontPackages.heading_sans_05.base,\n fontWeight: 700,\n small: {\n ...fontPackages.heading_sans_03.base,\n fontWeight: 600,\n },\n },\n version: {\n ...fontPackages.supportingStyle_tiny_01.base,\n },\n};\n\nconst topBar = {\n padding: spacing.SizesDdsSpacingLocalX025,\n height: `calc(${spacing.SizesDdsSpacingLayoutX3} + 2 * ${spacing.SizesDdsSpacingLocalX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingLocalX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingLocalX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingLocalX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import { Children, ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { Divider } from '../../Divider';\nimport { NavigationItem } from './NavigationItem';\nimport { TopBar, User } from './TopBar';\nimport { NavigationLogo } from './NavigationLogo';\nimport { OverflowMenuProps } from '../../OverflowMenu';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\n}: NavigationProps) => {\n const { isOpen, setOpen } = useAppShellContext();\n\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n if (event.key === 'o') {\n setOpen(prev => !prev);\n }\n };\n\n window.addEventListener('keypress', listener);\n return () => window.removeEventListener('keypress', listener);\n });\n\n return (\n <div>\n <TopBar\n user={user}\n userMenuItems={userMenuItems}\n isNavigationOpen={isOpen}\n onNavigationOpenChange={newOpen => setOpen(newOpen)}\n environmentBannerActive={environmentBannerActive}\n />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>Lovisa</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\n\nexport type DividerColor = 'primary' | 'primaryLighter';\n\nconst StyledDivider = styled.hr<DividerProps>`\n border: 0;\n background-color: transparent;\n border-top: ${tokens.borderTop};\n margin-top: ${tokens.marginTop};\n margin-bottom: ${tokens.marginBottom};\n ${({ color }) =>\n color &&\n css`\n border-color: ${tokens.color[color].borderColor};\n `}\n`;\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje. */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { color = 'primary', id, className, htmlProps, ...rest } = props;\n\n const lineProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n color,\n };\n\n return <StyledDivider ref={ref} {...lineProps} />;\n});\n\nDivider.displayName = 'Divider';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing } = ddsBaseTokens;\n\nconst divider = {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n marginTop: spacing.SizesDdsSpacingLocalX1,\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import styled from 'styled-components';\nimport { type PropsOf, type As } from '@norges-domstoler/dds-core';\nimport {\n Icon,\n SvgIcon,\n ChevronRightIcon,\n OpenExternalIcon,\n} from '@norges-domstoler/dds-icons';\nimport { type MouseEventHandler } from 'react';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst navItemTokens = navTokens.navigationItems.item;\n\nconst IconContainer = styled.div`\n grid-area: icon;\n display: flex;\n align-items: center;\n`;\n\nconst TextContainer = styled.span`\n grid-area: text;\n`;\n\nconst ChevronContainer = styled.div`\n display: flex;\n align-items: center;\n opacity: 0;\n grid-area: chevron;\n`;\n\nconst BaseLink = styled.a`\n padding: ${navItemTokens.padding};\n gap: ${navItemTokens.gap};\n border-radius: ${navItemTokens.borderRadius};\n\n text-decoration: none;\n color: ${navItemTokens.color};\n font-size: ${navItemTokens.fontSize};\n font-style: ${navItemTokens.fontStyle};\n font-family: ${navItemTokens.fontFamily};\n font-weight: ${navItemTokens.fontWeight};\n line-height: ${navItemTokens.lineHeight};\n letter-spacing: ${navItemTokens.letterSpacing};\n\n :hover:not(.active) {\n background-color: ${navItemTokens.hover.backgroundColor};\n }\n\n &.active {\n color: ${navItemTokens.active.color};\n background-color: ${navItemTokens.active.backgroundColor};\n }\n`;\n\nconst InternalNavItem = styled(BaseLink)`\n display: grid;\n align-items: center;\n grid-template-areas: 'icon text chevron';\n grid-template-columns: min-content 1fr min-content;\n\n &.active ${ChevronContainer} {\n opacity: 1;\n }\n`;\n\nconst ExternalNavItem = styled(BaseLink)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n font-size: ${navItemTokens.external.fontSize};\n font-style: ${navItemTokens.external.fontStyle};\n font-family: ${navItemTokens.external.fontFamily};\n font-weight: ${navItemTokens.external.fontWeight};\n line-height: ${navItemTokens.external.lineHeight};\n letter-spacing: ${navItemTokens.external.letterSpacing};\n`;\n\ntype BaseNavigationItemProps = (\n | {\n icon: SvgIcon;\n active?: boolean;\n external?: undefined | false;\n }\n | { external: true; active?: undefined | false; icon?: undefined }\n) & { onClick?: MouseEventHandler };\n\ntype NavigationItemProps<T extends As = 'a'> = PropsOf<T> &\n BaseNavigationItemProps;\n\nexport const NavigationItem = <T extends As = 'a'>({\n as: _as,\n active,\n icon,\n external,\n children,\n onClick: propOnClick,\n ...rest\n}: NavigationItemProps<T>) => {\n const { setOpen } = useAppShellContext();\n const Comp = _as ?? 'a';\n\n const onClick: MouseEventHandler = e => {\n propOnClick?.(e);\n setOpen(false);\n };\n if (external) {\n return (\n <ExternalNavItem as={Comp} {...rest} onClick={onClick}>\n {children}\n <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />\n </ExternalNavItem>\n );\n }\n\n return (\n <InternalNavItem\n as={Comp}\n {...rest}\n onClick={onClick}\n className={[active ? 'active' : '', rest.className].join(' ')}\n >\n <IconContainer>{icon && <Icon icon={icon} />}</IconContainer>\n <TextContainer>{children}</TextContainer>\n <ChevronContainer>\n <Icon icon={ChevronRightIcon} />\n </ChevronContainer>\n </InternalNavItem>\n );\n};\n\nNavigationItem.displayName = 'AppShell.NavItem';\n","import {\n type ReactNode,\n type SetStateAction,\n type Dispatch,\n createContext,\n useState,\n useContext,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => {},\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import styled from 'styled-components';\nimport { MenuIcon, CloseIcon, SvgProps } from '@norges-domstoler/dds-icons';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\n\nimport { EmbeteIcon, EmbeteType } from './EmbeteIcon';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuProps,\n} from '../../OverflowMenu';\n\nconst { navigation: navTokens, floatingActionButtons } = appShellTokens;\n\nconst LogoBurgerGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst ActionButtonGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst IconButton = styled(Button).attrs({\n appearance: 'borderless',\n purpose: 'secondary',\n})`\n color: ${navTokens.topBar.buttonTextColor};\n > :first-child {\n font-size: 1.65rem;\n }\n @media (max-width: ${navTokens.mobile.breakpoint}) {\n border: 0;\n box-shadow: none;\n padding: 12px;\n &:hover,\n &:active {\n color: ${navTokens.topBar.buttonTextColor};\n text-decoration-color: ${navTokens.topBar.buttonTextColor};\n box-shadow: none;\n }\n gap: 0;\n }\n`;\n\nconst IconButtonText = styled.span`\n display: none; // Ikke vis tekst på mobil\n width: 0;\n`;\n\nconst Bar = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${navTokens.topBar.gap};\n width: 100vw;\n height: ${navTokens.topBar.height};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n z-index: 101;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : '0'};\n left: 0;\n right: 0;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n justify-content: flex-end;\n background-color: transparent;\n margin-left: ${navTokens.width};\n width: calc(100vw - ${navTokens.width});\n\n pointer-events: none;\n & > * {\n pointer-events: initial;\n }\n\n ${LogoBurgerGroup} {\n display: none;\n }\n\n ${ActionButtonGroup} {\n padding-right: calc(2 * ${navTokens.topBar.gap});\n gap: ${floatingActionButtons.gap};\n }\n\n ${IconButton} {\n background-color: ${floatingActionButtons.backgroundColor};\n color: ${floatingActionButtons.textColor};\n box-shadow: 8px 16px 32px 0px rgba(0, 0, 0, 0.1);\n border-radius: ${floatingActionButtons.borderRadius};\n\n ${IconButtonText} {\n display: unset;\n }\n }\n }\n`;\n\ninterface TopBarProps {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n}\n\nexport interface User {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n}\n\nexport interface Embete {\n /**Navnet på embetet. */\n name: string;\n /**Hvilken instans embetet er. */\n type: EmbeteType;\n}\n\nexport const TopBar = ({\n user,\n userMenuItems,\n isNavigationOpen,\n onNavigationOpenChange,\n environmentBannerActive,\n}: TopBarProps) => {\n const Icon = (props: SvgProps) => (\n <EmbeteIcon {...props} type={user.embete.type} />\n );\n\n return (\n <Bar environmentBannerActive={environmentBannerActive}>\n <LogoBurgerGroup>\n <IconButton\n icon={isNavigationOpen ? CloseIcon : MenuIcon}\n onClick={() => onNavigationOpenChange(!isNavigationOpen)}\n />\n <NavigationLogo small>Lovisa</NavigationLogo>\n </LogoBurgerGroup>\n <ActionButtonGroup>\n <OverflowMenuGroup>\n <IconButton\n icon={Icon}\n label={<IconButtonText>{user.name}</IconButtonText>}\n />\n <OverflowMenu items={userMenuItems} />\n </OverflowMenuGroup>\n </ActionButtonGroup>\n </Bar>\n );\n};\n","import {\n JordskifterettIcon,\n LagmannsrettIcon,\n PersonIcon,\n SvgProps,\n TingrettIcon,\n} from '@norges-domstoler/dds-icons';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ElementType, forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\n\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { Spinner } from '../Spinner';\nimport { ButtonProps } from './Button.types';\nimport { ButtonWrapper, StyledIconWrapperSpan, Label } from './Button.styles';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nimport { ButtonSize } from '.';\n\nconst { colors, border, spacing, fontPackages, borderRadius, outerShadow } =\n ddsBaseTokens;\n\nexport const typographyTypes: {\n [k in ButtonSize]: StaticTypographyType;\n} = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTinyPx = calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeSmallPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeMediumPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n);\nconst iconSizeLargePx = calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n);\n\nconst svgOffset = spacing.SizesDdsSpacingLocalX0125NumberPx;\n\nconst filledButtonColors = {\n primary: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray8,\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray2,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray3,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n },\n danger: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorDangerDarker,\n borderColor: colors.DdsColorDangerDarker,\n },\n },\n },\n};\n\nconst sizes = {\n large: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeLargePx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${\n spacing.SizesDdsSpacingLocalX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${\n spacing.SizesDdsSpacingLocalX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport { getTextColor, TextColor } from '@norges-domstoler/dds-core';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = React.useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import styled, { css } from 'styled-components';\nimport { normalizeButton, selection } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n ButtonAppearance,\n ButtonPurpose,\n ButtonSize,\n IconPosition,\n} from './Button.types';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { selection, visibilityTransition } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useFloatPosition,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { Divider } from '../Divider';\nimport {\n OverflowMenuContextItem,\n OverflowMenuNavItem,\n OverflowMenuProps,\n} from '.';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { PersonIcon } from '@norges-domstoler/dds-icons';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n RefObject,\n useEffect,\n useRef,\n useState,\n useCallback,\n MouseEvent,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\n\nconst { track, thumb, minThumbHeightPx } = tokens;\n\nconst ScrollbarOuterWrapper = styled.div``;\n\nconst ScrollbarElements = styled.div`\n display: block;\n height: 100%;\n position: relative;\n display: grid;\n justify-items: center;\n`;\n\nconst Track = styled.div`\n bottom: 0;\n top: 0;\n position: absolute;\n background-color: ${track.backgroundColor};\n border-radius: ${track.borderRadius};\n width: ${track.width};\n`;\n\nconst Thumb = styled.div`\n position: absolute;\n background-color: ${thumb.base.backgroundColor};\n border-radius: ${thumb.base.borderRadius};\n width: ${thumb.base.width};\n transition: background-color 0.2s;\n &:hover {\n background-color: ${thumb.hover.backgroundColor};\n }\n`;\n\nexport type ScrollbarProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Ref til container med innholdet som skal scrolles. */\n contentRef?: RefObject<HTMLDivElement>;\n }\n>;\n\nexport const Scrollbar = (props: ScrollbarProps) => {\n const { id, className, htmlProps, contentRef, ...rest } = props;\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const [thumbHeight, setThumbHeight] = useState(minThumbHeightPx);\n const [isScrollable, setIsScrollable] = useState(true);\n const [thumbTop, setThumbTop] = useState<number>(0);\n const observer = useRef<ResizeObserver | null>(null);\n const [scrollStartPosition, setScrollStartPosition] = useState<number>(0);\n const [initialScrollTop, setInitialScrollTop] = useState<number>(0);\n const [isDragging, setIsDragging] = useState(false);\n\n function handleResize(ref: HTMLDivElement, trackSize: number) {\n const { clientHeight, scrollHeight } = ref;\n setIsScrollable(clientHeight !== scrollHeight);\n setThumbHeight(\n Math.max((clientHeight / scrollHeight) * trackSize, minThumbHeightPx),\n );\n }\n\n const handleTrackClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (contentRef?.current) {\n const { current: trackCurrent } = trackRef;\n const { current: contentCurrent } = contentRef;\n if (trackCurrent && contentCurrent) {\n const { clientY } = e;\n const target = e.target as HTMLDivElement;\n const rect = target.getBoundingClientRect();\n const trackTop = rect.top;\n const thumbOffset = -(thumbHeight / 2);\n const clickRatio =\n (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;\n const scrollAmount = Math.floor(\n clickRatio * contentCurrent.scrollHeight,\n );\n contentCurrent.scrollTo({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n },\n [thumbHeight],\n );\n\n const handleThumbPositioning = useCallback(() => {\n if (!contentRef?.current || !trackRef.current || !thumbRef.current) {\n return;\n }\n const { scrollTop: contentTop, scrollHeight: contentHeight } =\n contentRef.current;\n const { clientHeight } = trackRef.current;\n let newTop = (+contentTop / +contentHeight) * clientHeight;\n newTop = Math.min(newTop, clientHeight - thumbHeight);\n setThumbTop(newTop);\n }, []);\n\n useEffect(() => {\n if (contentRef?.current && trackRef.current) {\n const ref = contentRef.current;\n const { clientHeight } = trackRef.current;\n observer.current = new ResizeObserver(() => {\n handleResize(ref, clientHeight);\n });\n observer.current.observe(ref);\n ref.addEventListener('scroll', handleThumbPositioning);\n return () => {\n observer.current?.unobserve(ref);\n ref.removeEventListener('scroll', handleThumbPositioning);\n };\n }\n }, []);\n\n const handleThumbMousedown = useCallback((e: MouseEvent<HTMLDivElement>) => {\n setScrollStartPosition(e.clientY);\n if (contentRef?.current) setInitialScrollTop(contentRef.current.scrollTop);\n setIsDragging(true);\n }, []);\n\n const handleThumbMouseup = useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n }\n }, [isDragging]);\n\n const handleThumbMousemove = useCallback(\n (e: globalThis.MouseEvent) => {\n if (contentRef?.current) {\n if (isDragging) {\n const {\n scrollHeight: contentScrollHeight,\n offsetHeight: contentOffsetHeight,\n } = contentRef.current;\n\n const deltaY =\n (e.clientY - scrollStartPosition) *\n (contentOffsetHeight / thumbHeight);\n const newScrollTop = Math.min(\n initialScrollTop + deltaY,\n contentScrollHeight - contentOffsetHeight,\n );\n\n contentRef.current.scrollTop = newScrollTop;\n }\n }\n },\n [isDragging, scrollStartPosition, thumbHeight],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', handleThumbMousemove);\n document.addEventListener('mouseup', handleThumbMouseup);\n document.addEventListener('mouseleave', handleThumbMouseup);\n return () => {\n document.removeEventListener('mousemove', handleThumbMousemove);\n document.removeEventListener('mouseup', handleThumbMouseup);\n document.removeEventListener('mouseleave', handleThumbMouseup);\n };\n }, [handleThumbMousemove, handleThumbMouseup]);\n\n return isScrollable ? (\n <ScrollbarOuterWrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ScrollbarElements>\n <Track ref={trackRef} onClick={handleTrackClick} />\n <Thumb\n style={{\n height: thumbHeight,\n top: thumbTop,\n }}\n ref={thumbRef}\n onMouseDown={handleThumbMousedown}\n />\n </ScrollbarElements>\n </ScrollbarOuterWrapper>\n ) : null;\n};\n\nScrollbar.displayName = 'Scrollbar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nexport const scrollbarWidthNumberPx = 10;\nconst scrollbarWidth = `${scrollbarWidthNumberPx}px`;\nconst { colors, spacing } = ddsBaseTokens;\n\nconst track = {\n backgroundColor: 'transparent',\n borderRadius: '100px',\n width: scrollbarWidth,\n};\n\nconst thumb = {\n base: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',\n borderRadius: '100px',\n width: scrollbarWidth,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)',\n },\n};\n\nconst content = {\n paddingRight: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Scrollbar } from './Scrollbar';\nimport { Property } from 'csstype';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Property } from 'csstype';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n Dispatch,\n SetStateAction,\n MouseEvent,\n KeyboardEvent,\n ForwardedRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { normalizeButton } from '@norges-domstoler/dds-core';\nimport {\n focusVisibleLink,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { border, borderRadius, colors, spacing, fontPackages } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst element = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n};\n\nconst iconHeight = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst link = {\n iconWrapper: {\n height: `${iconHeight}px`,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nconst container = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst divider = {\n marginRight: spacing.SizesDdsSpacingLocalX15,\n marginLeft: spacing.SizesDdsSpacingLocalX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingLocalX0125NumberPx,\n};\n","import {\n useRef,\n useState,\n Children as ReactChildren,\n ReactNode,\n isValidElement,\n cloneElement,\n ReactElement,\n useId,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { AppShell as BaseAppShell, AppShellProps } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { ChangeEvent, forwardRef, useId } from 'react';\nimport {\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 = false,\n readOnly = false,\n error = false,\n checked,\n value,\n children,\n required = false,\n onChange,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n type: 'radio',\n name: name ?? radioButtonGroup?.name,\n disabled:\n disabled ||\n readOnly ||\n !!radioButtonGroup?.disabled ||\n !!radioButtonGroup?.readOnly,\n required: required || !!radioButtonGroup?.required,\n checked:\n typeof checked !== 'undefined'\n ? checked\n : isValueEqualToGroupValueOrFalsy(value, radioButtonGroup),\n onChange: handleChange,\n value: value,\n 'aria-describedby':\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': error || radioButtonGroup?.error ? true : undefined,\n };\n\n return (\n <Container\n $error={error || radioButtonGroup?.error}\n disabled={disabled || radioButtonGroup?.disabled}\n $readOnly={readOnly || radioButtonGroup?.readOnly}\n style={style}\n className={joinClassNames(className, htmlPropsClassName)}\n $hasLabel={hasLabel}\n htmlFor={uniqueId}\n $controlType=\"radio\"\n >\n <HiddenInput {...inputProps} ref={ref} />\n <CustomSelectionControl $controlType=\"radio\" />\n <Typography as=\"span\">{children ?? label}</Typography>\n </Container>\n );\n },\n);\n\nRadioButton.displayName = 'RadioButton';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport React, { ChangeEvent, useContext } from 'react';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n React.createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\nimport { Direction } from '@norges-domstoler/dds-core';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n} from '@norges-domstoler/dds-form';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\n\nconst {\n selectionControl,\n container,\n checkmark,\n groupContainer,\n outerGroupContainer,\n} = selectionControlTokens;\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\nexport const CustomSelectionControl = styled.span<{\n $controlType?: SelectionControlType;\n}>`\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: ${selectionControl.base.border};\n border-color: ${selectionControl.base.borderColor};\n background-color: ${selectionControl.base.backgroundColor};\n border-radius: ${selectionControl.base.borderRadius};\n height: ${selectionControl.base.height};\n width: ${selectionControl.base.width};\n ${({ $controlType }) =>\n $controlType === 'radio' &&\n css`\n border-radius: 50%;\n `}\n &:after {\n content: '';\n position: absolute;\n display: none;\n }\n`;\n\nexport const Container = styled.label<{\n $hasLabel?: boolean;\n disabled?: boolean;\n $readOnly?: boolean;\n $error?: boolean;\n $controlType: SelectionControlType;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n width: fit-content;\n color: ${container.color};\n ${({ $hasLabel }) =>\n $hasLabel\n ? css`\n padding-left: ${container.withLabel.paddingLeft};\n `\n : css`\n padding: ${container.noLabel.padding};\n `}\n\n input ~ ${CustomSelectionControl} {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s;\n }\n }\n\n &:focus-within {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.base.backgroundColor};\n box-shadow: ${selectionControl.hover.base.boxShadow};\n border-color: ${selectionControl.hover.base.borderColor};\n }\n\n input:checked:enabled\n ~ ${CustomSelectionControl},\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n border-color: ${selectionControl.checked.base.borderColor};\n background-color: ${selectionControl.checked.base.backgroundColor};\n }\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:enabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.hover.backgroundColor};\n box-shadow: ${selectionControl.checked.hover.boxShadow};\n border-color: ${selectionControl.checked.hover.borderColor};\n }\n\n ${({ $error }) =>\n $error &&\n css`\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.danger.backgroundColor};\n box-shadow: ${selectionControl.hover.danger.boxShadow};\n border-color: ${selectionControl.hover.danger.borderColor};\n }\n input\n ~ ${CustomSelectionControl},\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl} {\n box-shadow: ${selectionControl.danger.boxShadow};\n border-color: ${selectionControl.danger.borderColor};\n }\n `}\n input:disabled ~ ${CustomSelectionControl} {\n ${selectionControl.disabled}\n }\n input:checked:disabled\n ~ ${CustomSelectionControl},\n input:disabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.disabled.backgroundColor};\n border-color: ${selectionControl.checked.disabled.borderColor};\n }\n input:checked\n ~ ${CustomSelectionControl}:after,\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl}:after {\n display: block;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: not-allowed;\n color: ${container.disabled.color};\n `}\n ${({ $controlType }) =>\n $controlType === 'checkbox'\n ? css`\n ${CustomSelectionControl}:after {\n border: solid ${checkmark.checkbox.borderColor};\n\n border-width: 0 1px 1px 0;\n left: 35%;\n top: 10%;\n width: 30%;\n height: 65%;\n transform: rotate(45deg);\n }\n input[data-indeterminate='true'] ~ ${CustomSelectionControl}:after {\n border-width: 1px 0 0 0;\n left: 25%;\n top: 50%;\n width: 50%;\n height: 1px;\n transform: none;\n }\n `\n : css`\n ${CustomSelectionControl}:after {\n border-radius: 50%;\n background-color: ${checkmark.radio.backgroundColor};\n width: ${checkmark.radio.width};\n height: ${checkmark.radio.height};\n left: ${checkmark.radio.left};\n top: ${checkmark.radio.top};\n }\n `}\n`;\n\nexport const OuterGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerGroupContainer.gap};\n`;\n\nexport const GroupContainer = styled.div<{ $direction: Direction }>`\n display: flex;\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${groupContainer[$direction].gap};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { hoverInputfield, dangerInputfield } from '@norges-domstoler/dds-form';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nconst checkmark = {\n checkbox: {\n borderColor: colors.DdsColorNeutralsWhite,\n },\n radio: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n height: spacing.SizesDdsSpacingLocalX05,\n width: spacing.SizesDdsSpacingLocalX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n },\n};\n\nconst selectionControl = {\n base: {\n border: '1px solid',\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n height: selectionControlSize,\n width: selectionControlSize,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${hoverInputfield.borderColor}`,\n borderColor: hoverInputfield.borderColor,\n },\n danger: {\n backgroundColor: colors.DdsColorDangerLightest,\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n },\n danger: {\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: { backgroundColor: 'transparent' },\n checked: {\n base: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveDark,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n borderColor: colors.DdsColorInteractiveDark,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n readOnly: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n },\n checkbox: {\n indeterminate: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n },\n};\n\nconst container = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n withLabel: {\n paddingLeft: `${\n selectionControlSizeNumberPx + spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingLocalX075,\n },\n column: { gap: spacing.SizesDdsSpacingLocalX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n ChangeEvent,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n Ref,\n useId,\n useState,\n} from 'react';\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n combineHandlers,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Ledetekst for hele gruppen. */\n label?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /**Legger en markør (*) bak label som indikerer at input er påkrevd. Gjør alle barna påkrevd ved å gi dem `required` prop. */\n required?: boolean;\n /**Meldingen som vises ved valideringsfeil. Gir alle barna error prop. */\n errorMessage?: string;\n /**Hjelpetekst for gruppen. */\n tip?: string;\n /**Gir alle barna `disabled` prop. */\n disabled?: boolean;\n /**Gir alle barna `readOnly` prop */\n readOnly?: boolean;\n /**Retningen radioknappene skal gjengis i. */\n direction?: Direction;\n /**Default verdi - en `<RadioButton />` blir forhåndsvalgt. **OBS!** brukes kun når brukeren ikke skal fylle ut selv. */\n value?: T | undefined;\n /**custom id for for gruppen, knytter `label` til gruppen via `aria-label`. */\n groupId?: string;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nconst RadioButtonGroupInner = <T extends string | number = string>(\n props: RadioButtonGroupProps<T>,\n ref: Ref<HTMLDivElement>,\n) => {\n const {\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [groupValue, setGroupValue] = useState<\n string | number | null | undefined\n >(value);\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps = {\n name,\n disabled,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n ref={ref}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"radiogroup\"\n $direction={direction}\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n >\n {children}\n </GroupContainer>\n </RadioButtonGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nexport const RadioButtonGroup = forwardRef(RadioButtonGroupInner) as <\n T extends string | number = string,\n>(\n props: RadioButtonGroupProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n// @ts-expect-error TODO fix RadioButtonGroup type\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","import styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { forwardRef } from 'react';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { ErrorIcon } from '@norges-domstoler/dds-icons';\n\ninterface WrapperProps {\n messageType: InputMessageType;\n}\n\nconst InputMessageWrapper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'messageType',\n})<WrapperProps>`\n display: flex;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n ${({ messageType }) =>\n messageType === 'error'\n ? css`\n color: ${tokens.message.error.color};\n background-color: ${tokens.message.error.backgroundColor};\n padding: ${tokens.message.error.padding};\n gap: ${tokens.message.error.gap};\n `\n : ''}\n svg {\n margin-top: ${tokens.icon.marginTop};\n }\n`;\n\nexport type InputMessageType = 'error' | 'tip';\n\nexport type InputMessageProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Meldingen som vises til brukeren. */\n message: string;\n /** Formålet med meldingen. Påvirker styling. */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = forwardRef<HTMLDivElement, InputMessageProps>(\n (props, ref) => {\n const { message, messageType, id, className, htmlProps, ...rest } = props;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n messageType,\n };\n\n const isError = messageType === 'error';\n\n return (\n <InputMessageWrapper {...wrapperProps}>\n {isError && <Icon icon={ErrorIcon} iconSize=\"inherit\" />}\n <Typography\n typographyType={\n isError ? 'supportingStyleLabel01' : 'supportingStyleHelperText01'\n }\n as=\"span\"\n bold={isError ? true : undefined}\n color={isError ? tokens.message.error.color : undefined}\n >\n {message}\n </Typography>\n </InputMessageWrapper>\n );\n },\n);\n\nInputMessage.displayName = 'InputMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst message = {\n tip: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n error: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\n};\n","import { InputMessage } from '../components/InputMessage';\n\nexport const renderInputMessage = (\n tip?: string,\n tipId?: string,\n errorMessage?: string,\n errorMessageId?: string,\n) => (\n <>\n {errorMessage && errorMessageId && (\n <InputMessage\n message={errorMessage}\n messageType=\"error\"\n id={errorMessageId}\n />\n )}\n {tip && tipId && !errorMessage && (\n <InputMessage message={tip} messageType=\"tip\" id={tipId} />\n )}\n </>\n);\n","import { forwardRef, useId } from 'react';\nimport {\n getBaseHTMLProps,\n 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 = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n\n const {\n style,\n className: htmlPropsClassName,\n ...restHtmlProps\n } = htmlProps;\n\n type AriaChecked = 'mixed' | boolean | undefined;\n\n return (\n <Container\n $error={error || checkboxGroup?.error}\n disabled={disabled}\n htmlFor={uniqueId}\n $hasLabel={hasLabel}\n $controlType=\"checkbox\"\n className={joinClassNames(className, htmlPropsClassName)}\n style={style}\n >\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n ref={ref}\n name={name}\n disabled={disabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={error || checkboxGroup?.error ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? ('mixed' as AriaChecked) : undefined}\n aria-readonly={readOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n />\n <CustomSelectionControl $controlType=\"checkbox\" />\n {hasLabel && (\n <Typography color=\"inherit\" as=\"span\" typographyType=\"bodySans02\">\n {label}\n </Typography>\n )}\n </Container>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport React, { useContext } from 'react';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n React.createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\nimport {\n CheckboxGroupContext,\n CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n OuterGroupContainer,\n GroupContainer,\n} from '../SelectionControl.styles';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna gjengis i. */\n direction?: Direction;\n /**Custom id for for gruppen, knytter ledetekst til gruppen via `aria-label`. */\n groupId?: string;\n /**Meldingen som vises ved valideringsfeil. Sender error-tilstand til barna når det finnes og setter `aria-describedby` for barna. */\n errorMessage?: string;\n tip?: string;\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Innebærer visuell endring. **OBS!** `required` må i tillegg gis til `<Checkbox />` manuelt. */\n required?: boolean;\n }\n>;\n\nexport const CheckboxGroup = (props: CheckboxGroupProps) => {\n const {\n label,\n direction = 'row',\n errorMessage,\n tip,\n required = false,\n groupId,\n children,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = htmlProps;\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-checkboxGroup`;\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueGroupId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueGroupId, 'tip');\n\n const contextProps: CheckboxGroupContextProps = {\n error: hasErrorMessage,\n errorMessageId: errorMessage ? errorMessageId : undefined,\n uniqueGroupId,\n tipId: tip ? tipId : undefined,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n $direction={direction}\n >\n {children}\n </GroupContainer>\n </CheckboxGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import React, {\n useState,\n forwardRef,\n useId,\n useRef,\n useLayoutEffect,\n ComponentProps,\n} from 'react';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n InputSize,\n getDefaultText,\n InputContainer,\n InputAffixContainer,\n StatefulInput,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens } from './TextInput.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport CharCounter from './CharCounter';\nimport { TextAffixProps, TextInputProps } from './TextInput.types';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX025NumberPx\n }px`,\n },\n },\n};\n\nconst affix = {\n border: {\n color: colors.DdsColorNeutralsGray5,\n },\n};\n\nconst icon = {\n color: colors.DdsColorNeutralsGray9,\n sizes: {\n medium: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { InputSize } from '@norges-domstoler/dds-form';\nimport { IconSize } from '@norges-domstoler/dds-icons';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'tiny':\n return 'small';\n }\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n InputProps,\n InputSize,\n StatefulInput,\n} from '@norges-domstoler/dds-form';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import { 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';\nimport { T } from 'vitest/dist/reporters-5f784f42';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n\nconst DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nconst CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nconst CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <InnerSingleValue id={id}>\n {Element ? <Element {...props} /> : props.children}\n </InnerSingleValue>\n </SingleValue>\n);\n\nconst DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nconst DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getFormInputIconSize(size)} />\n </ClearIndicator>\n);\n\nconst DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nconst DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <DropdownIndicator {...props}>\n <Icon icon={ChevronDownIcon} iconSize={getFormInputIconSize(size)} />\n </DropdownIndicator>\n);\n\nconst DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nconst DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n icon?: SvgIcon,\n) => (\n <Control {...props}>\n {icon && (\n <StyledIcon icon={icon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Control>\n);\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst getPlaceholder = (\n placeholder?: ReactNode,\n isMulti?: boolean,\n): ReactNode =>\n placeholder\n ? placeholder\n : isMulti\n ? '-- Velg en eller flere --'\n : '-- Velg fra listen --';\n\ntype WrappedReactSelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>,\n TValue = unknown,\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n TValue = unknown,\n> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten. */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir disabled og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n customOptionElement?: (\n props: OptionProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<TOption, IsMulti, GroupBase<TOption>>;\n\ntype ForwardRefType<TOption, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<TOption, IsMulti, GroupBase<TOption>>\n>;\n\nconst SelectInner = <\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean = false,\n TValue = unknown,\n>(\n props: SelectProps<TOption, IsMulti>,\n ref: ForwardRefType<TOption, IsMulti>,\n) => {\n const {\n id,\n label,\n componentSize = 'medium',\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n readOnly,\n options,\n isMulti,\n value,\n icon,\n defaultValue,\n width = defaultWidth,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n customOptionElement,\n customSingleValueElement,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const containerProps = {\n $width: width,\n $componentSize: componentSize,\n $errorMessage: errorMessage,\n $isDisabled: isDisabled,\n $readOnly: readOnly,\n $isMulti: isMulti,\n className,\n style,\n };\n\n const reactSelectProps: ReactSelectProps<\n TOption,\n IsMulti,\n GroupBase<TOption>\n > = {\n options,\n value,\n defaultValue,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n isDisabled: isDisabled || readOnly,\n isClearable,\n placeholder: getPlaceholder(placeholder, isMulti),\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n classNamePrefix: prefix,\n styles: getCustomStyles<TOption>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n};\n\nexport const Select = React.forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { GroupBase, StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport { Property } from 'csstype';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n InputSize,\n dangerInputfield,\n hoverDangerInputfield,\n focusInputfield,\n hoverInputfield,\n} from '@norges-domstoler/dds-form';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport {\n InputSize,\n InputTypographyTypes,\n inputTypographyTypes,\n} from '@norges-domstoler/dds-form';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing, borderRadius, border } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst placeholderTypographyTypes: { [k in InputSize]: StaticTypographyType } = {\n medium: 'supportingStylePlaceholderText01',\n small: 'supportingStylePlaceholderText02',\n tiny: 'supportingStylePlaceholderText03',\n};\n\nconst multiValueLabelTypographyTypes: {\n [k in InputSize]: StaticTypographyType;\n} = {\n medium: 'bodySans01',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nexport const typographyTypes: {\n control: InputTypographyTypes;\n option: InputTypographyTypes;\n placeholder: { [k in InputSize]: StaticTypographyType };\n noOptionsMessage: { [k in InputSize]: StaticTypographyType };\n groupHeading: StaticTypographyType;\n multiValueLabel: { [k in InputSize]: StaticTypographyType };\n} = {\n control: inputTypographyTypes,\n option: inputTypographyTypes,\n placeholder: placeholderTypographyTypes,\n noOptionsMessage: placeholderTypographyTypes,\n groupHeading: 'supportingStyleHelperText01',\n multiValueLabel: multiValueLabelTypographyTypes,\n};\n\nconst control = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: {\n borderColor: 'transparent',\n backgroundColor: 'transparent',\n },\n isMulti: {\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n};\n\nconst placeholder = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst dropdownIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: {\n color: colors.DdsColorInteractiveBase,\n },\n readOnly: {\n color: 'transparent',\n },\n};\n\nconst clearIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: { color: colors.DdsColorInteractiveBase },\n};\n\nconst loadingIndicator = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst menu = {\n border: '1px solid',\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n marginTop: spacing.SizesDdsSpacingLocalX025,\n marginBottom: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX05,\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n selected: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst noOptionsMessage = {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n};\n\nconst valueContainer = {\n isMulti: {\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const selectTokens = {\n control,\n dropdownIndicator,\n placeholder,\n menu,\n groupHeading,\n option,\n valueContainer,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n clearIndicator,\n loadingIndicator,\n icon,\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport {\n globalMessageTokens as tokens,\n purposeVariants,\n typographyType,\n} from './GlobalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ErrorIcon, InfoIcon, WarningIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { GlobalMessagePurpose } from './GlobalMessage';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingLocalX1}`,\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX15,\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingLocalX075,\n },\n};\n\nexport const purposeVariants: {\n [k in GlobalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n};\n\nexport const globalMessageTokens = {\n container,\n contentContainer,\n icon: {\n marginRight: `${spacing.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Property } from 'csstype';\nimport {\n Typography,\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ErrorIcon,\n TipIcon,\n InfoIcon,\n WarningIcon,\n CheckCircledIcon,\n} from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { LocalMessagePurpose } from './LocalMessage';\n\nconst { colors, spacing, borderRadius, border, outerShadow } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n base: {\n boxShadow: outerShadow.DdsShadow1Onlight,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n purpose: {\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n success: {\n borderColor: colors.DdsColorSuccessLighter,\n backgroundColor: colors.DdsColorSuccessLightest,\n },\n tips: {\n borderColor: colors.DdsColorPrimaryLighter,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n confidential: {\n borderColor: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n },\n};\n\nconst purposeVariants: {\n [k in LocalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n success: {\n icon: CheckCircledIcon,\n closeButtonPurpose: 'secondary',\n },\n tips: {\n icon: TipIcon,\n closeButtonPurpose: 'secondary',\n },\n confidential: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n};\n\nconst icon = {\n marginRight: `${spacing.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n success: {\n color: colors.DdsColorSuccessDarkest,\n },\n tips: {\n color: colors.DdsColorPrimaryDarkest,\n },\n confidential: {\n color: colors.DdsColorDangerDarkest,\n },\n};\n\nexport const localMessageTokens = {\n container,\n purposeVariants,\n icon,\n};\n","import {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n useCombinedRef,\n} from '@norges-domstoler/dds-core';\nimport {\n Input as BaseInput,\n InputProps as BaseInputProps,\n} from '@norges-domstoler/dds-form';\nimport {\n CloseSmallIcon,\n Icon,\n IconSize,\n SearchIcon,\n} from '@norges-domstoler/dds-icons';\nimport { getFontStyling, Label } from '@norges-domstoler/dds-typography';\nimport {\n ButtonHTMLAttributes,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n MouseEvent,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n ChangeEvent,\n createContext,\n MouseEvent,\n RefObject,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { SearchSize } from './Search';\n\nconst { spacing, iconSizes, colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport const typographyTypes: { [k in SearchSize]: StaticTypographyType } = {\n small: 'bodySans01',\n medium: 'bodySans02',\n large: 'bodySans04',\n};\n\nconst paddingLeftSmall = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingLocalX25,\n paddingLeft: spacing.SizesDdsSpacingLocalX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingLocalX05,\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingLocalX1,\n paddingBottom: spacing.SizesDdsSpacingLocalX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingLocalX075,\n color: textDefault.textColor,\n },\n small: {\n top: `calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`,\n },\n medium: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n large: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n};\n\nconst clearButton = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: `calc(50% - 14px)`, // Knappen er 28px høy. Trekker fra 14px for å få den midtstilt.\n color: textDefault.textColor,\n};\n\nconst suggestionsContainer = {\n marginTop: spacing.SizesDdsSpacingLocalX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => {},\n stopPropagation: () => {},\n nativeEvent: new Event('input'),\n persist: () => {},\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport {\n OverflowMenuItem,\n OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { SearchProps, SearchSize } from './Search';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { forwardRef, MouseEvent } from 'react';\nimport { useRoveFocus } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport { derivativeIdGenerator } from '@norges-domstoler/dds-core';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n ChangeEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\nimport { searchFilter } from '@norges-domstoler/dds-core';\nimport {\n AutocompleteSearchContext,\n AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, SearchProps, SearchSize } from './Search';\nimport {\n SearchAutocompleteWrapper,\n SearchAutocompleteWrapperProps,\n SearchData,\n WeightedSearchData,\n} from './SearchAutocompleteWrapper';\n\nimport { SearchSuggestions, SearchSuggestionsProps } from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { tableTokens } from './Table.tokens';\nimport { TableDensity, TableProps } from './Table.types';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingLocalX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingLocalX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingLocalX075,\n marginRight: spacing.SizesDdsSpacingLocalX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Table } from '../Table';\nimport { CollapsibleTableContext } from './Table.context';\nimport { CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n {children}\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\nimport { TableRowProps } from './Table.types';\nimport { StyledRow } from './Table.styles';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import styled, { css } from 'styled-components';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { focusVisibleInset } from '@norges-domstoler/dds-form';\n\nimport { RowMode, TableRowType } from './Table.types';\nimport { tableTokens } from './Table.tokens';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import {\n forwardRef,\n Children,\n useState,\n isValidElement,\n cloneElement,\n ReactElement,\n Fragment,\n useEffect,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\nimport {\n removeButtonStyling,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n AnimatedChevronUpDown,\n} from '@norges-domstoler/dds-core';\n\nimport { Table } from '..';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useCollapsibleTableContext } from './Table.context';\nimport { TableRowProps } from '../Table.types';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n selection,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\n\nconst { term, desc, list } = tokens;\n\ntype DListProps = Pick<DescriptionListProps, 'appearance' | 'direction'>;\n\nconst DList = styled.dl.withConfig({\n shouldForwardProp: prop => prop !== 'appearance' && prop !== 'direction',\n})<DListProps>`\n margin: 0;\n *::selection {\n ${selection}\n }\n ${({ appearance }) =>\n appearance &&\n css`\n dt {\n color: ${term.appearance[appearance].color};\n ${appearance === 'bold' &&\n css`\n font-weight: 600;\n `}\n }\n `}\n display: flex;\n flex-direction: column;\n &:not(:has(> dt):has(> dd)) {\n flex-direction: ${({ direction = 'column' }) => direction};\n }\n flex-wrap: wrap;\n column-gap: ${list.rowDirection.columnGap};\n row-gap: 0;\n & > dt:first-of-type {\n margin-top: ${term.firstOfType.marginTop};\n }\n & > dd:last-child {\n margin-bottom: ${desc.lastChild.marginBottom};\n }\n dd + dt {\n margin-top: ${list.beforeNextTerm.marginTop};\n }\n`;\n\nexport type DescriptionListAppearance = 'small' | 'bold';\n\nexport type DescriptionListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**Påvirker tekst styling. */\n appearance?: DescriptionListAppearance;\n /**Setter flex-direction. NB! Fungerer kun ved bruk av `DescriptionListGroup` som barn av `DescriptionList`.\n * @default \"column\"\n */\n direction?: 'row' | 'column';\n }\n>;\n\nexport const DescriptionList = forwardRef<\n HTMLDListElement,\n DescriptionListProps\n>((props, ref) => {\n const {\n appearance = 'bold',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n appearance,\n direction,\n ref,\n };\n\n return <DList {...dListProps}>{children}</DList>;\n});\n\nDescriptionList.displayName = 'DescriptionList';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst term = {\n appearance: {\n small: {\n color: colors.DdsColorNeutralsGray7,\n },\n bold: {\n color: colors.DdsColorNeutralsGray9,\n },\n },\n firstOfType: {\n marginTop: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n ElementType,\n forwardRef,\n ThHTMLAttributes,\n TdHTMLAttributes,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { DescriptionListDesc } from '../DescriptionList';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**Type celle. Returnerer enten `<td>` eller `<th>`. */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type = 'data', layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import { forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n UnfoldMoreIcon,\n ChevronUpIcon,\n ChevronDownIcon,\n} from '@norges-domstoler/dds-icons';\nimport styled from 'styled-components';\nimport {\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport { Cell, TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Table as BaseTable } from './Table';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport {\n TableProps,\n TableDensity,\n CollapsibleTableProps,\n TableRowProps,\n TableRowType,\n} from './Table.types';\nimport { Head, TableHeadProps } from './Head';\nimport { Body, TableBodyProps } from './Body';\nimport { Foot, TableFootProps } from './Foot';\nimport { Row } from './Row';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { Cell, TableCellProps, TableCellLayout, TableCellType } from './Cell';\nimport { SortCell, TableSortCellProps, SortOrder } from './SortCell';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import { AnchorHTMLAttributes, forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, Children } from 'react';\nimport styled from 'styled-components';\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport {\n removeListStyling,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nconst { icon, list, listItem } = breadcrumbTokens;\n\nconst List = styled.ol`\n ${removeListStyling}\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${list.gap};\n`;\nList.displayName = 'List';\n\nconst ListItem = styled.li`\n align-items: center;\n display: flex;\n gap: ${listItem.gap};\n ${getFontStyling(typographyType)}\n`;\nListItem.displayName = 'ListItem';\n\nconst StyledIcon = styled(Icon)`\n color: ${icon.color};\n`;\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<HTMLElement>;\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { children, id, className, htmlProps, ...rest } = props;\n\n const childrenArray = Children.toArray(children);\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <ListItem key={`breadcrumb-${index}`}>\n {index !== 0 && <StyledIcon icon={icons.ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst listItem = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { forwardRef, HTMLAttributes, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport {\n MoreHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronFirstIcon,\n ChevronLastIcon,\n} from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","import { ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\nimport {\n TypographyBodyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\n\nimport { listTokens as tokens } from './List.tokens';\n\nconst { list, listItem, bullet } = tokens;\n\ninterface StyledListProps {\n $listType: ListType;\n $typographyType: ListTypographyType;\n}\n\nconst StyledList = styled.ul<StyledListProps>`\n margin: ${list.base.margin};\n color: ${list.base.color};\n ul,\n ol {\n margin: 0;\n }\n *::selection {\n ${selection}\n }\n\n ${({ $typographyType }) =>\n $typographyType === 'inherit'\n ? css`\n font: inherit;\n `\n : css`\n ${getFontStyling($typographyType)}\n `}\n\n ${({ $listType }) =>\n $listType === 'unordered'\n ? css`\n padding-left: ${list.ul.paddingLeft};\n list-style: none;\n li {\n position: relative;\n padding-left: ${listItem.ul.paddingLeft};\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: ${bullet.top};\n left: 0;\n background-size: contain;\n background-repeat: no-repeat;\n background-image: ${`url('${bulletLvl1}')`};\n }\n ul > li:before {\n background-image: ${`url('${bulletLvl2}')`};\n }\n ul > li > ul > li:before {\n background-image: ${`url('${bulletLvl3}')`};\n }\n }\n `\n : css`\n padding-left: ${list.ol.paddingLeft};\n & > li > ol {\n list-style-type: lower-alpha;\n }\n & > li > ol > li > ol {\n list-style-type: lower-roman;\n }\n `}\n`;\n\nexport type ListType = 'ordered' | 'unordered';\nexport type ListTypographyType = TypographyBodyType | 'inherit';\n\nexport type ListProps = BaseComponentPropsWithChildren<\n HTMLUListElement | HTMLOListElement,\n {\n /**Spesifiserer om komponenten skal returnere `<ul />` (punktliste) eller `<ol />` (nummerert liste). */\n listType?: ListType;\n /**Spesifiserer typografi for listen. Komponenten arver i utgangspunktet fra forelder, men hvis forelder stiller ikke med relevant styling må det velges `TypographyBodyType` som brukes i `<body>` ellers på siden. */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n (props, ref) => {\n const {\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <StyledList\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as={as}\n ref={ref}\n $listType={listType}\n $typographyType={typographyType}\n >\n {children}\n </StyledList>\n );\n },\n);\n\nList.displayName = 'List';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst ulLiPaddingLeft = `1em + ${spacing.SizesDdsSpacingLocalX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingLocalX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingLocalX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n ul: {\n paddingLeft: `calc(${ulPaddingLeft})`,\n },\n};\n\nconst listItem = {\n lineHeight: '2.5em',\n ul: {\n paddingLeft: `calc(${ulLiPaddingLeft})`,\n },\n};\n\nconst bullet = {\n top: `calc((${listItem.lineHeight} / 2) - 0.5em )`,\n};\n\nexport const listTokens = {\n list,\n listItem,\n bullet,\n spaceLeft: spacing.SizesDdsSpacingLocalX2,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { AnchorHTMLAttributes, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\nimport { cardTokens as tokens } from './Card.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n hoverWithBorder,\n focusVisibleWithBorder,\n} from '@norges-domstoler/dds-form';\n\ninterface ContainerProps {\n color: CardColor;\n cardType: CardType;\n}\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'color' && prop !== 'cardType',\n})<ContainerProps>`\n border: ${tokens.base.border};\n ${getFontStyling(defaultTypographyType)};\n &::selection,\n *::selection {\n ${selection}\n }\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n ${({ color }) =>\n color &&\n css`\n color: ${tokens.colors[color].color};\n background-color: ${tokens.colors[color].backgroundColor};\n border-color: ${tokens.colors[color].borderColor};\n `}\n ${({ cardType }) =>\n cardType === 'navigation'\n ? css`\n text-decoration: none;\n &:hover {\n ${hoverWithBorder}\n }\n &:focus {\n ${focusVisibleWithBorder}\n }\n `\n : cardType === 'expandable'\n ? css`\n width: 100%;\n box-sizing: border-box;\n &:not(:first-of-type) {\n border-top: none;\n }\n `\n : ''}\n`;\nexport type CardColor =\n | 'filledDark'\n | 'filledLight'\n | 'strokeDark'\n | 'strokeLight';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Fargepalett i komponenten. */\n color?: CardColor;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. Ved `'expandable'` må alle `<Card />` grupperte sammen ligge egen `<div>` container. */\n cardType: 'info';\n};\n\nexport type NavigationCardProps = BaseCardProps<HTMLAnchorElement> & {\n cardType: 'navigation';\n} & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n\nexport type ExpandableCardProps = BaseCardProps<HTMLDivElement> & {\n cardType: 'expandable';\n};\n\nexport type CardProps =\n | InfoCardProps\n | NavigationCardProps\n | ExpandableCardProps;\n\nexport const Card = (props: CardProps) => {\n const {\n color = 'filledLight',\n cardType,\n cardRef,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"a\"\n ref={cardRef}\n href={href}\n target={target}\n >\n {children}\n </Container>\n );\n }\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"div\"\n ref={cardRef}\n >\n {children}\n </Container>\n );\n};\n\nCard.displayName = 'Card';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, border } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst base = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n};\n\nconst cardColors = {\n filledLight: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n borderColor: colors.DdsColorPrimaryLightest,\n color: textDefault.textColor,\n },\n filledDark: {\n backgroundColor: colors.DdsColorPrimaryBase,\n borderColor: colors.DdsColorPrimaryBase,\n color: colors.DdsColorNeutralsWhite,\n },\n strokeDark: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n strokeLight: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n};\n\nexport const cardTokens = {\n base: base,\n colors: cardColors,\n};\n","import {\n forwardRef,\n useState,\n useEffect,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useId,\n useCallback,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst Wrapper = styled.div``;\n\nexport type CardAccordionProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om body skal være utvidet ved innlastning. */\n isExpanded?: boolean;\n /**For å lytte til endringer i expanded-state. */\n onChange?: (expanded: boolean) => void;\n }\n>;\n\nexport const CardAccordion = forwardRef<HTMLDivElement, CardAccordionProps>(\n (props, ref) => {\n const {\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [expanded, setExpanded] = useState(isExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-cardAccordion`;\n\n useEffect(() => {\n setExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n const newExpanded = !expanded;\n\n setExpanded(newExpanded);\n\n if (onChange) {\n onChange(newExpanded);\n }\n }, [expanded, onChange]);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n const headerId = `${accordionId}-header`;\n const bodyId = `${accordionId}-body`;\n\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n isExpanded: expanded,\n toggleExpanded,\n id: headerId,\n bodyId,\n })\n : cloneElement(child as ReactElement, {\n isExpanded: expanded,\n id: bodyId,\n headerId,\n }))\n );\n });\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n return <Wrapper {...wrapperProps}>{Children}</Wrapper>;\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport {\n normalizeButton,\n removeButtonStyling,\n AnimatedChevronUpDown,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n StaticTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\n\nconst { header, chevronWrapper } = tokens;\n\nconst ContentWrapper = styled.div`\n text-align: left;\n`;\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType ?? typographyTypes.header;\n}\n\ninterface HeaderProps {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n}\n\nconst HeaderContainer = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'padding' && prop !== 'typographyType' && prop !== 'bold',\n})<HeaderProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n padding: ${({ padding }) => padding ?? header.padding};\n ${props => getFontStyling(getTypographyType(props))}\n ${props =>\n props.bold &&\n css`\n font-weight: 600;\n `}\n`;\n\nconst HeaderWrapperButton = styled.button`\n ${normalizeButton}\n user-select: text;\n position: relative;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n ${removeButtonStyling}\n display: block;\n width: 100%;\n &:hover {\n box-shadow: ${header.hover.boxShadow};\n }\n\n &:focus-visible,\n &.focus-visible {\n outline: none;\n box-shadow: ${header.focus.boxShadow};\n }\n`;\n\nconst ChevronWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${chevronWrapper.width};\n height: ${chevronWrapper.height};\n margin-left: ${chevronWrapper.marginLeft};\n`;\n\nexport type CardAccordionHeaderProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller body er utvidet. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Callback for å styre utvidelse og sammentrukking. */\n toggleExpanded?: () => void;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionBody />`. */\n bodyId?: string;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n>;\n\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n isExpanded = false,\n toggleExpanded,\n bodyId,\n id,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const handleClick = () => {\n if (toggleExpanded) {\n toggleExpanded();\n }\n };\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: handleClick,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { spacing, border, iconSizes } = ddsBaseTokens;\n\nexport const typographyTypes: {\n body: StaticTypographyType;\n header: StaticTypographyType;\n} = {\n body: 'bodySans03',\n header: 'headingSans03',\n};\n\nconst header = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n hover: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusInputfieldStrokeWeight} ${border.BordersDdsBorderFocusInputfieldStroke}`,\n },\n focus: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusCardStrokeWeight} ${border.BordersDdsBorderFocusCardStroke}`,\n },\n};\n\nconst chevronWrapper = {\n width: iconSizes.DdsIconsizeMedium,\n height: iconSizes.DdsIconsizeMedium,\n marginLeft: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx +\n spacing.SizesDdsSpacingLocalX075NumberPx\n }px ${spacing.SizesDdsSpacingLocalX2} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingLocalX05,\n },\n};\n","import { Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useIsMounted,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n Nullable,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useElementHeight } from './useElementHeight';\n\nconst expandingAnimation = css`\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n`;\n\nfunction getPadding(props: BodyContainerProps): string {\n const { padding } = props;\n\n return padding ?? tokens.body.padding;\n}\n\ninterface BodyProps {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n}\n\nconst Body = styled.div.withConfig({\n shouldForwardProp: prop => {\n return prop !== 'animate' && prop !== 'height' && prop !== 'isExpanded';\n },\n})<BodyProps>`\n @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller komponenten om den skal utvides. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionHeader />`. */\n headerId?: string;\n /**Overskriver default padding på toppen. Brukes når barn har spacing på toppen, f.eks. en overskrift. */\n paddingTop?: Property.PaddingTop<string>;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n>;\n\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const {\n children,\n isExpanded,\n headerId,\n id,\n className,\n htmlProps,\n padding,\n paddingTop,\n ...rest\n } = props;\n\n const bodyRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyRef.current);\n\n const [initialExpandedHeight, setIntialExpandedHeight] =\n useState<Nullable<number>>(null);\n\n useLayoutEffect(() => {\n // For å unngå initiell animasjon dersom Accordion er satt til å være åpen som default.\n if (bodyRef.current && isExpanded) {\n setIntialExpandedHeight(bodyRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n const bodyProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n isExpanded,\n role: 'region',\n height: height ?? initialExpandedHeight ?? 0,\n };\n const bodyContainerProps = {\n ref: bodyRef,\n isExpanded,\n padding,\n paddingTop,\n };\n\n return (\n <Body\n {...bodyProps}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer {...bodyContainerProps} animate={animate}>\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport { useEffect, useState } from 'react';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport {\n OuterContainer,\n Navigation,\n NavigationList,\n BannerWrapper,\n BannerLeftWrapper,\n LovisaWrapper,\n ApplicationNameWrapper,\n ContextMenuGroup,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { NavigationItem } from './NavigationItem';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { MenuIcon, MoreVerticalIcon } from '@norges-domstoler/dds-icons';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport { OverflowMenu } from '../OverflowMenu';\nimport { selection } from '@norges-domstoler/dds-core';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { border, colors, spacing } = ddsBaseTokens;\n\nconst borderStyle = `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `;\n\nexport const typographyTypes: Record<string, StaticTypographyType> = {\n navLink: 'bodySans01',\n};\n\nconst navLink = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDark,\n },\n current: {\n color: colors.DdsColorInteractiveDarkest,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n};\n\nconst outerContainer = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n};\n\nconst applicationNameWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingLayoutX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { forwardRef, useId } from 'react';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\nimport CalendarIcon from './calendar_today.svg';\nimport {\n StatefulInput,\n OuterInputContainer,\n InputSize,\n InputProps,\n} from '@norges-domstoler/dds-form';\n\nimport { datepickerTokens as tokens } from './Datepicker.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\n\nconst StyledInput = styled(StatefulInput)<Pick<InputProps, 'componentSize'>>`\n &::-webkit-calendar-picker-indicator {\n background-image: ${`url('${CalendarIcon}')`};\n position: absolute;\n ${({ componentSize }) =>\n componentSize &&\n css`\n right: ${tokens.calendarIndicator.base.sizes[componentSize].right};\n height: ${tokens.calendarIndicator.base.sizes[componentSize].height};\n width: ${tokens.calendarIndicator.base.sizes[componentSize].width};\n `}\n margin-left: 0px;\n padding: 0;\n top: 50%;\n transform: translate(0, -50%);\n box-sizing: border-box;\n }\n\n &::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n &::-webkit-calendar-picker-indicator:focus-visible {\n outline: ${tokens.calendarIndicator.focus.outline};\n outline-offset: ${tokens.calendarIndicator.focus.outlineOffset};\n }\n\n &::-webkit-inner-spin-button {\n display: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field {\n transition: 0.2s;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus {\n ${selection}\n }\n`;\n\ntype DatepickerType = 'date' | 'datetime-local';\n\nexport type DatepickerProps = Omit<InputProps, 'type'> & {\n /** Angi dato-input med eller uten klokkeslett. */\n type?: DatepickerType;\n};\n\nexport const Datepicker = forwardRef<HTMLInputElement, DatepickerProps>(\n (\n {\n id,\n type = 'date',\n required = false,\n readOnly = false,\n disabled = false,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-datepickerInput`;\n\n const componentWidth = width ? width : getWidth(type, componentSize);\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const inputProps = {\n id: uniqueId,\n hasErrorMessage,\n ref,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n required,\n disabled,\n componentSize,\n type,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-required': ariaRequired,\n 'aria-invalid': hasErrorMessage ? true : undefined,\n max: getMax(type, max),\n ...rest,\n };\n\n const outerinputContainerProps = {\n width: componentWidth,\n style,\n className,\n };\n\n return (\n <OuterInputContainer {...outerinputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={!!showRequiredStyling}>\n {label}\n </Label>\n )}\n <StyledInput {...inputProps} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\nDatepicker.displayName = 'Datepicker';\n\nconst defaultWidths: {\n [k in DatepickerType]: { [k in InputSize]: Property.Width<string> };\n} = {\n date: {\n medium: '160px',\n small: '140px',\n tiny: '125px',\n },\n ['datetime-local']: {\n medium: '200px',\n small: '180px',\n tiny: '150px',\n },\n};\n\nconst getWidth = (\n type: DatepickerType,\n size: InputSize,\n): Property.Width<string> => defaultWidths[type][size];\n\nconst getMax = (\n type: DatepickerType,\n max?: string | number,\n): string | number | undefined => {\n if (max !== undefined) {\n return max;\n }\n\n // Limit the year-part to only four digits by default\n\n if (type === 'datetime-local') {\n return '9999-12-31T23:59';\n }\n\n if (type === 'date') {\n return '9999-12-31';\n }\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { iconSizes, spacing, border } = ddsBaseTokens;\n\nconst calendarIndicator = {\n base: {\n sizes: {\n medium: {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n },\n },\n focus: {\n outline: `${border.BordersDdsBorderFocusInputfieldStroke} solid ${border.BordersDdsBorderFocusInputfieldStrokeWeight}`,\n outlineOffset: spacing.SizesDdsSpacingLocalX0125,\n },\n};\n\nexport const datepickerTokens = {\n calendarIndicator,\n};\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n 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\nconst Wrapper = styled.div<{\n $top: Property.Top;\n}>`\n box-sizing: border-box;\n position: absolute;\n top: ${({ $top: top }) => top};\n text-align: center;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n width: 1px;\n white-space: nowrap;\n background-color: ${wrapper.backgroundColor};\n padding: ${wrapper.padding};\n opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n\n &:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: 250;\n opacity: 1;\n }\n`;\n\nconst Link = styled.a`\n text-decoration: none;\n color: ${link.base.color};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n &:focus {\n ${focusVisibleOnDark}\n }\n &:hover {\n color: ${link.base.color};\n }\n`;\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka. */\n text?: string;\n /**Spesifiserer hvor det skal hoppes til via `id`-attributtet til innholdet. */\n href: string;\n /**Avstand fra top i nærmeste posisjonert container. */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = forwardRef<HTMLAnchorElement, SkipToContentProps>(\n (props, ref) => {\n const {\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n return (\n <Wrapper\n $top={top}\n className={joinClassNames(className, htmlPropsClassName)}\n style={style}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)} ref={ref}>\n {text}\n </Link>\n </Wrapper>\n );\n },\n);\n\nSkipToContent.displayName = 'SkipToContent';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst link = {\n base: {\n color: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst wrapper = {\n backgroundColor: colors.DdsColorPrimaryBase,\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import React, {\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n Placement,\n useCombinedRef,\n useOnKeyDown,\n useFloatPosition,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\n\nconst { svgArrow } = tokens;\n\ntype AnchorElement = React.ReactElement & React.RefAttributes<HTMLElement>;\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'style' | 'onMouseLeave' | 'onMouseOver'\n>;\n\nexport type TooltipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /**Innhold i tooltip. */\n text: string;\n /**Plassering i forhold til anchor-elementet. */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder. */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (props, ref) => {\n const {\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueTooltipId = tooltipId ?? `${generatedId}-tooltip`;\n const [open, setOpen] = useState(false);\n const [inView, setInView] = useState(false);\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null);\n const { refs, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => {});\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\nimport { Paper, PaperProps } from '@norges-domstoler/dds-core';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\n\nconst { wrapper } = tokens;\n\nexport const SvgArrow = styled.svg`\n width: 36px;\n height: 9px;\n`;\n\nexport const ArrowWrapper = styled.div``;\n\nexport const Container = styled.div`\n width: fit-content;\n`;\n\ntype WrapperProps = PaperProps & {\n open: boolean;\n};\n\nexport const TooltipWrapper = styled(Paper)<WrapperProps>`\n ${({ open }) => visibilityTransition(open)}\n width: fit-content;\n position: absolute;\n z-index: 80;\n text-align: center;\n padding: ${wrapper.padding};\n ${getFontStyling(defaultTypographyType)};\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import { forwardRef, ReactNode, RefObject, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport { createPortal } from 'react-dom';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n Paper,\n selection,\n useMountTransition,\n useFocusTrap,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport {\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n Backdrop,\n} from './Backdrop';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n }\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 return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n gap: spacing.SizesDdsSpacingLocalX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { changeRGBAAlpha } from '@norges-domstoler/dds-core';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Property } from 'csstype';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { forwardRef, ReactNode, RefObject, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n useFocusTrap,\n Paper,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Property } from 'csstype';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => 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 interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { forwardRef, ReactNode, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { PaperProps, visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n Placement,\n useCombinedRef,\n useFloatPosition,\n useReturnFocusOnBlur,\n useMountTransition,\n useOnClickOutside,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { spacing: Spacing } = ddsBaseTokens;\nconst { wrapper, content, closeButton, title } = tokens;\n\ninterface WrapperProps extends PaperProps {\n $sizeProps?: PopoverSizeProps;\n $hasTransitionedIn?: boolean;\n $isOpen: boolean;\n}\n\nconst Wrapper = styled(Paper)<WrapperProps>`\n opacity: 0;\n ${({ $hasTransitionedIn, $isOpen }) =>\n $hasTransitionedIn && visibilityTransition($hasTransitionedIn && $isOpen)}\n position: absolute;\n width: fit-content;\n z-index: 100;\n padding: ${wrapper.padding};\n\n &:focus-visible {\n ${focusVisible}\n }\n ${({ $sizeProps }) =>\n $sizeProps &&\n css`\n width: ${$sizeProps.width};\n height: ${$sizeProps.height};\n min-width: ${$sizeProps.minWidth};\n min-height: ${$sizeProps.minHeight};\n max-width: ${$sizeProps.maxWidth};\n max-height: ${$sizeProps.maxHeight};\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ninterface ContentContainerProps {\n $hasTitle: boolean;\n $withCloseButton: boolean;\n}\n\nconst ContentContainer = styled.div<ContentContainerProps>`\n ${({ $withCloseButton, $hasTitle }) =>\n $withCloseButton &&\n !$hasTitle &&\n css`\n margin-top: ${content.noTitle.marginTop};\n `}\n`;\n\nconst StyledButton = styled(Button)`\n position: absolute;\n top: ${closeButton.top};\n right: ${closeButton.right};\n`;\n\nexport interface PopoverSizeProps {\n width?: Property.Width<string>;\n height?: Property.Height<string>;\n minWidth?: Property.MinWidth<string>;\n minHeight?: Property.MinHeight<string>;\n maxWidth?: Property.MaxWidth<string>;\n maxHeight?: Property.MaxHeight<string>;\n}\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Tittel. */\n title?: string | ReactNode;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Spesifiserer om `<Popover />` skal vises. */\n isOpen?: boolean;\n /**Om lukkeknapp skal vises. */\n withCloseButton?: boolean;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Anchor-elementet. */\n anchorElement?: HTMLElement;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet. */\n placement?: Placement;\n /**Avstand fra anchor-elementet i px. */\n offset?: number;\n /** Ekstra logikk kjørt når lukkeknappen trykkes. */\n onCloseButtonClick?: () => void;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, ref) => {\n const {\n title,\n isOpen = false,\n withCloseButton = true,\n onBlur,\n onCloseButtonClick,\n onClose,\n anchorElement,\n children,\n placement = 'bottom',\n offset = Spacing.SizesDdsSpacingLocalX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n useEffect(() => {\n anchorElement\n ? refs.setReference(anchorElement)\n : refs.setReference(null);\n }, [anchorElement]);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingLocalX025,\n right: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingLocalX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n useState,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useRef,\n ReactNode,\n useId,\n} from 'react';\nimport { useOnKeyDown } from '@norges-domstoler/dds-core';\n\nexport interface PopoverGroupProps {\n /**Callback når det trykkes på lukkeknappen. */\n onCloseButtonClick?: () => void;\n /** Callback når det trykkes på anchor-elementet (trigger-elementet). */\n onTriggerClick?: () => void;\n /**Forteller `<Popover />` om den skal være åpen. */\n isOpen?: boolean;\n /** `id` til `<Popover />.` */\n popoverId?: string;\n /** Barna til wrapperen: anchor-element som det første og `<Popover />` so det adnre. */\n children: ReactNode;\n}\n\nexport const PopoverGroup = ({\n isOpen = false,\n onCloseButtonClick,\n onTriggerClick,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [open, setOpen] = useState(isOpen);\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n\n const handleOnCloseButtonClick = () => {\n setOpen(false);\n onCloseButtonClick && onCloseButtonClick();\n };\n\n const handleOnTriggerClick = () => {\n setOpen(!open);\n onTriggerClick && onTriggerClick();\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n setOpen(false);\n buttonRef.current?.focus();\n }\n });\n\n const handleClose = () => setOpen(false);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleOnTriggerClick,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: open,\n 'aria-hidden': !open,\n id: uniquePopoverId,\n onCloseButtonClick: handleOnCloseButtonClick,\n anchorElement: buttonRef.current,\n ref: popoverRef,\n onClose: handleClose,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import { forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { selection, getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { ToggleButtonProps } from './ToggleButton.types';\n\nconst { toggleButton } = tokens;\n\ninterface ContentProps {\n $hasIcon?: boolean;\n}\n\nconst Content = styled.span<ContentProps>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: fit-content;\n border: ${toggleButton.border};\n background-color: ${toggleButton.backgroundColor};\n color: ${toggleButton.color};\n border-radius: ${toggleButton.borderRadius};\n padding: ${toggleButton.padding};\n ${getFontStyling(typographyType)}\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $hasIcon }) =>\n $hasIcon &&\n css`\n gap: ${toggleButton.gap};\n `}\n\n &::selection,\n *::selection {\n ${selection}\n }\n &:hover {\n background-color: ${toggleButton.hover.backgroundColor};\n box-shadow: ${toggleButton.hover.boxShadow};\n border-color: ${toggleButton.hover.borderColor};\n }\n`;\n\nconst Container = styled.label`\n width: fit-content;\n ${HiddenInput}:checked + ${Content} {\n background-color: ${toggleButton.checked.backgroundColor};\n border-color: ${toggleButton.checked.borderColor};\n color: ${toggleButton.checked.color};\n }\n ${HiddenInput}:checked + ${Content}:hover {\n background-color: ${toggleButton.checked.hover.backgroundColor};\n border-color: ${toggleButton.checked.hover.borderColor};\n box-shadow: ${toggleButton.checked.hover.boxShadow};\n }\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n }\n`;\n\nexport const ToggleButton = forwardRef<HTMLInputElement, ToggleButtonProps>(\n ({ id, label, icon, className, htmlProps, ...rest }, ref) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n\n return (\n <Container htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n ref={ref}\n type=\"checkbox\"\n />\n <Content $hasIcon={!!icon}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </Content>\n </Container>\n );\n },\n);\n\nToggleButton.displayName = 'ToggleButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { buttonTokens, typographyTypes } from '../Button/Button.tokens';\nimport { selectionControlTokens } from '../SelectionControl/SelectionControl.tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\nconst { button } = buttonTokens;\nconst { selectionControl } = selectionControlTokens;\n\nexport const typographyType = typographyTypes.small;\n\nconst toggleButton = {\n border: button.base.border,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray7,\n gap: spacing.SizesDdsSpacingLocalX05,\n borderRadius: button.appearances.rounded.base.borderRadius,\n padding: button.sizes.small.text.padding,\n hover: selectionControl.hover.base,\n checked: {\n ...selectionControl.checked.base,\n color: colors.DdsColorNeutralsWhite,\n hover: selectionControl.checked.hover,\n },\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import styled, { css } from 'styled-components';\nimport {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { TabsContext } from './Tabs.context';\nimport { Property } from 'csstype';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { createContext, RefObject, useContext } from 'react';\nimport { Direction } from '@norges-domstoler/dds-core';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import {\n ButtonHTMLAttributes,\n Dispatch,\n forwardRef,\n SetStateAction,\n useCallback,\n useEffect,\n MouseEvent,\n useRef,\n KeyboardEvent,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useCombinedRef,\n useOnKeyDown,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\n\nconst { tab } = tokens;\n\ninterface ButtonProps {\n $active: boolean;\n $direction: Direction;\n}\n\nconst Button = styled.button<ButtonProps>`\n ${normalizeButton}\n ${removeButtonStyling}\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: ${tab.base.borderBottom};\n color: ${tab.base.color};\n padding: ${tab.base.padding};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-bottom 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${tab[$direction].gap};\n `};\n\n ${({ $active }) =>\n $active &&\n css`\n background-color: ${tab.active.backgroundColor};\n border-color: ${tab.active.borderColor};\n color: ${tab.active.color};\n box-shadow: ${tab.active.boxShadow};\n `}\n\n &:focus-visible {\n ${focusVisible}\n outline-offset: -1px;\n }\n\n &:hover {\n border-color: ${tab.hover.borderColor};\n color: ${tab.hover.color};\n box-shadow: ${tab.hover.boxShadow};\n }\n`;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv. */\n active?: boolean;\n /** Ikon. */\n icon?: SvgIcon;\n /** Spesifiserer om `<Tab />` skal ha fokus. **OBS!** settes automatisk av forelder.*/\n focus?: boolean;\n /** Callback som setter fokus. **OBS!** settes automatisk av forelder.*/\n setFocus?: Dispatch<SetStateAction<number>>;\n /** Indeksen til `<Tab />`. **OBS!** settes automatisk av forelder.*/\n index?: number;\n } & Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>\n>;\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>((props, ref) => {\n const {\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabPanelsRef, setHasTabFocus, tabContentDirection } =\n useTabsContext();\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n setHasTabFocus(true);\n }\n }, [focus]);\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n return (\n <Button\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\n $active={active}\n $direction={tabContentDirection}\n onClick={handleOnClick}\n onKeyDown={handleOnKeyDown}\n tabIndex={focus ? 0 : -1}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n <span>{children}</span>\n </Button>\n );\n});\n\nTab.displayName = 'Tab';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing, colors } = ddsBaseTokens;\n\nconst tabList = {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`,\n};\nconst tab = {\n base: {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid transparent`,\n color: colors.DdsColorNeutralsGray7,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n hover: {\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n};\n\nconst panel = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n isValidElement,\n cloneElement,\n FocusEvent,\n ReactElement,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { tabList } = tokens;\n\nconst TabRow = styled.div`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n overflow-x: auto;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n scroll-snap-type: x mandatory;\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: ${focusVisibleTransitionValue};\n }\n &:focus-visible {\n ${focusVisible}\n }\n &:focus-visible button {\n outline: none;\n }\n`;\n\nexport type TabListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n ({ children, id, onFocus, ...rest }, ref) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n tabPanelsRef,\n setHasTabFocus,\n } = useTabsContext();\n\n const uniqueId = id ?? `${tabsId}-tablist`;\n const childrenArray = Children.toArray(children).length;\n const [focus, setFocus] = useRoveFocus(childrenArray, !hasTabFocus, 'row');\n const combinedRef = useCombinedRef(ref, tabListRef);\n\n const tabListChildren = Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-tab-${index}`,\n 'aria-controls': `${tabsId}-panel-${index}`,\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: () => handleTabChange(index),\n })\n );\n });\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n useOnClickOutside((tabListRef?.current as HTMLElement) || null, () => {\n setHasTabFocus(false);\n });\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const tabListProps = {\n ...rest,\n ref: combinedRef,\n role: 'tablist',\n 'aria-label': 'Bruk venste og høyre piltast for å bla',\n id: uniqueId,\n tabIndex: 0,\n onFocus: handleOnFocus,\n };\n\n return <TabRow {...tabListProps}>{tabListChildren}</TabRow>;\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { useTabsContext } from './Tabs.context';\n\nexport type TabPanelsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabPanels = forwardRef<HTMLDivElement, TabPanelsProps>(\n ({ children, ...rest }, ref) => {\n const { activeTab, tabsId, tabPanelsRef } = useTabsContext();\n const combinedRef = useCombinedRef(ref, tabPanelsRef);\n\n const panelChildren = Children.map(children, (child, index) => {\n const active = index === activeTab;\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-panel-${index}`,\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n active,\n 'aria-expanded': active,\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n },\n);\n\nTabPanels.displayName = 'TabPanels';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, borderRadius, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst wrapper = {\n border: '1px solid',\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n },\n success: localMessageTokens.container.purpose.success,\n danger: localMessageTokens.container.purpose.danger,\n warning: localMessageTokens.container.purpose.warning,\n info: localMessageTokens.container.purpose.info,\n },\n};\n\nexport const tagTokens = {\n wrapper,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX025,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { forwardRef, HTMLAttributes, Children } from 'react';\nimport styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport { chipTokens as tokens } from './Chip.tokens';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { ChangeEvent, useState, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { Property } from 'csstype';\nimport { ToggleBarProps, ToggleBarValue } from './ToggleBar.types';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { ChangeEvent, createContext, useContext } from 'react';\nimport { ToggleBarSize, ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { ToggleBarSize } from './ToggleBar.types';\n\nconst { colors, spacing, border, borderRadius, fontPackages } = ddsBaseTokens;\n\nexport const typographyTypes: { [k in ToggleBarSize]: StaticTypographyType } = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTiny = `${calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeSmall = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeMedium = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n)}px`;\nconst iconSizeLarge = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n)}px`;\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst label = {\n base: {\n borderColor: colors.DdsColorNeutralsGray5,\n borderRight: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n firstChild: {\n borderLeft: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTopLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n lastChild: {\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n};\n\nconst content = {\n base: { backgroundColor: colors.DdsColorNeutralsGray1 },\n active: {\n color: colors.DdsColorInteractiveDarkest,\n borderColor: colors.DdsColorInteractiveDarker,\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n size: {\n tiny: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX2}`,\n gap: spacing.SizesDdsSpacingLocalX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import { forwardRef, InputHTMLAttributes, ChangeEvent, useId } from 'react';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ToggleBarContextType, useToggleBarContext } from './ToggleBar.context';\nimport { Label, Content } from './ToggleRadio.styles';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\n\ntype PickedInputHTMLAttributes = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'checked' | 'value' | 'onChange' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ToggleRadioProps = BaseComponentProps<\n HTMLInputElement,\n {\n /**Ledetekst som vises i komponenten. */\n label?: string;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n } & PickedInputHTMLAttributes,\n Omit<InputHTMLAttributes<HTMLInputElement>, keyof PickedInputHTMLAttributes>\n>;\n\n/**Beregner om en ToggleRadio skal være checked eller ikke.\n *\n * Returnerer checked hvis den er definert.\n *\n * Returnerer true hvis både verdien fra context og verdien i ToggleRadio er truthy og like.\n * Returnerer true hvis verdien i ToggleRadio er truthy, men context ikke finnes.\n *\n * Returnerer false hvis verdiene er ulike eller hvis verdien i ToggleRadio er falsy.\n */\nconst calculateChecked = (\n value: unknown,\n group: ToggleBarContextType,\n checked?: boolean,\n): boolean => {\n if (typeof checked !== 'undefined') return checked;\n\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n\n return !!value;\n};\n\nexport const ToggleRadio = forwardRef<HTMLInputElement, ToggleRadioProps>(\n (props, ref) => {\n const {\n value,\n name,\n onChange,\n checked,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleRadio`;\n const group = useToggleBarContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n group?.onChange && group.onChange(event);\n };\n\n return (\n <Label size={group.size} htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n type=\"radio\"\n ref={ref}\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n />\n <Content $size={group.size} $justIcon={!!icon && !label}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Content>\n </Label>\n );\n },\n);\n\nToggleRadio.displayName = 'ToggleRadio';\n","import styled, { css } from 'styled-components';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { ScreenSize, useScreenSize } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { gridTokens } from './Grid.tokens';\nimport { GridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\n\nconst { grid, spacing } = ddsBaseTokens;\n\nconst allColumns = '1 / -1';\nconst halfWayColumn: Record<ScreenSize, number> = {\n [ScreenSize.XSmall]: grid.DdsGridXs0599Count / 2 + 1,\n [ScreenSize.Small]: grid.DdsGridSm600959Count / 2 + 1,\n [ScreenSize.Medium]: grid.DdsGridMd9601279Count / 2 + 1,\n [ScreenSize.Large]: grid.DdsGridLg12801919Count / 2 + 1,\n [ScreenSize.XLarge]: grid.DdsGridXl1920Count / 2 + 1,\n};\n\nexport const gridTokens = {\n [ScreenSize.XSmall]: {\n grid: {\n columns: grid.DdsGridXs0599Count,\n columnGap: grid.DdsGridXs0599GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX1,\n marginRight: spacing.SizesDdsSpacingLayoutX1,\n },\n\n columns: {\n firstHalf: {\n gridColumn: allColumns,\n },\n secondHalf: {\n gridColumn: allColumns,\n },\n },\n },\n [ScreenSize.Small]: {\n grid: {\n columns: grid.DdsGridSm600959Count,\n columnGap: grid.DdsGridSm600959GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX2,\n marginRight: spacing.SizesDdsSpacingLayoutX2,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Small]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Small]} / -1`,\n },\n },\n },\n [ScreenSize.Medium]: {\n grid: {\n columns: grid.DdsGridMd9601279Count,\n columnGap: grid.DdsGridMd9601279GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX4,\n marginRight: spacing.SizesDdsSpacingLayoutX4,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Medium]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Medium]} / -1`,\n },\n },\n },\n [ScreenSize.Large]: {\n grid: {\n columns: grid.DdsGridLg12801919Count,\n columnGap: grid.DdsGridLg12801919GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX6,\n marginRight: spacing.SizesDdsSpacingLayoutX6,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Large]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Large]} / -1`,\n },\n },\n },\n [ScreenSize.XLarge]: {\n grid: {\n columns: grid.DdsGridXl1920Count,\n columnGap: grid.DdsGridXl1920GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX10,\n marginRight: spacing.SizesDdsSpacingLayoutX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { useContext, createContext } from 'react';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import styled from 'styled-components';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { Property } from 'csstype';\nimport { useGridContext } from './Grid.context';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n cloneElement,\n forwardRef,\n ForwardRefExoticComponent,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useEffect,\n useState,\n useMemo,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { IconSize } from '@norges-domstoler/dds-icons';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyTypes: {\n number: StaticTypographyType;\n label: StaticTypographyType;\n} = {\n number: 'bodySans01',\n label: 'bodySans03',\n};\n\nconst itemsWrapper = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '28px',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { BaseComponentPropsWithChildren } from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n ChangeEvent,\n useState,\n FocusEventHandler,\n FocusEvent,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { InlineEditProps } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { forwardRef, TextareaHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineTextArea,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import styled, { css } from 'styled-components';\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { Property } from 'csstype';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { StatefulInput, StyledInputProps } from '@norges-domstoler/dds-form';\n\nconst { inlineEdit, iconWrapper } = inlineEditTokens;\n\nexport const defaultWidth: Property.Width = '140px';\n\ntype StyledInlineInputProps = {\n isEditing?: boolean;\n hideIcon?: boolean;\n} & StyledInputProps;\n\nexport const StyledInlineInput = styled(StatefulInput).withConfig({\n shouldForwardProp: prop => prop !== 'isEditing' && prop !== 'hideIcon',\n})<StyledInlineInputProps>`\n border-color: transparent;\n background-color: ${inlineEdit.backgroundColor};\n padding: ${inlineEdit.padding};\n ${inlineEdit.font};\n ${({ isEditing, hideIcon }) =>\n !isEditing &&\n !hideIcon &&\n css`\n padding-left: ${inlineEdit.withIcon.paddingLeft};\n `}\n\n &:hover:enabled:read-write:not(:focus) {\n background-color: ${inlineEdit.hover.backgroundColor};\n border-color: transparent;\n box-shadow: none;\n }\n &:focus {\n background-color: ${inlineEdit.focus.backgroundColor};\n }\n`;\n\nexport const StyledInlineTextArea = styled(StyledInlineInput).attrs({\n as: 'textarea',\n})<StyledInlineInputProps>`\n resize: vertical;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport const IconWrapper = styled.span`\n position: absolute;\n left: ${iconWrapper.left};\n top: ${iconWrapper.top};\n z-index: 1;\n &:hover {\n cursor: text;\n }\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, fontPackages } = ddsBaseTokens;\n\nconst inlineEdit = {\n padding: spacing.SizesDdsSpacingLocalX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { forwardRef, InputHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineInput,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n StatefulInput,\n StyledInputProps,\n inputTypographyTypes,\n getDefaultText,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { textAreaTokens } from './TextArea.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { TextAreaProps } from './TextArea.types';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst { textarea } = textAreaTokens;\n\nexport const StyledTextArea = styled(StatefulInput)<StyledInputProps>`\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: ${textarea.paddingBottom};\n ${getFontStyling(inputTypographyTypes.medium)}\n`;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n className,\n style,\n width = defaultWidth,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textArea`;\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const multiRef = useCombinedRef(ref, textAreaRef);\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n\n useEffect(() => {\n if (textAreaRef?.current) {\n textAreaRef.current.style.height = `${\n textAreaRef.current.scrollHeight + 2\n }px`;\n }\n }, [text]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLTextAreaElement> = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = required || !!ariaRequired;\n\n const containerProps = {\n width,\n className,\n style,\n };\n\n const textAreaProps = {\n ref: multiRef,\n onChange: onChangeHandler,\n value,\n defaultValue,\n id: uniqueId,\n disabled,\n hasErrorMessage,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n return (\n <OuterInputContainer {...containerProps}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredStyling} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n <StyledTextArea {...textAreaProps} as=\"textarea\" />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst textarea = {\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { ChevronDownIcon, ChevronUpIcon } from '@norges-domstoler/dds-icons';\nimport { ExtractStrict } from '@norges-domstoler/dds-core';\nimport { Button, ButtonProps, ButtonPurpose, ButtonSize } from '../Button';\nimport {\n OverflowMenu,\n OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\nimport { tokens } from './SplitButton.tokens';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { StandardProperties } from 'csstype';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'local-x0.125': spacing.SizesDdsSpacingLocalX0125,\n 'local-x0.25': spacing.SizesDdsSpacingLocalX025,\n 'local-x0.5': spacing.SizesDdsSpacingLocalX05,\n 'local-x0.75': spacing.SizesDdsSpacingLocalX075,\n 'local-x1': spacing.SizesDdsSpacingLocalX1,\n 'local-x1.5': spacing.SizesDdsSpacingLocalX15,\n 'local-x2': spacing.SizesDdsSpacingLocalX2,\n 'local-x2.5': spacing.SizesDdsSpacingLocalX25,\n 'local-x3': spacing.SizesDdsSpacingLocalX3,\n 'layout-x1': spacing.SizesDdsSpacingLayoutX1,\n 'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,\n 'layout-x2': spacing.SizesDdsSpacingLayoutX2,\n 'layout-x3': spacing.SizesDdsSpacingLayoutX3,\n 'layout-x4': spacing.SizesDdsSpacingLayoutX4,\n 'layout-x6': spacing.SizesDdsSpacingLayoutX6,\n 'layout-x10': spacing.SizesDdsSpacingLayoutX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { UploadIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InputMessage } from '../InputMessage';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { FileList } from './types';\nimport { FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport { Property } from 'csstype';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\nimport { InputMessage } from '../InputMessage';\nimport { errorsTokens } from './FileUploader.tokens';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingLocalX15,\n paddingBottom: spacing.SizesDdsSpacingLocalX2,\n gap: spacing.SizesDdsSpacingLocalX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingLocalX05,\n paddingLeftRight: spacing.SizesDdsSpacingLocalX05,\n paddingTopBottom: spacing.SizesDdsSpacingLayoutX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingLocalX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n","import styled from 'styled-components';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\n\nimport { Button } from '../Button';\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { FileUploaderFile } from './fileUploaderReducer';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import React, {\n ButtonHTMLAttributes,\n HTMLAttributes,\n InputHTMLAttributes,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n FileUploaderFile,\n fileUploaderReducer,\n RootErrorList,\n} from './fileUploaderReducer';\nimport { FileWithPath, fromEvent as getFilesFromEvent } from 'file-selector';\nimport { Accept, FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { FileWithPath } from 'file-selector';\nimport { Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst StyledEmptyContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: ${spacing.SizesDdsSpacingLayoutX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingLayoutX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingLayoutX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { backLinkTokens } from './BackLink.tokens';\n\nconst Nav = styled('nav')`\n align-items: center;\n display: flex;\n gap: ${backLinkTokens.nav.gap};\n`;\n\nconst StyledIcon = styled(Icon)`\n color: ${backLinkTokens.icon.color};\n`;\n\nexport interface BackLinkProps {\n label: string;\n href: string;\n}\n\nexport const BackLink = forwardRef<HTMLElement, BackLinkProps>((props, ref) => {\n return (\n <Nav ref={ref}>\n <StyledIcon icon={icons.ArrowLeftIcon} iconSize=\"small\" />\n <Typography typographyType=\"a\" href={props.href}>\n {props.label}\n </Typography>\n </Nav>\n );\n});\n\nBackLink.displayName = 'BackLink';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst nav = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\nimport { FeedbackProps, Rating } from './Feedback.types';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\nimport { RatingComponent } from './RatingComponent';\nimport { CommentComponent } from './CommentComponent';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Thumbup, Thumbdown } from '@norges-domstoler/dds-icons';\nimport { Label } from '@norges-domstoler/dds-typography';\n\nimport { Layout, Rating } from './Feedback.types';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport { Button } from '../Button';\nimport { HStack } from '../Stack';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\n ${({ $layout }) => css`\n flex-direction: ${$layout === 'horizontal' ? 'row' : 'column'};\n align-items: ${$layout === 'horizontal' ? 'center' : 'start'};\n `}\n`;\n\nconst RatingButton = styled(Button)`\n padding: 0px;\n color: ${ddsBaseTokens.colors.DdsColorNeutralsGray7};\n`;\n\ninterface RatingComponentType {\n layout: Layout;\n ratingLabel: string;\n loading: boolean;\n thumbUpTooltip: string;\n thumbDownTooltip: string;\n handleRatingChange: (rating: Rating) => void;\n}\n\nexport const RatingComponent = ({\n layout,\n ratingLabel,\n loading,\n thumbUpTooltip,\n thumbDownTooltip,\n handleRatingChange,\n}: RatingComponentType) => {\n return (\n <RatingContainer $layout={layout}>\n <Label>{ratingLabel}</Label>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"layout-x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ThumbupFilled,\n ThumbdownFilled,\n Icon,\n} from '@norges-domstoler/dds-icons';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\nimport { VStack } from '../Stack';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\n`;\n\ninterface CommentComponentType {\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"layout-x1\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,kBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,uCAAd;AACA,wBAAc,uCADd;AAEA,wBAAc,wCAFd;AAGA,wBAAc,6CAHd;;;ACCA,IAAAC,6BAAmB;;;ACDnB,+BAA8B;AAC9B,IAAM,EAAE,QAAQ,SAAS,cAAc,cAAc,YAAY,IAC/D;AAEF,IAAM,kBAAkB;AAAA,EACtB,KAAK,QAAQ;AAAA,EACb,MAAM;AAAA,IACJ,GAAG,aAAa,aAAa;AAAA,IAC7B,OAAO,OAAO;AAAA,IACd,cAAc,aAAa;AAAA,IAC3B,SAAS,QAAQ;AAAA,IACjB,KAAK,QAAQ;AAAA,IACb,UAAU;AAAA,MACR,GAAG,aAAa,aAAa;AAAA,IAC/B;AAAA,IACA,OAAO;AAAA,MACL,iBAAiB,OAAO;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,MACN,OAAO,OAAO;AAAA,MACd,iBAAiB,OAAO;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,OAAO,OAAO;AAAA,EACd,MAAM;AAAA,IACJ,GAAG,aAAa,gBAAgB;AAAA,IAChC,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG,aAAa,gBAAgB;AAAA,MAChC,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,GAAG,aAAa,wBAAwB;AAAA,EAC1C;AACF;AAEA,IAAM,SAAS;AAAA,EACb,SAAS,QAAQ;AAAA,EACjB,QAAQ,QAAQ,QAAQ,uBAAuB,UAAU,QAAQ,wBAAwB;AAAA,EACzF,iBAAiB,OAAO;AAAA,EACxB,KAAK,QAAQ;AACf;AAEA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,OAAO,OAAO;AAAA,EACd,iBAAiB,OAAO;AAAA,EACxB,KAAK,QAAQ;AAAA,EACb,cAAc,OAAO;AAAA,EACrB,SAAS,QAAQ;AAAA,EACjB,OAAO;AAAA,EAEP,QAAQ;AAAA,IACN,YAAY,YAAY;AAAA,IACxB,YAAY,OAAO;AAAA,EACrB;AACF;AAEA,IAAM,wBAAwB;AAAA,EAC5B,KAAK,QAAQ;AAAA,EACb,WAAW,OAAO;AAAA,EAClB,iBAAiB,OAAO;AAAA,EACxB,cAAc,aAAa;AAC7B;AAEO,IAAM,iBAAiB,EAAE,YAAY,sBAAsB;;;ACzElE,IAAAC,iBAAkD;AAClD,IAAAC,6BAAmB;;;ACDnB,mBAA2B;AAC3B,+BAA4B;AAC5B,sBAGO;;;ACLP,IAAAC,4BAA8B;AAE9B,IAAM,EAAE,QAAQ,SAAAC,SAAQ,IAAI;AAE5B,IAAM,UAAU;AAAA,EACd,WAAW,GAAG,OAAO,sCAAsC;AAAA,EAC3D,WAAWA,SAAQ;AAAA,EACnB,cAAcA,SAAQ;AAAA,EACtB,OAAO;AAAA,IACL,SAAS;AAAA,MACP,aAAa,OAAO;AAAA,IACtB;AAAA,IACA,gBAAgB;AAAA,MACd,aAAa,OAAO;AAAA,IACtB;AAAA,EACF;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B,GAAG;AACL;;;ADoBS;AA7BT,IAAM,gBAAgB,yBAAAC,QAAO;AAAA;AAAA;AAAA,gBAGb,cAAO,SAAS;AAAA,gBAChB,cAAO,SAAS;AAAA,mBACb,cAAO,YAAY;AAAA,IAClC,CAAC,EAAE,MAAM,MACT,SACA;AAAA,sBACkB,cAAO,MAAM,KAAK,EAAE,WAAW;AAAA,KAChD;AAAA;AAWE,IAAM,cAAU,yBAAwC,CAAC,OAAO,QAAQ;AAC7E,QAAM,EAAE,QAAQ,WAAW,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAEjE,QAAM,YAAY;AAAA,IAChB,OAAG,kCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,EACF;AAEA,SAAO,4CAAC,iBAAc,KAAW,GAAG,WAAW;AACjD,CAAC;AAED,QAAQ,cAAc;;;AE3CtB,IAAAC,4BAAmB;AAEnB,uBAKO;;;ACPP,IAAAC,gBAOO;AAmBH,IAAAC,sBAAA;AAZJ,IAAM,sBAAkB,6BAAqC;AAAA,EAC3D,QAAQ;AAAA,EACR,SAAS,MAAM;AAAA,EAAC;AAClB,CAAC;AAEM,IAAM,0BAA0B,CAAC;AAAA,EACtC;AACF,MAEM;AACJ,QAAM,CAAC,QAAQ,OAAO,QAAI,wBAAS,KAAK;AACxC,SACE,6CAAC,gBAAgB,UAAhB,EAAyB,OAAO,EAAE,QAAQ,QAAQ,GAChD,UACH;AAEJ;AAEO,IAAM,qBAAqB,MAAM;AACtC,aAAO,0BAAW,eAAe;AACnC;;;AD8EM,IAAAC,sBAAA;AAnGN,IAAM,EAAE,YAAY,UAAU,IAAI;AAElC,IAAM,gBAAgB,UAAU,gBAAgB;AAEhD,IAAM,gBAAgB,0BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAM7B,IAAM,gBAAgB,0BAAAA,QAAO;AAAA;AAAA;AAI7B,IAAM,mBAAmB,0BAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,IAAM,WAAW,0BAAAA,QAAO;AAAA,aACX,cAAc,OAAO;AAAA,SACzB,cAAc,GAAG;AAAA,mBACP,cAAc,YAAY;AAAA;AAAA;AAAA,WAGlC,cAAc,KAAK;AAAA,eACf,cAAc,QAAQ;AAAA,gBACrB,cAAc,SAAS;AAAA,iBACtB,cAAc,UAAU;AAAA,iBACxB,cAAc,UAAU;AAAA,iBACxB,cAAc,UAAU;AAAA,oBACrB,cAAc,aAAa;AAAA;AAAA;AAAA,wBAGvB,cAAc,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA,aAI9C,cAAc,OAAO,KAAK;AAAA,wBACf,cAAc,OAAO,eAAe;AAAA;AAAA;AAI5D,IAAM,sBAAkB,0BAAAA,SAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAM1B,gBAAgB;AAAA;AAAA;AAAA;AAK7B,IAAM,sBAAkB,0BAAAA,SAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,eAKxB,cAAc,SAAS,QAAQ;AAAA,gBAC9B,cAAc,SAAS,SAAS;AAAA,iBAC/B,cAAc,SAAS,UAAU;AAAA,iBACjC,cAAc,SAAS,UAAU;AAAA,iBACjC,cAAc,SAAS,UAAU;AAAA,oBAC9B,cAAc,SAAS,aAAa;AAAA;AAejD,IAAM,iBAAiB,CAAqB;AAAA,EACjD,IAAI;AAAA,EACJ;AAAA,EACA,MAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,QAAQ,IAAI,mBAAmB;AACvC,QAAM,OAAO,oBAAO;AAEpB,QAAM,UAA6B,OAAK;AACtC,+CAAc;AACd,YAAQ,KAAK;AAAA,EACf;AACA,MAAI,UAAU;AACZ,WACE,8CAAC,mBAAgB,IAAI,MAAO,GAAG,MAAM,SAClC;AAAA;AAAA,MACD,6CAAC,yBAAK,MAAM,mCAAkB,UAAS,WAAU;AAAA,OACnD;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACH,GAAG;AAAA,MACJ;AAAA,MACA,WAAW,CAAC,SAAS,WAAW,IAAI,KAAK,SAAS,EAAE,KAAK,GAAG;AAAA,MAE5D;AAAA,qDAAC,iBAAe,UAAAA,UAAQ,6CAAC,yBAAK,MAAMA,QAAM,GAAG;AAAA,QAC7C,6CAAC,iBAAe,UAAS;AAAA,QACzB,6CAAC,oBACC,uDAAC,yBAAK,MAAM,mCAAkB,GAChC;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,eAAe,cAAc;;;AEvI7B,IAAAC,6BAAmB;AACnB,IAAAC,oBAA8C;AAC9C,+BAA0C;;;ACF1C,IAAAC,oBAMO;AAeM,IAAAC,sBAAA;AAHN,IAAM,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,MAAuB;AAChE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,6CAAC,wCAAoB,GAAG,MAAM;AAAA,IACvC,KAAK;AACH,aAAO,6CAAC,kCAAc,GAAG,MAAM;AAAA,IACjC,KAAK;AACH,aAAO,6CAAC,sCAAkB,GAAG,MAAM;AAAA,IACrC,KAAK;AAAA,IACL,KAAK;AACH,aAAO,6CAAC,gCAAY,GAAG,MAAM;AAAA,EACjC;AACF;;;AC9BA,IAAAC,4BAAmB;AAGnB,IAAM,EAAE,YAAYC,WAAU,IAAI;AAElC,IAAM,cAAc,CAAC,UAAoB;AACvC,MAAI,OAAO;AACT,WAAOA,WAAU,eAAe,KAAK;AAAA,EACvC;AAEA,SAAOA,WAAU,eAAe;AAClC;AAEO,IAAM,iBAAiB,0BAAAC,QAAO,EAAE,WAAW;AAAA,EAChD,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA,eACc,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,QAAQ;AAAA,gBACzC,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,SAAS;AAAA,iBAC1C,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,UAAU;AAAA,iBAC5C,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,UAAU;AAAA,iBAC5C,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,UAAU;AAAA,oBACzC,CAAC,EAAE,MAAM,MAAM,YAAY,KAAK,EAAE,aAAa;AAAA;AAAA;;;ACrBnE,IAAAC,gBAAoD;AACpD,IAAAC,oBAAqB;AACrB,IAAAC,mBAAiC;;;ACFjC,IAAAC,4BAA8B;AAC9B,IAAAC,mBAA8C;AAK9C,IAAM,EAAE,QAAAC,SAAQ,QAAAC,SAAQ,SAAAC,UAAS,cAAAC,eAAc,cAAAC,eAAc,YAAY,IACvE;AAEK,IAAM,kBAET;AAAA,EACF,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACR;AAEA,IAAM,qBAAiB;AAAA,EACrBD,cAAa,wBAAwB,QAAQ;AAAA,EAC7CA,cAAa,wBAAwB,QAAQ;AAC/C;AAEA,IAAM,sBAAkB;AAAA,EACtBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC;AAEA,IAAM,uBAAmB;AAAA,EACvBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC;AACA,IAAM,sBAAkB;AAAA,EACtBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC;AAEA,IAAM,YAAYD,SAAQ;AAE1B,IAAM,qBAAqB;AAAA,EACzB,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,OAAOF,QAAO;AAAA,MACd,iBAAiBA,QAAO;AAAA,MACxB,aAAaA,QAAO;AAAA,IACtB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,MAAM;AAAA,MACJ,OAAOA,QAAO;AAAA,MACd,iBAAiBA,QAAO;AAAA,MACxB,aAAaA,QAAO;AAAA,IACtB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,OAAOA,QAAO;AAAA,MACd,iBAAiBA,QAAO;AAAA,MACxB,aAAaA,QAAO;AAAA,IACtB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,iBAAiBA,QAAO;AAAA,QACxB,aAAaA,QAAO;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,QAAQ;AAAA,EACZ,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,GAAG,kBAAkB,SAAS;AAAA,QACxC,SAASE,SAAQ;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP,QAAQ,GAAG,eAAe;AAAA,QAC1B,OAAO,GAAG,eAAe;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,GAAGA,SAAQ,sBAAsB,IACxCA,SAAQ,iCAAiC,CAC3C;AAAA,IACF;AAAA,IACA,aAAa,EAAE,KAAKA,SAAQ,uBAAuB;AAAA,EACrD;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,GAAG,mBAAmB,SAAS;AAAA,QACzC,SAASA,SAAQ;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP,QAAQ,GAAG,gBAAgB;AAAA,QAC3B,OAAO,GAAG,gBAAgB;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,GAAGA,SAAQ,wBAAwB,IAC1CA,SAAQ,kCAAkC,CAC5C;AAAA,IACF;AAAA,IACA,aAAa,EAAE,KAAKA,SAAQ,yBAAyB;AAAA,EACvD;AAAA,EACA,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,GAAG,kBAAkB,SAAS;AAAA,QACxC,SAASA,SAAQ;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP,QAAQ,GAAG,eAAe;AAAA,QAC1B,OAAO,GAAG,eAAe;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,GAAGA,SAAQ,uBAAuB,IACzCA,SAAQ,iCAAiC,CAC3C;AAAA,IACF;AAAA,IACA,aAAa,EAAE,KAAKA,SAAQ,wBAAwB;AAAA,EACtD;AAAA,EACA,MAAM;AAAA,IACJ,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,GAAG,iBAAiB,SAAS;AAAA,QACvC,SAASA,SAAQ;AAAA,MACnB;AAAA,MACA,SAAS;AAAA,QACP,QAAQ,GAAG,cAAc;AAAA,QACzB,OAAO,GAAG,cAAc;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,GAAGA,SAAQ,wBAAwB,IAAIA,SAAQ,wBAAwB;AAAA,IAClF;AAAA,IACA,aAAa,EAAE,KAAKA,SAAQ,wBAAwB;AAAA,EACtD;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,cAAcE,cAAa;AAAA,MAC3B,WAAW,YAAY;AAAA,IACzB;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM,mBAAmB,QAAQ;AAAA,QACjC,OAAO,mBAAmB,QAAQ,MAAM;AAAA,QACxC,QAAQ,mBAAmB,QAAQ,OAAO;AAAA,MAC5C;AAAA,MACA,WAAW;AAAA,QACT,MAAM,mBAAmB,UAAU;AAAA,QACnC,OAAO,mBAAmB,UAAU,MAAM;AAAA,QAC1C,QAAQ,mBAAmB,UAAU,OAAO;AAAA,MAC9C;AAAA,MACA,QAAQ;AAAA,QACN,MAAM,mBAAmB,OAAO;AAAA,QAChC,OAAO,mBAAmB,OAAO,MAAM;AAAA,QACvC,QAAQ,mBAAmB,OAAO,OAAO;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,cAAcA,cAAa;AAAA,MAC3B,WAAW;AAAA,MACX,iBAAiB;AAAA,IACnB;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,UACJ,OAAOJ,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,QACtB;AAAA,QACA,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,uBAAuB;AAAA,QACxD;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,yBAAyB;AAAA,QAC1D;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,UACJ,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,QACtB;AAAA,QACA,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,qBAAqB;AAAA,QACtD;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,qBAAqB;AAAA,QACtD;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,QACtB;AAAA,QACA,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,kBAAkB;AAAA,QACnD;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,aAAaA,QAAO;AAAA,UACpB,WAAW,aAAaA,QAAO,qBAAqB;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,cAAcI,cAAa;AAAA,MAC3B,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,UACJ,OAAOJ,QAAO;AAAA,QAChB;AAAA,QACA,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,uBAAuB;AAAA,UACxD;AAAA,UACA,QAAQ;AAAA,YACN,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,yBAAyB;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,MAAM,EAAE,OAAOA,QAAO,sBAAsB;AAAA,QAC5C,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,qBAAqB;AAAA,UACtD;AAAA,UACA,QAAQ;AAAA,YACN,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,qBAAqB;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,MAAM,EAAE,OAAOA,QAAO,mBAAmB;AAAA,QACzC,OAAO;AAAA,UACL,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,QAAQ;AAAA,UACN,OAAOA,QAAO;AAAA,UACd,qBAAqBA,QAAO;AAAA,QAC9B;AAAA,QACA,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,kBAAkB;AAAA,UACnD;AAAA,UACA,QAAQ;AAAA,YACN,aAAaA,QAAO;AAAA,YACpB,WAAW,aAAaA,QAAO,oBAAoB;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,MAAM,EAAE,cAAc,SAAS,WAAW,YAAY,kBAAkB;AAAA,IACxE,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM,mBAAmB,QAAQ;AAAA,QACjC,OAAO,mBAAmB,QAAQ,MAAM;AAAA,QACxC,QAAQ,mBAAmB,QAAQ,OAAO;AAAA,MAC5C;AAAA,MACA,WAAW;AAAA,QACT,MAAM,mBAAmB,UAAU;AAAA,QACnC,OAAO,mBAAmB,UAAU,MAAM;AAAA,QAC1C,QAAQ,mBAAmB,UAAU,OAAO;AAAA,MAC9C;AAAA,MACA,QAAQ;AAAA,QACN,MAAM,mBAAmB,OAAO;AAAA,QAChC,OAAO,mBAAmB,OAAO,MAAM;AAAA,QACvC,QAAQ,mBAAmB,OAAO,OAAO;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,SAAS;AAAA,EACb,MAAM;AAAA,IACJ,QAAQ,GAAGC,QAAO,sCAAsC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,eAAe;AAAA,EAC1B;AACF;;;AC1WA,IAAAI,gBAA6B;AAC7B,IAAAC,4BAAmB;AAEnB,IAAAC,mBAAwC;AACxC,IAAAC,4BAA8B;AAC9B,IAAAD,mBAGO;AAyFH,IAAAE,sBAAA;AAvFJ,IAAM,gBAAgB,0BAAAC,QAAO;AAAA;AAAA,WAKlB,CAAC,EAAE,MAAM,MAAM,KAAK;AAAA,YACnB,CAAC,EAAE,MAAM,MAAM,KAAK;AAAA;AAAA;AAAA,qBAGX,CAAC,EAAE,qBAAqB,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAavE,IAAM,SAAS,0BAAAA,QAAO;AAAA,YAIV,CAAC,EAAE,OAAO,MAAM,cAAU,+BAAa,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKnC,CAAC,EAAE,qBAAqB,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BlE,SAAS,QAAQ,OAAqB;AAC3C,QAAM;AAAA,IACJ,OAAO,wCAAc,UAAU;AAAA,IAC/B,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,YAAY,cAAAC,QAAM,OAAO,KAAK,IAAI,CAAC;AACzC,QAAM,sBAAsB,EAAE,UAAU,UAAU;AAClD,QAAM,sBAAsB,EAAE,UAAU,UAAU;AAElD,QAAM,kBAAc,qBAAM;AAC1B,QAAM,WAAW,GAAG,WAAW;AAE/B,QAAM,eAAe;AAAA,IACnB,OAAG,mCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,mBAAiB;AAAA,MAChB,GAAG;AAAA,MAEH;AAAA,mBAAW,6CAAC,WAAM,IAAI,UAAW,mBAAQ;AAAA,QAC1C;AAAA,UAAC;AAAA;AAAA,YACC,sBAAsB;AAAA,YACtB,QAAQ;AAAA,YACR,IAAG;AAAA,YACH,IAAG;AAAA,YACH,GAAE;AAAA,YACF,MAAK;AAAA,YACL,aAAY;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,QAAQ,cAAc;;;ACrHtB,IAAAC,4BAA4B;AAC5B,IAAAC,mBAA2C;AAC3C,4BAA+B;AAQ/B,sBAGO;AAEP,IAAM;AAAA,EACJ,QAAQ,EAAE,MAAM,OAAAC,QAAO,aAAAC,aAAY;AACrC,IAAI;AAEJ,IAAM,iCAAiC,CACrC,YACA,YACG;AACH,UAAQ,YAAY;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,4BACeA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAC1D,eAAe;AAAA,wBACFA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KACtD,WAAW;AAAA;AAAA,8BAEQA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,MAC1D,eAAe;AAAA,0BACFA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,MACtD,WAAW;AAAA;AAAA;AAAA,8BAGMA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,OAC1D,eAAe;AAAA,0BACFA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,OACtD,WAAW;AAAA;AAAA;AAAA,IAGpB,KAAK;AACH,aAAO;AAAA,4BACeA,aAAY,MAAM,KAAK,eAAe;AAAA,wBAC1CA,aAAY,MAAM,QAAQ,OAAO,EAAE,KAAK,WAAW;AAAA;AAAA,mBAExDA,aAAY,MAAM,QAAQ,OAAO,EAAE,MAAM,KAAK;AAAA,0BACvCA,aAAY,MAAM,QAAQ,OAAO,EAAE,MAAM,WAAW;AAAA,wBACtDA,aAAY,MAAM,QAAQ,OAAO,EAAE,MAAM,SAAS;AAAA;AAAA;AAAA,mBAGvDA,aAAY,MAAM,QAAQ,OAAO,EAAE,OAAO,KAAK;AAAA,0BACxCA,aAAY,MAAM,QAAQ,OAAO,EAAE,OAChD,WAAW;AAAA,wBACAA,aAAY,MAAM,QAAQ,OAAO,EAAE,OAAO,SAAS;AAAA;AAAA;AAAA,IAGvE,KAAK;AACH,aAAO;AAAA,4BACeA,aAAY,WAAW,KAAK,eAAe;AAAA,wBAC/CA,aAAY,WAAW,KAAK,WAAW;AAAA,2BACpCA,aAAY,WAAW,KAAK,cAAc;AAAA,iCACpCA,aAAY,WAAW,KAC7C,mBAAmB;AAAA;AAAA,mBAEXA,aAAY,WAAW,QAAQ,OAAO,EAAE,MAAM,KAAK;AAAA,mCACnCA,aAAY,WAAW,QAAQ,OAAO,EAAE,MAC9D,mBAAmB;AAAA;AAAA;AAAA,mBAGbA,aAAY,WAAW,QAAQ,OAAO,EAAE,OAAO,KAAK;AAAA,mCACpCA,aAAY,WAAW,QAAQ,OAAO,EAC5D,OAAO,mBAAmB;AAAA;AAAA;AAAA,EAGrC;AACF;AAaO,IAAM,gBAAgB,0BAAAC,QAAO,OAAO,WAAW;AAAA,EACpD,mBAAmB,UAAQ;AACzB,UAAM,iBAA+C;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA,IACG,gCAAe;AAAA,YACP,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAMZ,CAAC,EAAE,UAAU,MAAO,YAAY,SAAS,aAAc;AAAA,YACtD,CAAC,EAAE,UAAU,MAAO,YAAY,gBAAgB,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAW9D,2CAA2B;AAAA;AAAA;AAAA,IAG/B,CAAC,EAAE,YAAY,QAAQ,MAAM;AAAA,qBACZD,aAAY,UAAU,EAAE,KAAK,YAAY;AAAA,kBAC5CA,aAAY,UAAU,EAAE,KAAK,SAAS;AAAA,aAC3CA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK,KAAK;AAAA,MAC1D,+BAA+B,YAAY,OAAO,CAAC;AAAA,GACtD;AAAA;AAAA,IAEC,CAAC,EAAE,SAAS,UAAU,YAAY,QAAQ,MAC1C,WACA,CAAC,YACD,eAAe,gBACf;AAAA;AAAA,wBAEoBA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK,MAAM,WAAW;AAAA,sBACjEA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK,MAAM,SAAS;AAAA;AAAA;AAAA,yBAG1DA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK,OAAO,WAAW;AAAA,sBACnEA,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK,OAAO,SAAS;AAAA;AAAA,KAE/E;AAAA,MACC,CAAC,EAAE,SAAS,UAAU,KAAK,MAC7B,WACA,YACA;AAAA,aACSD,OAAM,IAAI,EAAE,YAAY,GAAG;AAAA,KACnC;AAAA;AAAA,IAED,CAAC,EAAE,MAAM,SAAS,MAClB,WACI;AAAA,gBACI,sCAAe,gBAAgB,IAAI,CAAC,CAAC;AAAA,qBAC5BA,OAAM,IAAI,EAAE,KAAK,OAAO;AAAA,YAErC;AAAA,uBACeA,OAAM,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,qBACpCA,OAAM,IAAI,EAAE,SAAS,KAAK,OAAO;AAAA,SAC7C;AAAA;AAAA,IAEL,CAAC,EAAE,WAAW,SAAS,UAAU,WAAW,aAAa,MACzD,cACC,CAAC,WAAW,CAAC,YAAY,YACtB;AAAA;AAAA,YAGA,WAAW,YAAY,iBAAiB,SACtC;AAAA;AAAA,cAGA;AAAA;AAAA,YAEE;AAAA;AAAA;AAAA,MAGN,4BAAY;AAAA;AAAA;AAAA;AAAA,MAIZ,0BAAS;AAAA;AAAA;AAYR,IAAM,wBAAwB,0BAAAE,QAAO,KAAK,WAAW;AAAA,EAC1D,mBAAmB,UAAQ;AACzB,UAAM,iBAAuD;AAAA,MAC3D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA;AAAA;AAAA;AAAA,IAIG,CAAC,EAAE,iBAAiB,MACpB,oBACA;AAAA;AAAA,KAEC;AAAA,IACD,CAAC,EAAE,SAAS,MACZ,YACA;AAAA;AAAA,KAEC;AAAA,IACD,CAAC,EAAE,UAAU,KAAK,MAClB,YACA;AAAA,gBACYF,OAAM,IAAI,EAAE,SAAS,QAAQ,MAAM;AAAA,eACpCA,OAAM,IAAI,EAAE,SAAS,QAAQ,KAAK;AAAA,KAC5C;AAAA;AAOE,IAAM,QAAQ,0BAAAE,QAAO,KAAK,WAAW;AAAA,EAC1C,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA,IACG,CAAC,EAAE,SAAS,MACZ,YACA;AAAA;AAAA,KAEC;AAAA;;;AHzKG,IAAAC,sBAAA;AAnER,IAAM;AAAA,EACJ,QAAQ,EAAE,OAAAC,QAAO,aAAAC,aAAY;AAC/B,IAAI;AAEG,IAAM,aAAS;AAAA,EACpB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,eAAe;AAAA,MACf,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,MAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,KAAkB,OAAO,MAAM;AAErC,UAAM,WAAW,CAAC,CAAC,YAAY,CAAC,CAACD;AACjC,UAAM,UAAU,CAAC,CAACC;AAElB,UAAM,eAAe;AAAA,MACnB,OAAG,mCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,MACA;AAAA,MACA,KAAK,OAAO,wBAAwB;AAAA,MACpC,QAAQ,QAAQ,SAAS,SAAS;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,SAAS,CACP,UACG;AACH,YAAI,CAAC,WAAW,SAAS;AACvB,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,eAAe,CAAC,YAAY;AAElC,UAAM,cAAcA,UAClB;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,UAAU,WAAW;AAAA,QACrB,UAAU;AAAA,QAEV,uDAAC,0BAAK,MAAMA,QAAM,UAAS,WAAU;AAAA;AAAA,IACvC;AAGF,WACE,8CAAC,iBAAe,GAAG,cAAc,iBAAe,SAC7C;AAAA,OAAC,gBACA,8EACG;AAAA,yBAAiB,UAAU;AAAA,QAC5B,6CAAC,SAAM,UAAU,SAAS,eAAa,SACpC,wCAAYD,QACf;AAAA,QACC,iBAAiB,WAAW;AAAA,SAC/B;AAAA,MAED,gBAAgB;AAAA,MAChB,WACC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,kBAAkB,WAAW;AAAA,UAE7B;AAAA,YAAC;AAAA;AAAA,cACC,OAAOD,aAAY,UAAU,EAAE,QAAQ,OAAO,EAAE,KAAK;AAAA,cACrD,MAAMD,OAAM,IAAI,EAAE,SAAS,KAAK;AAAA,cAChC,SAAS;AAAA;AAAA,UACX;AAAA;AAAA,MACF;AAAA,OAEJ;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AI7GrB,IAAAI,gBAA6C;AAC7C,IAAAC,4BAAmB;AACnB,IAAAC,oBAAgD;;;ACFhD,IAAAC,gBAOO;AACP,IAAAC,4BAAmB;AACnB,IAAAC,mBAGO;;;ACZP,IAAAC,4BAA8B;AAEvB,IAAM,yBAAyB;AACtC,IAAM,iBAAiB,GAAG,sBAAsB;AAChD,IAAM,EAAE,QAAAC,SAAQ,SAAAC,SAAQ,IAAI;AAE5B,IAAM,QAAQ;AAAA,EACZ,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,OAAO;AACT;AAEA,IAAM,QAAQ;AAAA,EACZ,MAAM;AAAA,IACJ,iBAAiBD,QAAO,uBAAuB,MAAM,GAAG,EAAE,IAAI;AAAA,IAC9D,cAAc;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,iBAAiBA,QAAO,uBAAuB,MAAM,GAAG,EAAE,IAAI;AAAA,EAChE;AACF;AAEA,IAAM,UAAU;AAAA,EACd,cAAcC,SAAQ;AACxB;AAEA,IAAM,iBAAiB;AAAA,EACrB,SAASA,SAAQ;AACnB;AAEO,IAAM,kBAAkB;AAAA,EAC7B,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AD+IM,IAAAC,sBAAA;AArKN,IAAM,EAAE,OAAAC,QAAO,OAAAC,QAAO,iBAAiB,IAAI;AAE3C,IAAM,wBAAwB,0BAAAC,QAAO;AAErC,IAAM,oBAAoB,0BAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjC,IAAM,QAAQ,0BAAAA,QAAO;AAAA;AAAA;AAAA;AAAA,sBAICF,OAAM,eAAe;AAAA,mBACxBA,OAAM,YAAY;AAAA,WAC1BA,OAAM,KAAK;AAAA;AAGtB,IAAM,QAAQ,0BAAAE,QAAO;AAAA;AAAA,sBAECD,OAAM,KAAK,eAAe;AAAA,mBAC7BA,OAAM,KAAK,YAAY;AAAA,WAC/BA,OAAM,KAAK,KAAK;AAAA;AAAA;AAAA,wBAGHA,OAAM,MAAM,eAAe;AAAA;AAAA;AAY5C,IAAM,YAAY,CAAC,UAA0B;AAClD,QAAM,EAAE,IAAI,WAAW,WAAW,YAAY,GAAG,KAAK,IAAI;AAC1D,QAAM,eAAW,sBAAuB,IAAI;AAC5C,QAAM,eAAW,sBAAuB,IAAI;AAC5C,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,gBAAgB;AAC/D,QAAM,CAAC,cAAc,eAAe,QAAI,wBAAS,IAAI;AACrD,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAiB,CAAC;AAClD,QAAM,eAAW,sBAA8B,IAAI;AACnD,QAAM,CAAC,qBAAqB,sBAAsB,QAAI,wBAAiB,CAAC;AACxE,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,wBAAiB,CAAC;AAClE,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAS,KAAK;AAElD,WAAS,aAAa,KAAqB,WAAmB;AAC5D,UAAM,EAAE,cAAc,aAAa,IAAI;AACvC,oBAAgB,iBAAiB,YAAY;AAC7C;AAAA,MACE,KAAK,IAAK,eAAe,eAAgB,WAAW,gBAAgB;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,uBAAmB;AAAA,IACvB,CAAC,MAAkC;AACjC,UAAI,yCAAY,SAAS;AACvB,cAAM,EAAE,SAAS,aAAa,IAAI;AAClC,cAAM,EAAE,SAAS,eAAe,IAAI;AACpC,YAAI,gBAAgB,gBAAgB;AAClC,gBAAM,EAAE,QAAQ,IAAI;AACpB,gBAAM,SAAS,EAAE;AACjB,gBAAM,OAAO,OAAO,sBAAsB;AAC1C,gBAAM,WAAW,KAAK;AACtB,gBAAM,cAAc,EAAE,cAAc;AACpC,gBAAM,cACH,UAAU,WAAW,eAAe,aAAa;AACpD,gBAAM,eAAe,KAAK;AAAA,YACxB,aAAa,eAAe;AAAA,UAC9B;AACA,yBAAe,SAAS;AAAA,YACtB,KAAK;AAAA,YACL,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,WAAW;AAAA,EACd;AAEA,QAAM,6BAAyB,2BAAY,MAAM;AAC/C,QAAI,EAAC,yCAAY,YAAW,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS;AAClE;AAAA,IACF;AACA,UAAM,EAAE,WAAW,YAAY,cAAc,cAAc,IACzD,WAAW;AACb,UAAM,EAAE,aAAa,IAAI,SAAS;AAClC,QAAI,SAAU,CAAC,aAAa,CAAC,gBAAiB;AAC9C,aAAS,KAAK,IAAI,QAAQ,eAAe,WAAW;AACpD,gBAAY,MAAM;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,SAAI,yCAAY,YAAW,SAAS,SAAS;AAC3C,YAAM,MAAM,WAAW;AACvB,YAAM,EAAE,aAAa,IAAI,SAAS;AAClC,eAAS,UAAU,IAAI,eAAe,MAAM;AAC1C,qBAAa,KAAK,YAAY;AAAA,MAChC,CAAC;AACD,eAAS,QAAQ,QAAQ,GAAG;AAC5B,UAAI,iBAAiB,UAAU,sBAAsB;AACrD,aAAO,MAAM;AA1HnB;AA2HQ,uBAAS,YAAT,mBAAkB,UAAU;AAC5B,YAAI,oBAAoB,UAAU,sBAAsB;AAAA,MAC1D;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,2BAAuB,2BAAY,CAAC,MAAkC;AAC1E,2BAAuB,EAAE,OAAO;AAChC,QAAI,yCAAY;AAAS,0BAAoB,WAAW,QAAQ,SAAS;AACzE,kBAAc,IAAI;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,QAAM,yBAAqB,2BAAY,MAAM;AAC3C,QAAI,YAAY;AACd,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,2BAAuB;AAAA,IAC3B,CAAC,MAA6B;AAC5B,UAAI,yCAAY,SAAS;AACvB,YAAI,YAAY;AACd,gBAAM;AAAA,YACJ,cAAc;AAAA,YACd,cAAc;AAAA,UAChB,IAAI,WAAW;AAEf,gBAAM,UACH,EAAE,UAAU,wBACZ,sBAAsB;AACzB,gBAAM,eAAe,KAAK;AAAA,YACxB,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,UACxB;AAEA,qBAAW,QAAQ,YAAY;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,YAAY,qBAAqB,WAAW;AAAA,EAC/C;AAEA,+BAAU,MAAM;AACd,aAAS,iBAAiB,aAAa,oBAAoB;AAC3D,aAAS,iBAAiB,WAAW,kBAAkB;AACvD,aAAS,iBAAiB,cAAc,kBAAkB;AAC1D,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,oBAAoB;AAC9D,eAAS,oBAAoB,WAAW,kBAAkB;AAC1D,eAAS,oBAAoB,cAAc,kBAAkB;AAAA,IAC/D;AAAA,EACF,GAAG,CAAC,sBAAsB,kBAAkB,CAAC;AAE7C,SAAO,eACL;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,mCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAEnD,wDAAC,qBACC;AAAA,qDAAC,SAAM,KAAK,UAAU,SAAS,kBAAkB;AAAA,QACjD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,KAAK;AAAA,YACP;AAAA,YACA,KAAK;AAAA,YACL,aAAa;AAAA;AAAA,QACf;AAAA,SACF;AAAA;AAAA,EACF,IACE;AACN;AAEA,UAAU,cAAc;;;AEnMxB,IAAAE,gBAAuB;AACvB,IAAAC,4BAAmB;AACnB,IAAAC,mBAGO;AAIP,IAAAC,mBAGO;AAoDH,IAAAC,sBAAA;AAlDJ,IAAM,EAAE,OAAAC,QAAO,SAAAC,UAAS,gBAAAC,gBAAe,IAAI;AAE3C,IAAM,4BAA4B,0BAAAC,QAAO;AAAA,8BACXH,OAAM,KAAK;AAAA;AAAA;AAAA;AAAA,aAI5BE,gBAAe,OAAO;AAAA;AAGnC,IAAM,UAAU,0BAAAC,QAAO;AAAA,YAGX,CAAC,EAAE,QAAQ,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAMjBF,SAAQ,YAAY;AAAA;AAAA,kBAErB,4CAA2B;AAAA;AAAA;AAAA;AAAA,eAI9B,8BAAa,OAAO;AAAA,sBACb,8BAAa,aAAa;AAAA;AAAA;AAYzC,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,UAAM,sBAAuB,IAAI;AAEvC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,mCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAEnD;AAAA,qDAAC,WAAQ,SAAS,eAAe,KAAU,UAAU,GAClD,UACH;AAAA,QACA,6CAAC,aAAU,YAAY,KAAK;AAAA;AAAA;AAAA,EAC9B;AAEJ;AAEA,oBAAoB,cAAc;;;ACxElC,IAAM,EAAE,OAAAG,QAAO,OAAAC,OAAM,IAAI;AACzB,IAAMC,kBAA0C;AAKzC,IAAM,mBAAmB;AAAA,EAC9B,QAAQ;AAAA;AAAA,IAEN,wBAAwB;AAAA,MACtB,OAAOD,OAAM;AAAA,MACb,QAAQA,OAAM;AAAA,IAChB;AAAA;AAAA,IAEA,8BAA8B;AAAA,MAC5B,YAAYA,OAAM;AAAA,MAClB,cAAcA,OAAM;AAAA,IACtB;AAAA;AAAA,IAEA,8BAA8B;AAAA,MAC5B,YAAYD,OAAM,KAAK;AAAA,MACvB,cAAcA,OAAM,KAAK;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA,EAEA,oCAAoC;AAAA,IAClC,YAAYA,OAAM,MAAM;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,gBAAgBA,OAAM,KAAK,kBAAkB,MAAMC,OAAM;AAAA,IACzD,gBAAgBC;AAAA,EAClB;AACF;;;AJ/BA,IAAAC,oBAMO;;;AKVP,IAAAC,gBAYO;AACP,IAAAC,4BAA4B;;;ACb5B,IAAAC,4BAA8B;AAC9B,IAAAC,mBAA8C;AAG9C,IAAM,EAAE,QAAAC,SAAQ,cAAAC,eAAc,QAAAC,SAAQ,SAAAC,UAAS,cAAAC,cAAa,IAAI;AAEzD,IAAM,iBAAuC;AAEpD,IAAM,UAAU;AAAA,EACd,MAAM;AAAA,IACJ,OAAOF,QAAO;AAAA,IACd,gBAAgB;AAAA,IAChB,iBAAiBA,QAAO;AAAA,IACxB,SAAS,GAAGC,SAAQ,wBAAwB,IAAIA,SAAQ,sBAAsB;AAAA,IAC9E,KAAKA,SAAQ;AAAA,EACf;AACF;AAEA,IAAM,iBAAa;AAAA,EACjBC,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC;AAEA,IAAM,OAAO;AAAA,EACX,aAAa;AAAA,IACX,QAAQ,GAAG,UAAU;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,iBAAiBF,QAAO;AAAA,EAC1B;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiBA,QAAO;AAAA,EAC1B;AACF;AAEA,IAAM,YAAY;AAAA,EAChB,QAAQ,GAAGF,QAAO,sCAAsC,IAAIA,QAAO,gCAAgC;AAAA,EACnG,iBAAiBE,QAAO;AAAA,EACxB,cAAcD,cAAa;AAC7B;AAEA,IAAMI,WAAU;AAAA,EACd,aAAaF,SAAQ;AAAA,EACrB,YAAYA,SAAQ;AACtB;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAAE;AAAA,EACA,QAAQF,SAAQ;AAClB;;;ADlCA,IAAAG,oBAAqB;AACrB,IAAAC,oBAA+B;AAC/B,IAAAA,oBAGO;AAEP,IAAAA,oBAAgC;AAChC,IAAAC,yBAGO;AA2JuB,IAAAC,sBAAA;AAzJ9B,IAAM,EAAE,SAAAC,UAAS,MAAAC,MAAK,IAAI;AAE1B,IAAM,iBAAiB;AAAA;AAAA;AAAA,WAGZD,SAAQ,KAAK,KAAK;AAAA,qBACRA,SAAQ,KAAK,cAAc;AAAA,sBAC1BA,SAAQ,KAAK,eAAe;AAAA,aACrCA,SAAQ,KAAK,OAAO;AAAA,SACxBA,SAAQ,KAAK,GAAG;AAAA,QACrB,uCAAe,cAAc,CAAC;AAAA;AAG3B,IAAM,OAAO,0BAAAE,QAAO;AAAA,IACvB,cAAc;AAAA;AAGX,IAAM,OAAO,0BAAAA,QAAO;AAAA,IACvB,iCAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOf,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKMD,MAAK,MAAM,eAAe;AAAA;AAAA;AAAA,wBAG1BA,MAAK,OAAO,eAAe;AAAA;AAAA;AAAA;AAAA,MAI7C,uCAAgB;AAAA;AAAA;AAItB,IAAM,cAAc,0BAAAC,QAAO;AAAA;AAAA;AAAA,YAGfD,MAAK,YAAY,MAAM;AAAA;AAoCnC,IAAM,gBAAgB,CACpB,UAEC,MAAsC,SAAS;AAElD,IAAM,gBAAgB,CACpB,UAEC,MAAsC,SAAS,UAC/C,MAAsC,YAAY;AAE9C,IAAM,uBAAmB,0BAG9B,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ,OAAAE;AAAA,IACA,MAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,UAAU,IAAI;AAEtB,MAAI;AACJ,MAAI;AACJ,MAAI,cAAc,KAAK,GAAG;AACxB,WAAO,MAAM;AAAA,EACf,WAAW,cAAc,KAAK,GAAG;AAC/B,cAAU,MAAM;AAAA,EAClB;AAEA,QAAM,cAAU,sBAA8C,IAAI;AAClE,QAAM,kBAAc,kCAAe,KAAK,OAAO;AAE/C,+BAAU,MAAM;AAvJlB;AAwJI,QAAI,OAAO;AACT,oBAAQ,YAAR,mBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,mBAAe,2BAAY,MAAM;AACrC,QAAI,YAAY,OAAO;AACrB,eAAS,KAAK;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,QAAM,gBAAgB,CACpB,MACG;AACH,iBAAa;AACb,eAAW,QAAQ,CAAC;AAAA,EACtB;AAEA,QAAM,kBAAkB,CACtB,MACG;AACH,iBAAa;AACb,iBAAa,UAAU,CAAC;AAAA,EAC1B;AAEA,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU,QAAQ,IAAI;AAAA,EACxB;AACA,QAAM,cAAcA,UAAQ,6CAAC,0BAAK,UAAS,WAAU,MAAMA,QAAM;AAEjE,MAAI,CAAC,QAAQ,CAAC,SAAS;AACrB,WACE,8CAAC,QAAM,GAAG,EAAE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI,GAAG,IAAI,GACnE;AAAA,mDAAC,eAAa,uBAAY;AAAA,MACzBD;AAAA,OACH;AAAA,EAEJ;AAEA,MAAI,CAAC,MAAM;AACT,WACE;AAAA,MAAC;AAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QAClD,GAAG;AAAA,QACJ,IAAG;AAAA,QACH,KAAK;AAAA,QAEL;AAAA,uDAAC,eAAa,uBAAY;AAAA,UACzBA;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD,GAAG;AAAA,MACJ,IAAG;AAAA,MACH,KAAK;AAAA,MAEL;AAAA,qDAAC,eAAa,uBAAY;AAAA,QACzBA;AAAA;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,iBAAiB,cAAc;;;AL3M/B,IAAAE,oBAAiC;AACjC,IAAAC,oBAA2B;AAuHf,IAAAC,uBAAA;AArHZ,IAAM,EAAE,WAAAC,YAAW,SAAAC,SAAQ,IAAI;AAMxB,IAAM,YAAY,0BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM5B,CAAC,EAAE,QAAQ,UAAM,wCAAqB,OAAO,CAAC;AAAA,YACtCF,WAAU,MAAM;AAAA,sBACNA,WAAU,eAAe;AAAA,mBAC5BA,WAAU,YAAY;AAAA;AAAA,IAErC,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA;AAAA;AAAA,MAGtB,2BAAS;AAAA;AAAA;AAIR,IAAM,mBAAmB,0BAAAE,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQvC,IAAMC,qBAAgB,0BAAAD,SAAO,OAAO;AAAA,iBACnBD,SAAQ,UAAU;AAAA,kBACjBA,SAAQ,WAAW;AAAA;AAG9B,IAAM,mBAAe;AAAA,EAC1B,CAAC,OAAO,QAAQ;AA7DlB;AA8DI,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,mBAAO;AAAA,MAChB;AAAA,MACA,YAAY,CAAC;AAAA,MACb,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,EAAE,MAAM,OAAO,QAAI,oCAAiB,MAAM;AAAA,MAC9C;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,kBAAc,kCAAe,KAAK,KAAK,WAAW;AAExD,iCAAU,MAAM;AACd,kBACI,KAAK,aAAa,UAAU,OAAO,IACnC,KAAK,aAAa,IAAI;AAAA,IAC5B,GAAG,CAAC,SAAS,CAAC;AAEd;AAAA,MACE,EAAC,kCAAM,aAAN,mBAAgB,UAAS,kCAAM,cAAN,mBAAiB,OAA6B;AAAA,MACxE,MAAM;AACJ,YAAI,QAAQ;AACV,qBAAW,QAAQ;AACnB,sBAAY,SAAS;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,wCAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AArG1C,UAAAG;AAsGM,UAAI,QAAQ;AACV,mBAAW,QAAQ;AACnB,oBAAY,SAAS;AACrB,uBAAaA,MAAA,UAAU,YAAV,gBAAAA,IAAmB;AAAA,MAClC;AAAA,IACF,CAAC;AAED,wCAAa,CAAC,KAAK,GAAG,MAAM;AAC1B,UAAI,QAAQ;AACV,mBAAW,QAAQ;AACnB,oBAAY,SAAS;AAAA,MACvB;AAAA,IACF,CAAC;AAED,UAAM,mBACJ,CAAC;AAEH,UAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,SAAS;AAClD,UAAM,cAAc,CAAC,CAAC,YAAY,SAAS,SAAS;AACpD,UAAM,EAAE,MAAM,UAAU,GAAG,cAAc,IAAI,gCAAa,CAAC;AAC3D,UAAM,gBACJ,YAAY,aAAa,CAAC,UAAU,QAAQ,CAAC,UAAU;AACzD,UAAM,qBACJ,YAAY,cAAc,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,UAAU;AAE5D,0BACE,iBAAiB,KAAK,EAAE,OAAO,UAAU,GAAG,cAAc,CAAC;AAC7D,mBAAe,iBAAiB,KAAK,GAAG,QAAQ;AAChD,uBAAmB,iBAAiB,KAAK,GAAG,KAAK;AAEjD,UAAM,sBAAsB,iBAAiB,SAAS;AAEtD,UAAM,CAAC,OAAO,QAAQ,QAAI,gCAAa,qDAAkB,QAAQ,CAAC,MAAM;AAExE,UAAM,uBAAuB,sBACzB,iBAAiB,IAAI,CAAC,MAAM,UAC1B,8CAAC,QACC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,UAAU,SAAS;AAAA,QAC1B;AAAA,QACA,MAAM,sBAAsB,UAAU,IAAI,+BAAa;AAAA,QACtD,GAAG;AAAA,QACJ,SAAS,CACP,MAEG;AACH,eAAK,WAAW,KAAK,QAAQ,CAAC;AAC9B,sBAAY,SAAS;AACrB,qBAAW,QAAQ;AAAA,QACrB;AAAA;AAAA,IACF,KAfO,KAgBT,CACD,IACD;AAEJ,UAAM,qBAAqB,MAAM;AAC/B,UAAI,qBAAqB;AACvB,cAAM,eAAe,qBAAqB,IAAI;AAC9C,cAAM,mBAAmB,cAAc,eAAe,IAAI;AAC1D,cAAM,kBAAkB,cACpB,eAAe,SAAS,SACxB;AACJ,cAAM,uBAAuB,CAAC,kBAC1B,KACA,cACE,kBAAkB,IAClB,eAAe;AACrB,eACE,gFACG;AAAA,gCACC,8CAAC,oBAAkB,uEAAuB,IAAG;AAAA,UAE9C,eACC,8CAAC,SACC,wDAAC,oBACE,uEAAsB;AAAA,YACrB;AAAA,YACA,kBAAkB;AAAA,aAEtB,GACF;AAAA,UAED,eAAe,mBACd,8CAACD,gBAAA,EAAc,OAAM,kBAAiB;AAAA,UAEvC,mBACC,8CAAC,oBAAiB,cAAW,gBAC1B,uEAAsB;AAAA,YACrB;AAAA,YACA,qBAAqB;AAAA,aAEzB;AAAA,WAEJ;AAAA,MAEJ;AAAA,IACF;AAEA,UAAM,EAAE,QAAQ,CAAC,GAAG,GAAG,cAAc,IAAI;AACzC,UAAM,kBAAc,qBAAM;AAE1B,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,eAAe,IAAI;AAAA,MACtD,KAAK;AAAA,MACL,IAAI,kBAAM,GAAG,WAAW;AAAA,MACxB,SAAS;AAAA,MACT,OAAO,EAAE,GAAG,OAAO,GAAG,OAAO,SAAS;AAAA,MACtC,eAAe,CAAC;AAAA,MAChB,MAAM;AAAA,IACR;AAEA,WACE,+CAAC,aAAW,GAAG,gBAAgB,cAAW,oCACvC;AAAA,uBACC,8CAAC,oBAAiB,OAAO,UAAU,MAAM,8BAAY;AAAA,MAGtD,mBAAmB;AAAA,OACtB;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;;;AOlO3B,IAAAE,gBASO;AA+DE,IAAAC,uBAAA;AAhDF,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,KAAK;AAC1C,QAAM,SAAS,MAAM,UAAU,CAAC,MAAM;AACtC,QAAM,QAAQ,MAAM,UAAU,KAAK;AACnC,QAAM,gBAAY,sBAA0B,IAAI;AAEhD,QAAM,kBAAc,qBAAM;AAC1B,QAAM,uBAAuB,0CAAkB,GAAG,WAAW;AAE7D,QAAM,cAAc,MAAM;AACxB,eAAW,QAAQ;AACnB,UAAM;AAAA,EACR;AAEA,QAAM,eAAe,MAAM;AACzB,cAAU,CAAC,UAAU,OAAO;AAC5B,eAAW,UAAU,QAAQ;AAC7B,gBAAY,SAAS;AACrB,WAAO;AAAA,EACT;AAEA,QAAMC,YAAW,cAAAC,SAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,eACE,8BAAe,KAAK,MACnB,eAAe,QACZ,4BAAa,OAAuB;AAAA,MAClC,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,KAAK;AAAA,IACP,CAAC,QACD,4BAAa,OAAuB;AAAA,MAClC;AAAA,MACA,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAAA,EAET,CAAC;AAED,SAAO,+EAAG,UAAAD,WAAS;AACrB;AAEA,kBAAkB,cAAc;;;Ad+D5B,IAAAE,uBAAA;AA5HJ,IAAM,EAAE,YAAYC,YAAW,uBAAAC,uBAAsB,IAAI;AAEzD,IAAM,kBAAkB,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAGtBF,WAAU,OAAO,GAAG;AAAA;AAG7B,IAAM,oBAAoB,2BAAAE,QAAO;AAAA;AAAA;AAAA,SAGxBF,WAAU,OAAO,GAAG;AAAA;AAG7B,IAAM,iBAAa,2BAAAE,SAAO,MAAM,EAAE,MAAM;AAAA,EACtC,YAAY;AAAA,EACZ,SAAS;AACX,CAAC;AAAA,WACUF,WAAU,OAAO,eAAe;AAAA;AAAA;AAAA;AAAA,uBAIpBA,WAAU,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMnCA,WAAU,OAAO,eAAe;AAAA,+BAChBA,WAAU,OAAO,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/D,IAAM,iBAAiB,2BAAAE,QAAO;AAAA;AAAA;AAAA;AAK9B,IAAM,MAAM,2BAAAA,QAAO,IAAI,WAAW;AAAA,EAChC,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA;AAAA;AAAA;AAAA,SAIQF,WAAU,OAAO,GAAG;AAAA;AAAA,YAEjBA,WAAU,OAAO,MAAM;AAAA,WACxBA,WAAU,KAAK;AAAA,sBACJA,WAAU,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,SAKtC,CAAC,EAAE,wBAAwB,MAChC,0BAA0B,qDAA4B,GAAG;AAAA;AAAA;AAAA;AAAA,uBAItCA,WAAU,OAAO,UAAU;AAAA;AAAA;AAAA,mBAG/BA,WAAU,KAAK;AAAA,0BACRA,WAAU,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOnC,eAAe;AAAA;AAAA;AAAA;AAAA,MAIf,iBAAiB;AAAA,gCACSA,WAAU,OAAO,GAAG;AAAA,aACvCC,uBAAsB,GAAG;AAAA;AAAA;AAAA,MAGhC,UAAU;AAAA,0BACUA,uBAAsB,eAAe;AAAA,eAChDA,uBAAsB,SAAS;AAAA;AAAA,uBAEvBA,uBAAsB,YAAY;AAAA;AAAA,QAEjD,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AA6Bf,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAmB;AACjB,QAAME,SAAO,CAAC,UACZ,8CAAC,cAAY,GAAG,OAAO,MAAM,KAAK,OAAO,MAAM;AAGjD,SACE,+CAAC,OAAI,yBACH;AAAA,mDAAC,mBACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,mBAAmB,8BAAY;AAAA,UACrC,SAAS,MAAM,uBAAuB,CAAC,gBAAgB;AAAA;AAAA,MACzD;AAAA,MACA,8CAAC,kBAAe,OAAK,MAAC,oBAAM;AAAA,OAC9B;AAAA,IACA,8CAAC,qBACC,yDAAC,qBACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAMA;AAAA,UACN,OAAO,8CAAC,kBAAgB,eAAK,MAAK;AAAA;AAAA,MACpC;AAAA,MACA,8CAAC,gBAAa,OAAO,eAAe;AAAA,OACtC,GACF;AAAA,KACF;AAEJ;;;ALxJA,IAAAC,4BAA0C;AAsHpC,IAAAC,uBAAA;AAnHN,IAAM,EAAE,YAAYC,WAAU,IAAI;AAElC,IAAM,UAAU,2BAAAC,QAAO,IAAI,WAAW;AAAA,EACpC,mBAAmB,UACjB,SAAS,YAAY,SAAS;AAClC,CAAC;AAAA;AAAA;AAAA,yBAMwBD,WAAU,OAAO,MAAM;AAAA;AAAA,aAEnCA,WAAU,OAAO;AAAA,WACnBA,WAAU,KAAK;AAAA,sBACJA,WAAU,eAAe;AAAA;AAAA;AAAA;AAAA,SAItC,CAAC,EAAE,wBAAwB,MAChC,0BACI,QAAQ,mDAAyB,MAAMA,WAAU,OAAO,MAAM,MAC9DA,WAAU,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASL,CAAC,EAAE,OAAO,MAAO,SAAS,MAAM,OAAQ;AAAA,aACrD,CAAC,EAAE,OAAO,MAAO,SAAS,MAAM,GAAI;AAAA;AAAA,uBAE1BA,WAAU,OAAO,UAAU;AAAA,cACpC,CAAC,EAAE,wBAAwB,MACnC,0BACI,gBAAgB,mDAAyB,MACzC,OAAO;AAAA,WACN,CAAC,EAAE,wBAAwB,MAChC,0BAA0B,sDAA4B,CAAC;AAAA,aAChDA,WAAU,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ5B,IAAM,0BAA0B,2BAAAC,QAAO;AAAA;AAAA;AAAA,uBAGhBD,WAAU,OAAO,UAAU;AAAA;AAAA;AAAA,aAGrCA,WAAU,eAAe,KAAK;AAAA,eAC5BA,WAAU,eAAe,OAAO;AAAA;AAAA;AAI/C,IAAM,UAAU,2BAAAC,QAAO;AAAA,eACRD,WAAU,eAAe,QAAQ,QAAQ;AAAA,gBACxCA,WAAU,eAAe,QAAQ,SAAS;AAAA,iBACzCA,WAAU,eAAe,QAAQ,UAAU;AAAA,iBAC3CA,WAAU,eAAe,QAAQ,UAAU;AAAA,iBAC3CA,WAAU,eAAe,QAAQ,UAAU;AAAA,oBACxCA,WAAU,eAAe,QAAQ,aAAa;AAAA;AAG3D,IAAM,kBAAkB,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAG7BD,WAAU,gBAAgB,GAAG;AAAA;AAGtC,IAAM,iBAAiB,2BAAAC,QAAO;AAAA,kBACZD,WAAU,gBAAgB,KAAK,OAAO;AAAA,mBACrCA,WAAU,gBAAgB,KAAK,OAAO;AAAA;AAEzD,IAAME,qBAAgB,2BAAAD,SAAO,OAAO;AAAA,kBAClBD,WAAU,YAAY;AAAA;AAYjC,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuB;AACrB,QAAM,EAAE,QAAQ,QAAQ,IAAI,mBAAmB;AAE/C,gCAAU,MAAM;AACd,UAAM,WAAW,CAAC,UAAyB;AACzC,UAAI,MAAM,QAAQ,KAAK;AACrB,gBAAQ,UAAQ,CAAC,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,iBAAiB,YAAY,QAAQ;AAC5C,WAAO,MAAM,OAAO,oBAAoB,YAAY,QAAQ;AAAA,EAC9D,CAAC;AAED,SACE,+CAAC,SACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB,wBAAwB,aAAW,QAAQ,OAAO;AAAA,QAClD;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QAEA;AAAA,yDAAC,2BACC;AAAA,0DAAC,kBAAe,oBAAM;AAAA,YACrB,YAAY,MAAM,+CAAC,WAAQ;AAAA;AAAA,cAAG;AAAA,eAAQ;AAAA,aACzC;AAAA,UACA,+CAAC,mBACE;AAAA,oCAAS,IAAI,UAAU,UAAQ;AAC9B,kBAAI,KAAK,SAAS,gBAAgB;AAChC,wBAAQ;AAAA,kBACN;AAAA,gBACF;AACA,uBAAO;AAAA,cACT;AACA,qBAAO;AAAA,YACT,CAAC;AAAA,YAEA,SAAS,SAAS,KACjB,8CAAC,kBACC,wDAACE,gBAAA,EAAc,GACjB;AAAA,YAGD,wBAAS,IAAI,UAAU,UAAQ;AAC9B,kBAAI,KAAK,SAAS,gBAAgB;AAChC,wBAAQ;AAAA,kBACN;AAAA,gBACF;AACA,uBAAO;AAAA,cACT;AACA,qBAAO;AAAA,YACT,CAAC;AAAA,aACH;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;AFrKA,IAAAC,4BAIO;AAyED,IAAAC,uBAAA;AAtCN,IAAM,oBAAoB,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,uBAIV,eAAe,WAAW,OAAO,UAAU;AAAA;AAAA;AAAA;AAKlE,IAAM,cAAc,2BAAAA,QAAO,KAAK,WAAW;AAAA,EACzC,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA,6BAC4B,eAAe,WAAW,OAAO,MAAM;AAAA,gBACpD,CAAC,EAAE,wBAAwB,MACvC,0BACI,QAAQ,mDAAyB,MAAM,eAAe,WAAW,OAAO,MAAM,MAC9E,eAAe,WAAW,OAAO,MAAM;AAAA,uBACxB,eAAe,WAAW,OAAO,UAAU;AAAA;AAAA,kBAEhD,CAAC,EAAE,wBAAwB,MACvC,0BAA0B,sDAA4B,CAAC;AAAA,mBAC1C,eAAe,WAAW,KAAK;AAAA,8BACpB,eAAe,WAAW,KAAK;AAAA,8BAC/B,eAAe,WAAW,KAAK;AAAA;AAAA;AAItD,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,YAAY,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE;AAAA,EAC3C;AAAA,EACA;AAAA,EACA,cAAc;AAChB,MAAqB;AACnB,QAAM,0BAA0B,gBAAgB;AAChD,SACE,8CAAC,2BACC,yDAAC,qBACC;AAAA,kDAAC,+CAAkB,aAA0B;AAAA,IAC7C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,IACA,8CAAC,eAAY,yBACV,UACH;AAAA,KACF,GACF;AAEJ;AAEA,SAAS,cAAc;;;AsB/FvB,IAAMC,YAAW;AACjBA,UAAS,UAAU;;;ACRnB,IAAAC,iBAA+C;AAC/C,IAAAC,oBAIO;AACP,IAAAC,yBAA2B;AAC3B,IAAAC,mBAA4B;;;ACN5B,IAAAC,iBAA+C;AAaxC,IAAM,0BACX,eAAAC,QAAM,cAA0C,IAAI;AAE/C,IAAM,sBAAsB,MAAM;AACvC,aAAO,2BAAW,uBAAuB;AAC3C;;;ACnBA,IAAAC,6BAA4B;AAE5B,IAAAC,mBAGO;;;ACLP,IAAAC,4BAA8B;AAC9B,IAAAC,mBAAkD;;;ACD3C,IAAM,+BAA+B;AACrC,IAAM,uBAAuB,GAAG,4BAA4B;;;ADOnE,IAAM,EAAE,QAAAC,SAAQ,SAAAC,UAAS,cAAAC,cAAa,IAAI;AAE1C,IAAM,YAAY;AAAA,EAChB,UAAU;AAAA,IACR,aAAaF,QAAO;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACL,iBAAiBA,QAAO;AAAA,IACxB,QAAQC,SAAQ;AAAA,IAChB,OAAOA,SAAQ;AAAA,IACf,MAAM,cAAcA,SAAQ,kCAAkC,CAAC;AAAA,IAC/D,KAAK,cAAcA,SAAQ,kCAAkC,CAAC;AAAA,EAChE;AACF;AAEA,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,aAAaD,QAAO;AAAA,IACpB,iBAAiBA,QAAO;AAAA,IACxB,cAAcE,cAAa;AAAA,IAC3B,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,iBAAiBF,QAAO;AAAA,MACxB,WAAW,mBAAmB,iCAAgB,WAAW;AAAA,MACzD,aAAa,iCAAgB;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,MACN,iBAAiBA,QAAO;AAAA,MACxB,WAAW,mBAAmB,kCAAiB,WAAW;AAAA,MAC1D,aAAa,kCAAiB;AAAA,IAChC;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,WAAW,mBAAmB,kCAAiB,WAAW;AAAA,IAC1D,aAAa,kCAAiB;AAAA,EAChC;AAAA,EACA,UAAU;AAAA,IACR,aAAaA,QAAO;AAAA,EACtB;AAAA,EACA,UAAU,EAAE,iBAAiB,cAAc;AAAA,EAC3C,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,aAAaA,QAAO;AAAA,MACpB,iBAAiBA,QAAO;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA,MACL,iBAAiBA,QAAO;AAAA,MACxB,WAAW,oBAAoBA,QAAO,uBAAuB;AAAA,MAC7D,aAAaA,QAAO;AAAA,IACtB;AAAA,IACA,UAAU;AAAA,MACR,aAAaA,QAAO;AAAA,MACpB,iBAAiBA,QAAO;AAAA,IAC1B;AAAA,IACA,UAAU;AAAA,MACR,aAAaA,QAAO;AAAA,MACpB,iBAAiBA,QAAO;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AAAA,MACb,aAAaA,QAAO;AAAA,MACpB,iBAAiBA,QAAO;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,IAAMG,aAAY;AAAA,EAChB,OAAOH,QAAO;AAAA,EACd,UAAU;AAAA,IACR,OAAOA,QAAO;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,aAAa,GACX,+BAA+BC,SAAQ,+BACzC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS,GAAG,+BAA+B,CAAC;AAAA,EAC9C;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,KAAK;AAAA,IACH,KAAKA,SAAQ;AAAA,EACf;AAAA,EACA,QAAQ,EAAE,KAAKA,SAAQ,wBAAwB;AACjD;AAEA,IAAM,sBAAsB;AAAA,EAC1B,KAAKA,SAAQ;AACf;AAEO,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,WAAAE;AAAA,EACA;AAAA,EACA;AACF;;;ADtGA,IAAM;AAAA,EACJ,kBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AACF,IAAI;AAIG,IAAM,yBAAyB,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,YAMjCL,kBAAiB,KAAK,MAAM;AAAA,kBACtBA,kBAAiB,KAAK,WAAW;AAAA,sBAC7BA,kBAAiB,KAAK,eAAe;AAAA,mBACxCA,kBAAiB,KAAK,YAAY;AAAA,YACzCA,kBAAiB,KAAK,MAAM;AAAA,WAC7BA,kBAAiB,KAAK,KAAK;AAAA,IAClC,CAAC,EAAE,aAAa,MAChB,iBAAiB,WACjB;AAAA;AAAA,KAEC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQE,IAAMM,aAAY,2BAAAD,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAarBJ,WAAU,KAAK;AAAA,IACtB,CAAC,EAAE,UAAU,MACb,YACI;AAAA,0BACkBA,WAAU,UAAU,WAAW;AAAA,YAEjD;AAAA,qBACaA,WAAU,QAAQ,OAAO;AAAA,SACrC;AAAA;AAAA,YAEG,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAU5B,6BAAY;AAAA;AAAA,oBAEE,4CAA2B;AAAA;AAAA;AAAA;AAAA,4BAInB,sBAAsB;AAAA,wBAC1BD,kBAAiB,MAAM,KAAK,eAAe;AAAA,kBACjDA,kBAAiB,MAAM,KAAK,SAAS;AAAA,oBACnCA,kBAAiB,MAAM,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA,QAInD,sBAAsB;AAAA;AAAA,QAEtB,sBAAsB;AAAA,oBACVA,kBAAiB,QAAQ,KAAK,WAAW;AAAA,wBACrCA,kBAAiB,QAAQ,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA,QAI7D,sBAAsB;AAAA;AAAA;AAAA,QAGtB,sBAAsB;AAAA,wBACNA,kBAAiB,QAAQ,MAAM,eAAe;AAAA,kBACpDA,kBAAiB,QAAQ,MAAM,SAAS;AAAA,oBACtCA,kBAAiB,QAAQ,MAAM,WAAW;AAAA;AAAA;AAAA,IAG1D,CAAC,EAAE,OAAO,MACV,UACA;AAAA,gCAC4B,sBAAsB;AAAA,4BAC1BA,kBAAiB,MAAM,OAAO,eAAe;AAAA,sBACnDA,kBAAiB,MAAM,OAAO,SAAS;AAAA,wBACrCA,kBAAiB,MAAM,OAAO,WAAW;AAAA;AAAA;AAAA,YAGrD,sBAAsB;AAAA;AAAA,YAEtB,sBAAsB;AAAA;AAAA;AAAA,YAGtB,sBAAsB;AAAA,sBACZA,kBAAiB,OAAO,SAAS;AAAA,wBAC/BA,kBAAiB,OAAO,WAAW;AAAA;AAAA,KAEtD;AAAA,qBACgB,sBAAsB;AAAA,MACrCA,kBAAiB,QAAQ;AAAA;AAAA;AAAA,QAGvB,sBAAsB;AAAA;AAAA,QAEtB,sBAAsB;AAAA,wBACNA,kBAAiB,QAAQ,SAAS,eAAe;AAAA,oBACrDA,kBAAiB,QAAQ,SAAS,WAAW;AAAA;AAAA;AAAA,QAGzD,sBAAsB;AAAA;AAAA,QAEtB,sBAAsB;AAAA;AAAA;AAAA;AAAA,IAI1B,CAAC,EAAE,SAAS,MACZ,YACA;AAAA;AAAA,eAEWC,WAAU,SAAS,KAAK;AAAA,KAClC;AAAA,IACD,CAAC,EAAE,aAAa,MAChB,iBAAiB,aACb;AAAA,YACI,sBAAsB;AAAA,4BACNC,WAAU,SAAS,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+CASX,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAS7D;AAAA,YACI,sBAAsB;AAAA;AAAA,gCAEFA,WAAU,MAAM,eAAe;AAAA,qBAC1CA,WAAU,MAAM,KAAK;AAAA,sBACpBA,WAAU,MAAM,MAAM;AAAA,oBACxBA,WAAU,MAAM,IAAI;AAAA,mBACrBA,WAAU,MAAM,GAAG;AAAA;AAAA,SAE7B;AAAA;AAGF,IAAM,sBAAsB,2BAAAG,QAAO;AAAA;AAAA;AAAA,SAGjCD,qBAAoB,GAAG;AAAA;AAGzB,IAAM,iBAAiB,2BAAAC,QAAO;AAAA;AAAA,IAEjC,CAAC,EAAE,WAAW,MAAM;AAAA,sBACF,UAAU;AAAA,WACrBF,gBAAe,UAAU,EAAE,GAAG;AAAA,GACtC;AAAA;;;AFpGG,IAAAI,uBAAA;AA7EN,IAAM,kCAAkC,CACtC,OACAC,WACY;AACZ,MAAI,OAAO,UAAU,eAAe,UAAU,QAAQA,QAAO;AAC3D,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,UAAU,OAAOA,UAAA,gBAAAA,OAAO,KAAK;AAAA,IACtC;AACA,WAAO,WAAUA,UAAA,gBAAAA,OAAO;AAAA,EAC1B;AACA,SAAO,CAAC,CAAC;AACX;AAEO,IAAM,kBAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAAC;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,oBAAoB;AAAA,MACpB;AAAA,MACA,YAAY,CAAC;AAAA,MACb,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM;AAAA,MACJ,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,UAAM,WAAW,CAAC,CAACA;AAEnB,UAAM,mBAAmB,oBAAoB;AAE7C,UAAM,eAAe,CAAC,UAAyC;AAC7D,kBAAY,SAAS,KAAK;AAC1B,2DAAkB,SAAS;AAAA,IAC7B;AAEA,UAAM,iBAAiB,CAAC;AACxB,QAAI,qDAAkB;AACpB,qBAAe,KAAK,qDAAkB,cAAc;AACtD,QAAI;AAAiB,qBAAe,KAAK,eAAe;AAExD,UAAM,aAAa;AAAA,MACjB,OAAG,oCAAiB,UAAU,eAAe,IAAI;AAAA,MACjD,MAAM;AAAA,MACN,MAAM,sBAAQ,qDAAkB;AAAA,MAChC,UACE,YACA,YACA,CAAC,EAAC,qDAAkB,aACpB,CAAC,EAAC,qDAAkB;AAAA,MACtB,UAAU,YAAY,CAAC,EAAC,qDAAkB;AAAA,MAC1C,SACE,OAAO,YAAY,cACf,UACA,gCAAgC,OAAO,gBAAgB;AAAA,MAC7D,UAAU;AAAA,MACV;AAAA,MACA,oBACE,eAAe,SAAS,IAAI,eAAe,KAAK,GAAG,IAAI;AAAA,MACzD,gBAAgB,UAAS,qDAAkB,SAAQ,OAAO;AAAA,IAC5D;AAEA,WACE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QAAQ,UAAS,qDAAkB;AAAA,QACnC,UAAU,aAAY,qDAAkB;AAAA,QACxC,WAAW,aAAY,qDAAkB;AAAA,QACzC;AAAA,QACA,eAAW,kCAAe,WAAW,kBAAkB;AAAA,QACvD,WAAW;AAAA,QACX,SAAS;AAAA,QACT,cAAa;AAAA,QAEb;AAAA,wDAAC,gCAAa,GAAG,YAAY,KAAU;AAAA,UACvC,8CAAC,0BAAuB,cAAa,SAAQ;AAAA,UAC7C,8CAAC,qCAAW,IAAG,QAAQ,wCAAYD,QAAM;AAAA;AAAA;AAAA,IAC3C;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AK/G1B,IAAAE,iBAQO;AAEP,IAAAC,yBAA2B;AAC3B,IAAAC,oBAMO;;;ACjBP,IAAAC,6BAA4B;AAC5B,IAAAC,oBAAqB;;;ACDrB,IAAAC,4BAA8B;AAE9B,IAAM,EAAE,QAAAC,SAAQ,SAAAC,SAAQ,IAAI;AAE5B,IAAM,UAAU;AAAA,EACd,KAAK;AAAA,IACH,iBAAiBD,QAAO;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,SAAS,GAAGC,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB;AAAA,IAC/E,OAAOD,QAAO;AAAA,IACd,iBAAiBA,QAAO;AAAA,IACxB,KAAKC,SAAQ;AAAA,EACf;AACF;AAEA,IAAM,OAAO;AAAA,EACX,WAAWA,SAAQ;AACrB;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AACF;;;ADpBA,IAAAC,yBAA2B;AAC3B,IAAAC,iBAA2B;AAC3B,IAAAC,oBAGO;AAEP,IAAAC,oBAA0B;AAoDpB,IAAAC,uBAAA;AA9CN,IAAM,sBAAsB,2BAAAC,QAAO,IAAI,WAAW;AAAA,EAChD,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKG,CAAC,EAAE,YAAY,MACf,gBAAgB,UACZ;AAAA,mBACW,mBAAO,QAAQ,MAAM,KAAK;AAAA,8BACf,mBAAO,QAAQ,MAAM,eAAe;AAAA,qBAC7C,mBAAO,QAAQ,MAAM,OAAO;AAAA,iBAChC,mBAAO,QAAQ,MAAM,GAAG;AAAA,YAEjC,EAAE;AAAA;AAAA,kBAEQ,mBAAO,KAAK,SAAS;AAAA;AAAA;AAgBhC,IAAM,mBAAe;AAAA,EAC1B,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,SAAAC,UAAS,aAAa,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAEpE,UAAM,eAAe;AAAA,MACnB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,MACA;AAAA,IACF;AAEA,UAAM,UAAU,gBAAgB;AAEhC,WACE,+CAAC,uBAAqB,GAAG,cACtB;AAAA,iBAAW,8CAAC,0BAAK,MAAM,6BAAW,UAAS,WAAU;AAAA,MACtD;AAAA,QAAC;AAAA;AAAA,UACC,gBACE,UAAU,2BAA2B;AAAA,UAEvC,IAAG;AAAA,UACH,MAAM,UAAU,OAAO;AAAA,UACvB,OAAO,UAAU,mBAAO,QAAQ,MAAM,QAAQ;AAAA,UAE7C,UAAAA;AAAA;AAAA,MACH;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;;;AEvEzB,IAAAC,uBAAA;AANK,IAAM,qBAAqB,CAChC,KACA,OACA,cACA,mBAEA,gFACG;AAAA,kBAAgB,kBACf;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,IAAI;AAAA;AAAA,EACN;AAAA,EAED,OAAO,SAAS,CAAC,gBAChB,8CAAC,gBAAa,SAAS,KAAK,aAAY,OAAM,IAAI,OAAO;AAAA,GAE7D;;;AHuGI,IAAAC,uBAAA;AAhEN,IAAM,wBAAwB,CAC5B,OACA,QACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,iBAAiB,eAAe,MAAM,IAAI;AAElD,QAAM,CAAC,YAAY,aAAa,QAAI,yBAElC,KAAK;AAEP,QAAM,kBAAc,sBAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAE/C,QAAM,mBAAe;AAAA,IACnB,CAAC,MAAqC,cAAc,EAAE,OAAO,KAAK;AAAA,IAClE,OAAK,YAAY,SAAS,GAAG,EAAE,OAAO,KAAU;AAAA,EAClD;AAEA,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,qBAAqB,YAAY;AAEvC,QAAM,QAAQ,OAAO,GAAG,aAAa;AACrC,QAAM,iBAAiB,gBAAgB,GAAG,aAAa;AAEvD,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG;AAAA,QACF;AAAA,QACA;AAAA,QACA,EAAE,GAAG,WAAW,iBAAiB,aAAa;AAAA,QAC9C;AAAA,MACF;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,gBAAe;AAAA,YACf,IAAI;AAAA,YAEH;AAAA,cAAAA;AAAA,cAAM;AAAA,cAAE,sBAAsB,8CAAC,oCAAe;AAAA;AAAA;AAAA,QACjD;AAAA,QACC,mBAAmB,KAAK,KAAK;AAAA,QAC9B,8CAAC,wBAAwB,UAAxB,EAAiC,OAAO,EAAE,GAAG,aAAa,GACzD;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,YAAY;AAAA,YACZ,mBAAiB;AAAA,YACjB,oBAAkB;AAAA,YAClB,qBAAmB;AAAA,YAElB;AAAA;AAAA,QACH,GACF;AAAA,QACC,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA;AAAA;AAAA,EACxE;AAEJ;AAEO,IAAMC,wBAAmB,2BAAW,qBAAqB;AAOhEA,kBAAiB,cAAc;;;AIzJ/B,IAAAC,iBAAkC;AAClC,IAAAC,oBAIO;AAEP,IAAAC,yBAA2B;;;ACN3B,IAAAC,iBAAkC;AAS3B,IAAM,uBACX,eAAAC,QAAM,cAAmD,IAAI;AAExD,IAAM,mBAAmB,MAAM;AACpC,aAAO,2BAAW,oBAAoB;AACxC;;;ADJA,IAAAC,mBAA4B;AAiCtB,IAAAC,uBAAA;AA/BC,IAAM,eAAW;AAAA,EACtB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAAC;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB;AAAA,MACpB;AAAA,MACA,YAAY,CAAC;AAAA,MACb,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,UAAM,gBAAgB,iBAAiB;AAEvC,UAAM,WAAW,CAAC,CAACA;AAEnB,UAAM;AAAA,MACJ;AAAA,MACA,WAAW;AAAA,MACX,GAAG;AAAA,IACL,IAAI;AAIJ,WACE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,QAAQ,UAAS,+CAAe;AAAA,QAChC;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,cAAa;AAAA,QACb,eAAW,kCAAe,WAAW,kBAAkB;AAAA,QACvD;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACE,OAAG,oCAAiB,UAAU,eAAe,IAAI;AAAA,cAClD;AAAA,cACA;AAAA,cACA;AAAA,cACA,wBAAkB,iDAA8B;AAAA,gBAC9C,+CAAe;AAAA,gBACf,+CAAe;AAAA,gBACf;AAAA,cACF,CAAC;AAAA,cACD,gBAAc,UAAS,+CAAe,SAAQ,OAAO;AAAA,cACrD,mBAAiB,+CAAe;AAAA,cAChC,gBAAc,gBAAiB,UAA0B;AAAA,cACzD,iBAAe;AAAA,cACf,MAAK;AAAA,cACL,sBAAoB;AAAA;AAAA,UACtB;AAAA,UACA,8CAAC,0BAAuB,cAAa,YAAW;AAAA,UAC/C,YACC,8CAAC,qCAAW,OAAM,WAAU,IAAG,QAAO,gBAAe,cAClD,UAAAD,QACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AEjFvB,IAAAE,iBAAsB;AAKtB,IAAAC,yBAA2B;AAC3B,IAAAC,oBAMO;AAkED,IAAAC,uBAAA;AAzCC,IAAM,gBAAgB,CAAC,UAA8B;AAC1D,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,iBAAiB,aAAa,IAAI;AAE1C,QAAM,kBAAc,sBAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAC/C,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,qBAAqB,YAAY;AAEvC,QAAM,qBAAiB,yCAAsB,eAAe,cAAc;AAC1E,QAAM,YAAQ,yCAAsB,eAAe,KAAK;AAExD,QAAM,eAA0C;AAAA,IAC9C,OAAO;AAAA,IACP,gBAAgB,eAAe,iBAAiB;AAAA,IAChD;AAAA,IACA,OAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG;AAAA,QACF;AAAA,QACA;AAAA,QACA,EAAE,GAAG,WAAW,iBAAiB,aAAa;AAAA,QAC9C;AAAA,MACF;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,gBAAe;AAAA,YACf,IAAI;AAAA,YAEH;AAAA,cAAAA;AAAA,cAAM;AAAA,cAAE,sBAAsB,8CAAC,oCAAe;AAAA;AAAA;AAAA,QACjD;AAAA,QACC,mBAAmB,KAAK,KAAK;AAAA,QAC9B,8CAAC,qBAAqB,UAArB,EAA8B,OAAO,EAAE,GAAG,aAAa,GACtD;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,mBAAiB;AAAA,YACjB,oBAAkB,MAAM,QAAQ;AAAA,YAChC,YAAY;AAAA,YAEX;AAAA;AAAA,QACH,GACF;AAAA,QACC,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA;AAAA;AAAA,EACxE;AAEJ;AAEA,cAAc,cAAc;;;ACrG5B,IAAAC,iBAOO;AACP,IAAAC,yBAAsB;AACtB,IAAAC,oBAGO;AACP,IAAAC,mBAOO;AAEP,IAAAC,6BAA4B;;;ACtB5B,IAAAC,4BAA8B;AAE9B,IAAM,EAAE,QAAAC,SAAQ,SAAAC,UAAS,UAAU,IAAI;AAEvC,IAAM,QAAQ;AAAA,EACZ,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,aAAa,GACXA,SAAQ,mCACR,UAAU,4BACVA,SAAQ,+BACV;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,aAAa,GACXA,SAAQ,mCACR,UAAU,2BACVA,SAAQ,+BACV;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,aAAa,GACXA,SAAQ,kCACR,UAAU,2BACVA,SAAQ,gCACV;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,QAAQ;AAAA,EACZ,QAAQ;AAAA,IACN,OAAOD,QAAO;AAAA,EAChB;AACF;AAEA,IAAME,QAAO;AAAA,EACX,OAAOF,QAAO;AAAA,EACd,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,KAAKC,SAAQ;AAAA,MACb,MAAMA,SAAQ;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,KAAKA,SAAQ;AAAA,MACb,MAAMA,SAAQ;AAAA,IAChB;AAAA,IACA,MAAM;AAAA,MACJ,KAAKA,SAAQ;AAAA,MACb,MAAMA,SAAQ;AAAA,IAChB;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA,MAAAC;AAAA,EACA;AACF;;;ACvDO,IAAM,uBAAuB,CAAC,kBAAuC;AAC1E,UAAQ,eAAe;AAAA,IACrB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;;;ACZA,IAAAC,iBAAsB;AACtB,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AACP,IAAAC,yBAA2B;AAqBvB,IAAAC,uBAAA;AAnBJ,IAAM,cAAU,2BAAAC,SAAO,iCAAU;AAAA;AAAA;AAYjC,SAAS,YAAY,OAAc;AACjC,QAAM,EAAE,SAAS,KAAK,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAE5D,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,UAAU,WAAW,WAAW,IAAI;AAAA,MACzD,aAAY;AAAA,MACZ,gBAAe;AAAA,MACf,cAAY,GAAG,OAAO,OAAO,GAAG;AAAA,MAE/B;AAAA;AAAA,QAAQ;AAAA,QAAE;AAAA;AAAA;AAAA,EACb;AAEJ;AAEA,IAAO,sBAAQ;;;ACtCf,IAAAC,6BAA4B;AAC5B,IAAAC,oBAAqB;AACrB,IAAAC,6BAA8B;AAC9B,IAAAC,mBAIO;AAIP,IAAM,EAAE,WAAAC,WAAU,IAAI;AACtB,IAAM,EAAE,OAAAC,QAAO,MAAAC,MAAK,IAAI;AAEjB,IAAM,mBAAmB,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAShC,IAAM,iBAAa,2BAAAA,SAAO,sBAAI;AAAA;AAAA,WAE1BD,MAAK,KAAK;AAAA,IACjB,CAAC,EAAE,OAAO,SAAS,MAAM;AAAA,YACjBA,MAAK,MAAM,KAAK,EAAE,IAAI;AAAA,MAC5B,aAAa,UACX;AAAA,iBACS,cAAcF,WAAU,2BAA2B,CAAC,KAAK;AAAA,YAElE;AAAA,iBACS,cAAcA,WAAU,4BAA4B,CAAC,KAAK;AAAA,SAClE;AAAA,GACN;AAAA;AAAA;AAQI,IAAM,kBAAc,2BAAAG,SAAO,8BAAa;AAAA,IAC3C,CAAC,EAAE,eAAe,SAAS,MAC3B,YACA,iBACA;AAAA,sBACkBF,OAAM,SAAS,aAAa,EAAE,WAAW;AAAA,KAC1D;AAAA;;;AJgJG,IAAAG,uBAAA;AAlKR,IAAM,eAAuC;AAC7C,IAAM,mBAA2C;AAEjD,IAAM,WAAW,CACf,MACA,UAC2B;AAC3B,MAAI;AAAO,WAAO;AAClB,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAM,QAAQ,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,IAAM,aAAS,2BAAAA,SAAO,KAAK;AAAA;AAAA;AAAA;AAAA,4BAIC,gBAAgB,MAAM,OAAO,KAAK;AAAA;AAAA,IAE1D,CAAC,EAAE,SAAS,MACZ,YACA;AAAA;AAAA;AAAA;AAAA,KAIC;AAAA;AAGL,IAAM,aAAS,2BAAAA,SAAO,KAAK;AAAA;AAAA;AAAA;AAAA,2BAIA,gBAAgB,MAAM,OAAO,KAAK;AAAA;AAAA,IAEzD,CAAC,EAAE,SAAS,MACZ,YACA;AAAA;AAAA;AAAA;AAAA,KAIC;AAAA;AAGE,IAAM,gBAAY;AAAA,EACvB,CACE;AAAA,IACE,OAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,MAAAC;AAAA,IACA,QAAAC;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,CAAC,MAAM,OAAO,QAAI;AAAA,UACtB,iCAAe,OAAO,YAAY;AAAA,IACpC;AACA,UAAM,gBAAY,uBAAwB,IAAI;AAC9C,UAAM,gBAAY,uBAAwB,IAAI;AAC9C,UAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,CAAC;AAClD,UAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,CAAC;AAElD,wCAAgB,MAAM;AACpB,UAAI,UAAU,SAAS;AACrB,wBAAgB,UAAU,QAAQ,WAAW;AAAA,MAC/C;AACA,UAAI,UAAU,SAAS;AACrB,wBAAgB,UAAU,QAAQ,WAAW;AAAA,MAC/C;AAAA,IACF,GAAG,CAACA,SAAQ,QAAQ,QAAQ,CAAC;AAE7B,UAAM,kBAA8D,CAClE,UACG;AACH,cAAQ,MAAM,OAAO,KAAK;AAE1B,UAAI,UAAU;AACZ,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,UAAM,kBAAkB,CAAC,CAAC;AAC1B,UAAM,SAAS,CAAC,CAAC;AACjB,UAAM,WAAW,CAAC,CAACF;AACnB,UAAM,aAAa,mBAAmB,UAAU,CAAC,CAAC;AAClD,UAAM,UAAU,CAAC,CAACC;AAClB,UAAM,WAAW,CAAC,EAAEC,WAAA,OAAAA,UAAU;AAE9B,UAAM,yBAAqB;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AACA,UAAM,YAAQ,yCAAsB,UAAU,KAAK;AACnD,UAAM,qBAAiB,yCAAsB,UAAU,cAAc;AAErE,UAAM,oBAAoB;AAAA,MACxB,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,WAAW,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB,wBAAoB,iDAA8B;AAAA,QAChD,SAAS,QAAQ;AAAA,QACjB,kBAAkB,iBAAiB;AAAA,QACnC,aAAa,uBAAuB,qBAAqB;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,MACD,gBAAgB,kBAAkB,OAAO;AAAA,MACzC,GAAG;AAAA,IACL;AAEA,UAAM,2BAA2B;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,SAAS,eAAe,KAAK;AAAA,IACtC;AAGA,UAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAI,gBAAgB;AAEpB,QAAI,SAAS;AACX,sBACE,+CAAC,mCAEG;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAMD;AAAA,YACN,UAAU,qBAAqB,aAAa;AAAA,YAC5C,OAAO;AAAA;AAAA,QACT;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACT,GAAG;AAAA;AAAA,QACN;AAAA,SACF;AAAA,IAEJ,WAAW,UAAU;AACnB,sBACE,+CAAC,wCACE;AAAA,QAAAC,WACC,8CAAC,UAAO,UAAoB,KAAK,WAAW,eAAW,MACpD,UAAAA,SACH;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACC,GAAG;AAAA;AAAA,QACN;AAAA,QACC,UACC,8CAAC,UAAO,UAAoB,KAAK,WAAW,eAAW,MACpD,kBACH;AAAA,SAEJ;AAAA,IAEJ;AAEA,WACE,+CAAC,wCAAqB,GAAG,0BACtB;AAAA,kBACC,8CAAC,gCAAM,SAAS,UAAU,qBACvB,UAAAF,QACH;AAAA,MAED,gBACC,gBAEA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA,MAED,cACC,+CAAC,oBACE;AAAA,2BAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,QAC3D,aACC,OAAO,UAAU,SAAS,KAC1B,YAAY,KACZ,wBACE;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,SAAS,KAAK;AAAA,YACd,KAAK;AAAA;AAAA,QACP;AAAA,SAEN;AAAA,OAEJ;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AKlRxB,IAAAG,iBAAwD;AACxD,0BAcO;AACP,IAAAC,qBAIO;AAEP,IAAAC,oBAIO;AACP,IAAAD,qBAAqB;;;AC3BrB,IAAAE,6BAA4B;AAC5B,IAAAC,oBAA0B;;;ACF1B,IAAAC,6BAGO;AACP,IAAAC,mBAIO;AAGP,IAAM,EAAE,QAAAC,SAAQ,SAAAC,UAAS,cAAAC,eAAc,QAAAC,QAAO,IAAI;AAElD,IAAM,EAAE,YAAY,IAAI;AAExB,IAAM,6BAAyE;AAAA,EAC7E,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACR;AAEA,IAAM,iCAEF;AAAA,EACF,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACR;AAEO,IAAMC,mBAOT;AAAA,EACF,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,iBAAiB;AACnB;AAEA,IAAM,UAAU;AAAA,EACd,cAAcF,cAAa;AAAA,EAC3B,QAAQ,GAAGC,QAAO,sCAAsC;AAAA,EACxD,aAAaH,QAAO;AAAA,EACpB,iBAAiBA,QAAO;AAAA,EACxB,OAAOA,QAAO;AAAA,EACd,UAAU;AAAA,IACR,iBAAiBA,QAAO;AAAA,IACxB,aAAaA,QAAO;AAAA,EACtB;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,iBAAiB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,SAAS,GAAGC,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,wBAAwB,IAAIA,SAAQ,wBAAwB;AAAA,MACzJ;AAAA,MACA,OAAO;AAAA,QACL,SAAS,GAAGA,SAAQ,uBAAuB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,wBAAwB;AAAA,MACvJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,GAAGA,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB;AAAA,MACjF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,SAAS,GAAGA,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,wBAAwB,IAAIA,SAAQ,wBAAwB;AAAA,IACzJ;AAAA,IACA,OAAO;AAAA,MACL,SAAS,GAAGA,SAAQ,uBAAuB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,wBAAwB;AAAA,IACvJ;AAAA,IACA,MAAM;AAAA,MACJ,SAAS,GAAGA,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB,IAAIA,SAAQ,wBAAwB,IAAIA,SAAQ,uBAAuB;AAAA,IACxJ;AAAA,EACF;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,OAAOD,QAAO;AAChB;AAEA,IAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA,IACJ,OAAOA,QAAO;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,OAAOA,QAAO;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,OAAO;AAAA,EACT;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,IACJ,OAAOA,QAAO;AAAA,EAChB;AAAA,EACA,OAAO,EAAE,OAAOA,QAAO,wBAAwB;AACjD;AAEA,IAAM,mBAAmB;AAAA,EACvB,OAAOA,QAAO;AAChB;AAEA,IAAM,OAAO;AAAA,EACX,QAAQ;AAAA,EACR,aAAaA,QAAO;AAAA,EACpB,iBAAiBA,QAAO;AAAA,EACxB,cAAcE,cAAa;AAAA,EAC3B,WAAWD,SAAQ;AAAA,EACnB,cAAcA,SAAQ;AACxB;AAEA,IAAM,eAAe;AAAA,EACnB,OAAOD,QAAO;AAAA,EACd,SAAS,GAAGC,SAAQ,uBAAuB,KAAKA,SAAQ,wBAAwB,IAAIA,SAAQ,yBAAyB,IAAIA,SAAQ,wBAAwB;AAC3J;AAEA,IAAM,SAAS;AAAA,EACb,MAAM;AAAA,IACJ,KAAKA,SAAQ;AAAA,IACb,SAAS,GAAGA,SAAQ,wBAAwB;AAAA,IAC5C,iBAAiBD,QAAO;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,OAAO,YAAY;AAAA,IACnB,iBAAiBA,QAAO;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,OAAO,YAAY;AAAA,IACnB,iBAAiBA,QAAO;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,IACR,iBAAiBA,QAAO;AAAA,EAC1B;AACF;AAEA,IAAM,mBAAmB;AAAA,EACvB,SAAS,GAAGC,SAAQ,uBAAuB,IAAIA,SAAQ,sBAAsB;AAAA,EAC7E,OAAOD,QAAO;AAChB;AAEA,IAAM,aAAa;AAAA,EACjB,cAAcE,cAAa;AAAA,EAC3B,iBAAiBF,QAAO;AAC1B;AAEA,IAAM,kBAAkB;AAAA,EACtB,SAAS,KAAKC,SAAQ,wBAAwB;AAAA,EAC9C,OAAOD,QAAO;AAChB;AAEA,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,IACJ,OAAOA,QAAO;AAAA,IACd,SAAS,KAAKC,SAAQ,wBAAwB;AAAA,IAC9C,sBAAsBC,cAAa;AAAA,IACnC,yBAAyBA,cAAa;AAAA,EACxC;AAAA,EACA,OAAO;AAAA,IACL,OAAOF,QAAO;AAAA,IACd,iBAAiBA,QAAO;AAAA,IACxB,WAAW,mBAAmBA,QAAO,qBAAqB;AAAA,EAC5D;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,IACP,KAAKC,SAAQ;AAAA,EACf;AACF;AAEA,IAAMI,QAAO;AAAA,EACX,aAAaJ,SAAQ;AACvB;AAEO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAAI;AACF;;;ADjMA,IAAAC,qBAAqB;AACrB,IAAAC,0BAA+B;AAC/B,IAAAC,oBAMO;AAEP,IAAM;AAAA,EACJ,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC;AAAA,EACA,gBAAAC;AACF,IAAI;AAEG,IAAM,SAAS;AAEtB,SAAS,2BACP,eACA,SACA;AACA,SAAO,UACHb,SAAQ,QAAQ,MAAM,aAAa,EAAE,UACrCA,SAAQ,MAAM,aAAa,EAAE;AACnC;AAEO,IAAMc,aAAY,2BAAAC,QAAO;AAAA;AAAA,WASrB,CAAC,EAAE,OAAO,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA,MAI3B,2BAAS;AAAA;AAAA;AAAA,IAGX,CAAC,EAAE,gBAAgB,SAAS,MAAM;AAAA,OAC/B,MAAM;AAAA,iBACI,2BAA2B,gBAAgB,QAAQ,CAAC;AAAA,YAC7D,wCAAeC,iBAAgB,QAAQ,cAAc,GAAG,IAAI,CAAC;AAAA;AAAA,OAE9D,MAAM;AAAA,YACL,wCAAeA,iBAAgB,OAAO,cAAc,GAAG,IAAI,CAAC;AAAA;AAAA,OAE7D,MAAM;AAAA,YACL,wCAAeA,iBAAgB,YAAY,cAAc,CAAC,CAAC;AAAA;AAAA,OAE5D,MAAM;AAAA,YACL,wCAAeA,iBAAgB,iBAAiB,cAAc,CAAC,CAAC;AAAA;AAAA,GAErE;AAAA;AAAA,IAEC,CAAC,EAAE,cAAc,MACjB,iBACA;AAAA,SACK,MAAM;AAAA,UACL,kCAAgB;AAAA;AAAA,SAEjB,MAAM;AAAA,UACL,uCAAqB;AAAA;AAAA,SAEtB,MAAM;AAAA,UACL,iCAAe;AAAA;AAAA,KAEpB;AAAA;AAAA;AAAA,OAGE,MAAM;AAAA;AAAA,OAEN,MAAM;AAAA,aACAZ,mBAAkB,MAAM,KAAK;AAAA;AAAA;AAAA,IAGtC,CAAC,EAAE,aAAa,UAAU,MAC1B,YACI;AAAA,aACK,MAAM;AAAA,4BACSJ,SAAQ,SAAS,WAAW;AAAA,gCACxBA,SAAQ,SAAS,eAAe;AAAA;AAAA,aAEnD,MAAM;AAAA;AAAA,eAEJ,MAAM;AAAA,qBACAI,mBAAkB,SAAS,KAAK;AAAA;AAAA,YAG7C,cACE;AAAA;AAAA,eAEK,MAAM;AAAA,8BACSJ,SAAQ,SAAS,WAAW;AAAA,kCACxBA,SAAQ,SAAS,eAAe;AAAA;AAAA,uBAE3C,MAAM;AAAA,uBACNI,mBAAkB,KAAK,KAAK;AAAA;AAAA,cAGzC,EAAE;AAAA;AAGL,IAAM,mBAAmB,2BAAAW,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQhC,IAAME,kBAAa,2BAAAF,SAAO,uBAAI;AAAA,kBACnBH,MAAK,WAAW;AAAA;AAG3B,IAAM,kBAAkB,CAC7B,UACiE;AAAA,EACjE,SAAS,OAAO;AAAA,IACd,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAcZ,SAAQ;AAAA,IACtB,QAAQA,SAAQ;AAAA,IAChB,aAAaA,SAAQ;AAAA,IACrB,iBAAiBA,SAAQ;AAAA,IACzB,YAAY;AAAA,IAEZ,WAAW;AAAA,MACT,GAAG;AAAA,IACL;AAAA,IACA,kBAAkB;AAAA,MAChB,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EACA,aAAa,eAAa;AAAA,IACxB,GAAG;AAAA,IACH,OAAOW,aAAY;AAAA,IACnB,QAAQ;AAAA,EACV;AAAA,EACA,OAAO,eAAa;AAAA,IAClB,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,oBAAoB,OAAO,CAAC;AAAA,EAC5B,mBAAmB,CAAC,UAAU,WAAW;AAAA,IACvC,SAAS;AAAA,IACT,WAAW,MAAM,YAAY,aAAa,mBAAmB;AAAA,IAC7D,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,SAAS;AAAA,IACT,OAAOP,mBAAkB,KAAK;AAAA,EAChC;AAAA,EAEA,gBAAgB,CAAC,UAAU,WAAW;AAAA,IACpC,GAAG;AAAA,IACH,GAAI,MAAM,YAAY,WAAW;AAAA,MAC/B,KAAKS,gBAAe,QAAQ;AAAA,IAC9B;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EAEA,aAAa,OAAO;AAAA,IAClB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA,YAAY,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAcN,YAAW;AAAA,IACzB,iBAAiB,aAAO,WAAW;AAAA,EACrC;AAAA,EACA,iBAAiB,eAAa;AAAA,IAC5B,GAAG;AAAA,IACH,SAASC,iBAAgB;AAAA,IACzB,OAAG,wCAAeQ,iBAAgB,gBAAgB,IAAI,CAAC;AAAA,IACvD,OAAOR,iBAAgB;AAAA,EACzB;AAAA,EACA,kBAAkB,CAAC,UAAU,UAC3B,MAAM,YAAY,aACd;AAAA,IACE,SAAS;AAAA,EACX,IACA;AAAA,IACE,WAAW;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,OAAOC,kBAAiB,KAAK;AAAA,IAC7B,SAASA,kBAAiB,KAAK;AAAA,IAC/B,sBAAsBA,kBAAiB,KAAK;AAAA,IAC5C,yBACEA,kBAAiB,KAAK;AAAA,IACxB,WAAW;AAAA,MACT,WAAWA,kBAAiB,MAAM;AAAA,IACpC;AAAA,EACF;AAAA,EACN,MAAM,eAAa;AAAA,IACjB,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW,cAAcR,MAAK,WAAW;AAAA,IACzC,QAAQA,MAAK;AAAA,IACb,aAAaA,MAAK;AAAA,IAClB,iBAAiBA,MAAK;AAAA,IACtB,cAAcA,MAAK;AAAA,IACnB,WAAWA,MAAK;AAAA,IAChB,cAAcA,MAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,cAAc,OAAO;AAAA,IACnB,OAAG,wCAAee,iBAAgB,YAAY;AAAA,IAC9C,OAAOd,cAAa;AAAA,IACpB,SAASA,cAAa;AAAA,EACxB;AAAA,EACA,UAAU,OAAO;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,IACX,GAAG,iBAAiB;AAAA,IACpB,GAAG,iBAAiB;AAAA,EACtB;AAAA,EACA,QAAQ,CAAC,UAAU,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAKC,QAAO,KAAK;AAAA,IACjB,SAASA,QAAO,KAAK;AAAA,IACrB,iBAAiBA,QAAO,KAAK;AAAA,IAC7B,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,OAAOA,QAAO,MAAM;AAAA,MACpB,iBAAiBA,QAAO,MAAM;AAAA,IAChC;AAAA,IACA,GAAI,MAAM,cAAc;AAAA,MACtB,iBAAiBA,QAAO,SAAS;AAAA,IACnC;AAAA,IACA,GAAI,MAAM,aAAa;AAAA,MACrB,OAAOA,QAAO,MAAM;AAAA,MACpB,iBAAiBA,QAAO,MAAM;AAAA,IAChC;AAAA,EACF;AAAA,EACA,kBAAkB,OAAO;AAAA,IACvB,SAASO,kBAAiB;AAAA,IAC1B,OAAOA,kBAAiB;AAAA,EAC1B;AAAA,EACA,gBAAgB,OAAO;AAAA,IACrB,SAAS;AAAA,IACT,OAAOJ,gBAAe,KAAK;AAAA,IAC3B,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,OAAOA,gBAAe,MAAM;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,kBAAkB,eAAa;AAAA,IAC7B,GAAG;AAAA,IACH,SAAS;AAAA,IACT,OAAOD,kBAAiB;AAAA,EAC1B;AACF;;;ADrQA,IAAAa,0BAAsB;AA+BpB,IAAAC,uBAAA;AAxBF,IAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;AAOG,IAAM,sBAAsB,IAC9B,SACwB,KAAK,IAAI,QAAM,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE;AAEnE,IAAM,YAAY,CAChB,OACA,kBAEA,+CAAC,UAAQ,GAAG,OACT;AAAA,QAAM,cACL,8CAAC,2BAAK,MAAM,8BAAW,UAAU,qBAAqB,aAAa,GAAG;AAAA,EAEvE,MAAM;AAAA,GACT;AAGF,IAAM,eAAe,CACnB,OACA,YAEA,8CAAC,UAAQ,GAAG,OACV,wDAAC,WAAS,GAAG,OAAO,GACtB;AAGF,IAAM,oBAAoB,CACxB,OACA,IACA,YAIA,8CAAC,eAAa,GAAG,OACf,wDAAC,oBAAiB,IACf,oBAAU,8CAAC,WAAS,GAAG,OAAO,IAAK,MAAM,UAC5C,GACF;AAGF,IAAM,sBAAsB,CAC1B,UACG,8CAAC,oBAAkB,GAAG,OAAO,yBAAW;AAE7C,IAAM,oBAAoB,CACxB,OACA,SAEA,8CAAC,kBAAgB,GAAG,OAClB,wDAAC,2BAAK,MAAM,mCAAgB,UAAU,qBAAqB,IAAI,GAAG,GACpE;AAGF,IAAM,sBAAsB,CAC1B,UAEA,8CAAC,oBAAkB,GAAG,OACpB,wDAAC,2BAAK,MAAM,mCAAgB,UAAS,SAAQ,GAC/C;AAGF,IAAM,uBAAuB,CAC3B,OACA,SAEA,8CAAC,qBAAmB,GAAG,OACrB,wDAAC,2BAAK,MAAM,oCAAiB,UAAU,qBAAqB,IAAI,GAAG,GACrE;AAGF,IAAM,WAAW,CACf,OACA,aACA,oBAEA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,gBAAc;AAAA,IACd,oBAAkB;AAAA;AACpB;AAGF,IAAM,aAAa,CACjB,OACA,eACAC,WAEA,+CAAC,WAAS,GAAG,OACV;AAAA,EAAAA,UACC,8CAACC,aAAA,EAAW,MAAMD,QAAM,UAAU,qBAAqB,aAAa,GAAG;AAAA,EAExE,MAAM;AAAA,GACT;AAGF,IAAME,gBAAuC;AAE7C,IAAM,iBAAiB,CACrBC,cACA,YAEAA,eACIA,eACA,UACE,8BACA;AAiDR,IAAM,cAAc,CAKlB,OACA,QACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA,OAAAC;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAAJ;AAAA,IACA;AAAA,IACA,QAAQE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,aAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,gBAAgB,CAAC,UAAU,GAAG,QAAQ,iBAAiB;AAC7D,QAAM,WAAW,CAAC,CAACC;AACnB,QAAM,kBAAkB,CAAC,CAAC;AAE1B,QAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAM,YAAQ,yCAAsB,UAAU,KAAK;AACnD,QAAM,qBAAiB,yCAAsB,UAAU,cAAc;AAErE,QAAM,iBAAiB;AAAA,IACrB,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,aAAa;AAAA,IACb,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAEA,QAAM,mBAIF;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA,YAAY,cAAc;AAAA,IAC1B;AAAA,IACA,aAAa,eAAeD,cAAa,OAAO;AAAA,IAChD,mBAAmB,oBACf,oBACA,UACE,QACA;AAAA,IACN;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,gBAAyB,aAAa;AAAA,IAC9C,cAAc,CAACE,SAAQ,eAAe;AACpC,YAAM,EAAE,OAAAD,OAAM,IAAIC;AAClB,iBAAO,gCAAaD,QAAO,UAAU,KAAK,eAAe;AAAA,IAC3D;AAAA,IACA,YAAY;AAAA,MACV,QAAQ,sBACJ,CAAAE,WAAS,aAAaA,QAAO,mBAAmB,IAChD,CAAAA,WAAS,UAAUA,QAAO,aAAa;AAAA,MAC3C,kBAAkB;AAAA,MAClB,OAAO,CAAAA,WACL;AAAA,QACE,EAAE,GAAGA,QAAO,iBAAiB,aAAa;AAAA,QAC1C;AAAA,YACA,iDAA8B;AAAA,UAC5B;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,eAAe,iBAAiB;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,MACF,aAAa,CAAAA,WACX,kBAAkBA,QAAO,eAAe,wBAAwB;AAAA,MAClE,gBAAgB,CAAAA,WAAS,kBAAkBA,QAAO,aAAa;AAAA,MAC/D,mBAAmB,CAAAA,WAAS,qBAAqBA,QAAO,aAAa;AAAA,MACrE,kBAAkB;AAAA,MAClB,SAAS,CAAAA,WAAS,WAAWA,QAAO,eAAeN,MAAI;AAAA,IACzD;AAAA,IACA,gBAAgB,kBAAkB,OAAO;AAAA,IACzC;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SACE,+CAACO,YAAA,EAAW,GAAG,gBACZ;AAAA,gBACC,8CAAC,iCAAM,SAAS,UAAU,qBACvB,UAAAH,QACH;AAAA,IAEF,8CAAC,oBAAAI,SAAA,EAAa,GAAG,kBAAkB,KAAU;AAAA,IAC5C,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,KAC9D;AAEJ;AAEO,IAAM,SAAS,eAAAC,QAAM,WAAW,WAAW;AAGlD,OAAO,cAAc;;;AGlVrB,IAAAC,6BAA4B;AAE5B,IAAAC,iBAAqC;;;ACFrC,IAAAC,6BAA8B;AAC9B,IAAAC,qBAAiD;AAMjD,IAAM,EAAE,QAAAC,SAAQ,SAAAC,UAAQ,IAAI;AAErB,IAAMC,kBAAuC;AAEpD,IAAMC,aAAY;AAAA,EAChB,cAAc;AAAA,EACd,SAAS,KAAKF,UAAQ,sBAAsB;AAAA,EAC5C,MAAM;AAAA,IACJ,aAAaD,QAAO;AAAA,IACpB,iBAAiBA,QAAO;AAAA,EAC1B;AAAA,EACA,QAAQ;AAAA,IACN,aAAaA,QAAO;AAAA,IACpB,iBAAiBA,QAAO;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,aAAaA,QAAO;AAAA,IACpB,iBAAiBA,QAAO;AAAA,EAC1B;AACF;AAEA,IAAM,mBAAmB;AAAA,EACvB,cAAcC,UAAQ;AAAA,EACtB,YAAYA,UAAQ;AAAA,EACpB,eAAeA,UAAQ;AAAA,EACvB,KAAKA,UAAQ;AAAA,EACb,cAAc;AAAA,IACZ,cAAcA,UAAQ;AAAA,EACxB;AACF;AAEO,IAAM,kBAKT;AAAA,EACF,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AACF;AAEO,IAAM,sBAAsB;AAAA,EACjC,WAAAE;AAAA,EACA;AAAA,EACA,MAAM;AAAA,IACJ,aAAa,GAAGF,UAAQ,wBAAwB;AAAA,IAChD,MAAM;AAAA,MACJ,OAAOD,QAAO;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,MACN,OAAOA,QAAO;AAAA,IAChB;AAAA,IACA,SAAS;AAAA,MACP,OAAOA,QAAO;AAAA,IAChB;AAAA,EACF;AACF;;;ADjEA,IAAAI,qBAAqB;AACrB,IAAAC,0BAA2B;AAC3B,IAAAC,oBAGO;AACP,IAAAF,qBAA0B;AAC1B,IAAAC,0BAA+B;AAiFvB,IAAAE,uBAAA;AA/ER,IAAM,EAAE,WAAAC,YAAW,kBAAAC,mBAAkB,MAAAC,MAAK,IAAI;AAE9C,IAAMC,aAAY,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQZJ,WAAU,OAAO;AAAA,mBACXA,WAAU,YAAY;AAAA,QACrC,wCAAeK,iBAAgB,IAAI,CAAC;AAAA,IACpC,CAAC,EAAE,SAAS,MAAM;AAAA,oBACFL,WAAU,QAAQ,EAAE,WAAW;AAAA,wBAC3BA,WAAU,QAAQ,EAAE,eAAe;AAAA,GACxD;AAAA;AAGH,IAAM,yBAAqB,2BAAAI,SAAO,uBAAI;AAAA,kBACpBF,MAAK,WAAW;AAAA;AAGlC,IAAM,oBAAoB,2BAAAE,QAAO;AAAA;AAAA;AAAA;AAKjC,IAAM,mBAAmB,2BAAAA,QAAO;AAAA;AAAA;AAAA,iBAKfH,kBAAiB,UAAU;AAAA,oBACxBA,kBAAiB,aAAa;AAAA,mBAC/B,CAAC,EAAE,UAAU,MAC5B,YACIA,kBAAiB,aAAa,eAC9BA,kBAAiB,YAAY;AAAA;AAmB9B,IAAM,oBAAgB;AAAA,EAC3B,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,SAAAK;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,CAAC,UAAU,SAAS,QAAI,yBAAS,KAAK;AAE5C,WAAO,CAAC,WACN;AAAA,MAACH;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACT,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QAEnD;AAAA,yDAAC,oBAAiB,WAAW,UAC3B;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,gBAAgB,OAAO,EAAE;AAAA,gBAC/B,OAAOD,MAAK,OAAO,EAAE;AAAA;AAAA,YACvB;AAAA,YACC,8BAAY,8CAAC,sCAAW,IAAG,QAAQ,UAAAI,UAAQ;AAAA,aAC9C;AAAA,UACA,8CAAC,qBACE,sBACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,SAAS,gBAAgB,OAAO,EAAE;AAAA,cAClC,YAAW;AAAA,cACX,SAAS,MAAM;AACb,0BAAU,IAAI;AACd,2BAAW,QAAQ;AAAA,cACrB;AAAA,cACA,MAAK;AAAA,cACL,cAAW;AAAA;AAAA,UACb,GAEJ;AAAA;AAAA;AAAA,IACF,IACE;AAAA,EACN;AACF;AAEA,cAAc,cAAc;;;AE3H5B,IAAAC,6BAA4B;AAE5B,IAAAC,iBAAqC;;;ACFrC,IAAAC,6BAA8B;AAC9B,IAAAC,qBAMO;AAMP,IAAM,EAAE,QAAAC,UAAQ,SAAAC,WAAS,cAAAC,eAAc,QAAAC,SAAQ,aAAAC,aAAY,IAAI;AAI/D,IAAMC,aAAY;AAAA,EAChB,MAAM;AAAA,IACJ,WAAWC,aAAY;AAAA,IACvB,cAAcC,cAAa;AAAA,IAC3B,QAAQ,GAAGC,QAAO,sCAAsC;AAAA,IACxD,SAASC,UAAQ;AAAA,IACjB,KAAKA,UAAQ;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,aAAaC,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,MACP,aAAaA,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,QAAQ;AAAA,MACN,aAAaA,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,MACP,aAAaA,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,MAAM;AAAA,MACJ,aAAaA,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,cAAc;AAAA,MACZ,aAAaA,SAAO;AAAA,MACpB,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,IAAMC,mBAKF;AAAA,EACF,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,oBAAoB;AAAA,EACtB;AACF;AAEA,IAAMC,QAAO;AAAA,EACX,aAAa,GAAGH,UAAQ,wBAAwB;AAAA,EAChD,MAAM;AAAA,IACJ,OAAOC,SAAO;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,MAAM;AAAA,IACJ,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,cAAc;AAAA,IACZ,OAAOA,SAAO;AAAA,EAChB;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC,WAAAL;AAAA,EACA,iBAAAM;AAAA,EACA,MAAAC;AACF;;;AD3GA,IAAAC,qBAAqB;AAErB,IAAAC,0BAIO;AACP,IAAAC,oBAIO;AACP,IAAAF,qBAA0B;AAkJb,IAAAG,uBAAA;AAhJb,IAAMC,gBAAuC;AAC7C,IAAM,EAAE,WAAAC,YAAW,MAAAC,OAAM,iBAAAC,iBAAgB,IAAI;AAO7C,IAAMC,aAAY,2BAAAC,QAAO,IAAI,WAAW;AAAA,EACtC,mBAAmB,UAAQ;AACzB,UAAM,iBAA2C;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA;AAAA;AAAA,yBAGwB,CAAC,EAAE,QAAQ,SAAS,MACzC,qBAAqB,QAAQ,QAAQ,CAAC;AAAA,2BACf,CAAC,EAAE,QAAQ,SAAS,MAC3C,uBAAuB,QAAQ,QAAQ,CAAC;AAAA,gBAC5BJ,WAAU,KAAK,SAAS;AAAA,YAC5BA,WAAU,KAAK,MAAM;AAAA,mBACdA,WAAU,KAAK,YAAY;AAAA,aACjCA,WAAU,KAAK,OAAO;AAAA,SAC1BA,WAAU,KAAK,GAAG;AAAA;AAAA,QAEvB,wCAAe,+CAAuB,IAAI,CAAC;AAAA;AAAA;AAAA,MAGzC,2BAAS;AAAA;AAAA,IAEX,CAAC,EAAE,QAAQ,MACX,WACA;AAAA,sBACkBA,WAAU,QAAQ,OAAO,EAAE,WAAW;AAAA,0BAClCA,WAAU,QAAQ,OAAO,EAAE,eAAe;AAAA,KAC/D;AAAA,WACM,CAAC,EAAE,MAAM,MAAM,KAAK;AAAA;AAG/B,SAAS,qBACP,QACA,WACA;AACA,MAAI,WAAW;AACb,QAAI,WAAW,cAAc;AAC3B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,OAAO;AACL,QAAI,WAAW,cAAc;AAC3B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,uBACP,QACA,UACA;AACA,MAAI,UAAU;AACZ,WAAO,WAAW,eACd,gCACA;AAAA,EACN;AACA,SAAO,WAAW,eAAe,oBAAoB;AACvD;AAEA,IAAMK,0BAAqB,2BAAAD,SAAO,uBAAI;AAAA;AAAA;AAItC,IAAME,iBAAgB,2BAAAF,QAAO;AAAA;AAAA;AAI7B,IAAM,kBAAc,2BAAAA,SAAO,MAAM;AAAA;AAAA,aAEpBJ,WAAU,KAAK,OAAO;AAAA;AA+B5B,IAAM,mBAAe;AAAA,EAC1B,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,SAAAO;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,QAAQR;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,CAAC,UAAU,SAAS,QAAI,yBAAS,KAAK;AAE5C,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,aAAO,+EAAE;AAAA,IACX;AAEA,WACE,+CAACI,YAAA,EAAW,GAAG,gBACb;AAAA;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMH,iBAAgB,OAAO,EAAE;AAAA,UAC/B,OAAOD,MAAK,OAAO,EAAE;AAAA;AAAA,MACvB;AAAA,MACA,8CAACK,gBAAA,EACE,wCAAY,8CAAC,sCAAW,IAAG,QAAQ,UAAAC,UAAQ,GAC9C;AAAA,MACC,YACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,SAASL,iBAAgB,OAAO,EAAE;AAAA,UAClC,YAAW;AAAA,UACX,SAAS,MAAM;AACb,sBAAU,IAAI;AACd,uBAAW,QAAQ;AAAA,UACrB;AAAA,UACA,MAAK;AAAA,UACL,cAAW;AAAA;AAAA,MACb;AAAA,OAEJ;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;;;AEhM3B,IAAAM,oBAIO;AACP,IAAAC,oBAGO;AACP,IAAAC,qBAKO;AACP,IAAAC,0BAAsC;AACtC,IAAAC,iBAQO;AACP,IAAAC,6BAA4B;;;ACzB5B,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AAsCD,IAAAC,uBAAA;AApCN,IAAMC,WAAU,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BhB,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM,EAAE,UAAU,IAAI,WAAW,WAAW,IAAI,GAAG,KAAK,IAAI;AAE5D,MAAI,OAAO,OAAO;AAChB,WACE,8CAACD,UAAA,EAAS,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI,GAAG,IAC5D,UACH;AAAA,EAEJ;AACA,SACE,8CAACA,UAAA,EAAS,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI,GACzD,UACH;AAEJ;AAEA,eAAe,cAAc;;;ACtD7B,IAAAE,iBAMO;AAYA,IAAM,gCACX,8BAA6C,CAAC,CAAC;AAE1C,IAAM,wBAAwB,MAAM;AACzC,aAAO,2BAAW,yBAAyB;AAC7C;;;ACvBA,IAAAC,6BAGO;AAIP,IAAM,EAAE,SAAAC,WAAS,WAAAC,YAAW,QAAAC,SAAO,IAAI;AACvC,IAAM,EAAE,aAAAC,aAAY,IAAI;AAEjB,IAAMC,mBAA+D;AAAA,EAC1E,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,mBAAmB,GACvBJ,UAAQ,mCACRC,WAAU,2BACVD,UAAQ,+BACV;AACA,IAAM,oBAAoB,GACxBA,UAAQ,mCACRC,WAAU,4BACVD,UAAQ,+BACV;AAEA,IAAM,mBAAmB,GACvBA,UAAQ,mCACRC,WAAU,4BACVD,UAAQ,+BACV;AAEA,IAAMK,SAAQ;AAAA,EACZ,MAAM;AAAA,IACJ,cAAcL,UAAQ;AAAA,IACtB,aAAaA,UAAQ;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,OAAO;AAAA,MACL,YAAYA,UAAQ;AAAA,MACpB,eAAeA,UAAQ;AAAA,MACvB,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,YAAYA,UAAQ;AAAA,MACpB,eAAeA,UAAQ;AAAA,MACvB,aAAa;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,YAAYA,UAAQ;AAAA,MACpB,eAAeA,UAAQ;AAAA,MACvB,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB;AAAA,EAC1B,KAAKA,UAAQ;AACf;AAEA,IAAMM,kBAAiB;AAAA,EACrB,KAAKN,UAAQ;AACf;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,IACJ,MAAMA,UAAQ;AAAA,IACd,OAAOG,aAAY;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,IACL,KAAK,cAAcF,WAAU,2BAA2B,CAAC;AAAA,EAC3D;AAAA,EACA,QAAQ;AAAA,IACN,KAAK,cAAcA,WAAU,4BAA4B,CAAC;AAAA,EAC5D;AAAA,EACA,OAAO;AAAA,IACL,KAAK,cAAcA,WAAU,4BAA4B,CAAC;AAAA,EAC5D;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,OAAOD,UAAQ;AAAA,EACf,KAAK;AAAA;AAAA,EACL,OAAOG,aAAY;AACrB;AAEA,IAAM,uBAAuB;AAAA,EAC3B,WAAWH,UAAQ;AAAA,EACnB,QAAQ,aAAaE,SAAO,uBAAuB;AAAA,EACnD,WAAW,aAAaA,SAAO,uBAAuB;AACxD;AAEA,IAAM,oBAAoB;AAAA,EACxB,aAAaF,UAAQ;AACvB;AAEO,IAAM,eAAe;AAAA,EAC1B,OAAAK;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,EACA;AAAA,EACA;AACF;;;AChGO,SAAS,uBACd,gBAC+B;AAC/B,QAAM,eAAe,SAAS;AAAA,IAC5B;AAAA,EACF;AAEA,eAAa,QAAQ;AAErB,QAAM,mBAAkD;AAAA,IACtD,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,gBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,iBAAiB,MAAM;AAAA,IAAC;AAAA,IACxB,aAAa,IAAI,MAAM,OAAO;AAAA,IAC9B,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,IACpB,oBAAoB,MAAM;AAAA,IAC1B,sBAAsB,MAAM;AAAA,EAC9B;AAEA,SAAO;AACT;;;ACrCA,IAAAC,6BAAmB;AACnB,IAAAC,oBAAkC;AAMlC,IAAAC,oBAAsB;AAEtB,IAAAC,0BAA2B;AAC3B,IAAAA,0BAA+B;AAC/B,IAAAD,oBAGO;AACP,IAAAE,iBAAuC;AACvC,IAAAF,oBAA6B;AAE7B,IAAAG,oBAAqC;AACrC,IAAAA,oBAAsC;AAsF1B,IAAAC,uBAAA;AApFZ,IAAM,EAAE,sBAAAC,uBAAsB,mBAAAC,mBAAkB,IAAI;AAEpD,IAAM,2BAAuB,2BAAAC,SAAO,uBAAK;AAAA,IAGrC,CAAC,EAAE,UAAU,UAAM,wCAAqB,CAAC,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKvCF,sBAAqB,SAAS;AAAA,YAClCA,sBAAqB,MAAM;AAAA,gBACvBA,sBAAqB,SAAS;AAAA;AAAA;AAAA,IAG1C,iBAAiB,OAAO;AAAA,IACxB,iBAAiB,MAAM;AAAA;AAG3B,IAAM,eAAW,2BAAAE,SAAO,gBAAgB;AAAA,IAKpC,CAAC,EAAE,MAAM,MAAM,aAAS,wCAAeC,iBAAgB,KAAK,CAAC,CAAC;AAAA;AAGlE,IAAM,kBAAkB,2BAAAD,QAAO;AAAA,IAC3B,mCAAiB;AAAA;AAGrB,IAAM,wBAAoB,2BAAAA,SAAO,kCAAU;AAAA,kBACzBD,mBAAkB,WAAW;AAAA;AAmBxC,IAAM,wBAAoB,2BAG/B,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,0BAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,QAAQ,QAAI,gCAAa,2CAAa,QAAQ,CAAC,eAAe;AAE5E,QAAM,sBAAsB,iBACxB,2CAAa,MAAM,kBACnB;AAEJ,QAAM,sBACJ,8CAAC,mBAAgB,MAAK,WAAU,mBAAiB,qBAC9C,8BAAoB,IAAI,CAAC,YAAY,UAAU;AAC9C,WACE,8CAAC,QAAe,MAAK,UACnB;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,UAAU,SAAS;AAAA,QAC1B;AAAA,QACA,cAAY,gBAAU,UAAU;AAAA,QAChC,SAAS;AAAA,QACT,OAAO;AAAA,QACP,gBAAc,oBAAoB;AAAA,QAClC,iBAAe;AAAA,QACf,OAAO;AAAA;AAAA,IACR,KAXM,KAYT;AAAA,EAEJ,CAAC,GACH;AAGF,QAAM,WAAW,CAAC;AAElB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MACA,WAAW;AAAA,MACX,eAAa;AAAA,MAEb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,IAAI;AAAA,YACL;AAAA;AAAA,QAED;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,kBAAkB,cAAc;;;ALwCX,IAAAG,uBAAA;AArJrB,IAAM,EAAE,OAAAC,QAAO,gBAAAC,iBAAgB,qBAAAC,sBAAqB,YAAAC,aAAY,aAAAC,aAAY,IAC1E;AAEF,IAAM,cAAc,CAAC,SAA+B;AAClD,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,IAAMC,aAAQ,2BAAAC,SAAO,kBAAAC,KAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBASXP,OAAM,KAAK,YAAY;AAAA;AAAA,IAEtC,CAAC,EAAE,eAAe,MAAM;AAAA,mBACTA,OAAM,MAAM,cAAc,EAAE,UAAU;AAAA,sBACnCA,OAAM,MAAM,cAAc,EAAE,aAAa;AAAA,oBAC3CA,OAAM,MAAM,cAAc,EAAE,WAAW;AAAA,UACrD,wCAAeQ,iBAAgB,cAAc,CAAC,CAAC;AAAA,GAClD;AAAA;AAGH,IAAM,uBAAmB,2BAAAF,SAAO,uBAAI;AAAA;AAAA,UAI1BH,YAAW,KAAK,IAAI;AAAA,WACnBA,YAAW,KAAK,KAAK;AAAA,IAC5B,CAAC,EAAE,MAAM,MAAM;AAAA,WACR,aAAO,WAAW,KAAK,EAAE,GAAG;AAAA,GACpC;AAAA;AAAA;AAIH,IAAM,wBAAoB,2BAAAG,SAAO,MAAM;AAAA;AAAA,WAE5BF,aAAY,KAAK;AAAA,WACjBA,aAAY,KAAK;AAAA,SACnBA,aAAY,GAAG;AAAA;AAGxB,IAAM,iBAAiB,2BAAAE,QAAO;AAAA;AAAA;AAAA,SAGrBL,gBAAe,GAAG;AAAA;AAG3B,IAAM,sBAAsB,2BAAAK,QAAO;AAAA,IAG/B,WACA,MAAM,oBACN;AAAA;AAAA;AAAA,aAGSJ,qBAAoB,GAAG;AAAA,KAC/B;AAAA;AAGL,IAAMO,kBAAiB,2BAAAH,QAAO;AAAA;AAAA;AAAA;AAoBvB,IAAM,aAAS;AAAA,EACpB,CACE;AAAA,IACE,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,OAAAI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,GACA,QACG;AA7IP;AA8II,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,UAAM,WAAW,CAAC,CAACA;AACnB,UAAM,YAAQ,yCAAsB,UAAU,KAAK;AACnD,UAAM,oBAAgB,yCAAsB,UAAU,aAAa;AACnE,UAAM,+BAA2B;AAAA,MAC/B;AAAA,MACA;AAAA,IACF;AAEA,UAAM,CAAC,UAAU,WAAW,QAAI,yBAAS,CAAC,CAAC,KAAK;AAEhD,UAAM,UAAU,sBAAsB;AAEtC,UAAM,cAAc,QAAQ,eACxB,kCAAe,QAAQ,UAAU,GAAG,IACpC;AAEJ,UAAM,eAAe,CAAC,MAAqC;AACzD,kBAAY,EAAE,OAAO,UAAU,EAAE;AAEjC,cAAQ,iBAAiB,QAAQ,cAAc,CAAC;AAChD,kBAAY,SAAS,CAAC;AAAA,IACxB;AAEA,UAAM,aAAa,MAAM;AACvB,YAAM,mBAAmB,uBAAuB,QAAQ;AACxD,mBAAa,gBAAgB;AAAA,IAC/B;AAEA,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,GAAG;AAAA,IACL,IAAI,oCAAe,CAAC;AAEpB,UAAM,iBAAiB,CAAC,CAAC,QAAQ;AACjC,UAAM,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;AAE5C,WACE,+CAAC,kBACE;AAAA,kBAAY,8CAAC,iCAAM,SAAS,UAAW,UAAAA,QAAM;AAAA,MAC9C,+CAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,kBAAkB;AAAA,YAClB;AAAA,YACA;AAAA,YAEA;AAAA,6DAACD,iBAAA,EACC;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,UAAU,YAAY,aAAa;AAAA;AAAA,gBACrC;AAAA,gBACA;AAAA,kBAACJ;AAAA,kBAAA;AAAA,oBACE,GAAG;AAAA,oBACJ,KAAK;AAAA,oBACL,gBAAgB;AAAA,oBAChB;AAAA,oBACA,MAAK;AAAA,oBACL,IAAI;AAAA,oBACJ,wBAAkB,iDAA8B;AAAA,sBAC9C,MAAM,QAAQ;AAAA,sBACd,QAAQ,cAAc,2BAA2B;AAAA,sBACjD;AAAA,oBACF,CAAC;AAAA,oBACD,QAAO,aAAQ,eAAR,YAAsB;AAAA,oBAC7B,UAAU;AAAA,oBACV,cAAa;AAAA,oBACb,qBAAmB,iBAAiB,SAAS;AAAA,oBAC7C,iBAAe,iBAAiB,gBAAgB;AAAA,oBAChD,iBAAe,QAAQ;AAAA,oBACvB,MAAM,iBAAiB,aAAa;AAAA;AAAA,gBACtC;AAAA,gBACC,kBACC,gFACE;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAI;AAAA,sBACJ,KAAK,QAAQ;AAAA,sBACb,UAAU;AAAA,sBACV,mBAAmB,QAAQ;AAAA,sBAC3B,aAAa,QAAQ;AAAA,sBACrB,iBAAiB,QAAQ;AAAA,sBACzB;AAAA;AAAA,kBACF;AAAA,kBACA,8CAAC,kBAAe,IAAI,0BAA0B,IAAG,QAAO,0EAExD;AAAA,mBACF;AAAA,gBAED,YACC;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAM;AAAA,oBACN,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,YAAW;AAAA,oBACX,cAAW;AAAA,oBACX,SAAS;AAAA;AAAA,gBACX;AAAA,iBAEJ;AAAA,cACC,oBACC;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM;AAAA,kBACN;AAAA,kBACC,GAAG;AAAA,kBAEH,8CAAe;AAAA;AAAA,cAClB;AAAA;AAAA;AAAA,QAEJ;AAAA,QACC,mBAAmB,KAAK,KAAK;AAAA,SAChC;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AMpQrB,IAAAM,iBAOO;AACP,IAAAC,oBAAgD;AAChD,IAAAA,oBAA6B;AAiJzB,IAAAC,uBAAA;AA3GG,IAAM,4BAA4B,CACvC,UACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,wBAAS,EAAE;AACxD,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAmB,CAAC,CAAC;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,KAAK;AAE5D,QAAM,mBAAmB,MACvB,oBAAoB,QAAQ,mBAAmB,KAAK;AAEtD,QAAM,kBAAkB,MACtB,oBAAoB,SAAS,mBAAmB,IAAI;AAEtD,gCAAU,MAAM;AACd,QAAI,YAAY,SAAS,GAAG;AAC1B,sBAAgB;AAAA,IAClB,OAAO;AACL,uBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,sBAAsB,CAC1BC,UAECA,MAA4B,MAAM,CAAC,EAAE,cAAc;AAEtD,QAAM,eAAe,CAAC,MAAqC;AACzD,UAAM,QAAQ,EAAE,OAAO;AACvB,wBAAoB,KAAK;AACzB,QAAI,mBAA6B,CAAC;AAElC,QAAI,MAAM,UAAU,aAAa;AAC/B,UAAI,MAAM;AACR,YAAI,oBAAoB,IAAI,GAAG;AAC7B,gBAAM,EAAE,cAAc,MAAM,IAAI;AAEhC,gBAAM,sBAAuC,MAAM;AAAA,YACjD,gBACE,SACI,OAAO,WAAW,MAAM,KAAK,QAC7B,gCAAa,WAAW,MAAM,KAAK;AAAA,UAC3C;AAEA,6BAAmB,oBAChB,KAAK,eAAe,CAAC,GAAG,MAAM,aAAa,GAAG,CAAC,IAAI,MAAS,EAC5D,IAAI,UAAQ,KAAK,IAAI;AAAA,QAC1B,OAAO;AACL,gBAAM,EAAE,cAAc,MAAM,IAAI;AAEhC,gBAAM,sBAAgC,MAAM;AAAA,YAAO,gBACjD,SACI,OAAO,YAAY,KAAK,QACxB,gCAAa,YAAY,KAAK;AAAA,UACpC;AAEA,6BAAmB,oBAAoB;AAAA,YACrC,eAAe,CAAC,GAAG,MAAM,aAAa,GAAG,CAAC,IAAI;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AACA,qBAAe,gBAAgB;AAAA,IACjC,OAAO;AACL,qBAAe,CAAC,CAAC;AAAA,IACnB;AACA,gBAAY,SAAS,CAAC;AAAA,EACxB;AAEA,QAAM,wBAAwB,CAAC,MAAqC;AAClE,mBAAe,CAAC,CAAC;AACjB,wBAAqB,EAAE,OAA6B,SAAS;AAC7D,6BAAyB,sBAAsB;AAC/C,qBAAiB;AAAA,EACnB;AAEA,QAAM,sBAAsB,CAACC,WAA8B;AACzD,kBAAcA,UAAA,OAAAA,SAAS,EAAE;AAAA,EAC3B;AAEA,QAAM,eAAW,uBAAyB,IAAI;AAC9C,QAAM,qBAAiB,uBAAuB,IAAI;AAElD,2CAAkB,CAAC,SAAS,SAAS,eAAe,OAAO,GAAG,MAAM;AAClE,qBAAiB;AAAA,EACnB,CAAC;AAED,sCAAa,OAAO,MAAM,iBAAiB,CAAC;AAE5C,QAAM,eAA8C;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,oBAAoB;AAAA,EACtB;AACA,SACE,8CAAC,0BAA0B,UAA1B,EAAmC,OAAO,cACxC,UACH;AAEJ;AAEA,0BAA0B,cAAc;;;ACjJxC,IAAMC,UAAS;AAEfA,QAAO,sBAAsB;AAC7BA,QAAO,cAAc;;;AClBrB,IAAAC,iBAA2B;AAC3B,IAAAC,6BAA4B;AAC5B,IAAAC,oBAA0B;;;ACF1B,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,MAAM,QAAAC,UAAQ,QAAAC,SAAQ,SAAAC,WAAS,WAAAC,YAAW,cAAAC,cAAa,IAC7D;AAEF,IAAM,MAAM;AAAA,EACV,MAAM;AAAA,IACJ,KAAK;AAAA,MACH,iBAAiBJ,SAAO;AAAA,IAC1B;AAAA,IACA,MAAM;AAAA,MACJ,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,OAAO,EAAE,iBAAiBA,SAAO,4BAA4B;AAAA,IAC7D,UAAU;AAAA,MACR,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,IACA,MAAM;AAAA,MACJ,KAAK;AAAA,QACH,WAAW,GAAGC,QAAO,sCAAsC,UAAUD,SAAO,qBAAqB;AAAA,QACjG,cAAc,GAAGC,QAAO,sCAAsC,UAAUD,SAAO,qBAAqB;AAAA,QACpG,iBAAiBA,SAAO;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,cAAc,aAAaA,SAAO,qBAAqB;AAAA,IACzD;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,cAAc;AAAA,MACZ,iBAAiBA,SAAO;AAAA,MACxB,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;AAEA,IAAM,OAAO;AAAA,EACX,SAAS;AAAA,IACP,QAAQ;AAAA,MACN,SAAS,GAAGE,UAAQ,uBAAuB,IAAIA,UAAQ,wBAAwB;AAAA,IACjF;AAAA,IACA,SAAS;AAAA,MACP,SAAS,GAAGA,UAAQ,wBAAwB;AAAA,IAC9C;AAAA,IACA,cAAc;AAAA,MACZ,SAAS,GAAGA,UAAQ,wBAAwB,IAAIA,UAAQ,uBAAuB;AAAA,IACjF;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiBF,SAAO;AAAA,EAC1B;AAAA,EACA,MAAM;AAAA,IACJ,KAAKE,UAAQ;AAAA,IACb,MAAM;AAAA,MACJ,mBAAmBA,UAAQ;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,KAAKA,UAAQ;AAAA,MACb,aAAaA,UAAQ;AAAA,IACvB;AAAA,EACF;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,QAAQC,WAAU;AAAA,EAClB,OAAOA,WAAU;AAAA,EACjB,cAAcC,cAAa;AAC7B;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF;;;ADNM,IAAAC,uBAAA;AA9DN,IAAM,EAAE,MAAAC,OAAM,KAAAC,KAAI,IAAI;AAEtB,IAAM,cAAc,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,MAQrB,2BAAS;AAAA;AAAA,IAEX,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA,IACxB,CAAC,EAAE,SAAS,MAAM;AAAA;AAAA;AAAA,iBAGLF,MAAK,QAAQ,QAAQ,EAAE,OAAO;AAAA;AAAA,GAE5C;AAAA,IACC,CAAC,EAAE,SAAS,MACZ,aAAa,kBACb;AAAA;AAAA,4BAEwBC,KAAI,KAAK,aAAa,eAAe;AAAA,qBAC5CA,KAAI,KAAK,aAAa,QAAQ;AAAA;AAAA;AAAA;AAAA,8BAIrBA,KAAI,KAAK,IAAI,eAAe;AAAA;AAAA;AAAA,8BAG5BA,KAAI,KAAK,KAAK,eAAe;AAAA;AAAA;AAAA,KAGtD;AAAA,IACD,CAAC,EAAE,cAAc,MACjB,iBACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQC;AAAA,IACD,CAAC,EAAE,cAAc,MACjB,iBACA;AAAA;AAAA,yBAEqBA,KAAI,KAAK,aAAa,YAAY;AAAA;AAAA,KAEtD;AAAA;AAGE,IAAM,YAAQ;AAAA,EACnB,CACE,EAAE,UAAU,UAAU,cAAc,cAAc,UAAU,GAAG,KAAK,GACpE,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,QACV,eAAe;AAAA,QACf,eAAe;AAAA,QAEd;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;AElFpB,IAAAE,iBAA2B;AAC3B,IAAAC,6BAA4B;;;ACD5B,IAAAC,iBAA0C;AASnC,IAAM,8BACX,8BAA4C;AAAA,EAC1C,cAAc,CAAC;AAAA,EACf,qBAAqB,CAAC,CAAC;AACzB,CAAC;AACI,IAAM,6BAA6B,UACxC,2BAAW,uBAAuB;;;ADuB9B,IAAAC,uBAAA;AAhCN,IAAMC,mBAAc,2BAAAC,SAAO,KAAK;AAAA;AAAA,IAE5B,CAAC,EAAE,aAAa,MAChB,gBACA;AAAA;AAAA;AAAA;AAAA,KAIC;AAAA;AAGE,IAAM,uBAAmB,2BAG9B,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB,CAAC,CAAC;AAAA,IACxB,GAAG;AAAA,EACL,IAAI;AAEJ,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,wDAACD,cAAA,EAAY,KAAU,SAAmB,GAAG,MAC1C,UACH;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,iBAAiB,cAAc;;;AE7C/B,IAAAE,iBAA2C;AAC3C,IAAAC,6BAAmB;AASb,IAAAC,uBAAA;AAPN,IAAM,aAAa,2BAAAC,QAAO;AAInB,IAAM,WAAO;AAAA,EAClB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,WACE,8CAAC,cAAW,KAAW,GAAG,MACvB,UACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ACjBnB,IAAAC,iBAA2C;AAC3C,IAAAC,6BAAmB;AAab,IAAAC,uBAAA;AAXN,IAAM,aAAa,2BAAAC,QAAO;AAInB,IAAM,WAAO;AAAA,EAClB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,IACL;AAEA,WACE,8CAAC,cAAW,KAAW,GAAG,WACvB,UACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ACrBnB,IAAAC,iBAA2C;AAC3C,IAAAC,6BAAmB;AASb,IAAAC,uBAAA;AAPN,IAAM,aAAa,2BAAAC,QAAO;AAInB,IAAM,WAAO;AAAA,EAClB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,WACE,8CAAC,cAAW,KAAW,GAAG,MACvB,UACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ACjBnB,IAAAC,iBAA2B;;;ACA3B,IAAAC,6BAA4B;AAC5B,IAAAC,0BAGO;AACP,IAAAC,oBAAkC;AAKlC,IAAM,EAAE,KAAAC,KAAI,IAAI;AAET,IAAM,gBAAgB,CAAC,MAAgB,aAAuB;AACnE,SAAO;AAAA,MACH,SAAS,SACX;AAAA;AAAA,oBAEgBA,KAAI,KAAK,KAAK,IAAI,SAAS;AAAA,uBACxBA,KAAI,KAAK,KAAK,IAAI,YAAY;AAAA,0BAC3BA,KAAI,KAAK,KAAK,IAAI,eAAe;AAAA,KACtD;AAAA,MACC,YACF;AAAA,0BACsBA,KAAI,KAAK,SAAS,eAAe;AAAA,KACtD;AAAA;AAEL;AAEO,IAAM,YAAY,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAa5B,wCAAe,+CAAuB,IAAI,CAAC;AAAA;AAAA,IAE3C,CAAC,EAAE,KAAK,MACR,SAAS,UACT;AAAA;AAAA;AAAA,KAGC;AAAA,IACD,CAAC,EAAE,MAAM,OAAO,MAAM,WAAW,UAAU,YAAY,UAAU,MACjE,SAAS,UACT;AAAA;AAAA,4BAEwBD,KAAI,KAAK,KAAK,eAAe;AAAA,UAC/C,cAAc,MAAM,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,4BAIXA,KAAI,KAAK,IAAI,eAAe;AAAA,UAC9C,cAAc,MAAM,QAAQ,CAAC;AAAA;AAAA;AAAA,QAG/B,aACF;AAAA;AAAA,8BAEwBA,KAAI,KAAK,MAAM,eAAe;AAAA;AAAA,OAErD;AAAA;AAAA,UAEG,mCAAiB;AAAA;AAAA,KAEtB;AAAA;;;AD7DC,IAAAE,uBAAA;AANC,IAAM,UAAM;AAAA,EACjB,CACE,EAAE,OAAO,QAAQ,OAAO,UAAU,WAAW,UAAU,UAAU,GAAG,KAAK,GACzE,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,WAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,IAAI,cAAc;;;AExBlB,IAAAC,iBASO;AACP,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AACP,IAAAC,oBAKO;;;ACpBP,IAAAC,iBAA2B;AAC3B,IAAAC,6BAA4B;AAC5B,IAAAC,oBAIO;;;ACNP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,WAAS,QAAAC,SAAO,IAAI;AAE5B,IAAM,OAAO;AAAA,EACX,YAAY;AAAA,IACV,OAAO;AAAA,MACL,OAAOA,SAAO;AAAA,IAChB;AAAA,IACA,MAAM;AAAA,MACJ,OAAOA,SAAO;AAAA,IAChB;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,WAAWD,UAAQ;AAAA,EACrB;AACF;AAEA,IAAM,OAAO;AAAA,EACX,MAAM;AAAA,IACJ,KAAKA,UAAQ;AAAA,IACb,OAAOC,SAAO;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACT,cAAcD,UAAQ;AAAA,EACxB;AACF;AAEA,IAAM,OAAO;AAAA,EACX,gBAAgB;AAAA,IACd,WAAWA,UAAQ;AAAA,EACrB;AAAA,EACA,cAAc;AAAA,IACZ,WAAWA,UAAQ;AAAA,EACrB;AACF;AAEA,IAAM,QAAQ;AAAA,EACZ,MAAM;AAAA,IACJ,QAAQA,UAAQ;AAAA,EAClB;AACF;AAEO,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ADqCS,IAAAE,uBAAA;AA5ET,IAAM,EAAE,MAAAC,OAAM,MAAAC,OAAM,MAAAC,MAAK,IAAI;AAI7B,IAAM,QAAQ,2BAAAC,QAAO,GAAG,WAAW;AAAA,EACjC,mBAAmB,UAAQ,SAAS,gBAAgB,SAAS;AAC/D,CAAC;AAAA;AAAA;AAAA,MAGK,2BAAS;AAAA;AAAA,IAEX,CAAC,EAAE,WAAW,MACd,cACA;AAAA;AAAA,iBAEaH,MAAK,WAAW,UAAU,EAAE,KAAK;AAAA,UACxC,eAAe,UACjB;AAAA;AAAA,SAEC;AAAA;AAAA,KAEJ;AAAA;AAAA;AAAA;AAAA,sBAIiB,CAAC,EAAE,YAAY,SAAS,MAAM,SAAS;AAAA;AAAA;AAAA,gBAG7CE,MAAK,aAAa,SAAS;AAAA;AAAA;AAAA,kBAGzBF,MAAK,YAAY,SAAS;AAAA;AAAA;AAAA,qBAGvBC,MAAK,UAAU,YAAY;AAAA;AAAA;AAAA,kBAG9BC,MAAK,eAAe,SAAS;AAAA;AAAA;AAkBxC,IAAM,sBAAkB,2BAG7B,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,aAAa;AAAA,IACjB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,8CAAC,SAAO,GAAG,YAAa,UAAS;AAC1C,CAAC;AAED,gBAAgB,cAAc;;;AExF9B,IAAAE,iBAA2C;AAC3C,IAAAC,6BAAmB;AAeV,IAAAC,uBAAA;AAbT,IAAM,YAAY,2BAAAC,QAAO;AAIlB,IAAM,0BAAsB,2BAGjC,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAChC,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAO,8CAAC,aAAW,GAAG,gBAAiB,UAAS;AAClD,CAAC;AAED,oBAAoB,cAAc;;;ACnBlC,IAAAC,iBAA2B;AAC3B,IAAAC,6BAAmB;AAEnB,IAAAC,oBAGO;AACP,IAAAC,qBAA8B;AA+B1B,IAAAC,uBAAA;AA7BJ,IAAM,YAAY,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,WAId,sBAAO,KAAK,KAAK,KAAK;AAAA,SACxB,sBAAO,KAAK,KAAK,GAAG;AAAA;AAWtB,IAAM,0BAAsB,2BAGjC,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,UAAU,MAAAC,QAAM,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAE9D,QAAM,iBAAiB;AAAA,IACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,IACA;AAAA,EACF;AAEA,SACE,+CAAC,aAAW,GAAG,gBACZ;AAAA,IAAAA,UAAQ,8CAAC,2BAAK,MAAMA,QAAM;AAAA,IAAG;AAAA,IAAE;AAAA,KAClC;AAEJ,CAAC;AAED,oBAAoB,cAAc;;;AC5ClC,IAAAC,iBAA2B;AAC3B,IAAAC,6BAAmB;AAEnB,IAAAC,oBAGO;AAmDE,IAAAC,uBAAA;AA1CT,IAAM,aAAa,2BAAAC,QAAO;AAAA,YACd,CAAC,EAAE,OAAO,MAAO,SAAS,SAAS,sBAAO,MAAM,KAAK,MAAO;AAAA,IACpE,CAAC,EAAE,SAAS,MAAM,YAAY,cAAc,QAAQ,EAAE;AAAA,IACtD,CAAC,EAAE,SAAS,MAAM,YAAY,cAAc,QAAQ,EAAE;AAAA;AAenD,IAAM,2BAAuB,2BAGlC,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAkB;AAAA,IACtB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,8CAAC,cAAY,GAAG,iBAAkB,UAAS;AACpD,CAAC;AAED,qBAAqB,cAAc;;;AC5DnC,IAAAC,iBAKO;AACP,IAAAC,6BAA4B;AAgFtB,IAAAC,uBAAA;AA5EN,IAAM,EAAE,MAAAC,MAAK,IAAI;AAEjB,IAAM,iBAAiB,CAAC,WAA4B;AAClD,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA;AAAA;AAAA,IAGT,KAAK;AACH,aAAO;AAAA;AAAA;AAAA,IAGT,KAAK;AACH,aAAO;AAAA,eACEA,MAAK,OAAO,YAAY,GAAG;AAAA;AAAA,IAEtC;AAAA,IACA,KAAK;AACH;AAAA,EACJ;AACF;AAEA,IAAM,aAAa,2BAAAC,QAAO;AAAA,IAGtB,CAAC,EAAE,OAAO,KAAK,MACf,SAAS,UACT;AAAA,0BACsBD,MAAK,KAAK,eAAe;AAAA,KAC9C;AAAA;AAGL,IAAM,YAAY,2BAAAC,QAAO;AAAA;AAAA;AAAA,IAGrB,CAAC,EAAE,SAAS,OAAO,MAAM,eAAe,MAAM,CAAC;AAAA;AAqBnD,IAAM,mBAAmB,CAAC,SAAwB;AAChD,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT;AAAA,IACA,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEO,IAAM,WAAO;AAAA,EAClB,CACE,EAAE,UAAU,OAAO,QAAQ,SAAS,QAAQ,kBAAkB,GAAG,KAAK,GACtE,QACG;AACH,UAAM,KAAkB,iBAAiB,IAAI;AAE7C,UAAM,EAAE,mBAAmB,IAAI,8CAAoB,CAAC;AAEpD,WAAO,qBACL,8CAAC,uBAAqB,UAAS,IAE/B,8CAAC,cAAW,IAAQ,KAAU,OAAO,MAAO,GAAG,MAC7C,wDAAC,aAAU,SAAS,QAAS,UAAS,GACxC;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ANAL,IAAAC,uBAAA;AAhEd,IAAM,EAAE,gBAAAC,gBAAe,IAAI;AAE3B,IAAM,iBAAiB,2BAAAC,QAAO;AAAA,IAC1B,qCAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAMP,6CAA2B;AAAA,mBACxBD,gBAAe,YAAY;AAAA,YAClCA,gBAAe,MAAM;AAAA,WACtBA,gBAAe,KAAK;AAAA;AAAA,MAEzB,8BAAY;AAAA;AAAA;AAIlB,IAAM,0BAAsB,2BAAAC,SAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAMhC,IAAM,qBAAiB;AAAA,EAC5B,CACE,EAAE,OAAO,QAAQ,OAAO,UAAU,UAAU,WAAW,UAAU,GAAG,KAAK,GACzE,QACG;AACH,UAAM,WAAW;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,GAAG;AAAA,IACL;AACA,UAAM,EAAE,aAAa,cAAc,oBAAoB,IACrD,2BAA2B;AAE7B,UAAM,CAAC,mBAAmB,oBAAoB,QAAI,yBAAS,IAAI;AAE/D,kCAAU,MAAM;AACd,OAAC,eAAe,qBAAqB,IAAI;AAAA,IAC3C,GAAG,CAAC,WAAW,CAAC;AAEhB,UAAM,wBAAwB,aAAa;AAAA,MACzC,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,MAAM;AAAA,IAC5D;AAEA,UAAM,gBAAgB,wBAAS,QAAQ,QAAQ;AAC/C,UAAM,oBAAoB,cAAc;AAAA,MACtC,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,MAAM;AAAA,IAC5D;AAEA,UAAMC,UAAS;AACf,UAAM,iBAA2B,CAAC;AAElC,UAAM,4BACJ,eAAe,sBAAsB,SAAS,IAC1C,kBAAkB,IAAI,SAAU,OAAO,OAAO;AAC5C,YAAM,SAAK,yCAAsBA,SAAQ,MAAM,SAAS,CAAC;AACzD,qBAAe,KAAK,EAAE;AAEtB,aACE,+CAAC,2BACC;AAAA,sDAAC,uBACE,gCAAsB,KAAK,EAAE,SAChC;AAAA,YACC,+BAAe,KAAK,SACnB,6BAAa,OAAuB;AAAA,UAClC,kBAAkB,EAAE,oBAAoB,KAAK;AAAA,QAC/C,CAAC;AAAA,WAPU,MAAM,KAAK,EAQ1B;AAAA,IAEJ,CAAC,IACD;AAEN,UAAM,gBACJ,6BAA6B,0BAA0B,SAAS,IAC9D,8CAAC,aAAU,MACT,wDAAC,uBAAoB,SAAS,oBAAoB,SAAS,GACzD,wDAAC,mBAAiB,qCAA0B,GAC9C,GACF,IACE;AAEN,UAAM,sBAAsB,cACzB,MAAM,EACN,OAAO,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,IAAI,EAAE,EACjE,KAAK,CAAC,GAAG,MAAM;AACd,aACE,oBAAoB,QAAQ,cAAc,QAAQ,CAAC,CAAC,IACpD,oBAAoB,QAAQ,cAAc,QAAQ,CAAC,CAAC;AAAA,IAExD,CAAC;AAEH,UAAM,YAAY,MAAM;AACtB,UAAI,SAAS,UAAU,CAAC;AAAa,eAAO;AAE5C,aACE,8CAAC,aAAU,KAAU,MAAa,GAAG,UACnC,0FACG;AAAA;AAAA,QACD,+CAACC,OAAM,MAAN,EAAW,MAAK,QAAO,QAAO,UAAS;AAAA;AAAA,UAEtC,8CAAC,kBAAe,IAAG,QAAO,mBAAK;AAAA,WACjC;AAAA,SACF,GACF;AAAA,IAEJ;AAEA,UAAM,aAAS,iDAA8B,cAAc;AAE3D,UAAM,iBAAiB,MAAM;AAC3B,UAAI,SAAS,UAAU,CAAC;AAAa,eAAO;AAE5C,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACC,GAAG;AAAA,UACJ,gCAA8B,CAAC,qBAAqB;AAAA,UAEnD;AAAA;AAAA,YACD,8CAACA,OAAM,MAAN,EACC;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,qBAAqB,CAAC,iBAAiB;AAAA,gBACtD,iBAAe,CAAC;AAAA,gBAChB,iBAAe;AAAA,gBAEf;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAM,oBAAoB,QAAQ;AAAA,oBAClC,QAAO;AAAA,oBACP,OAAM;AAAA;AAAA,gBACR;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,WAAO,eACL,6BACA,0BAA0B,SAAS,IACnC,gFACG;AAAA,gBAAU;AAAA,MACV,SAAS,UACR,gFACG;AAAA,uBAAe;AAAA,QACf,oBAAoB,OAAO;AAAA,SAC9B;AAAA,OAEJ,IAEA,8CAAC,aAAU,KAAU,MAAa,GAAG,UAClC,UACH;AAAA,EAEJ;AACF;AAEA,eAAe,cAAc;;;AOjM7B,IAAAC,iBAAuC;AACvC,IAAAC,qBAAqB;AACrB,IAAAA,qBAIO;AACP,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AACP,IAAAC,oBAA6B;AAgClB,IAAAC,uBAAA;AA3BX,IAAM,EAAE,MAAAC,MAAK,IAAI;AAEjB,IAAM,eAAe,2BAAAC,QAAO;AAAA,IACxB,iCAAe;AAAA;AAAA,IAEf,qCAAmB;AAAA;AAAA;AAAA,SAGdD,MAAK,KAAK,GAAG;AAAA;AAAA,MAEhB,8BAAY;AAAA;AAAA;AAelB,IAAM,eAAe,CAAC,UAAoB,cAA0B;AAClE,MAAI,CAAC,YAAY,CAAC,WAAW;AAC3B,WAAO,8CAAC,2BAAK,MAAM,mCAAgB,UAAS,WAAU;AAAA,EACxD;AAEA,SAAO,cAAc,cACnB,8CAAC,2BAAK,MAAM,oCAAiB,UAAS,WAAU,IAEhD,8CAAC,2BAAK,MAAM,kCAAe,UAAS,WAAU;AAElD;AAEO,IAAM,eAAW;AAAA,EACtB,CAAC,EAAE,UAAU,WAAW,SAAS,UAAU,GAAG,KAAK,GAAG,QACpD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,aAAW,YAAY,YAAY,YAAY;AAAA,MAC9C,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,oBAAiB;AAAA,UAEhB;AAAA;AAAA,YAAS;AAAA,YAAE,aAAa,UAAU,SAAS;AAAA;AAAA;AAAA,MAC9C;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,cAAc;;;ACxEvB,IAAAE,iBAA4D;AAC5D,IAAAC,6BAA4B;AA0CxB,IAAAC,uBAAA;AAvCJ,IAAMC,WAAU,2BAAAC,QAAO;AAAA,IACnB,CAAC,EAAE,WAAW,MACd,cACA;AAAA;AAAA,KAEC;AAAA,IACD,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA;AAKrB,IAAM,eAAe,CAAC,EAAE,UAAU,GAAG,KAAK,MAAyB;AACxE,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,KAAK;AAChD,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,OAAO,UAAU;AAEhE,WAAS,eAAe,OAAgC;AACtD,WAAO,MAAM,cAAc,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAa,uBAAuB,IAAI;AAE9C,gCAAU,MAAM;AACd,SAAI,yCAAY,YAAW,eAAe,WAAW,OAAO,GAAG;AAC7D,mBAAa,IAAI;AACjB;AAAA,IACF;AACA,iBAAa,KAAK;AAAA,EACpB,GAAG,CAAC,WAAW,CAAC;AAEhB,gCAAU,MAAM;AACd,aAAS,eAAe;AACtB,qBAAe,OAAO,UAAU;AAAA,IAClC;AACA,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,CAAC;AAED,SACE,8CAACD,UAAA,EAAQ,YAAY,WAAW,KAAK,YAAa,GAAG,MAClD,UACH;AAEJ;AAEA,aAAa,cAAc;;;ACrB3B,IAAME,SAAQ;AAEdA,OAAM,UAAU;AAChBA,OAAM,OAAO;AACbA,OAAM,OAAO;AACbA,OAAM,OAAO;AACbA,OAAM,WAAW;AACjBA,OAAM,MAAM;AACZA,OAAM,OAAO;AAMb,IAAMC,oBAAmB;AAEzBA,kBAAiB,MAAM;;;AC5CvB,IAAAC,iBAAiE;AAEjE,IAAAC,0BAA2B;AAkBnB,IAAAC,uBAAA;AAZR,IAAM,0BAA0B,CAC9B,UACqD;AACrD,SAAQ,MAAkD,QAAQ;AACpE;AAEO,IAAM,iBAAa;AAAA,EACxB,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,UAAU,GAAG,KAAK,IAAI;AAE9B,QAAI,wBAAwB,KAAK,GAAG;AAClC,aACE,8CAAC,sCAAW,WAAW,MAAM,KAAU,gBAAe,KACnD,UACH;AAAA,IAEJ;AAEA,WACE,8CAAC,sCAAW,WAAW,MAAM,KAAU,IAAG,QAAO,OAAM,eACpD,UACH;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;;;AClCzB,IAAAC,iBAAqC;AACrC,IAAAC,6BAAmB;;;ACDnB,IAAAC,6BAA8B;AAG9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAErB,IAAMC,kBAAuC;AAEpD,IAAMC,QAAO;AAAA,EACX,OAAOH,SAAO;AAChB;AAEA,IAAM,WAAW;AAAA,EACf,KAAKC,UAAQ;AACf;AAEA,IAAMG,QAAO;AAAA,EACX,KAAKH,UAAQ;AACf;AAEO,IAAM,mBAAmB;AAAA,EAC9B,MAAAG;AAAA,EACA;AAAA,EACA,MAAAD;AACF;;;ADpBA,IAAAE,qBAA4B;AAC5B,IAAAC,oBAIO;AACP,IAAAC,0BAA+B;AAmCvB,IAAAC,uBAAA;AAjCR,IAAM,EAAE,MAAAC,QAAM,MAAAC,OAAM,UAAAC,UAAS,IAAI;AAEjC,IAAM,OAAO,2BAAAC,QAAO;AAAA,IAChB,mCAAiB;AAAA;AAAA;AAAA;AAAA,SAIZF,MAAK,GAAG;AAAA;AAEjB,KAAK,cAAc;AAEnB,IAAM,WAAW,2BAAAE,QAAO;AAAA;AAAA;AAAA,SAGfD,UAAS,GAAG;AAAA,QACjB,wCAAeE,eAAc,CAAC;AAAA;AAElC,SAAS,cAAc;AAEvB,IAAMC,kBAAa,2BAAAF,SAAO,uBAAI;AAAA,WACnBH,OAAK,KAAK;AAAA;AAKd,IAAM,kBAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,UAAU,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAExD,UAAM,gBAAgB,wBAAS,QAAQ,QAAQ;AAE/C,UAAM,qBAAqB,cAAc,IAAI,CAAC,MAAM,UAAU;AAC5D,aACE,+CAAC,YACE;AAAA,kBAAU,KAAK,8CAACK,aAAA,EAAW,MAAM,yBAAM,kBAAkB;AAAA,QACzD;AAAA,WAFY,cAAc,KAAK,EAGlC;AAAA,IAEJ,CAAC;AAED,WACE;AAAA,MAAC;AAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD;AAAA,QACA,cAAW;AAAA,QAEX,wDAAC,QAAM,8BAAmB;AAAA;AAAA,IAC5B;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AE/D1B,IAAAC,iBAAqD;AACrD,IAAAC,6BAA4B;AAC5B,IAAAC,0BAA2B;;;ACF3B,IAAM,aAAa,CAAC,OAAe,QAAgB;AACjD,QAAM,SAAS,MAAM,QAAQ;AAC7B,SAAO,MAAM,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,QAAQ,MAAM,KAAK;AACvD;AAEO,SAAS,oBACd,aACA,YACqB;AACrB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,uBAAuB;AAC7B,QAAM,YAAY;AAElB,MAAI;AAEJ,MAAI,cAAc,GAAG;AACnB,UAAM,kBAAkB,KAAK;AAAA,MAC3B;AAAA,MACA,aAAa,wBAAwB,eAAe,gBAChD,IACA,aAAa,gBAAgB,KAAK,cAChC,cAAc,IACd,aAAa,KAAK,cAAc,gBAC9B,aAAa,gBACb;AAAA,IACV;AAEA,UAAM,kBACJ,aAAa,wBAAwB,cAAc,gBAC/C,uBACA,aAAa,wBAAwB,eAAe,gBAClD,cACA,aAAa,gBAAgB,IAAI,cAAc,IAC7C,aAAa,gBACb,aAAa,gBAAgB,MAAM,cAAc,IAC/C,cACA;AAEZ,UAAM,gBAAgB,KAAK,IAAI,aAAa,eAAe;AAC3D,gBAAY,WAAW,iBAAiB,aAAa;AACrD,UAAM,gBAAgB,kBAAkB,KAAK,cAAc;AAC3D,UAAM,iBACJ,cAAc,gBAAgB,KAAK,cAAc;AAEnD,QAAI,iBAAiB,gBAAgB;AACnC,kBAAY,CAAC,GAAG,WAAW,GAAG,WAAW,WAAW,WAAW;AAAA,IACjE,WAAW,iBAAiB,CAAC,gBAAgB;AAC3C,kBAAY,CAAC,GAAG,WAAW,GAAG,SAAS;AAAA,IACzC,WAAW,CAAC,iBAAiB,gBAAgB;AAC3C,kBAAY,CAAC,GAAG,WAAW,WAAW,WAAW;AAAA,IACnD;AACA,WAAO,CAAC,GAAG,SAAS;AAAA,EACtB;AAEA,SAAO,WAAW,GAAG,WAAW;AAClC;;;ADlDA,IAAAC,qBAAqB;;;AENrB,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,WAAS,QAAAC,SAAO,IAAI;AAE5B,IAAMC,QAAO;AAAA,EACX,KAAKF,UAAQ;AACf;AAEA,IAAM,iBAAiB;AAAA,EACrB,OAAOC,SAAO;AAChB;AAEA,IAAME,kBAAiB;AAAA,EACrB,KAAKH,UAAQ;AACf;AACA,IAAM,sBAAsB;AAAA,EAC1B,KAAKA,UAAQ;AACf;AAEO,IAAM,mBAAmB;AAAA,EAC9B,gBAAAG;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAAD;AACF;;;AFhBA,IAAAE,qBAMO;AACP,IAAAC,oBAGO;AAkJW,IAAAC,uBAAA;AAhJlB,IAAM,EAAE,gBAAAC,iBAAgB,qBAAAC,sBAAqB,gBAAAC,iBAAgB,MAAAC,MAAK,IAAI;AAEtE,IAAM,MAAM,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAKnB,IAAMC,QAAO,2BAAAD,QAAO;AAAA;AAAA;AAAA,SAGXD,MAAK,GAAG;AAAA;AAAA;AAAA;AASjB,IAAMG,YAAW,2BAAAF,QAAO;AAAA;AAAA;AAAA,IAGpB,CAAC,EAAE,UAAU,MACb,aACA;AAAA;AAAA,KAEC;AAAA;AAGL,IAAMG,kBAAiB,2BAAAH,QAAO;AAAA;AAAA,SAErBJ,gBAAe,GAAG;AAAA,IACvB,CAAC,EAAE,aAAa,MAChB,eACI;AAAA;AAAA;AAAA,YAIA;AAAA;AAAA;AAAA,SAGC;AAAA;AAGT,IAAM,sBAAsB,2BAAAI,QAAO;AAAA;AAAA;AAAA;AAAA,SAI1BH,qBAAoB,GAAG;AAAA;AAsCzB,IAAM,iBAAa;AAAA,EACxB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,QACd,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,QACzB,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,QACzB,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,QACzB,EAAE,OAAO,QAAQ,OAAO,YAAY;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,iBAAiB;AAC9D,UAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,mBAAmB;AAEpE,UAAM,cAAc,KAAK,KAAK,cAAc,YAAY;AAExD,UAAM,QAAQ,oBAAoB,aAAa,UAAU;AAEzD,UAAM,eAAe,CACnB,OACA,SACG;AACH,cAAQ,cAAc,IAAI;AAC1B,UAAI,SAAS,UAAU;AACrB,iBAAS,OAAO,IAAI;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,qBAAqB,CAACO,YAAoC;AAC9D,UAAIA,YAAW,MAAM;AACnB,wBAAgBA,QAAO,KAAK;AAAA,MAC9B;AAEA,UAAI,sBAAsB;AACxB,6BAAqBA,OAAM;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,YACJ,MAAM,SAAS,IACX,MAAM,IAAI,CAAC,MAAM,MAAM;AACrB,YAAM,WAAW,SAAS;AAC1B,aACE,8CAACF,WAAA,EACE,mBAAS,cACR;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,WAAW,YAAY;AAAA,UAChC,YAAY,WAAW,WAAW;AAAA,UAClC,MAAK;AAAA,UACL,SAAS,WAAS;AAChB,yBAAa,OAAO,IAAc;AAAA,UACpC;AAAA,UACA,cACE,WACI,8BAAwB,IAAI,MAC5B,kBAAe,IAAI;AAAA,UAGxB;AAAA;AAAA,MACH,IAEA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAOJ,gBAAe;AAAA;AAAA,MACxB,KArBW,mBAAmB,CAAC,EAuBnC;AAAA,IAEJ,CAAC,IACD;AAEN,UAAM,qBACJ;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,MAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,WAAS;AAChB,uBAAa,OAAO,aAAa,CAAC;AAAA,QACpC;AAAA,QACA,cAAW;AAAA;AAAA,IACb;AAGF,UAAM,iBACJ;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,MAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS,WAAS;AAChB,uBAAa,OAAO,aAAa,CAAC;AAAA,QACpC;AAAA,QACA,cAAW;AAAA;AAAA,IACb;AAGF,UAAM,WAAW,CAAC,cAChB,CAAC,eAAe;AAAA,MACd,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IACpD;AAEF,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD,cAAc;AAAA,IAChB;AAEA,UAAM,gBAAgB,eAAe;AACrC,UAAM,eAAe,eAAe;AAEpC,UAAMO,cAAa,iBACjB,8CAAC,OAAI,KAAU,cAAW,cAAc,GAAG,UACzC,yDAACJ,OAAA,EACC;AAAA,oDAACC,WAAA,EAAS,WAAW,eAAe,eAAa,eAC9C,8BACH;AAAA,MACC;AAAA,MACD,8CAACA,WAAA,EAAS,WAAW,cAAc,eAAa,cAC7C,0BACH;AAAA,OACF,GACF,IACE;AAEJ,UAAM,wBAAwB,iBAC5B,8CAAC,OAAI,KAAU,cAAW,cAAc,GAAG,UACzC,yDAACD,OAAA,EACC;AAAA,oDAACC,WAAA,EAAS,WAAW,eAAe,eAAa,eAC/C;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,YAAW;AAAA,UACX,MAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAS,WAAS;AAChB,yBAAa,OAAO,CAAC;AAAA,UACvB;AAAA,UACA,cAAW;AAAA;AAAA,MACb,GACF;AAAA,MACA,8CAACA,WAAA,EAAS,WAAW,eAAe,eAAa,eAC9C,8BACH;AAAA,MACA,8CAACA,WAAA,EACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,WAAS;AAChB,yBAAa,OAAO,UAAU;AAAA,UAChC;AAAA,UAEC;AAAA;AAAA,MACH,GACF;AAAA,MACA,8CAACA,WAAA,EAAS,WAAW,cAAc,eAAa,cAC7C,0BACH;AAAA,MACA,8CAACA,WAAA,EAAS,WAAW,cAAc,eAAa,cAC9C;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,YAAW;AAAA,UACX,MAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAS,WAAS;AAChB,yBAAa,OAAO,WAAW;AAAA,UACjC;AAAA,UACA,cAAW;AAAA;AAAA,MACb,GACF;AAAA,OACF,GACF,IACE;AAEJ,UAAM,sBACJ,eAAe,IAAI,IAAI,aAAa,eAAe,eAAe;AAEpE,UAAM,qBACJ,eAAe,cAAc,cAAc,aAAa;AAE1D,UAAM,yBAAyB,cAC3B,wBACAG;AAEJ,WAAO,CAAC,eAAe,CAAC,aACtB,yBAEA,+CAACF,iBAAA,EAAgB,GAAG,gBAClB;AAAA,qDAAC,uBACE;AAAA,sBACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT,cAAc;AAAA,YACd,OAAM;AAAA,YACN,cAAc;AAAA,cACZ,OAAO,aAAa,SAAS;AAAA,cAC7B,OAAO;AAAA,YACT;AAAA,YACA,aAAa;AAAA,YACb,UAAU;AAAA,YACV,cAAW;AAAA;AAAA,QACb;AAAA,QAED,eACC,+CAAC,sCAAW,gBAAe,0BAAyB,IAAG,KAAI;AAAA;AAAA,UAClD;AAAA,UAAoB;AAAA,UAAE;AAAA,UAAmB;AAAA,UAAK;AAAA,WACvD;AAAA,SAEJ;AAAA,MACC;AAAA,OACH;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;;;AG3UzB,IAAAG,iBAAwC;AACxC,IAAAC,6BAA4B;;;;;;;;;;;;AAI5B,IAAAC,0BAGO;AACP,IAAAC,oBAIO;;;ACbP,IAAAC,6BAGO;AAEP,IAAM,EAAE,SAAAC,UAAQ,IAAI;AACpB,IAAM,EAAE,aAAAC,aAAY,IAAI;AAExB,IAAM,kBAAkB,SAASD,UAAQ,wBAAwB;AACjE,IAAM,gBAAgB,GAAGA,UAAQ,sBAAsB,OAAO,eAAe;AAE7E,IAAME,QAAO;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ,GAAGF,UAAQ,sBAAsB;AAAA,IACzC,OAAOC,aAAY;AAAA,EACrB;AAAA,EACA,IAAI;AAAA,IACF,aAAaD,UAAQ;AAAA,EACvB;AAAA,EACA,IAAI;AAAA,IACF,aAAa,QAAQ,aAAa;AAAA,EACpC;AACF;AAEA,IAAMG,YAAW;AAAA,EACf,YAAY;AAAA,EACZ,IAAI;AAAA,IACF,aAAa,QAAQ,eAAe;AAAA,EACtC;AACF;AAEA,IAAM,SAAS;AAAA,EACb,KAAK,SAASA,UAAS,UAAU;AACnC;AAEO,IAAM,aAAa;AAAA,EACxB,MAAAD;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,EACA,WAAWH,UAAQ;AACrB;;;ADuEM,IAAAI,uBAAA;AA9FN,IAAM,EAAE,MAAAC,OAAM,UAAAC,WAAU,QAAAC,QAAO,IAAI;AAOnC,IAAM,aAAa,2BAAAC,QAAO;AAAA,YACdH,MAAK,KAAK,MAAM;AAAA,WACjBA,MAAK,KAAK,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMpB,2BAAS;AAAA;AAAA;AAAA,IAGX,CAAC,EAAE,gBAAgB,MACnB,oBAAoB,YAChB;AAAA;AAAA,YAGA;AAAA,gBACI,wCAAe,eAAe,CAAC;AAAA,SAClC;AAAA;AAAA,IAEL,CAAC,EAAE,UAAU,MACb,cAAc,cACV;AAAA,0BACkBA,MAAK,GAAG,WAAW;AAAA;AAAA;AAAA;AAAA,4BAIjBC,UAAS,GAAG,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAO9BC,QAAO,GAAG;AAAA;AAAA;AAAA;AAAA,kCAIG,QAAQ,8BAAU,IAAI;AAAA;AAAA;AAAA,kCAGtB,QAAQ,4BAAU,IAAI;AAAA;AAAA;AAAA,kCAGtB,QAAQ,wBAAU,IAAI;AAAA;AAAA;AAAA,YAIhD;AAAA,0BACkBF,MAAK,GAAG,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOpC;AAAA;AAgBF,IAAMI,YAAO;AAAA,EAClB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,WAAW;AAAA,MACX,gBAAAC,kBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,KAAkB,aAAa,YAAY,OAAO;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,iBAAiBA;AAAA,QAEhB;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEAD,MAAK,cAAc;;;AE5HnB,IAAAE,iBAA2C;AAC3C,IAAAC,6BAAmB;AAYb,IAAAC,uBAAA;AATN,IAAM,iBAAiB,2BAAAC,QAAO;AAAA,iBACb,WAAO,SAAS,UAAU;AAAA;AAKpC,IAAMC,gBAAW;AAAA,EACtB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,WACE,8CAAC,kBAAe,KAAW,GAAG,MAC3B,UACH;AAAA,EAEJ;AACF;AAEAA,UAAS,cAAc;;;ACnBvB,IAAAC,6BAA4B;;;ACD5B,IAAAC,6BAGO;AAEP,IAAM,EAAE,QAAAC,UAAQ,QAAAC,QAAO,IAAI;AAC3B,IAAM,EAAE,aAAAC,aAAY,IAAI;AAExB,IAAMC,QAAO;AAAA,EACX,QAAQ,GAAGF,QAAO,sCAAsC;AAC1D;AAEA,IAAM,aAAa;AAAA,EACjB,aAAa;AAAA,IACX,iBAAiBD,SAAO;AAAA,IACxB,aAAaA,SAAO;AAAA,IACpB,OAAOE,aAAY;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,iBAAiBF,SAAO;AAAA,IACxB,aAAaA,SAAO;AAAA,IACpB,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,YAAY;AAAA,IACV,iBAAiBA,SAAO;AAAA,IACxB,aAAaC,QAAO;AAAA,IACpB,OAAOC,aAAY;AAAA,EACrB;AAAA,EACA,aAAa;AAAA,IACX,iBAAiBF,SAAO;AAAA,IACxB,aAAaC,QAAO;AAAA,IACpB,OAAOC,aAAY;AAAA,EACrB;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,MAAMC;AAAA,EACN,QAAQ;AACV;;;ADnCA,IAAAC,oBAIO;AACP,IAAAC,0BAGO;AACP,IAAAC,oBAGO;AAsGD,IAAAC,uBAAA;AA/FN,IAAMC,aAAY,2BAAAC,QAAO,IAAI,WAAW;AAAA,EACtC,mBAAmB,UAAQ,SAAS,WAAW,SAAS;AAC1D,CAAC;AAAA,YACW,WAAO,KAAK,MAAM;AAAA,QAC1B,wCAAe,6CAAqB,CAAC;AAAA;AAAA;AAAA,MAGnC,2BAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOX,CAAC,EAAE,MAAM,MACT,SACA;AAAA,eACW,WAAO,OAAO,KAAK,EAAE,KAAK;AAAA,0BACf,WAAO,OAAO,KAAK,EAAE,eAAe;AAAA,sBACxC,WAAO,OAAO,KAAK,EAAE,WAAW;AAAA,KACjD;AAAA,IACD,CAAC,EAAE,SAAS,MACZ,aAAa,eACT;AAAA;AAAA;AAAA,cAGM,iCAAe;AAAA;AAAA;AAAA,cAGf,wCAAsB;AAAA;AAAA,YAG5B,aAAa,eACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOA,EAAE;AAAA;AAuCL,IAAM,OAAO,CAAC,UAAqB;AACxC,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,MAAI,aAAa,cAAc;AAC7B,UAAM,EAAE,MAAM,OAAO,IAAI;AAEzB,WACE;AAAA,MAACD;AAAA,MAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD;AAAA,QACA;AAAA,QACA,IAAG;AAAA,QACH,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAACA;AAAA,IAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MACA;AAAA,MACA,IAAG;AAAA,MACH,KAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,KAAK,cAAc;;;AEhJnB,IAAAE,iBAUO;AACP,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AAsEI,IAAAC,uBAAA;AApEX,IAAMC,WAAU,2BAAAC,QAAO;AAYhB,IAAM,oBAAgB;AAAA,EAC3B,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,CAAC,UAAU,WAAW,QAAI,yBAAS,UAAU;AAEnD,UAAM,kBAAc,sBAAM;AAC1B,UAAM,cAAc,kBAAM,GAAG,WAAW;AAExC,kCAAU,MAAM;AACd,kBAAY,UAAU;AAAA,IACxB,GAAG,CAAC,UAAU,CAAC;AAEf,UAAM,qBAAiB,4BAAY,MAAM;AACvC,YAAM,cAAc,CAAC;AAErB,kBAAY,WAAW;AAEvB,UAAI,UAAU;AACZ,iBAAS,WAAW;AAAA,MACtB;AAAA,IACF,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,UAAMC,YAAW,eAAAC,SAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,YAAM,WAAW,GAAG,WAAW;AAC/B,YAAM,SAAS,GAAG,WAAW;AAE7B,iBACE,+BAAe,KAAK,MACnB,eAAe,QACZ,6BAAa,OAAuB;AAAA,QAClC,YAAY;AAAA,QACZ;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,MACF,CAAC,QACD,6BAAa,OAAuB;AAAA,QAClC,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ;AAAA,MACF,CAAC;AAAA,IAET,CAAC;AAED,UAAM,eAAe;AAAA,MACnB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,IACF;AACA,WAAO,8CAACH,UAAA,EAAS,GAAG,cAAe,UAAAE,WAAS;AAAA,EAC9C;AACF;AAEA,cAAc,cAAc;;;ACzF5B,IAAAE,iBAAiD;AACjD,IAAAC,6BAA4B;;;ACD5B,IAAAC,6BAA8B;AAG9B,IAAM,EAAE,SAAAC,WAAS,QAAAC,SAAQ,WAAAC,WAAU,IAAI;AAEhC,IAAMC,mBAGT;AAAA,EACF,MAAM;AAAA,EACN,QAAQ;AACV;AAEA,IAAM,SAAS;AAAA,EACb,SAAS,GAAGH,UAAQ,sBAAsB,IAAIA,UAAQ,wBAAwB,IAAIA,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB;AAAA,EACnJ,OAAO;AAAA,IACL,WAAW,SAASC,QAAO,2CAA2C,IAAIA,QAAO,qCAAqC;AAAA,EACxH;AAAA,EACA,OAAO;AAAA,IACL,WAAW,SAASA,QAAO,qCAAqC,IAAIA,QAAO,+BAA+B;AAAA,EAC5G;AACF;AAEA,IAAM,iBAAiB;AAAA,EACrB,OAAOC,WAAU;AAAA,EACjB,QAAQA,WAAU;AAAA,EAClB,YAAYF,UAAQ;AACtB;AAEA,IAAM,OAAO;AAAA,EACX,SAAS,GAAGA,UAAQ,sBAAsB,IACxCA,UAAQ,iCACRA,UAAQ,gCACV,MAAMA,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB;AACzE;AAEO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,IACP,OAAOE,WAAU;AAAA,IACjB,QAAQF,UAAQ;AAAA,EAClB;AACF;;;ADtCA,IAAAI,oBAMO;AACP,IAAAC,0BAGO;AAkID,IAAAC,uBAAA;AA/HN,IAAM,EAAE,QAAAC,SAAQ,gBAAAC,gBAAe,IAAI;AAEnC,IAAM,iBAAiB,2BAAAC,QAAO;AAAA;AAAA;AAI9B,SAAS,kBAAkB,OAA0C;AACnE,QAAM,EAAE,gBAAAC,gBAAe,IAAI;AAE3B,SAAOA,mBAAA,OAAAA,kBAAkBC,iBAAgB;AAC3C;AAQA,IAAM,kBAAkB,2BAAAF,QAAO,IAAI,WAAW;AAAA,EAC5C,mBAAmB,UACjB,SAAS,aAAa,SAAS,oBAAoB,SAAS;AAChE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAOY,CAAC,EAAE,QAAQ,MAAM,4BAAWF,QAAO,OAAO;AAAA,IACnD,eAAS,wCAAe,kBAAkB,KAAK,CAAC,CAAC;AAAA,IACjD,WACA,MAAM,QACN;AAAA;AAAA,KAEC;AAAA;AAGL,IAAM,sBAAsB,2BAAAE,QAAO;AAAA,IAC/B,iCAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOf,qCAAmB;AAAA;AAAA;AAAA;AAAA,kBAILF,QAAO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMtBA,QAAO,MAAM,SAAS;AAAA;AAAA;AAIxC,IAAM,iBAAiB,2BAAAE,QAAO;AAAA;AAAA;AAAA;AAAA,WAInBD,gBAAe,KAAK;AAAA,YACnBA,gBAAe,MAAM;AAAA,iBAChBA,gBAAe,UAAU;AAAA;AAsBnC,IAAM,0BAAsB,2BAGjC,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAAE;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAc,MAAM;AACxB,QAAI,gBAAgB;AAClB,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,qBAAqB;AAAA,IACzB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB;AAAA,IACA,SAAS;AAAA,EACX;AAEA,QAAM,eAAe;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,oBAAO,QAAQ;AAAA,IACtB,QAAQ,oBAAO,QAAQ;AAAA,EACzB;AAEA,SACE,8CAAC,uBAAqB,GAAG,oBAAoB,MAAK,UAChD;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgBA;AAAA,MAChB;AAAA,MACA;AAAA,MAEA;AAAA,sDAAC,kBAAgB,UAAS;AAAA,QAC1B,8CAAC,kBACC,wDAAC,2CAAuB,GAAG,cAAc,GAC3C;AAAA;AAAA;AAAA,EACF,GACF;AAEJ,CAAC;AAED,oBAAoB,cAAc;;;AE/JlC,IAAAE,iBAMO;AACP,IAAAC,6BAA4B;AAC5B,IAAAC,oBAKO;AACP,IAAAC,0BAA+B;;;ACd/B,IAAAC,iBAAoC;AAE7B,SAAS,iBACdC,UACe;AACf,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAA2B,IAAI;AAE3D,gCAAU,MAAM;AACd,QAAI,CAACA;AAAS;AAEd,UAAM,iBAAiB,IAAI,eAAe,MAAM;AAC9C,gBAAUA,SAAQ,YAAY;AAAA,IAChC,CAAC;AAED,mBAAe,QAAQA,QAAO;AAE9B,WAAO,MAAM,eAAe,WAAW;AAAA,EACzC,GAAG,CAACA,QAAO,CAAC;AAEZ,SAAO;AACT;;;ADyIM,IAAAC,uBAAA;AAvIN,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAM3B,SAAS,WAAW,OAAmC;AACrD,QAAM,EAAE,QAAQ,IAAI;AAEpB,SAAO,4BAAW,oBAAO,KAAK;AAChC;AAQA,IAAMC,QAAO,2BAAAC,QAAO,IAAI,WAAW;AAAA,EACjC,mBAAmB,UAAQ;AACzB,WAAO,SAAS,aAAa,SAAS,YAAY,SAAS;AAAA,EAC7D;AACF,CAAC;AAAA;AAAA,MAEK,CAAC,EAAE,QAAQ,MAAM,WAAW,kBAAkB;AAAA;AAAA,QAEhD,wCAAeC,iBAAgB,IAAI,CAAC;AAAA,YAC5B,CAAC,EAAE,QAAQ,WAAW,MAAO,aAAa,SAAS,CAAE;AAAA;AAAA;AAYjE,IAAM,gBAAgB,2BAAAD,QAAO,IAAI,WAAW;AAAA,EAC1C,mBAAmB,UAAQ;AACzB,UAAM,iBAA+C;AAAA,MACnD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA,aACY,UAAU;AAAA;AAAA,IAEnB,CAAC,EAAE,WAAW,MACd,cACA;AAAA,qBACiB,UAAU;AAAA,KAC1B;AAAA;AAiBE,IAAM,wBAAoB,2BAG/B,CAAC,OAAO,QAAQ;AArGlB;AAsGE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAU,uBAAuB,IAAI;AAE3C,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAE5C,QAAM,gBAAY,gCAAa;AAC/B,QAAM,SAAS,iBAAiB,QAAQ,OAAO;AAE/C,QAAM,CAAC,uBAAuB,uBAAuB,QACnD,yBAA2B,IAAI;AAEjC,sCAAgB,MAAM;AAEpB,QAAI,QAAQ,WAAW,YAAY;AACjC,8BAAwB,QAAQ,QAAQ,YAAY;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,gCAAU,MAAM;AACd,QAAI,UAAU,GAAG;AACf,iBAAW,IAAI;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,YAAY;AAAA,IAChB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,SAAQ,+BAAU,0BAAV,YAAmC;AAAA,EAC7C;AACA,QAAM,qBAAqB;AAAA,IACzB,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE;AAAA,IAACD;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,mBAAiB;AAAA,MACjB,eAAa,CAAC;AAAA,MAEd,wDAAC,iBAAe,GAAG,oBAAoB,SACpC,UACH;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,kBAAkB,cAAc;;;AErKhC,IAAAG,iBAAiC;AACjC,IAAAC,0BAA2B;;;ACD3B,IAAAC,6BAA4B;;;ACA5B,IAAAC,6BAA8B;AAG9B,IAAM,EAAE,QAAAC,SAAQ,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAEpC,IAAM,cAAc,GAAGF,QAAO,sCAAsC,IAAIA,QAAO,gCAAgC;AAExG,IAAMG,mBAAwD;AAAA,EACnE,SAAS;AACX;AAEA,IAAM,UAAU;AAAA,EACd,MAAM;AAAA,IACJ,OAAOF,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,IACxB,SAAS,GAAGC,UAAQ,wBAAwB,IAAIA,UAAQ,uBAAuB;AAAA,EACjF;AAAA,EACA,OAAO;AAAA,IACL,OAAOD,SAAO;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,OAAOA,SAAO;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,OAAOA,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,EAC1B;AACF;AAEA,IAAMG,kBAAiB;AAAA,EACrB,iBAAiBH,SAAO;AAC1B;AAEA,IAAM,yBAAyB;AAAA,EAC7B,SAAS,GAAGC,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB;AAC/E;AAEA,IAAM,gBAAgB;AAAA,EACpB,SAAS,GAAGA,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB;AAAA,EAC7E,aAAa;AACf;AAEA,IAAM,SAAS;AAAA,EACb,cAAc;AAAA,EACd,cAAcA,UAAQ;AAAA,EACtB,gBAAgB;AAAA,IACd,cAAcA,UAAQ;AAAA,EACxB;AACF;AAEA,IAAMG,cAAa;AAAA,EACjB,cAAc;AAChB;AAEA,IAAM,eAAe;AAAA,EACnB,OAAOH,UAAQ;AAAA,EACf,KAAKA,UAAQ;AACf;AAEO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA,gBAAAE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAAC;AAAA,EACA;AACF;;;AD/DA,IAAAC,oBAA0B;AAE1B,IAAM;AAAA,EACJ,gBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AACF,IAAI;AAEG,IAAMC,kBAAiB,2BAAAC,QAAO;AAAA;AAAA;AAAA,MAG/B,2BAAS;AAAA;AAAA,sBAEOP,gBAAe,eAAe;AAAA;AAO7C,IAAM,gBAAgB,2BAAAO,QAAO;AAAA;AAAA;AAAA;AAAA,mBAIjBJ,QAAO,YAAY;AAAA,mBACnBA,QAAO,YAAY;AAAA,IAClC,CAAC,EAAE,gBAAgB,MACnB,mBACA;AAAA,uBACmBA,QAAO,eAAe,YAAY;AAAA,KACpD;AAAA;AAGE,IAAM,oBAAoB,2BAAAI,QAAO;AAAA;AAAA;AAIjC,IAAM,yBAAyB,2BAAAA,QAAO;AAAA;AAAA;AAAA,aAGhCN,wBAAuB,OAAO;AAAA;AAGpC,IAAM,gBAAgB,2BAAAM,QAAO;AAAA,aACvBL,eAAc,OAAO;AAAA,kBAChBA,eAAc,WAAW;AAAA;AAGpC,IAAMM,cAAa,2BAAAD,QAAO;AAAA,mBACdH,YAAW,YAAY;AAAA;AAKnC,IAAM,iBAAiB,2BAAAG,QAAO;AAAA;AAAA;AAAA,IAGjC,CAAC,EAAE,YAAY,MACf,eACA;AAAA;AAAA,KAEC;AAAA;AAAA;AAAA;AAAA;AAME,IAAM,mBAAmB,2BAAAA,QAAO;AAAA;AAAA,SAE9BF,cAAa,GAAG;AAAA,WACdA,cAAa,KAAK;AAAA;AAGtB,IAAM,yBAAqB,2BAAAE,SAAO,YAAY;AAAA;AAAA;;;AEhFrD,IAAAE,iBAAiD;AACjD,IAAAC,6BAA4B;AAC5B,IAAAC,0BAA+B;AAK/B,IAAAC,oBAA6B;AA6DzB,IAAAC,uBAAA;AA3DJ,IAAM,EAAE,SAAAC,SAAQ,IAAI;AAMb,IAAMC,QAAO,2BAAAC,QAAO,EAAE,WAAW;AAAA,EACtC,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WASUF,SAAQ,KAAK,KAAK;AAAA,sBACPA,SAAQ,KAAK,eAAe;AAAA,aACrCA,SAAQ,KAAK,OAAO;AAAA,QAC7B,wCAAeG,iBAAgB,OAAO,CAAC;AAAA;AAAA,aAE9BH,SAAQ,MAAM,KAAK;AAAA;AAAA;AAAA,aAGnBA,SAAQ,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,MAI3B,8BAAY;AAAA;AAAA,IAEd,CAAC,EAAE,UAAU,MACb,aACA;AAAA,eACWA,SAAQ,QAAQ,KAAK;AAAA,0BACVA,SAAQ,QAAQ,eAAe;AAAA;AAAA,iBAExCA,SAAQ,QAAQ,KAAK;AAAA;AAAA,KAEjC;AAAA;AAQE,IAAMI,sBAAiB,2BAG5B,CAAC,EAAE,OAAAC,QAAO,WAAW,GAAG,KAAK,GAAG,QAAQ;AACxC,QAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IAEA,GAAG;AAAA,EACL;AAEA,SACE,8CAACJ,OAAA,EAAM,GAAG,WAAW,gBAAc,YAAY,SAAS,QACrD,UAAAI,QACH;AAEJ,CAAC;;;ACxED,IAAAC,iBAA2C;AAC3C,IAAAC,6BAAmB;AAiBV,IAAAC,uBAAA;AAfT,IAAM,KAAK,2BAAAC,QAAO;AAAA;AAAA;AAMX,IAAM,6BAAyB,2BAGpC,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAChC,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAO,8CAAC,MAAI,GAAG,OAAQ,UAAS;AAClC,CAAC;;;AJFD,IAAAC,oBAAiC;AACjC,IAAAC,qBAA2C;AAmD3B,IAAAC,uBAAA;AAjDT,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,CAAC,qBAAqB,sBAAsB,QAAI,yBAAS,IAAI;AACnE,QAAM,CAAC,aAAa,cAAc,QAAI;AAAA,IACpC;AAAA,EACF;AAEA,QAAM,gBAAY,uBAA0B,IAAI;AAEhD,QAAM,0BAA0B,CAAC,SAAiB;AAChD,mBAAe,IAAI;AACnB,2BAAuB,oBAAoB;AAAA,EAC7C;AAEA,QAAM,yBAAyB,MAAM;AACnC,2BAAuB,CAAC,mBAAmB;AAAA,EAC7C;AAEA,QAAM,qBAAqB,MAAM,uBAAuB,IAAI;AAE5D,QAAM,wBACJ,CAAC,CAAC,sBAAsB,mBAAmB,SAAS;AACtD,QAAM,yBACJ,CAAC,CAAC,uBAAuB,oBAAoB,SAAS;AACxD,QAAM,sBAAsB,eAAe;AAE3C,QAAMC,cACJ,yBAAyB,CAAC,cACxB,8CAACC,aAAA,EAAW,cAAW,kBACrB,wDAAC,kBACE,6BAAmB,IAAI,CAAC,MAAM,UAAU;AACvC,UAAM,EAAE,MAAM,GAAGC,MAAK,IAAI;AAC1B,UAAM,YAAY,SAAS;AAC3B,WACE,8CAAC,0BACC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC;AAAA,QACC,GAAGD;AAAA,QACJ;AAAA,QACA,SAAS,MAAM,wBAAwB,IAAI;AAAA;AAAA,IAC7C,KAN2B,KAO7B;AAAA,EAEJ,CAAC,GACH,GACF,IACE;AAEN,QAAM,iBACJ,0BAA0B,CAAC,CAAC,aAAa;AAC3C,SACE,+CAACE,iBAAA,EAAgB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI,GACjE;AAAA,kDAAC,iBAAc,iBAAiB,gBAC9B,yDAAC,qBACC;AAAA,oDAAC,iBACC,wDAAC,sCAAW,gBAAe,cAAa,MAAI,MAAC,IAAG,QAC7C,2BACH,GACF;AAAA,MACA,8CAAC,0BACC,wDAAC,sCAAW,gBAAe,cAAa,IAAG,QACxC,2BACH,GACF;AAAA,OACF,GACF;AAAA,IACCJ;AAAA,IACA,kBACC,+CAAC,oBACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,MAAM,sBAAsB,8BAAW;AAAA,UACvC,YAAW;AAAA,UACX,SAAQ;AAAA,UACR,SAAS;AAAA,UACT,iBAAc;AAAA,UACd,iBAAe,CAAC,sBAAsB,OAAO;AAAA,UAC7C,cAAW;AAAA;AAAA,MACb;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ,CAAC;AAAA,UACT,SAAS;AAAA,UACT,WAAW;AAAA,UACX,UAAU,sBAAsB,qBAAqB;AAAA,UACrD,OAAO,yBAAyB,sBAAsB;AAAA,UACtD;AAAA;AAAA,MACF;AAAA,OACF;AAAA,KAEJ;AAEJ;AAEA,eAAe,cAAc;;;AK/H7B,IAAAK,iBAAkC;AAClC,IAAAC,oBAIO;AACP,IAAAC,0BAAsB;AAEtB,IAAAC,6BAA4B;;;;;;AAE5B,IAAAC,oBAKO;;;ACfP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,WAAAC,YAAW,SAAAC,WAAS,QAAAC,SAAO,IAAI;AAEvC,IAAM,oBAAoB;AAAA,EACxB,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,QAAQF,WAAU;AAAA,QAClB,OAAOA,WAAU;AAAA,QACjB,OAAOC,UAAQ;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,QACL,QAAQD,WAAU;AAAA,QAClB,OAAOA,WAAU;AAAA,QACjB,OAAOC,UAAQ;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQD,WAAU;AAAA,QAClB,OAAOA,WAAU;AAAA,QACjB,OAAOC,UAAQ;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,SAAS,GAAGC,SAAO,qCAAqC,UAAUA,SAAO,2CAA2C;AAAA,IACpH,eAAeD,UAAQ;AAAA,EACzB;AACF;AAEO,IAAM,mBAAmB;AAAA,EAC9B;AACF;;;AD0GM,IAAAE,uBAAA;AAtHN,IAAMC,mBAAc,2BAAAC,SAAO,+BAAa;AAAA;AAAA,wBAEhB,QAAQ,sBAAY,IAAI;AAAA;AAAA,MAE1C,CAAC,EAAE,cAAc,MACjB,iBACA;AAAA,iBACW,iBAAO,kBAAkB,KAAK,MAAM,aAAa,EAAE,KAAK;AAAA,kBACvD,iBAAO,kBAAkB,KAAK,MAAM,aAAa,EAAE,MAAM;AAAA,iBAC1D,iBAAO,kBAAkB,KAAK,MAAM,aAAa,EAAE,KAAK;AAAA,OAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAaQ,iBAAO,kBAAkB,MAAM,OAAO;AAAA,sBAC/B,iBAAO,kBAAkB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAsB5D,2BAAS;AAAA;AAAA;AAWR,IAAM,iBAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,OAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA,iBAAiB,eAAe;AAAA,IAChC,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,UAAM,iBAAiB,QAAQ,QAAQC,UAAS,MAAM,aAAa;AACnE,UAAM,WAAW,CAAC,CAACD;AACnB,UAAM,kBAAkB,CAAC,CAAC;AAC1B,UAAM,sBAAsB,YAAY;AAExC,UAAM,qBAAiB,yCAAsB,UAAU,cAAc;AACrE,UAAM,YAAQ,yCAAsB,UAAU,KAAK;AAEnD,UAAM,aAAa;AAAA,MACjB,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,WAAW,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAoB,iDAA8B;AAAA,QAChD,MAAM,QAAQ;AAAA,QACd,eAAe,iBAAiB;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,MACD,iBAAiB;AAAA,MACjB,gBAAgB,kBAAkB,OAAO;AAAA,MACzC,KAAK,OAAO,MAAM,GAAG;AAAA,MACrB,GAAG;AAAA,IACL;AAEA,UAAM,2BAA2B;AAAA,MAC/B,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAEA,WACE,+CAAC,yCAAqB,GAAG,0BACtB;AAAA,kBACC,8CAAC,iCAAM,SAAS,UAAU,qBAAqB,CAAC,CAAC,qBAC9C,UAAAA,QACH;AAAA,MAEF,8CAACF,cAAA,EAAa,GAAG,YAAY;AAAA,MAC5B,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,OAC9D;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;AAEzB,IAAM,gBAEF;AAAA,EACF,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,CAAC,gBAAgB,GAAG;AAAA,IAClB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEA,IAAMG,YAAW,CACf,MACA,SAC2B,cAAc,IAAI,EAAE,IAAI;AAErD,IAAM,SAAS,CACb,MACA,QACgC;AAChC,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAIA,MAAI,SAAS,kBAAkB;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACF;;;AE7LA,IAAAC,iBAA2B;AAC3B,IAAAC,6BAAmB;AAEnB,IAAAC,oBAIO;AACP,IAAAC,0BAGO;AACP,IAAAC,oBAGO;;;ACfP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAE5B,IAAMC,QAAO;AAAA,EACX,MAAM;AAAA,IACJ,OAAOF,SAAO;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,OAAOA,SAAO;AAAA,EAChB;AACF;AAEA,IAAM,UAAU;AAAA,EACd,iBAAiBA,SAAO;AAAA,EACxB,SAASC,UAAQ;AACnB;AAEO,IAAM,sBAAsB;AAAA,EACjC,MAAAC;AAAA,EACA;AACF;;;ADiFQ,IAAAC,uBAAA;AAnFR,IAAM,EAAE,SAAAC,UAAS,MAAAC,MAAK,IAAI;AAE1B,IAAMC,WAAU,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAKd,CAAC,EAAE,MAAM,IAAI,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOTH,SAAQ,eAAe;AAAA,aAChCA,SAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB5B,IAAMI,QAAO,2BAAAD,QAAO;AAAA;AAAA,WAETF,MAAK,KAAK,KAAK;AAAA,QACtB,wCAAe,6CAAqB,CAAC;AAAA;AAAA;AAAA,kBAGvB,6CAA2B;AAAA;AAAA;AAAA,MAGvC,oCAAkB;AAAA;AAAA;AAAA,aAGXA,MAAK,KAAK,KAAK;AAAA;AAAA;AAgBrB,IAAM,oBAAgB;AAAA,EAC3B,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,YAAY,CAAC;AAAA,MACb,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM;AAAA,MACJ,WAAW;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,WACE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,eAAW,kCAAe,WAAW,kBAAkB;AAAA,QACvD;AAAA,QAEA,wDAACE,OAAA,EAAM,OAAG,oCAAiB,IAAI,eAAe,IAAI,GAAG,KAClD,gBACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;;;AE9G5B,IAAAC,iBAUO;AACP,IAAAC,oBAKO;AACP,IAAAA,oBAGO;AACP,IAAAA,oBAAgC;;;ACrBhC,IAAAC,6BAAmB;AACnB,IAAAC,oBAAkC;AAClC,IAAAA,oBAAqC;AACrC,IAAAC,0BAGO;;;ACNP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAE5B,IAAMC,WAAU;AAAA,EACd,SAAS,GAAGD,UAAQ,wBAAwB;AAC9C;AAEA,IAAM,WAAW;AAAA,EACf,QAAQ;AAAA,IACN,MAAMD,SAAO;AAAA,EACf;AAAA,EACA,YAAY;AAAA,IACV,MAAMA,SAAO;AAAA,EACf;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B,SAAAE;AAAA,EACA;AACF;;;ADXA,IAAM,EAAE,SAAAC,SAAQ,IAAI;AAEb,IAAM,WAAW,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAKxB,IAAM,eAAe,2BAAAA,QAAO;AAE5B,IAAMC,aAAY,2BAAAD,QAAO;AAAA;AAAA;AAQzB,IAAM,qBAAiB,2BAAAA,SAAO,uBAAK;AAAA,IACtC,CAAC,EAAE,KAAK,UAAM,wCAAqB,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,aAK/BD,SAAQ,OAAO;AAAA,QACxB,wCAAe,6CAAqB,CAAC;AAAA;;;ADkJ7B,IAAAG,uBAAA;AArJZ,IAAM,EAAE,UAAAC,UAAS,IAAI;AA0Bd,IAAM,cAAU;AAAA,EACrB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,kBAAc,sBAAM;AAC1B,UAAM,kBAAkB,gCAAa,GAAG,WAAW;AACnD,UAAM,CAAC,MAAM,OAAO,QAAI,yBAAS,KAAK;AACtC,UAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAC1C,UAAM,CAAC,cAAc,eAAe,QAAI,yBAA6B,IAAI;AACzE,UAAM,EAAE,MAAM,OAAO,QAAI,oCAAiB,cAAc;AAAA,MACtD;AAAA,IACF,CAAC;AACD,UAAM,iBAAa,uBAAuB,IAAI;AAC9C,UAAM,kBAAc,kCAAe,KAAK,KAAK,aAAa,UAAU;AAEpE,UAAM,qBAAmD,aAAW;AAClE,YAAM,CAAC,KAAK,IAAI;AAChB,YAAM,iBAAiB,UAAU,IAAI,IAAI,UAAU,KAAK;AAAA,IAC1D;AAEA,kCAAU,MAAM;AACd,YAAM,UAAU;AAAA,QACd,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AACA,YAAMC,OAAM,WAAW;AACvB,YAAM,WAAW,IAAI,qBAAqB,oBAAoB,OAAO;AAErE,UAAIA;AAAK,iBAAS,QAAQA,IAAG;AAE7B,aAAO,MAAM;AACX,YAAIA;AAAK,mBAAS,UAAUA,IAAG;AAAA,MACjC;AAAA,IACF,GAAG,CAAC,UAAU,CAAC;AAEf,kCAAU,MAAM;AACd,UAAI,WAAW,SAAS;AACtB,eAAO,iBAAiB,UAAU,MAAM;AACtC,uBAAa;AAAA,QACf,CAAC;AAAA,MACH;AACA,aAAO,MAAM;AACX,YAAI,WAAW,SAAS;AACtB,iBAAO,oBAAoB,UAAU,MAAM;AAAA,UAAC,CAAC;AAAA,QAC/C;AAAA,MACF;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,QAAI;AAEJ,kCAAU,MAAM;AACd,aAAO,MAAM;AACX,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,wCAAa,CAAC,UAAU,KAAK,GAAG,MAAM;AACpC,UAAI;AAAM,gBAAQ,KAAK;AAAA,IACzB,CAAC;AAED,UAAM,eAAe,MAAM;AACzB,mBAAa,KAAK;AAClB,cAAQ,KAAK;AAAA,IACf;AACA,UAAM,cAAc,MAAM;AACxB,UAAI,CAAC,MAAM;AACT,qBAAa,KAAK;AAClB,gBAAQ,WAAW,MAAM,QAAQ,IAAI,GAAG,KAAK;AAAA,MAC/C;AAAA,IACF;AAEA,UAAM,cAAc,SAAS;AAE7B,UAAM,gBAAgB,eAAAC,SAAc;AAAA,UAClC,+BAAe,QAAQ,SACrB,6BAAa,UAAU;AAAA,QACrB,KAAK,KAAK;AAAA,QACV,aAAS,mCAAgB,aAAa,YAAY,OAAO;AAAA,QACzD,YAAQ,mCAAgB,cAAc,YAAY,MAAM;AAAA,QACxD,oBAAoB;AAAA,MACtB,CAAC;AAAA,IACL;AAEA,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,MACA,kBAAc,mCAAgB,cAAc,YAAY;AAAA,MACxD,iBAAa,mCAAgB,aAAa,WAAW;AAAA,IACvD;AAEA,UAAM,eAAe;AAAA,MACnB,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,MAAM;AAAA,MACN,eAAe,CAAC;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd,OAAO,EAAE,GAAG,OAAO,SAAS;AAAA,IAC9B;AAEA,UAAM,oBAAoB;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,OAAO;AAAA,IAChB;AAEA,WACE,+CAACC,YAAA,EAAW,GAAG,gBACZ;AAAA;AAAA,MACD,+CAAC,kBAAgB,GAAG,cAAc,WAAW,GAAG,QAAO,SACpD;AAAA;AAAA,QACD,8CAAC,gBAAc,GAAG,mBAChB,yDAAC,YACC;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAMH,UAAS,WAAW;AAAA;AAAA,UAC5B;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA,cACF,MAAMA,UAAS,OAAO;AAAA;AAAA,UACxB;AAAA,WACF,GACF;AAAA,SACF;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,QAAQ,cAAc;;;AGtMtB,IAAAI,iBAAmE;AACnE,IAAAC,6BAAmB;;;ACDnB,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,UAAQ,IAAI;AAEpB,IAAMC,aAAY;AAAA,EAChB,SAAS,GAAGD,UAAQ,sBAAsB,IAAIA,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB,IAAIA,UAAQ,uBAAuB;AACpJ;AAEA,IAAME,oBAAmB;AAAA,EACvB,cAAcF,UAAQ;AAAA,EACtB,KAAKA,UAAQ;AACf;AACA,IAAM,mBAAmB;AAAA,EACvB,KAAKA,UAAQ;AACf;AAEO,IAAM,cAAc;AAAA,EACzB,WAAAC;AAAA,EACA,kBAAAC;AAAA,EACA;AACF;;;ADhBA,uBAA6B;AAC7B,IAAAC,0BAA2B;AAC3B,IAAAC,oBAUO;AACP,IAAAC,qBAA0B;AAC1B,IAAAC,oBAA6B;;;AElB7B,IAAAC,6BAAmB;AACnB,IAAAC,6BAA8B;AAC9B,IAAAC,oBAAgC;AAMzB,IAAM,WAAW,2BAAAC,QAAO,IAAI,WAAW;AAAA,EAC5C,mBAAmB,UAAQ,SAAS;AACtC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKqB;AAAA,EAClB,yCAAc,OAAO;AAAA,EACrB;AACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAOU,CAAC,EAAE,OAAO,MAAO,SAAS,IAAI,CAAE;AAAA;AAAA;AAAA;AAAA;;;ACzB7C,IAAM,+BAA+B,CAACC,gBACpCA,YAAU,eAAe,OAAO;AAE3B,SAAS,+BAA+BA,aAAwB;AACrE,MAAI,6BAA6BA,WAAS,GAAG;AAC3C,UAAM,UAAU,KAAK,MAAM,OAAO,OAAO;AAEzC,IAAAA,YAAU,MAAM,YAAY;AAC5B,IAAAA,YAAU,MAAM,WAAW;AAC3B,IAAAA,YAAU,MAAM,MAAM,IAAI,OAAO;AAAA,EACnC;AACF;AAEO,SAAS,iCAAiCA,aAAwB;AACvE,QAAM,UAAU,SAAS,SAAS,KAAK,MAAM,GAAG;AAEhD,EAAAA,YAAU,MAAM,eAAe,YAAY;AAC3C,EAAAA,YAAU,MAAM,eAAe,UAAU;AACzC,EAAAA,YAAU,MAAM,eAAe,KAAK;AAEpC,MAAI,MAAM,OAAO,GAAG;AAClB;AAAA,EACF;AAEA,SAAO,SAAS,GAAG,UAAU,EAAE;AACjC;;;AHoGY,IAAAC,uBAAA;AAnGZ,IAAM,EAAE,WAAAC,aAAW,kBAAAC,kBAAiB,IAAI;AAExC,IAAMC,iBAAY,2BAAAC,SAAO,uBAAK;AAAA;AAAA;AAAA;AAAA,aAIjBH,YAAU,OAAO;AAAA;AAAA;AAAA,MAGxB,2BAAS;AAAA;AAAA;AAAA;AAAA,MAIT,8BAAY;AAAA;AAAA;AAGlB,IAAMI,oBAAmB,2BAAAD,QAAO;AAAA;AAAA,mBAEbF,kBAAiB,YAAY;AAAA,SACvCA,kBAAiB,GAAG;AAAA;AAE7B,IAAMI,mBAAkB,2BAAAF,QAAO;AAE/B,IAAMG,oBAAe,2BAAAH,SAAO,MAAM;AAAA;AAAA;AAoB3B,IAAM,YAAQ,2BAAuC,CAAC,OAAO,QAAQ;AAC1E,QAAM;AAAA,IACJ,SAAS;AAAA,IACT,gBAAgB,SAAS;AAAA,IACzB;AAAA,IACA,QAAAI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,UAAU,kBAAM,GAAG,WAAW;AACpC,QAAM,WAAW,GAAG,OAAO;AAE3B,QAAM,eAAW,gCAA6B,MAAM;AACpD,QAAM,kBAAc,kCAAe,KAAK,QAAQ;AAChD,QAAM,cAAc,MAAM;AAxF5B;AAyFI,QAAI,WAAW,QAAQ;AACrB,sBAAc,gBAAW,YAAX,mBAAoB;AAClC,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,gCAAU,MAAM;AACd,QAAI,QAAQ;AACV,qCAA+B,SAAS,IAAI;AAAA,IAC9C,OAAO;AACL,uCAAiC,SAAS,IAAI;AAAA,IAChD;AAEA,WAAO,MAAM,iCAAiC,SAAS,IAAI;AAAA,EAC7D,GAAG,CAAC,MAAM,CAAC;AAEX,2CAAkB,SAAS,SAAS,MAAM,YAAY,CAAC;AAEvD,sCAAa,CAAC,UAAU,KAAK,GAAG,MAAM,YAAY,CAAC;AAEnD,QAAM,wBAAoB,sCAAmB,QAAQ,GAAG;AAExD,SAAO,UAAU,wBACb;AAAA,IACE,8CAAC,YAAS,QAAQ,qBAAqB,QACrC;AAAA,MAACL;AAAA,MAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD,KAAK;AAAA,QACL,MAAK;AAAA,QACL,cAAU;AAAA,QACV,eAAa,CAAC;AAAA,QACd,UAAU;AAAA,QACV,mBAAiB;AAAA,QACjB,IAAI;AAAA,QACJ,WAAW;AAAA,QAEX;AAAA,yDAACE,mBAAA,EACE;AAAA,YAAAG,WACC,8CAACF,kBAAA,EAAgB,IAAI,UAClB,iBAAOE,YAAW,WACjB,8CAAC,sCAAW,gBAAe,iBACxB,UAAAA,SACH,IAEAA,SAEJ;AAAA,YAED;AAAA,aACH;AAAA,UACC,WACC;AAAA,YAACD;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,YAAW;AAAA,cACX,SAAQ;AAAA,cACR,MAAM;AAAA,cACN,SAAS;AAAA,cACT,cAAW;AAAA;AAAA,UACb;AAAA;AAAA;AAAA,IAEJ,GACF;AAAA,IACA;AAAA,EACF,IACA;AACN,CAAC;AAED,MAAM,cAAc;;;AI5JpB,IAAAE,iBAA2B;AAC3B,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AA4BC,IAAAC,uBAAA;AAxBR,IAAMC,aAAY,2BAAAC,QAAO;AAYlB,IAAM,gBAAY;AAAA,EACvB,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,UAAU,YAAY,IAAI,WAAW,WAAW,QAAQ,GAAG,KAAK,IACtE;AAEF,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,IACF;AAEA,WAAO,aACL,8CAACD,YAAA,EAAW,GAAG,gBACb,wDAAC,uBAAoB,eAAe,QACjC,UACH,GACF,IAEA,8CAACA,YAAA,EAAW,GAAG,gBAAiB,UAAS;AAAA,EAE7C;AACF;AAEA,UAAU,cAAc;;;AC3CxB,IAAAE,iBAA2C;AAC3C,IAAAC,6BAAmB;AAkBR,IAAAC,uBAAA;AAfX,IAAMC,cAAY,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAGhB,YAAO,iBAAiB,GAAG;AAAA;AAK7B,IAAM,mBAAe;AAAA,EAC1B,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,GAAG;AAAA,IACL;AAEA,WAAO,8CAACD,aAAA,EAAW,GAAG,gBAAiB,UAAS;AAAA,EAClD;AACF;AAEA,aAAa,cAAc;;;ACvB3B,IAAAE,iBAAwD;AACxD,IAAAC,oBAA6B;AAC7B,IAAAC,6BAA4B;AAE5B,IAAAC,0BAA2B;AAC3B,IAAAC,oBASO;AAEP,IAAAC,qBAA0B;;;AChB1B,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,UAAQ,IAAI;AAEpB,IAAM,kCACJA,UAAQ;AACV,IAAM,0BAA0B,GAAG,+BAA+B;AAElE,IAAMC,cAAY;AAAA,EAChB,SAAS,GACPD,UAAQ,iCAAiC,+BAC3C,MACEA,UAAQ,iCAAiC,+BAC3C,MACEA,UAAQ,iCAAiC,+BAC3C,MACEA,UAAQ,kCAAkC,+BAC5C;AACF;AAEA,IAAME,oBAAmB;AAAA,EACvB,KAAKF,UAAQ;AAAA,EACb,SAAS;AACX;AAEO,IAAM,eAAe;AAAA,EAC1B,WAAAC;AAAA,EACA,kBAAAC;AACF;;;ADRA,IAAAC,oBAA6B;AA8KjB,IAAAC,uBAAA;AA5KZ,IAAM,EAAE,WAAAC,aAAW,kBAAAC,kBAAiB,IAAI;AAExC,IAAM,cAAc,CAAC,SAAwC;AAC3D,MAAI,SAAS;AAAS,WAAO;AAAA,WACpB,SAAS;AAAU,WAAO;AAAA;AAC9B,WAAO;AACd;AASA,IAAMC,kBAAY,2BAAAC,SAAO,uBAAK,EAAE,WAAW;AAAA,EACzC,mBAAmB,UAAQ;AACzB,UAAM,iBAA2C;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aASYH,YAAU,OAAO;AAAA;AAAA,IAE1B,CAAC,EAAE,KAAK,MAAM;AAAA,iBACD,YAAY,IAAI,CAAC;AAAA,GAC/B;AAAA;AAAA,IAEC,CAAC,EAAE,WAAW,MACd,cACA;AAAA,mBACe,WAAW,QAAQ;AAAA,mBACnB,WAAW,QAAQ;AAAA,eACvB,WAAW,KAAK;AAAA,KAC1B;AAAA;AAAA,IAED,CAAC,EAAE,WAAW,OAAO,MACrB,cAAc,SACV;AAAA;AAAA,uBAEe,SAAS,mBAAmB,mBAAmB;AAAA,YAE9D,cAAc,UACZ;AAAA;AAAA,yBAEe,SAAS,mBAAmB,kBAAkB;AAAA,cAE7D,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQN,8BAAY;AAAA;AAAA;AAIlB,IAAMI,oBAAmB,2BAAAD,QAAO;AAAA;AAAA;AAAA,SAGvBF,kBAAiB,GAAG;AAAA,aAChBA,kBAAiB,OAAO;AAAA;AAGrC,IAAMI,mBAAkB,2BAAAF,QAAO;AAE/B,IAAMG,oBAAe,2BAAAH,SAAO,MAAM;AAAA;AAAA;AAkC3B,IAAM,aAAS,2BAAwC,CAAC,OAAO,QAAQ;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,QAAAI;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB,SAAS;AAAA,IACzB,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,YAAY,CAAC,CAACA;AACpB,QAAM,WAAW,YAAY,GAAG,QAAQ,YAAY;AAEpD,QAAM,gBAAY,gCAA6B,MAAM;AACrD,QAAM,kBAAc,kCAAe,KAAK,SAAS;AAEjD,sCAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AAjKxC;AAkKI,QAAI,QAAQ;AACV,sBAAc,gBAAW,YAAX,mBAAoB;AAClC,iBAAW,QAAQ;AAAA,IACrB;AAAA,EACF,CAAC;AAED,QAAM,WAAmC,CAAC,UAAU,OAAsB;AAC1E,MAAI;AAAY,aAAS,KAAK,WAAW,OAAO;AAEhD,2CAAkB,UAAU,MAAM,UAAU,WAAW,QAAQ,CAAC;AAEhE,QAAM,wBAAoB,sCAAmB,QAAQ,GAAG;AAExD,QAAM,iBAAiB;AAAA,IACrB,OAAG,oCAAiB,UAAU,WAAW,WAAW,IAAI;AAAA,IACxD;AAAA,IACA,KAAK;AAAA,IACL,QAAQ,qBAAqB;AAAA,IAC7B,UAAU;AAAA,IACV,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,uBAAuB;AAAA,IAC3B,IAAI;AAAA,EACN;AAEA,SAAO,UAAU,wBACb;AAAA,IACE,+CAACL,aAAA,EAAW,GAAG,gBAAgB,WAAW,GACxC;AAAA,oDAAC,uBACC,yDAACE,mBAAA,EACE;AAAA,qBACC,8CAACC,kBAAA,EAAiB,GAAG,sBAClB,iBAAOE,YAAW,WACjB,8CAAC,sCAAW,gBAAe,iBACxB,UAAAA,SACH,IAEAA,SAEJ;AAAA,QAED;AAAA,SACH,GACF;AAAA,MACA;AAAA,QAACD;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,YAAW;AAAA,UACX,SAAS;AAAA,UACT,cAAW;AAAA,UACX,MAAM;AAAA;AAAA,MACR;AAAA,OACF;AAAA,IACA;AAAA,EACF,IACA;AACN,CAAC;AAED,OAAO,cAAc;;;AEhOrB,IAAAE,iBASO;AAyDE,IAAAC,uBAAA;AA5CF,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,kBAAc,sBAAM;AAC1B,QAAM,iBAAiB,8BAAY,GAAG,WAAW;AAEjD,QAAM,gBAAY,uBAAoB,IAAI;AAE1C,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,IAAI;AACzC,QAAM,OAAO,MAAM,UAAU,KAAK;AAClC,QAAM,QAAQ,MAAM,UAAU,IAAI;AAElC,QAAM,aAAa,MAAM;AACvB,SAAK;AACL,cAAU,OAAO;AAAA,EACnB;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM;AACN,eAAW,QAAQ;AAAA,EACrB;AAEA,QAAMC,YAAW,eAAAC,SAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,eACE,+BAAe,KAAK,MACnB,eAAe,QACZ,6BAAa,OAAuB;AAAA,MAClC,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB,CAAC;AAAA,MAClB,KAAK;AAAA,MACL,SAAS;AAAA,IACX,CAAC,QACD,6BAAa,OAAuB;AAAA,MAClC,IAAI;AAAA,MACJ,YAAY;AAAA,MACZ,QAAQ,CAAC;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAAA,EAET,CAAC;AACD,SAAO,gFAAE;AAAA;AAAA,IAAED;AAAA,IAAS;AAAA,KAAC;AACvB;AAEA,YAAY,cAAc;;;ACrE1B,IAAAE,6BAA8B;AAE9B,IAAAC,iBAAiD;AACjD,IAAAC,6BAA4B;AAC5B,IAAAC,oBAAiD;AACjD,IAAAA,oBAOO;AACP,IAAAA,oBAGO;AAEP,IAAAC,0BAA2B;;;AClB3B,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,UAAQ,IAAI;AAEpB,IAAMC,WAAU;AAAA,EACd,SAAS,GAAGD,UAAQ,wBAAwB,IAAIA,UAAQ,sBAAsB,IAAIA,UAAQ,uBAAuB,IAAIA,UAAQ,sBAAsB;AACrJ;AACA,IAAM,cAAc;AAAA,EAClB,KAAKA,UAAQ;AAAA,EACb,OAAOA,UAAQ;AACjB;AAEA,IAAM,QAAQ;AAAA,EACZ,aAAaA,UAAQ;AACvB;AAEA,IAAME,WAAU;AAAA,EACd,SAAS;AAAA,IACP,WAAWF,UAAQ;AAAA,EACrB;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B,SAAAE;AAAA,EACA,SAAAD;AAAA,EACA;AAAA,EACA;AACF;;;ADPA,IAAAE,qBAA0B;AAC1B,IAAAC,oBAAsB;AACtB,IAAAC,oBAA6B;AAgJvB,IAAAC,uBAAA;AA9IN,IAAM,EAAE,SAAS,QAAQ,IAAI;AAC7B,IAAM,EAAE,SAAAC,UAAS,SAAAC,UAAS,aAAAC,cAAa,OAAAC,OAAM,IAAI;AAQjD,IAAMC,eAAU,2BAAAC,SAAO,uBAAK;AAAA;AAAA,IAExB,CAAC,EAAE,oBAAoB,QAAQ,MAC/B,0BAAsB,wCAAqB,sBAAsB,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,aAIhEL,SAAQ,OAAO;AAAA;AAAA;AAAA,MAGtB,8BAAY;AAAA;AAAA,IAEd,CAAC,EAAE,WAAW,MACd,cACA;AAAA,eACW,WAAW,KAAK;AAAA,gBACf,WAAW,MAAM;AAAA,mBACd,WAAW,QAAQ;AAAA,oBAClB,WAAW,SAAS;AAAA,mBACrB,WAAW,QAAQ;AAAA,oBAClB,WAAW,SAAS;AAAA,KACnC;AAAA;AAGL,IAAM,iBAAiB,2BAAAK,QAAO;AAAA,kBACZF,OAAM,WAAW;AAAA;AAQnC,IAAMG,oBAAmB,2BAAAD,QAAO;AAAA,IAC5B,CAAC,EAAE,kBAAkB,UAAU,MAC/B,oBACA,CAAC,aACD;AAAA,oBACgBJ,SAAQ,QAAQ,SAAS;AAAA,KACxC;AAAA;AAGL,IAAMM,oBAAe,2BAAAF,SAAO,MAAM;AAAA;AAAA,SAEzBH,aAAY,GAAG;AAAA,WACbA,aAAY,KAAK;AAAA;AAsCrB,IAAM,cAAU;AAAA,EACrB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,SAAS,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA,MACA,YAAY,CAAC;AAAA,MACb,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,iBAAa;AAAA,MACjB;AAAA,MACA,MAAM;AACJ,mBAAW,QAAQ;AACnB,kBAAU,OAAO;AAAA,MACnB;AAAA,MACA,iBAAiB;AAAA,IACnB;AAEA,UAAM,EAAE,MAAM,OAAO,QAAI,oCAAiB,MAAM;AAAA,MAC9C;AAAA,MACA;AAAA,IACF,CAAC;AACD,UAAM,eAAW,kCAAe,KAAK,YAAY,KAAK,WAAW;AAEjE,kCAAU,MAAM;AACd,sBACI,KAAK,aAAa,aAAa,IAC/B,KAAK,aAAa,IAAI;AAAA,IAC5B,GAAG,CAAC,aAAa,CAAC;AAElB,UAAM,WAAmC,CAAC,WAAW,OAAQ;AAC7D,QAAI;AAAe,eAAS,KAAK,aAAa;AAE9C,6CAAkB,UAAU,MAAM;AAChC,UAAI;AAAQ,mBAAW,QAAQ;AAAA,IACjC,CAAC;AAED,UAAM,wBAAoB,sCAAmB,QAAQ,GAAG;AAExD,WAAO,UAAU,oBACf;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD,KAAK;AAAA,QACL,SAAS;AAAA,QACT,oBAAoB;AAAA,QACpB,UAAU;AAAA,QACV,OAAO,EAAE,GAAG,UAAU,OAAO,GAAG,OAAO,SAAS;AAAA,QAChD,MAAK;AAAA,QACL,WAAW;AAAA,QACX,QAAO;AAAA,QAEN;AAAA,UAAAD,UACC,8CAAC,kBACE,iBAAOA,WAAU,WAChB,8CAAC,sCAAW,gBAAe,iBAAiB,UAAAA,QAAM,IAElDA,QAEJ;AAAA,UAEF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,WAAW,CAAC,CAACH;AAAA,cACb,kBAAkB;AAAA,cAEjB;AAAA;AAAA,UACH;AAAA,UACC,mBACC;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,YAAW;AAAA,cACX,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS;AAAA,cACT,cAAW;AAAA;AAAA,UACb;AAAA;AAAA;AAAA,IAEJ,IACE;AAAA,EACN;AACF;AAEA,QAAQ,cAAc;;;AE/MtB,IAAAC,iBASO;AACP,IAAAC,oBAA6B;AAwEpB,IAAAC,uBAAA;AAzDF,IAAM,eAAe,CAAC;AAAA,EAC3B,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,QAAM,CAAC,MAAM,OAAO,QAAI,yBAAS,MAAM;AAEvC,QAAM,kBAAc,sBAAM;AAC1B,QAAM,kBAAkB,gCAAa,GAAG,WAAW;AAEnD,QAAM,2BAA2B,MAAM;AACrC,YAAQ,KAAK;AACb,0BAAsB,mBAAmB;AAAA,EAC3C;AAEA,QAAM,uBAAuB,MAAM;AACjC,YAAQ,CAAC,IAAI;AACb,sBAAkB,eAAe;AAAA,EACnC;AAEA,QAAM,gBAAY,uBAAoB,IAAI;AAC1C,QAAM,iBAAa,uBAAuB,IAAI;AAE9C,sCAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AAlDxC;AAmDI,QAAI,MAAM;AACR,cAAQ,KAAK;AACb,sBAAU,YAAV,mBAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,QAAM,cAAc,MAAM,QAAQ,KAAK;AAEvC,QAAMC,YAAW,eAAAC,SAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,eACE,+BAAe,KAAK,MACnB,eAAe,QACZ,6BAAa,OAAuB;AAAA,MAClC,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,KAAK;AAAA,IACP,CAAC,QACD,6BAAa,OAAuB;AAAA,MAClC,QAAQ;AAAA,MACR,eAAe,CAAC;AAAA,MAChB,IAAI;AAAA,MACJ,oBAAoB;AAAA,MACpB,eAAe,UAAU;AAAA,MACzB,KAAK;AAAA,MACL,SAAS;AAAA,IACX,CAAC;AAAA,EAET,CAAC;AAED,SAAO,+EAAG,UAAAD,WAAS;AACrB;AAEA,aAAa,cAAc;;;ACrF3B,IAAAE,iBAAkC;AAClC,IAAAC,6BAA4B;AAC5B,IAAAC,qBAAqB;AACrB,IAAAC,oBAA4C;AAC5C,IAAAC,0BAA+B;AAC/B,IAAAC,oBAIO;;;ACTP,IAAAC,6BAA8B;AAK9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAC5B,IAAM,EAAE,QAAAC,QAAO,IAAI;AACnB,IAAM,EAAE,kBAAAC,kBAAiB,IAAI;AAEtB,IAAMC,kBAAiB,gBAAgB;AAE9C,IAAM,eAAe;AAAA,EACnB,QAAQF,QAAO,KAAK;AAAA,EACpB,iBAAiBF,SAAO;AAAA,EACxB,OAAOA,SAAO;AAAA,EACd,KAAKC,UAAQ;AAAA,EACb,cAAcC,QAAO,YAAY,QAAQ,KAAK;AAAA,EAC9C,SAASA,QAAO,MAAM,MAAM,KAAK;AAAA,EACjC,OAAOC,kBAAiB,MAAM;AAAA,EAC9B,SAAS;AAAA,IACP,GAAGA,kBAAiB,QAAQ;AAAA,IAC5B,OAAOH,SAAO;AAAA,IACd,OAAOG,kBAAiB,QAAQ;AAAA,EAClC;AACF;AAEA,IAAME,SAAQ;AAAA,EACZ,KAAKJ,UAAQ;AACf;AAEA,IAAMK,cAAY;AAAA,EAChB,KAAKL,UAAQ;AACf;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA,OAAAI;AAAA,EACA,WAAAC;AACF;;;ADgDQ,IAAAC,uBAAA;AArER,IAAM,EAAE,cAAAC,cAAa,IAAI;AAMzB,IAAMC,WAAU,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQXF,cAAa,MAAM;AAAA,sBACTA,cAAa,eAAe;AAAA,WACvCA,cAAa,KAAK;AAAA,mBACVA,cAAa,YAAY;AAAA,aAC/BA,cAAa,OAAO;AAAA,QAC7B,wCAAeG,eAAc,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAM1B,6CAA2B;AAAA;AAAA;AAAA,IAG/B,CAAC,EAAE,SAAS,MACZ,YACA;AAAA,aACSH,cAAa,GAAG;AAAA,KACxB;AAAA;AAAA;AAAA;AAAA,MAIC,2BAAS;AAAA;AAAA;AAAA,wBAGSA,cAAa,MAAM,eAAe;AAAA,kBACxCA,cAAa,MAAM,SAAS;AAAA,oBAC1BA,cAAa,MAAM,WAAW;AAAA;AAAA;AAIlD,IAAMI,cAAY,2BAAAF,QAAO;AAAA;AAAA,IAErB,6BAAW,cAAcD,QAAO;AAAA,wBACZD,cAAa,QAAQ,eAAe;AAAA,oBACxCA,cAAa,QAAQ,WAAW;AAAA,aACvCA,cAAa,QAAQ,KAAK;AAAA;AAAA,IAEnC,6BAAW,cAAcC,QAAO;AAAA,wBACZD,cAAa,QAAQ,MAAM,eAAe;AAAA,oBAC9CA,cAAa,QAAQ,MAAM,WAAW;AAAA,kBACxCA,cAAa,QAAQ,MAAM,SAAS;AAAA;AAAA,IAElD,6BAAW,oBAAoBC,QAAO;AAAA,MACpC,8BAAY;AAAA;AAAA;AAIX,IAAM,mBAAe;AAAA,EAC1B,CAAC,EAAE,IAAI,OAAAI,QAAO,MAAAC,QAAM,WAAW,WAAW,GAAG,KAAK,GAAG,QAAQ;AAC3D,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,WACE,+CAACF,aAAA,EAAU,SAAS,UAClB;AAAA;AAAA,QAAC;AAAA;AAAA,UACE,OAAG,oCAAiB,UAAU,WAAW,WAAW,IAAI;AAAA,UACzD;AAAA,UACA,MAAK;AAAA;AAAA,MACP;AAAA,MACA,+CAACH,UAAA,EAAQ,UAAU,CAAC,CAACK,QAClB;AAAA,QAAAA,UAAQ,8CAAC,2BAAK,MAAMA,QAAM,UAAS,WAAU;AAAA,QAAG;AAAA,QAAED;AAAA,SACrD;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,aAAa,cAAc;;;AEnG3B,IAAAE,iBAAsB;AACtB,IAAAC,6BAA4B;AAC5B,IAAAC,oBAGO;AACP,IAAAC,0BAA2B;AA6DvB,IAAAC,uBAAA;AAtDJ,IAAM,QAAQ,2BAAAC,QAAO;AAAA,SACZ,mBAAO,MAAM,GAAG;AAAA;AAAA;AAAA,IAGrB,CAAC,EAAE,UAAU,MAAM;AAAA,sBACD,SAAS;AAAA,GAC5B;AAAA;AAGH,IAAMC,cAAY,2BAAAD,QAAO;AAAA;AAAA;AAAA,SAGhB,mBAAO,UAAU,GAAG;AAAA;AAiBtB,IAAM,oBAAoB,CAAC,UAAkC;AAClE,QAAM;AAAA,IACJ;AAAA,IACA,YAAY;AAAA,IACZ,OAAAE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAC/C,QAAM,aAAa;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,IACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD,MAAM;AAAA,IACN,mBAAmBA,SAAQ,gBAAgB;AAAA,EAC7C;AAEA,SACE,+CAACD,aAAA,EAAW,GAAG,gBACZ;AAAA,KAAC,CAACC,UACD;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,gBAAe;AAAA,QACf,IAAI;AAAA,QAEH,UAAAA;AAAA;AAAA,IACH;AAAA,IAEF,8CAAC,SAAO,GAAG,YAAa,UAAS;AAAA,KACnC;AAEJ;AAEA,kBAAkB,cAAc;;;AClFhC,IAAAC,6BAA4B;AAC5B,IAAAC,iBAOO;AACP,IAAAC,oBAIO;;;ACbP,IAAAC,iBAAqD;AAc9C,IAAM,kBAAc,8BAAoB;AAAA,EAC7C,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,iBAAiB,MAAM;AAAA,EACvB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,gBAAgB,MAAM;AAAA,EACtB,qBAAqB;AACvB,CAAC;AACM,IAAM,iBAAiB,UAAM,2BAAW,WAAW;;;ADsEpD,IAAAC,uBAAA;AAzEN,IAAMC,cAAY,2BAAAC,QAAO;AAAA,IACrB,CAAC,EAAE,OAAO,MACV,UACA;AAAA,eACW,MAAM;AAAA,KAChB;AAAA;AAkBE,IAAM,WAAO,2BAAsC,CAAC,OAAO,QAAQ;AACxE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,CAAC,eAAe,YAAY,QAAI,yBAAS,gCAAa,CAAC;AAC7D,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,KAAK;AACpD,QAAM,iBAAa,uBAAuB,IAAI;AAC9C,QAAM,mBAAe,uBAAuB,IAAI;AAEhD,QAAM,kBAAkB,CAAC,UAAkB;AACzC,iBAAa,KAAK;AAClB,gBAAY,SAAS,KAAK;AAAA,EAC5B;AAEA,gCAAU,MAAM;AACd,QAAI,cAAc,UAAa,cAAc,eAAe;AAC1D,mBAAa,SAAS;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,CAAC;AAE7B,QAAM,iBAAiB;AAAA,IACrB,OAAG,oCAAiB,UAAU,WAAW,WAAW,IAAI;AAAA,IACxD;AAAA,EACF;AAEA,SACE;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,wDAACD,aAAA,EAAW,GAAG,gBAAgB,QAAQ,OACpC,UACH;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,KAAK,cAAc;;;AErGnB,IAAAE,iBAUO;AACP,IAAAC,6BAA4B;AAC5B,IAAAC,oBAQO;AACP,IAAAC,qBAA8B;AAC9B,IAAAC,0BAGO;AACP,IAAAC,oBAGO;;;AC7BP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,WAAS,QAAAC,SAAO,IAAI;AAEpC,IAAM,UAAU;AAAA,EACd,cAAc,GAAGF,SAAO,sCAAsC,UAAUA,SAAO,gCAAgC;AACjH;AACA,IAAM,MAAM;AAAA,EACV,MAAM;AAAA,IACJ,cAAc,GAAGA,SAAO,sCAAsC;AAAA,IAC9D,OAAOE,SAAO;AAAA,IACd,SAASD,UAAQ;AAAA,EACnB;AAAA,EACA,KAAK;AAAA,IACH,KAAKA,UAAQ;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,IACN,KAAKA,UAAQ;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiBC,SAAO;AAAA,IACxB,OAAOA,SAAO;AAAA,IACd,WAAW,oBAAoBA,SAAO,yBAAyB;AAAA,IAC/D,aAAaA,SAAO;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,IACL,OAAOA,SAAO;AAAA,IACd,WAAW,oBAAoBA,SAAO,yBAAyB;AAAA,IAC/D,aAAaA,SAAO;AAAA,EACtB;AACF;AAEA,IAAM,QAAQ;AAAA,EACZ,SAASD,UAAQ;AACnB;AAEO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF;;;ADoHI,IAAAE,uBAAA;AA1HJ,IAAM,EAAE,KAAAC,KAAI,IAAI;AAOhB,IAAMC,UAAS,2BAAAC,QAAO;AAAA,IAClB,iCAAe;AAAA,IACf,qCAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKJF,KAAI,KAAK,YAAY;AAAA,WAC7BA,KAAI,KAAK,KAAK;AAAA,aACZA,KAAI,KAAK,OAAO;AAAA,QACzB,wCAAe,6CAAqB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOjC,6CAA2B;AAAA;AAAA;AAAA,IAG/B,CAAC,EAAE,WAAW,MAAM;AAAA,sBACF,UAAU;AAAA,WACrBA,KAAI,UAAU,EAAE,GAAG;AAAA,GAC3B;AAAA;AAAA,IAEC,CAAC,EAAE,QAAQ,MACX,WACA;AAAA,0BACsBA,KAAI,OAAO,eAAe;AAAA,sBAC9BA,KAAI,OAAO,WAAW;AAAA,eAC7BA,KAAI,OAAO,KAAK;AAAA,oBACXA,KAAI,OAAO,SAAS;AAAA,KACnC;AAAA;AAAA;AAAA,MAGC,8BAAY;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKEA,KAAI,MAAM,WAAW;AAAA,aAC5BA,KAAI,MAAM,KAAK;AAAA,kBACVA,KAAI,MAAM,SAAS;AAAA;AAAA;AAqB9B,IAAM,UAAM,2BAAwC,CAAC,OAAO,QAAQ;AACzE,QAAM;AAAA,IACJ,SAAS;AAAA,IACT,MAAAG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAU,uBAA8C,IAAI;AAClE,QAAM,kBAAc,kCAAe,KAAK,OAAO;AAC/C,QAAM,EAAE,cAAc,gBAAgB,oBAAoB,IACxD,eAAe;AAEjB,gCAAU,MAAM;AA7HlB;AA8HI,QAAI,OAAO;AACT,oBAAQ,YAAR,mBAAiB;AACjB,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,sCAAa,OAAO,MAAM;AApI5B;AAqII,mBAAe,KAAK;AACpB,uDAAc,YAAd,mBAAuB;AAAA,EACzB,CAAC;AAED,QAAM,mBAAe,4BAAY,MAAM;AACrC,QAAI,YAAY,OAAO;AACrB,eAAS,KAAK;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,QAAM,gBAAgB,CAAC,MAAqC;AAC1D,iBAAa;AACb,eAAW,QAAQ,CAAC;AAAA,EACtB;AAEA,QAAM,kBAAkB,CACtB,MACG;AACH,iBAAa;AACb,iBAAa,UAAU,CAAC;AAAA,EAC1B;AAEA,SACE;AAAA,IAACF;AAAA,IAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,KAAK;AAAA,MACL,iBAAe;AAAA,MACf,MAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU,QAAQ,IAAI;AAAA,MAErB;AAAA,QAAAE,UAAQ,8CAAC,2BAAK,MAAMA,QAAM,UAAS,WAAU;AAAA,QAC9C,8CAAC,UAAM,UAAS;AAAA;AAAA;AAAA,EAClB;AAEJ,CAAC;AAED,IAAI,cAAc;;;AE7KlB,IAAAC,iBAQO;AACP,IAAAC,6BAAmB;AACnB,IAAAC,oBAKO;AACP,IAAAC,oBAGO;AAuFI,IAAAC,uBAAA;AAjFX,IAAM,EAAE,SAAAC,SAAQ,IAAI;AAEpB,IAAM,SAAS,2BAAAC,QAAO;AAAA,mBACHD,SAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,IAKnC,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA,kBAIV,6CAA2B;AAAA;AAAA;AAAA,MAGvC,8BAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AASX,IAAM,cAAU;AAAA,EACrB,CAAC,EAAE,UAAU,IAAI,SAAS,GAAG,KAAK,GAAG,QAAQ;AAC3C,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,eAAe;AAEnB,UAAM,WAAW,kBAAM,GAAG,MAAM;AAChC,UAAM,gBAAgB,wBAAS,QAAQ,QAAQ,EAAE;AACjD,UAAM,CAAC,OAAO,QAAQ,QAAI,gCAAa,eAAe,CAAC,aAAa,KAAK;AACzE,UAAM,kBAAc,kCAAe,KAAK,UAAU;AAElD,UAAM,kBAAkB,wBAAS,IAAI,UAAU,CAAC,OAAO,UAAU;AAC/D,iBACE,+BAAe,KAAK,SACpB,6BAAa,OAAuB;AAAA,QAClC,IAAI,GAAG,MAAM,QAAQ,KAAK;AAAA,QAC1B,iBAAiB,GAAG,MAAM,UAAU,KAAK;AAAA,QACzC,QAAQ,cAAc;AAAA,QACtB;AAAA,QACA,OAAO,UAAU,SAAS;AAAA,QAC1B;AAAA,QACA,SAAS,MAAM,gBAAgB,KAAK;AAAA,MACtC,CAAC;AAAA,IAEL,CAAC;AAED,wCAAa,OAAO,MAAM;AAlF9B;AAmFM,qBAAe,KAAK;AACpB,yDAAc,YAAd,mBAAuB;AAAA,IACzB,CAAC;AAED,8CAAmB,yCAAY,YAA2B,MAAM,MAAM;AACpE,qBAAe,KAAK;AAAA,IACtB,CAAC;AAED,UAAM,gBAAgB,CAAC,UAA+C;AACpE,qBAAe,IAAI;AACnB,iBAAW,QAAQ,KAAK;AAAA,IAC1B;AAEA,UAAM,eAAe;AAAA,MACnB,GAAG;AAAA,MACH,KAAK;AAAA,MACL,MAAM;AAAA,MACN,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,SAAS;AAAA,IACX;AAEA,WAAO,8CAAC,UAAQ,GAAG,cAAe,2BAAgB;AAAA,EACpD;AACF;AAEA,QAAQ,cAAc;;;AC9GtB,IAAAE,iBAA2B;AAC3B,IAAAC,6BAA4B;AAC5B,IAAAC,oBAGO;AACP,IAAAC,oBAGO;AAqCD,IAAAC,uBAAA;AAjCN,IAAM,EAAE,OAAAC,OAAM,IAAI;AAMlB,IAAM,QAAQ,2BAAAC,QAAO;AAAA,aACRD,OAAM,OAAO;AAAA;AAAA,kBAER,6CAA2B;AAAA;AAAA;AAAA,IAGzC,CAAC,EAAE,QAAQ,MACX,CAAC,WACD;AAAA;AAAA,KAEC;AAAA;AAAA,MAEC,8BAAY;AAAA;AAAA;AAYX,IAAM,eAAW;AAAA,EACtB,CAAC,EAAE,SAAS,OAAO,UAAU,IAAI,WAAW,WAAW,GAAG,KAAK,GAAG,QAAQ;AACxE,WACE;AAAA,MAAC;AAAA;AAAA,QACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,QACnD;AAAA,QACA,UAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAS;AAAA,QAER;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AC3DvB,IAAAE,iBAOO;AACP,IAAAC,oBAA+B;AAwBzB,IAAAC,uBAAA;AAnBC,IAAM,gBAAY;AAAA,EACvB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,UAAM,EAAE,WAAW,QAAQ,aAAa,IAAI,eAAe;AAC3D,UAAM,kBAAc,kCAAe,KAAK,YAAY;AAEpD,UAAM,gBAAgB,wBAAS,IAAI,UAAU,CAAC,OAAO,UAAU;AAC7D,YAAM,SAAS,UAAU;AACzB,iBACE,+BAAe,KAAK,SACpB,6BAAa,OAAuB;AAAA,QAClC,IAAI,GAAG,MAAM,UAAU,KAAK;AAAA,QAC5B,mBAAmB,GAAG,MAAM,QAAQ,KAAK;AAAA,QACzC;AAAA,QACA,iBAAiB;AAAA,MACnB,CAAC;AAAA,IAEL,CAAC;AAED,WACE,8CAAC,SAAI,KAAK,aAAc,GAAG,MACxB,yBACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;ACvCxB,IAAAC,iBAA2B;AAC3B,IAAAC,6BAA4B;AAC5B,IAAAC,oBAGO;AACP,IAAAC,0BAIO;;;ACVP,IAAAC,6BAA8B;AAI9B,IAAM,EAAE,QAAAC,UAAQ,cAAAC,eAAc,SAAAC,UAAQ,IAAI;AAEnC,IAAMC,kBAAuC;AAEpD,IAAMC,WAAU;AAAA,EACd,QAAQ;AAAA,EACR,cAAcH,cAAa;AAAA,EAC3B,SAAS,GAAGC,UAAQ,yBAAyB,IAAIA,UAAQ,wBAAwB;AAAA,EACjF,SAAS;AAAA,IACP,SAAS;AAAA,MACP,iBAAiBF,SAAO;AAAA,MACxB,aAAaA,SAAO;AAAA,IACtB;AAAA,IACA,SAAS,mBAAmB,UAAU,QAAQ;AAAA,IAC9C,QAAQ,mBAAmB,UAAU,QAAQ;AAAA,IAC7C,SAAS,mBAAmB,UAAU,QAAQ;AAAA,IAC9C,MAAM,mBAAmB,UAAU,QAAQ;AAAA,EAC7C;AACF;AAEO,IAAM,YAAY;AAAA,EACvB,SAAAI;AACF;;;ADmCM,IAAAC,uBAAA;AA/CN,IAAM,EAAE,SAAAC,SAAQ,IAAI;AAMpB,IAAMC,eAAU,2BAAAC,SAAO,mDAA2B;AAAA;AAAA;AAAA,YAGtCF,SAAQ,MAAM;AAAA,mBACPA,SAAQ,YAAY;AAAA,aAC1BA,SAAQ,OAAO;AAAA,QACxB,wCAAeG,eAAc,CAAC;AAAA,IAC9B,CAAC,EAAE,SAAS,MAAM;AAAA,wBACEH,SAAQ,QAAQ,QAAQ,EAAE,eAAe;AAAA,oBAC7CA,SAAQ,QAAQ,QAAQ,EAAE,WAAW;AAAA,GACtD;AAAA;AAeI,IAAM,UAAM,2BAAsC,CAAC,OAAO,QAAQ;AACvE,QAAM;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,SACE;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MACA,UAAU;AAAA,MAEV,wDAAC,qDAA2B,gBAAK;AAAA;AAAA,EACnC;AAEJ,CAAC;AAED,IAAI,cAAc;;;AElElB,IAAAG,iBAAqC;AACrC,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;AACP,IAAAC,qBAA0B;AAC1B,IAAAC,0BAIO;;;ACXP,IAAAC,6BAA8B;AAG9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,WAAS,cAAAC,cAAa,IAAI;AAEnC,IAAMC,kBAAuC;AAEpD,IAAMC,cAAY;AAAA,EAChB,KAAKH,UAAQ;AAAA,EACb,SAAS,GAAGA,UAAQ,yBAAyB,IAAIA,UAAQ,wBAAwB;AAAA,EACjF,iBAAiBD,SAAO;AAAA,EACxB,QAAQ,aAAaA,SAAO,qBAAqB;AAAA,EACjD,cAAcE,cAAa;AAC7B;AAEA,IAAMG,SAAQ;AAAA,EACZ,KAAKJ,UAAQ;AACf;AAEO,IAAM,aAAa;AAAA,EACxB,WAAAG;AAAA,EACA,OAAAC;AACF;;;AD+BI,IAAAC,uBAAA;AArCJ,IAAM,EAAE,WAAAC,YAAU,IAAI;AAEtB,IAAMC,kBAAY,2BAAAC,SAAO,mDAA2B;AAAA;AAAA;AAAA;AAAA,SAI3CF,YAAU,GAAG;AAAA,aACTA,YAAU,OAAO;AAAA,YAClBA,YAAU,MAAM;AAAA,mBACTA,YAAU,YAAY;AAAA,sBACnBA,YAAU,eAAe;AAAA,QAC3C,wCAAeG,iBAAgB,IAAI,CAAC;AAAA;AAajC,IAAM,WAAO,2BAAsC,CAAC,OAAO,QAAQ;AACxE,QAAM,EAAE,MAAM,SAAS,IAAI,WAAW,YAAY,CAAC,GAAG,GAAG,KAAK,IAAI;AAElE,QAAM,EAAE,cAAc,WAAW,GAAG,cAAc,IAAI;AAEtD,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,IAAI;AAEzC,QAAM,UAAU,MAAM;AACpB,cAAU,KAAK;AACf,eAAW,QAAQ;AAAA,EACrB;AAEA,SAAO,SACL;AAAA,IAACF;AAAA,IAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,eAAe,IAAI;AAAA,MACvD;AAAA,MACA,IAAG;AAAA,MAEH;AAAA,sDAAC,qDAA2B,gBAAK;AAAA,QACjC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAM;AAAA,YACN,YAAW;AAAA,YACX,SAAQ;AAAA,YACR;AAAA,YACA,cAAY,gCAAa,SAAS,OAAO,QAAQ,IAAI,KAAK,MAAM;AAAA;AAAA,QAClE;AAAA;AAAA;AAAA,EACF,IACE;AACN,CAAC;AAED,KAAK,cAAc;;;AEvEnB,IAAAG,iBAAqD;AACrD,IAAAC,6BAAmB;AACnB,IAAAC,oBAAkC;AAgB5B,IAAAC,uBAAA;AAbN,IAAMC,SAAQ,2BAAAC,QAAO;AAAA,IACjB,mCAAiB;AAAA;AAAA,SAEZ,WAAO,MAAM,GAAG;AAAA;AAKlB,IAAM,gBAAY;AAAA,EACvB,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ;AAC9B,UAAM,gBAAgB,wBAAS,QAAQ,QAAQ;AAE/C,UAAM,gBAAgB,cAAc,IAAI,CAAC,MAAM,UAC7C,8CAAC,QAA0B,kBAAlB,QAAQ,KAAK,EAAU,CACjC;AACD,WACE,8CAACD,QAAA,EAAO,GAAG,MAAM,KACd,yBACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AC5BxB,IAAAE,iBAA6C;AAC7C,IAAAC,6BAA4B;AAC5B,IAAAC,oBAA0B;AAC1B,IAAAA,oBAAiC;AACjC,IAAAA,oBAAgC;AAChC,IAAAC,0BAA2B;;;ACL3B,IAAAC,iBAAuD;AAUhD,IAAM,uBAAmB,8BAAoC;AAAA,EAClE,MAAM;AACR,CAAC;AAEM,IAAM,sBAAsB,UAAM,2BAAW,gBAAgB;;;ACdpE,IAAAC,6BAA8B;AAC9B,IAAAC,oBAA8C;AAI9C,IAAM,EAAE,QAAAC,UAAQ,SAAAC,WAAS,QAAAC,UAAQ,cAAAC,gBAAc,cAAAC,cAAa,IAAI;AAEzD,IAAMC,mBAAkE;AAAA,EAC7E,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACR;AAEA,IAAM,eAAe,OAAG;AAAA,EACtBD,cAAa,wBAAwB,QAAQ;AAAA,EAC7CA,cAAa,wBAAwB,QAAQ;AAC/C,CAAC;AAED,IAAM,gBAAgB,OAAG;AAAA,EACvBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC,CAAC;AAED,IAAM,iBAAiB,OAAG;AAAA,EACxBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC,CAAC;AACD,IAAM,gBAAgB,OAAG;AAAA,EACvBA,cAAa,aAAa,QAAQ;AAAA,EAClCA,cAAa,aAAa,QAAQ;AACpC,CAAC;AAED,IAAME,kBAAiB;AAAA,EACrB,KAAKL,UAAQ;AACf;AAEA,IAAM,QAAQ;AAAA,EACZ,MAAM;AAAA,IACJ,aAAaD,SAAO;AAAA,IACpB,aAAa,GAAGE,SAAO,sCAAsC,UAAUF,SAAO,qBAAqB;AAAA,IACnG,WAAW,GAAGE,SAAO,sCAAsC,UAAUF,SAAO,qBAAqB;AAAA,IACjG,cAAc,GAAGE,SAAO,sCAAsC,UAAUF,SAAO,qBAAqB;AAAA,EACtG;AAAA,EACA,OAAO;AAAA,IACL,OAAOA,SAAO;AAAA,IACd,aAAaA,SAAO;AAAA,EACtB;AAAA,EACA,YAAY;AAAA,IACV,YAAY,GAAGE,SAAO,sCAAsC,UAAUF,SAAO,qBAAqB;AAAA,IAClG,qBAAqBG,eAAa;AAAA,IAClC,wBAAwBA,eAAa;AAAA,EACvC;AAAA,EACA,WAAW;AAAA,IACT,sBAAsBA,eAAa;AAAA,IACnC,yBAAyBA,eAAa;AAAA,EACxC;AACF;AAEA,IAAMI,WAAU;AAAA,EACd,MAAM,EAAE,iBAAiBP,SAAO,sBAAsB;AAAA,EACtD,QAAQ;AAAA,IACN,OAAOA,SAAO;AAAA,IACd,aAAaA,SAAO;AAAA,IACpB,iBAAiBA,SAAO;AAAA,IACxB,WAAW,mBAAmBA,SAAO,yBAAyB;AAAA,EAChE;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,UAAU;AAAA,QACR,SAASC,UAAQ;AAAA,QAEjB,UAAU;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,SAAS,GAAGA,UAAQ,wBAAwB,IAAIA,UAAQ,wBAAwB;AAAA,QAChF,KAAKA,UAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAASA,UAAQ;AAAA,QACjB,UAAU;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,SAAS,GAAGA,UAAQ,uBAAuB,IAAIA,UAAQ,sBAAsB;AAAA,QAC7E,KAAKA,UAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,UAAU;AAAA,QACR,SAASA,UAAQ;AAAA,QACjB,UAAU;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,SAAS,GAAGA,UAAQ,wBAAwB,IAAIA,UAAQ,uBAAuB;AAAA,QAC/E,KAAKA,UAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAASA,UAAQ;AAAA,QACjB,UAAU;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,SAAS,GAAGA,UAAQ,sBAAsB,IAAIA,UAAQ,sBAAsB;AAAA,QAC5E,KAAKA,UAAQ;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,gBAAAK;AAAA,EACA,SAAAC;AAAA,EACA;AACF;;;AF1CM,IAAAC,uBAAA;AA3DN,IAAMC,kBAAiB,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAGrB,gBAAO,eAAe,GAAG;AAAA;AAAA;AAAA,MAG5B,2BAAS;AAAA;AAAA,IAEX,CAAC,EAAE,OAAO,MACV,UACA;AAAA,eACW,MAAM;AAAA,KAChB;AAAA;AAGL,IAAMC,OAAM,2BAAAD,QAAO;AAAA;AAAA;AAAA;AAAA;AAMZ,IAAM,YAAY,CACvB,UACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,IACP,OAAAE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,CAAC,YAAY,aAAa,QAAI,yBAAyB,KAAK;AAElE,QAAM,mBAAe;AAAA,IACnB,CAAC,MAAqC,cAAc,EAAE,OAAO,KAAK;AAAA,IAClE,OAAK,YAAY,SAAS,GAAG,EAAE,OAAO,KAAU;AAAA,EAClD;AAEA,QAAM,UAAUA,UAAS,GAAG,QAAQ;AAEpC,SACE;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA;AAAA,QAACH;AAAA,QAAA;AAAA,UACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,UACnD,MAAK;AAAA,UACL,mBAAiB,4BAAW,uCAAY;AAAA,UACxC,QAAQ;AAAA,UAEP;AAAA,YAAAG,UACC,8CAAC,sCAAW,gBAAe,0BAAyB,IAAI,SACrD,UAAAA,QACH;AAAA,YAEF,8CAACD,MAAA,EAAK,UAAS;AAAA;AAAA;AAAA,MACjB;AAAA;AAAA,EACF;AAEJ;AAEA,UAAU,cAAc;;;AG3FxB,IAAAE,iBAAoE;AAEpE,IAAAC,oBAGO;AACP,IAAAC,qBAAqB;;;ACNrB,IAAAC,6BAA4B;AAC5B,IAAAC,0BAA+B;AAC/B,IAAAC,oBAIO;AAKP,IAAM,EAAE,SAAAC,UAAS,OAAAC,OAAM,IAAI;AAOpB,IAAMC,WAAU,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QActB,6CAA2B;AAAA;AAAA,sBAEbH,SAAQ,KAAK,eAAe;AAAA;AAAA,IAE9C,CAAC,EAAE,OAAO,UAAU,MAAM;AAAA,MACxB,YACE;AAAA,uBACeA,SAAQ,KAAK,KAAK,EAAE,SAAS,QAAQ;AAAA,qBACvCA,SAAQ,KAAK,KAAK,EAAE,SAAS,OAAO;AAAA,YAEjD;AAAA,iBACSA,SAAQ,KAAK,KAAK,EAAE,SAAS,GAAG;AAAA,qBAC5BA,SAAQ,KAAK,KAAK,EAAE,SAAS,OAAO;AAAA,gBAC7C,wCAAeI,iBAAgB,KAAK,CAAC,CAAC;AAAA,SACzC;AAAA,GACN;AAAA;AAOI,IAAMC,SAAQ,2BAAAF,QAAO;AAAA,IACxBD,QAAO;AAAA,oBACSD,OAAM,KAAK,WAAW;AAAA,kBACxBA,OAAM,KAAK,SAAS;AAAA,qBACjBA,OAAM,KAAK,YAAY;AAAA;AAAA,kBAE1BC,QAAO;AAAA,mBACND,OAAM,WAAW,UAAU;AAAA,8BAChBA,OAAM,WAAW,mBAAmB;AAAA,iCACjCA,OAAM,WAAW,sBAAsB;AAAA;AAAA,iBAEvDC,QAAO;AAAA,+BACOD,OAAM,UAAU,oBAAoB;AAAA,kCACjCA,OAAM,UAAU,uBAAuB;AAAA;AAAA;AAAA,IAGrE,6BAAW,cAAcC,QAAO;AAAA,aACvBF,SAAQ,OAAO,KAAK;AAAA,oBACbA,SAAQ,OAAO,WAAW;AAAA,wBACtBA,SAAQ,OAAO,eAAe;AAAA,kBACpCA,SAAQ,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,IAKtC,6BAAW,oBAAoBE,QAAO;AAAA,MACpC,8BAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAMLD,OAAM,MAAM,KAAK;AAAA,oBACVA,OAAM,MAAM,WAAW;AAAA;AAAA;;;AD9E3C,IAAAK,oBAA4B;AAsEpB,IAAAC,uBAAA;AA3CR,IAAM,mBAAmB,CACvB,OACAC,QACA,YACY;AACZ,MAAI,OAAO,YAAY;AAAa,WAAO;AAE3C,MAAI,OAAO,UAAU,eAAe,UAAU,QAAQA,QAAO;AAC3D,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,UAAU,OAAOA,UAAA,gBAAAA,OAAO,KAAK;AAAA,IACtC;AACA,WAAO,WAAUA,UAAA,gBAAAA,OAAO;AAAA,EAC1B;AAEA,SAAO,CAAC,CAAC;AACX;AAEO,IAAM,kBAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,UAAMF,SAAQ,oBAAoB;AAElC,UAAM,eAAe,CAAC,UAAyC;AAC7D,kBAAY,SAAS,KAAK;AAC1B,OAAAA,UAAA,gBAAAA,OAAO,aAAYA,OAAM,SAAS,KAAK;AAAA,IACzC;AAEA,WACE,+CAACG,QAAA,EAAM,MAAMH,OAAM,MAAM,SAAS,UAChC;AAAA;AAAA,QAAC;AAAA;AAAA,UACE,OAAG,oCAAiB,UAAU,WAAW,WAAW,IAAI;AAAA,UACzD,MAAK;AAAA,UACL;AAAA,UACA,MAAM,sBAAQA,OAAM;AAAA,UACpB,UAAU;AAAA,UACV;AAAA,UACA,SAAS,iBAAiB,OAAOA,QAAO,OAAO;AAAA;AAAA,MACjD;AAAA,MACA,+CAACI,UAAA,EAAQ,OAAOJ,OAAM,MAAM,WAAW,CAAC,CAACC,UAAQ,CAACC,QAC/C;AAAA,QAAAD,UAAQ,8CAAC,2BAAK,MAAMA,QAAM,UAAS,WAAU;AAAA,QAC7CC,UAAS,8CAAC,UAAM,UAAAA,QAAM;AAAA,SACzB;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AEjG1B,IAAAG,6BAA4B;AAC5B,IAAAC,oBAA0C;AAC1C,IAAAA,oBAGO;;;ACLP,IAAAC,6BAA8B;AAC9B,IAAAC,oBAA2B;AAE3B,IAAM,EAAE,MAAM,SAAAC,UAAQ,IAAI;AAE1B,IAAM,aAAa;AACnB,IAAM,gBAA4C;AAAA,EAChD,CAAC,6BAAW,MAAM,GAAG,KAAK,qBAAqB,IAAI;AAAA,EACnD,CAAC,6BAAW,KAAK,GAAG,KAAK,uBAAuB,IAAI;AAAA,EACpD,CAAC,6BAAW,MAAM,GAAG,KAAK,wBAAwB,IAAI;AAAA,EACtD,CAAC,6BAAW,KAAK,GAAG,KAAK,yBAAyB,IAAI;AAAA,EACtD,CAAC,6BAAW,MAAM,GAAG,KAAK,qBAAqB,IAAI;AACrD;AAEO,IAAM,aAAa;AAAA,EACxB,CAAC,6BAAW,MAAM,GAAG;AAAA,IACnB,MAAM;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,YAAYA,UAAQ;AAAA,MACpB,aAAaA,UAAQ;AAAA,IACvB;AAAA,IAEA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MACA,YAAY;AAAA,QACV,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA,EACA,CAAC,6BAAW,KAAK,GAAG;AAAA,IAClB,MAAM;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,YAAYA,UAAQ;AAAA,MACpB,aAAaA,UAAQ;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,YAAY,OAAO,cAAc,6BAAW,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,YAAY;AAAA,QACV,YAAY,GAAG,cAAc,6BAAW,KAAK,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EACA,CAAC,6BAAW,MAAM,GAAG;AAAA,IACnB,MAAM;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,YAAYA,UAAQ;AAAA,MACpB,aAAaA,UAAQ;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,YAAY,OAAO,cAAc,6BAAW,MAAM,CAAC;AAAA,MACrD;AAAA,MACA,YAAY;AAAA,QACV,YAAY,GAAG,cAAc,6BAAW,MAAM,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAAA,EACA,CAAC,6BAAW,KAAK,GAAG;AAAA,IAClB,MAAM;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,YAAYA,UAAQ;AAAA,MACpB,aAAaA,UAAQ;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,YAAY,OAAO,cAAc,6BAAW,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,YAAY;AAAA,QACV,YAAY,GAAG,cAAc,6BAAW,KAAK,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EACA,CAAC,6BAAW,MAAM,GAAG;AAAA,IACnB,MAAM;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,YAAYA,UAAQ;AAAA,MACpB,aAAaA,UAAQ;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,YAAY,OAAO,cAAc,6BAAW,MAAM,CAAC;AAAA,MACrD;AAAA,MACA,YAAY;AAAA,QACV,YAAY,GAAG,cAAc,6BAAW,MAAM,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACF;;;AChGA,IAAAC,iBAA0C;AAC1C,IAAAC,oBAA2B;AAMpB,IAAM,kBAAc,8BAAgC;AAAA,EACzD,YAAY,6BAAW;AACzB,CAAC;AAEM,IAAM,iBAAiB,MAAM;AAClC,aAAO,2BAAW,WAAW;AAC/B;;;AFJA,IAAAC,oBAGO;AA+EC,IAAAC,uBAAA;AAvER,IAAM,sBAAsB,CAC1B,YACA,UACA,WACG;AACH,QAAMC,UAAS,WAAW,UAAU,EAAE;AACtC,SAAO;AAAA,IACL,qBAAqB,UAAUA,QAAO,OAAO;AAAA,IAC7C,WAAWA,QAAO;AAAA,IAClB,YAAYA,QAAO;AAAA,IACnB,aAAaA,QAAO;AAAA,IACpB,QACE,UAAU,WAAO,wCAAqB,UAAU,CAAC,IAC7C,WAAO,wCAAqB,UAAU,CAAC,IACvCA,QAAO;AAAA,IACb,UACE,YACA,aAAS,wCAAqB,UAAU,CAAC,KACzC,aAAS,wCAAqB,UAAU,CAAC;AAAA,EAC7C;AACF;AAEA,IAAM,aAAa,2BAAAC,QAAO,IAAI,WAAW;AAAA,EACvC,mBAAmB,UAAQ;AACzB,UAAM,iBAA4C;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA;AAAA,IAEG,CAAC,EAAE,SAAS,MAAM;AAAA,iBACL,QAAQ;AAAA,GACtB;AAAA,IACC,CAAC,EAAE,YAAY,UAAU,OAAO,MAChC,oBAAoB,YAAY,UAAU,MAAM,CAAC;AAAA;AA2B9C,IAAM,OAAO,CAAC,UAAqB;AACxC,QAAM,EAAE,IAAI,WAAW,UAAU,WAAW,IAAI,GAAG,KAAK,IAAI;AAC5D,QAAM,iBAAa,iCAAc;AACjC,SACE,8CAAC,YAAY,UAAZ,EAAqB,OAAO,EAAE,WAAuB,GACnD,iBAAO,QACN;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MAEC;AAAA;AAAA,EACH,IAEA;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MACA;AAAA,MAEC;AAAA;AAAA,EACH,GAEJ;AAEJ;AAEA,KAAK,cAAc;;;AG9GnB,IAAAC,6BAAmB;AAKnB,IAAAC,oBAGO;AAEP,IAAAA,oBAGO;AAyEH,IAAAC,uBAAA;AAhEG,IAAM,uBAAuB,CAClC,SACoC;AACpC,SAAO,SAAS,SAAS,SAAS,eAAe,SAAS;AAC5D;AAEO,IAAM,eAAe,CAC1B,SACoC;AACpC,SACG,KAAiC,OAAO,UACxC,KAAiC,OAAO,UACxC,KAAiC,OAAO,UACxC,KAAiC,OAAO,UACxC,KAAiC,OAAO;AAE7C;AAEA,IAAM,kBAAkB,2BAAAC,QAAO,IAAI,WAAW;AAAA,EAC5C,mBAAmB,UAAQ;AACzB,UAAM,iBAAiD;AAAA,MACrD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO,CAAC,eAAe,KAAK,eAAa,cAAc,IAAI;AAAA,EAC7D;AACF,CAAC;AAAA,iBACgB,CAAC,EAAE,YAAY,gBAAgB,MAC5C,oBAAoB,QAChB,WACA,aAAa,eAAe,IAC1B,oBAAgB,wCAAqB,UAAU,CAAC,IAChD,qBAAqB,eAAe,IAClC,WAAO,UAAU,EAAE,QAAQ,eAAe,EAAE,aAC5C,EAAE;AAAA;AAAA,kBAEI,CAAC,EAAE,YAAY,MAAM,eAAe,WAAW;AAAA,cACnD,CAAC,EAAE,QAAQ,MAAM,WAAW,OAAO;AAAA;AAoB1C,IAAM,YAAY,CAAC,UAA0B;AAClD,QAAM,EAAE,IAAI,WAAW,WAAW,UAAU,GAAG,KAAK,IAAI;AACxD,QAAM,EAAE,WAAW,IAAI,eAAe;AAEtC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,UAAU,cAAc;;;AC/FxB,IAAAC,iBAYO;AACP,IAAAC,6BAAmB;AACnB,IAAAC,oBAGO;;;ACjBP,IAAAC,iBAA0C;AAOnC,IAAM,6BAAyB;AAAA,EACpC;AAAA,IACE,YAAY;AAAA,EACd;AACF;AAEO,IAAM,4BAA4B,UACvC,2BAAW,sBAAsB;;;ACdnC,IAAAC,6BAA8B;AAI9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAErB,IAAMC,mBAGT;AAAA,EACF,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,eAAe;AAAA,EACnB,KAAKD,UAAQ;AACf;AAEA,IAAM,qBAAqB;AAAA,EACzB,KAAKA,UAAQ;AACf;AAEA,IAAM,YAAY;AAAA,EAChB,OAAOD,SAAO;AAAA,EACd,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,IACN,aAAaA,SAAO;AAAA,IACpB,OAAOA,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,EAC1B;AAAA,EACA,WAAW;AAAA,IACT,aAAaA,SAAO;AAAA,IACpB,OAAOA,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,IACxB,OAAO;AAAA,MACL,aAAaA,SAAO;AAAA,MACpB,OAAOA,SAAO;AAAA,MACd,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAaA,SAAO;AAAA,IACpB,OAAOA,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,IACxB,OAAO;AAAA,MACL,aAAaA,SAAO;AAAA,MACpB,OAAOA,SAAO;AAAA,MACd,iBAAiBA,SAAO;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAaA,SAAO;AAAA,IACpB,OAAOA,SAAO;AAAA,IACd,iBAAiBA,SAAO;AAAA,EAC1B;AACF;AAEA,IAAM,WAAW;AAAA,EACf,gBAAgB;AAAA,EAEhB,QAAQ;AAAA,IACN,OAAOA,SAAO;AAAA,IACd,qBAAqBA,SAAO;AAAA,EAC9B;AAAA,EACA,UAAU;AAAA,IACR,OAAOA,SAAO;AAAA,IACd,qBAAqB;AAAA,IACrB,OAAO;AAAA,MACL,qBAAqBA,SAAO;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,OAAOA,SAAO;AAAA,IACd,gBAAgB;AAAA,EAClB;AACF;AAEO,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC1FA,IAAAG,iBAAwB;AACxB,IAAAC,6BAA4B;AAC5B,IAAAC,qBAA0B;AAG1B,IAAAA,qBAAqB;AACrB,IAAAC,0BAA+B;AAO/B,IAAAC,oBAGO;AAsMM,IAAAC,uBAAA;AA7Lb,IAAM,cAAc,CAClB,QACA,WACA,aACc;AACd,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ;AACV,WAAO,YAAY,oBAAoB;AAAA,EACzC,OAAO;AACL,WAAO,YAAY,sBAAsB;AAAA,EAC3C;AACF;AAEA,IAAM,EAAE,YAAAC,aAAY,UAAAC,WAAU,oBAAAC,oBAAmB,IAAI;AAkCrD,IAAM,cAAc,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO3B,IAAM,aAAa,2BAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMdH,YAAW,WAAW;AAAA,WACvBA,YAAW,IAAI;AAAA,YACdA,YAAW,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,QAKvB,wCAAeI,iBAAgB,MAAM,CAAC;AAAA;AAAA;AAAA,IAGtC,CAAC,EAAE,QAAQ,MAAM,MAAM;AACvB,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,0BACWJ,YAAW,OAAO,WAAW;AAAA,mBACpCA,YAAW,OAAO,KAAK;AAAA,8BACZA,YAAW,OAAO,eAAe;AAAA;AAAA,IAEzD,KAAK;AACH,aAAO;AAAA,0BACWA,YAAW,UAAU,WAAW;AAAA,mBACvCA,YAAW,UAAU,KAAK;AAAA,8BACfA,YAAW,UAAU,eAAe;AAAA;AAAA,IAE5D,KAAK;AACH,aAAO;AAAA,0BACWA,YAAW,UAAU,WAAW;AAAA,mBACvCA,YAAW,UAAU,KAAK;AAAA,8BACfA,YAAW,UAAU,eAAe;AAAA;AAAA,IAE5D,KAAK;AACH,aAAO;AAAA,0BACWA,YAAW,SAAS,WAAW;AAAA,mBACtCA,YAAW,SAAS,KAAK;AAAA,8BACdA,YAAW,SAAS,eAAe;AAAA;AAAA,IAE3D,KAAK;AACH,aAAO;AAAA,0BACWA,YAAW,SAAS,WAAW;AAAA,mBACtCA,YAAW,SAAS,KAAK;AAAA,8BACdA,YAAW,SAAS,eAAe;AAAA;AAAA,EAE7D;AACF,CAAC;AAAA;AAGH,IAAM,WAAW,2BAAAG,QAAO;AAAA,QACpB,wCAAeC,iBAAgB,KAAK,CAAC;AAAA;AAAA,qBAEpBH,UAAS,cAAc;AAAA;AAAA;AAAA,IAGxC,CAAC,EAAE,QAAQ,MAAM,MAAM;AACvB,UAAQ,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,mBACIA,UAAS,OAAO,KAAK;AAAA,mCACLA,UAAS,OAAO,mBAAmB;AAAA;AAAA,IAEhE,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,mBACIA,UAAS,SAAS,KAAK;AAAA,mCACPA,UAAS,SAAS,mBAAmB;AAAA;AAAA,IAElE,KAAK;AACH,aAAO;AAAA,mBACIA,UAAS,SAAS,KAAK;AAAA,6BACbA,UAAS,SAAS,cAAc;AAAA;AAAA,EAEzD;AACF,CAAC;AAAA;AAGH,IAAM,qBAAqB,2BAAAE,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMPH,YAAW,IAAI;AAAA;AAAA;AAAA;AAAA,SAIjCE,oBAAmB,GAAG;AAAA,gBACf,6CAA2B;AAAA;AAAA;AAAA,MAGrC,8BAAY;AAAA;AAAA;AAAA,IAGd,CAAC,EAAE,QAAQ,MAAM,MACjB,UAAU,cACV;AAAA;AAAA,KAEC;AAAA;AAGL,IAAM,wBAAwB,CAC5B,QACA,WACA,UAEA,GAAG,QAAQ,CAAC,KAAK,SAAS,KAAK,SAAS,GACtC,YAAY,aAAa,eAC3B;AAEK,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,MAAAG;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,EAAE,YAAY,iBAAiB,IAAI,0BAA0B;AACnE,QAAM,SAAS,eAAe;AAE9B,QAAM,aAA6B;AAAA,IACjC,QAAQ,YAAY,QAAQ,WAAW,QAAQ;AAAA,EACjD;AAEA,QAAM,wBAAoB,wBAAQ,MAAM;AACtC,QAAI,WAAW;AACb,aAAO,8CAAC,2BAAK,MAAM,8BAAW,UAAUL,YAAW,UAAU;AAAA,IAC/D;AAEA,QAAIK,WAAS,QAAW;AACtB,aAAO,8CAAC,2BAAK,MAAMA,QAAM,UAAUL,YAAW,UAAU;AAAA,IAC1D;AAEA,WAAO,QAAQ;AAAA,EACjB,GAAG,CAAC,WAAWK,QAAM,KAAK,CAAC;AAE3B,SACE,8CAAC,eAAY,gBAAc,SAAS,SAAS,QAC3C;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,IAAI,mBAAmB,WAAW;AAAA,MAClC,SACE,CAAC,YAAY,mBACT,MAAM,iBAAiB,KAAK,IAC5B;AAAA,MAEN;AAAA,MAEA;AAAA,sDAAC,cAAY,GAAG,YAAY,eAAW,MACpC,6BACH;AAAA,QACA,+CAAC,YAAU,GAAG,YACZ;AAAA,wDAAC,kBAAe,IAAG,QAChB,gCAAsB,QAAQ,WAAW,KAAK,GACjD;AAAA,UACC;AAAA,WACH;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,oBAAoB,cAAc;;;AHpJxB,IAAAC,uBAAA;AAhFV,IAAM,eAAe,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,SAInB,sBAAsB,aAAa,GAAG;AAAA;AAAA;AAAA;AAK/C,IAAM,2BAA2B,2BAAAA,QAAO;AAAA;AAAA,OAEjC,sBAAsB,WAAW,IAAI;AAAA,SACnC,sBAAsB,UAAU,KAAK;AAAA;AAAA,YAElC,sBAAsB,UAAU,MAAM;AAAA,kBAChC,sBAAsB,UAAU,KAAK;AAAA,MACjD,sBAAsB,UAAU,KAAK;AAAA;AAkBpC,IAAM,mBAA6C,MAAM;AAC9D,QAAM,UAAM,2BAAiD,CAAC,OAAO,QAAQ;AAC3E,UAAM;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,CAAC,gBAAgB,aAAa,QAAI,yBAAS,UAAU;AAE3D,UAAM,eAAe,CAAC,SAAiB;AACrC,oBAAc,IAAI;AAClB,sBAAgB,aAAa,IAAI;AAAA,IACnC;AAEA,kCAAU,MAAM;AACd,UAAI,eAAe,UAAa,cAAc,gBAAgB;AAC5D,sBAAc,UAAU;AAAA,MAC1B;AAAA,IACF,GAAG,CAAC,YAAY,cAAc,CAAC;AAE/B,UAAM,iBAAiB;AAAA,MACrB,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,YAAQ,wBAAQ,MAAM;AAC1B,YAAM,gBAAgB,sBAAsB,QAAQ;AACpD,YAAM,iBAAiB,mCAAmC,aAAa;AACvE,YAAM,6BACJ,8BAA8B,cAAc;AAC9C,aAAO;AAAA,IACT,GAAG,CAAC,QAAQ,CAAC;AAEb,WACE;AAAA,MAAC,uBAAuB;AAAA,MAAvB;AAAA,QACC,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,kBAAkB;AAAA,QACpB;AAAA,QAEA,wDAAC,SAAI,MAAK,SAAQ,cAAW,YAAY,GAAG,gBAC1C,wDAAC,gBAAc,iBAAM,GACvB;AAAA;AAAA,IACF;AAAA,EAEJ,CAAC;AAED,EAAC,IAAiC,OAAO;AACzC,EAAC,IAAiC,cAAc;AAChD,SAAO;AACT,GAAG;AAEH,SAAS,sBAA6C,UAAqB;AACzE,SAAO,wBAAS,QAAQ,QAAQ,EAAE,OAAO,6BAAsB;AACjE;AAEA,SAAS,mCACP,UACA;AACA,SAAO,wBAAS;AAAA,IAAI;AAAA,IAAU,CAAC,MAAM,cACnC,6BAAa,MAAM;AAAA,MACjB,GAAG,KAAK;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAM,gCAAgC,CAAC,aACrC,wBAAS,IAAI,UAAU,CAAC,OAAO,UAAU;AACvC,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AACA,SACE,+CAAC,2BACC;AAAA,kDAAC,4BAAyB,eAAW,MAAC;AAAA,IACrC;AAAA,OAFY,KAGf;AAEJ,CAAC;;;AI3IH,IAAAC,iBAAmC;;;ACAnC,IAAAC,iBASO;AAEP,IAAAC,oBAAgD;AAkEvC,IAAAC,uBAAA;AA9DF,IAAM,aAAa,CAAC,UAA2B;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,cAAc,eAAe,QAAI,yBAAuB,wBAAS,EAAE;AAC1E,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,KAAK;AAEhD,QAAM,kBAAkB,CAAC,MAAgC;AACvD,oBAAgB,EAAE,OAAO,KAAK;AAC9B,gBAAY,SAAS;AAAA,EACvB;AAEA,QAAM,iBAAiD,MAAM;AAC3D,iBAAa,IAAI;AACjB,eAAW,QAAQ;AAAA,EACrB;AAEA,QAAM,gBAAgD,CACpD,MACG;AACH,QAAI,CAAC,aAAa,EAAE,OAAO,MAAM,KAAK,MAAM,IAAI;AAC9C,sBAAgB,KAAK;AAAA,IACvB,OAAO;AACL,oBAAc,WAAW,EAAE,OAAO,KAAK;AAAA,IACzC;AACA,iBAAa,KAAK;AAClB,cAAU,OAAO;AAAA,EACnB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,QACE,SAAS,YAAY,SAAS,iBAC9B,SAAS,yBAAyB,aAClC;AACA,mBAAa,KAAK;AAClB,eAAS,cAAc,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,sCAAa,CAAC,OAAO,GAAG,MAAM,cAAc,CAAC;AAC7C,sCAAa,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC;AAC9C,2CAAkB,SAAS,SAAS,MAAM,cAAc,CAAC;AAEzD,QAAM,aAAa,wBAAS;AAAA,QAC1B,+BAAe,QAAQ,SACrB,6BAAa,UAA0B;AAAA,MACrC,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACL;AAEA,SAAO,+EAAG,sBAAW;AACvB;AAEA,WAAW,cAAc;;;AD9EzB,IAAAC,oBAA+B;;;AEF/B,IAAAC,iBAAkE;AAClE,IAAAC,qBAAyB;AACzB,IAAAA,qBAAqB;AACrB,IAAAC,oBAGO;;;ACNP,IAAAC,6BAA4B;;;ACA5B,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,WAAS,cAAAC,cAAa,IAAI;AAE1C,IAAM,aAAa;AAAA,EACjB,SAASD,UAAQ;AAAA,EACjB,MAAMC,cAAa,aAAa;AAAA,EAChC,iBAAiB;AAAA,EACjB,UAAU;AAAA,IACR,aAAaD,UAAQ;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,iBAAiBD,SAAO;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,iBAAiBA,SAAO;AAAA,EAC1B;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,KAAKC,UAAQ;AAAA,EACb,MAAMA,UAAQ;AAChB;AAEO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AACF;;;ADvBA,IAAAE,oBAAgD;AAEhD,IAAM,EAAE,YAAAC,aAAY,aAAAC,aAAY,IAAI;AAE7B,IAAMC,gBAA+B;AAOrC,IAAM,wBAAoB,2BAAAC,SAAO,+BAAa,EAAE,WAAW;AAAA,EAChE,mBAAmB,UAAQ,SAAS,eAAe,SAAS;AAC9D,CAAC;AAAA;AAAA,sBAEqBH,YAAW,eAAe;AAAA,aACnCA,YAAW,OAAO;AAAA,IAC3BA,YAAW,IAAI;AAAA,IACf,CAAC,EAAE,WAAW,SAAS,MACvB,CAAC,aACD,CAAC,YACD;AAAA,sBACkBA,YAAW,SAAS,WAAW;AAAA,KAChD;AAAA;AAAA;AAAA,wBAGmBA,YAAW,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKhCA,YAAW,MAAM,eAAe;AAAA;AAAA;AAIjD,IAAM,2BAAuB,2BAAAG,SAAO,iBAAiB,EAAE,MAAM;AAAA,EAClE,IAAI;AACN,CAAC;AAAA;AAAA,IAEG,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA;AAGrB,IAAMC,eAAc,2BAAAD,QAAO;AAAA;AAAA,UAExBF,aAAY,IAAI;AAAA,SACjBA,aAAY,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;;;AE/CtB,IAAAI,uBAAA;AADK,IAAM,2BAA2B,CAAC,IAAY,cACnD,+CAAC,kBAAe,IAAQ,IAAG,QAAO;AAAA;AAAA,EACK;AAAA,EACpC,CAAC,aAAa;AAAA,GACjB;;;AHQF,IAAAC,oBAA+B;AAE/B,IAAAC,oBAGO;AAgCD,IAAAC,uBAAA;AA3BC,IAAM,qBAAiB,2BAG5B,CAAC,OAAO,QAAQ;AAChB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAA,IACR,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,mBAAe,sBAAM;AAC3B,QAAM,WAAW,kBAAM,GAAG,YAAY;AACtC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,qBAAiB,yCAAsB,UAAU,cAAc;AACrE,QAAM,aAAS,yCAAsB,UAAU,MAAM;AAErD,QAAM,eAAW,uBAA4B,IAAI;AACjD,QAAM,kBAAc,kCAAe,KAAK,QAAQ;AAEhD,SACE,+CAAC,yCAAoB,OACnB;AAAA,mDAAC,oCACE;AAAA,OAAC,aAAa,CAAC,YACd;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AAtD3B;AAuDc,2BAAS,YAAT,mBAAkB;AAAA,UACpB;AAAA,UAEA,wDAAC,2BAAK,MAAM,6BAAU,UAAS,SAAQ;AAAA;AAAA,MACzC;AAAA,MAEF;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,iBAAiB,CAAC,CAAC,SAAS;AAAA,UAC5B;AAAA,UACA;AAAA,UACA,wBAAkB,iDAA8B;AAAA,YAC9C,kBAAkB,iBAAiB;AAAA,YACnC;AAAA,YACA;AAAA,UACF,CAAC;AAAA;AAAA,MACH;AAAA,OACF;AAAA,IACC,yBAAyB,QAAQ,SAAS;AAAA,IAC1C,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA,KACxE;AAEJ,CAAC;AAED,eAAe,cAAc;;;AFzDvB,IAAAC,uBAAA;AAlBC,IAAM,yBAAqB,2BAGhC,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,YAAY,WAAW,OAAO,SAAS,UAAU,QAAQ,GAAG,KAAK,IACvE;AACF,QAAM,kBAAc,uBAA4B,IAAI;AACpD,QAAM,kBAAc,kCAAe,KAAK,WAAW;AACnD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,wDAAC,kBAAe,KAAK,aAAc,GAAG,MAAM;AAAA;AAAA,EAC9C;AAEJ,CAAC;;;AM3BD,IAAAC,iBAAmC;AAEnC,IAAAC,oBAA+B;;;ACF/B,IAAAC,iBAA+D;AAC/D,IAAAC,qBAAyB;AACzB,IAAAA,qBAAqB;AACrB,IAAAC,oBAGO;AAQP,IAAAC,oBAA+B;AAE/B,IAAAC,oBAGO;AAgCC,IAAAC,uBAAA;AA3BD,IAAM,kBAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQC;AAAA,MACR,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,mBAAe,sBAAM;AAC3B,UAAM,WAAW,kBAAM,GAAG,YAAY;AACtC,UAAM,kBAAkB,CAAC,CAAC;AAC1B,UAAM,WAAW,CAAC,CAAC;AACnB,UAAM,gBAAgB,YAAY;AAClC,UAAM,qBAAiB,yCAAsB,UAAU,cAAc;AACrE,UAAM,aAAS,yCAAsB,UAAU,MAAM;AAErD,UAAM,eAAW,uBAAyB,IAAI;AAC9C,UAAM,kBAAc,kCAAe,KAAK,QAAQ;AAEhD,WACE,+CAAC,yCAAoB,OACnB;AAAA,qDAAC,oCACE;AAAA,SAAC,aAAa,CAAC,YACd;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM;AAtD7B;AAuDgB,6BAAS,YAAT,mBAAkB;AAAA,YACpB;AAAA,YAEA,wDAAC,2BAAK,MAAM,6BAAU,UAAS,SAAQ;AAAA;AAAA,QACzC;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,iBAAiB;AAAA,YACjB;AAAA,YACA;AAAA,YACA,wBAAkB,iDAA8B;AAAA,cAC9C,kBAAkB,iBAAiB;AAAA,cACnC;AAAA,cACA;AAAA,YACF,CAAC;AAAA,YACD,gBAAc;AAAA;AAAA,QAChB;AAAA,SACF;AAAA,MACC,yBAAyB,QAAQ,SAAS;AAAA,MAC1C,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA,OACxE;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AD3DpB,IAAAC,uBAAA;AAlBC,IAAM,sBAAkB,2BAG7B,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,YAAY,WAAW,OAAO,SAAS,UAAU,QAAQ,GAAG,KAAK,IACvE;AACF,QAAM,eAAW,uBAAyB,IAAI;AAC9C,QAAM,kBAAc,kCAAe,KAAK,QAAQ;AAChD,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,wDAAC,eAAa,GAAG,MAAM,KAAK,aAAa;AAAA;AAAA,EAC3C;AAEJ,CAAC;;;AE3BD,IAAAC,iBAA+D;AAC/D,IAAAC,6BAAmB;AACnB,IAAAC,oBAIO;AACP,IAAAC,0BAAsB;AAEtB,IAAAA,0BAA+B;AAC/B,IAAAC,oBAMO;;;AChBP,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,SAAAC,UAAQ,IAAI;AAEpB,IAAM,WAAW;AAAA,EACf,eAAeA,UAAQ;AACzB;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AACF;;;AD0GM,IAAAC,uBAAA;AA7FN,IAAMC,gBAAuC;AAC7C,IAAM,EAAE,UAAAC,UAAS,IAAI;AAEd,IAAM,qBAAiB,2BAAAC,SAAO,+BAAa;AAAA,IAC9C,iBAAiB,MAAM;AAAA,IACvB,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA,oBAIRD,UAAS,aAAa;AAAA,QACtC,wCAAe,uCAAqB,MAAM,CAAC;AAAA;AAGxC,IAAM,eAAW;AAAA,EACtB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,OAAAE;AAAA,MACA,iBAAiB,eAAe;AAAA,MAChC,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,MACA,QAAQH;AAAA,MACR,GAAG;AAAA,IACL,IAAI;AAEJ,UAAM,kBAAc,sBAAM;AAC1B,UAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,UAAM,kBAAc,uBAA4B,IAAI;AACpD,UAAM,eAAW,kCAAe,KAAK,WAAW;AAChD,UAAM,CAAC,MAAM,OAAO,QAAI;AAAA,UACtB,kCAAe,OAAO,YAAY;AAAA,IACpC;AAEA,kCAAU,MAAM;AACd,UAAI,2CAAa,SAAS;AACxB,oBAAY,QAAQ,MAAM,SAAS,GACjC,YAAY,QAAQ,eAAe,CACrC;AAAA,MACF;AAAA,IACF,GAAG,CAAC,IAAI,CAAC;AAET,UAAM,kBAAiE,CACrE,UACG;AACH,cAAQ,MAAM,OAAO,KAAK;AAE1B,UAAI,UAAU;AACZ,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,kBAAkB,CAAC,CAAC;AAC1B,UAAM,WAAW,CAAC,CAACG;AACnB,UAAM,YAAQ,yCAAsB,UAAU,KAAK;AACnD,UAAM,qBAAiB,yCAAsB,UAAU,cAAc;AAErE,UAAM,sBAAsB,YAAY,CAAC,CAAC;AAE1C,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,gBAAgB;AAAA,MACpB,KAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB,wBAAoB,iDAA8B;AAAA,QAChD,MAAM,QAAQ;AAAA,QACd,eAAe,iBAAiB;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,MACD,gBAAgB,kBAAkB,OAAO;AAAA,MACzC,GAAG;AAAA,IACL;AAEA,WACE,+CAAC,yCAAqB,GAAG,gBACtB;AAAA,kBACC,8CAAC,iCAAM,qBAA0C,SAAS,UACvD,UAAAA,QACH;AAAA,MAEF,8CAAC,kBAAgB,GAAG,eAAe,IAAG,YAAW;AAAA,MAChD,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,OAC9D;AAAA,EAEJ;AACF;AAEA,SAAS,cAAc;;;AEjIvB,IAAAC,iBAAqC;AACrC,IAAAC,6BAAmB;AACnB,IAAAC,qBAA+C;;;ACF/C,IAAAC,6BAA8B;AAE9B,IAAM,aAAa;AAAA,EACjB,SAAS;AAAA,IACP,YAAY,aAAa,yCAAc,OAAO,qBAAqB;AAAA,EACrE;AACF;AAEO,IAAM,SAAS;AAAA,EACpB;AACF;;;AD0EQ,IAAAC,uBAAA;AAxER,IAAMC,cAAY,2BAAAC,QAAO;AAAA;AAAA;AAIzB,IAAM,iBAAa,2BAAAA,SAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAehC,IAAM,mBAAe,2BAAAA,SAAO,MAAM;AAAA;AAAA;AAAA;AAAA,IAM9B,WACA,MAAM,YAAY,aAClB;AAAA,qBACiB,OAAO,WAAW,QAAQ,UAAU;AAAA;AAAA,uBAElC,OAAO,WAAW,QAAQ,UAAU;AAAA;AAAA,KAEtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMC,WACA,MAAM,YAAY,aAClB,gBAAgB,OAAO,WAAW,QAAQ,UAAU,EAAE;AAAA;AAAA;AAcrD,IAAM,kBAAc;AAAA,EACzB,CAAC,OAAO,QAAQ;AACd,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACZ,IAAI;AAEJ,UAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAC1C,UAAM,mBAAgC;AAAA,MACpC,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AAEA,WACE,+CAACD,aAAA,EAAU,KACT;AAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACH,GAAG;AAAA,UACJ,cAAa;AAAA;AAAA,MACf;AAAA,MACA,+CAAC,qBAAkB,UAAU,MAAM,UAAU,CAAC,MAAM,GAClD;AAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,MAAM,SAAS,mCAAgB;AAAA,YAC/B,cAAW;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QACA,8CAAC,gBAAa,OAAO,kBAAkB,WAAU,cAAa;AAAA,SAChE;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AEvG1B,IAAAE,iBAA2B;AAC3B,IAAAC,6BAA4B;;;ACD5B,IAAAC,6BAA8B;AAC9B,IAAM,EAAE,SAAAC,UAAQ,IAAI;AAEpB,IAAM,gBAAgB;AAAA,EACpB,gBAAgBA,UAAQ;AAAA,EACxB,eAAeA,UAAQ;AAAA,EACvB,cAAcA,UAAQ;AAAA,EACtB,eAAeA,UAAQ;AAAA,EACvB,YAAYA,UAAQ;AAAA,EACpB,cAAcA,UAAQ;AAAA,EACtB,YAAYA,UAAQ;AAAA,EACpB,cAAcA,UAAQ;AAAA,EACtB,YAAYA,UAAQ;AAAA,EACpB,aAAaA,UAAQ;AAAA,EACrB,eAAeA,UAAQ;AAAA,EACvB,aAAaA,UAAQ;AAAA,EACrB,aAAaA,UAAQ;AAAA,EACrB,aAAaA,UAAQ;AAAA,EACrB,aAAaA,UAAQ;AAAA,EACrB,cAAcA,UAAQ;AACxB;AAEO,IAAM,cAAc;AAAA,EACzB,SAAS;AACX;;;ADpBA,IAAAC,oBAGO;AAuEH,IAAAC,uBAAA;AA3CJ,IAAM,QAAQ,2BAAAC,QAAO,IAAI,WAAW;AAAA,EAClC,mBAAmB,UAAQ;AACzB,UAAM,iBAA4C;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,CAAC,eAAe,KAAK,OAAK,MAAM,IAAI;AAAA,EAC7C;AACF,CAAC;AAAA;AAAA,oBAEmB,CAAC,EAAE,UAAU,MAC7B,cAAc,eAAe,QAAQ,QAAQ;AAAA,iBAChC,WAAS,MAAM,KAAK;AAAA,qBAChB,WAAS,MAAM,OAAO;AAAA;AAAA,IAEvC,CAAC,EAAE,IAAI,MACP,QAAQ,UACR;AAAA,aACS,QAAQ,IAAI,MAAM,YAAY,QAAQ,GAAG,CAAC;AAAA,KAClD;AAAA;AAAA,IAED,CAAC,EAAE,QAAQ,MACX,YAAY,UACZ;AAAA,iBACa,YAAY,IAAI,MAAM,YAAY,QAAQ,OAAO,CAAC;AAAA,KAC9D;AAAA;AAEL,MAAM,eAAe;AAAA,EACnB,OAAO;AAAA,EACP,SAAS;AACX;AAOO,IAAM,aAAS;AAAA,EACpB,CAAC,EAAE,IAAI,WAAW,WAAW,GAAG,KAAK,GAAG,QACtC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACC,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA;AAAA,EACrD;AAEJ;AAEA,OAAO,cAAc;AAEd,IAAM,aAAS;AAAA,EACpB,CAAC,EAAE,IAAI,WAAW,WAAW,GAAG,KAAK,GAAG,QACtC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACC,OAAG,oCAAiB,IAAI,WAAW,WAAW,IAAI;AAAA;AAAA,EACrD;AAEJ;AAEA,OAAO,cAAc;;;AElGrB,IAAAC,iBAAsB;AACtB,IAAAC,6BAAmB;AACnB,IAAAC,qBAA2B;AAC3B,IAAAC,qBAGO;AACP,IAAAC,0BAAsB;;;ACPtB,IAAAC,6BAAmB;;;ACAnB,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAErB,IAAM,aAAa;AAAA,EACxB,aAAaD,SAAO;AAAA,EACpB,kBAAkBA,SAAO;AAAA,EACzB,qBAAqBC,UAAQ;AAAA,EAC7B,eAAeA,UAAQ;AAAA,EACvB,KAAKA,UAAQ;AAAA,EACb,iBAAiBD,SAAO;AAAA,EACxB,YAAY;AAAA,IACV,aAAaA,SAAO;AAAA,IACpB,iBAAiBA,SAAO;AAAA,EAC1B;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,WAAWC,UAAQ;AAAA,EACnB,kBAAkBA,UAAQ;AAAA,EAC1B,kBAAkBA,UAAQ;AAAA,EAC1B,iBAAiBD,SAAO;AAAA,EACxB,gBAAgBC,UAAQ;AAAA,EACxB,SAAS;AAAA,IACP,aAAaD,SAAO;AAAA,EACtB;AACF;AAEO,IAAM,eAAe;AAAA,EAC1B,KAAKC,UAAQ;AACf;;;ADFU,IAAAC,uBAAA;AAjBH,IAAMC,oBAAmB,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAG9B,aAAa,GAAG;AAAA;AAGlB,IAAM,YAAY,CAAC,UAA0B;AAClD,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,SACE,8CAACD,mBAAA,EACE,iBAAO,IAAI,CAAC,EAAE,IAAI,SAAAE,SAAQ,MAAM;AAC/B,WACE;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,SAASA;AAAA,QACT,aAAY;AAAA;AAAA,MAHP;AAAA,IAIP;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AEtCA,IAAAC,6BAAmB;AACnB,IAAAC,qBAA0B;AAC1B,IAAAC,qBAGO;AAiDD,IAAAC,uBAAA;AAlCN,IAAM,cAAc,2BAAAC,QAAO;AAE3B,IAAM,kBAAkB,2BAAAA,QAAO;AAAA;AAAA;AAI/B,IAAM,cAAc,2BAAAA,QAAO;AAAA;AAAA;AAAA,kBAGT,CAAC,EAAE,QAAQ,MACzB,UAAU,WAAW,kBAAkB,WAAW,QAAQ,WAAW;AAAA,gBACzD,WAAW,SAAS;AAAA,aACvB,WAAW,gBAAgB,IAAI,WAAW,gBAAgB;AAAA,sBACjD,WAAW,eAAe;AAAA;AAAA;AAAA;AAAA,SAIvC,WAAW,cAAc;AAAA;AAGlC,IAAM,uBAAmB,2BAAAA,SAAO,MAAM;AAAA;AAAA;AAI/B,IAAM,OAAO,CAAC,UAAqB;AACxC,QAAM,EAAE,UAAU,OAAO,MAAM,WAAW,YAAY,QAAQ,IAAI;AAElE,QAAM,aAAa,UAAU,OAAO,IAAI,CAAC,GAAG,gBAAgB;AAAA,IAC1D,QAAI,0CAAsB,UAAU,QAAQ,KAAK,UAAU,UAAU,EAAE;AAAA,IACvE,SAAS;AAAA,EACX,EAAE;AAEF,SACE,+CAAC,eACC;AAAA,mDAAC,eAAa,GAAG,OACf;AAAA,oDAAC,mBAAiB,oBAAU,KAAK,MAAK;AAAA,MACtC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,YAAW;AAAA,UACX,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS;AAAA,UACT,MAAM;AAAA,UACN,WAAW;AAAA,YACT,cAAc,cAAc,UAAU,KAAK,IAAI;AAAA,YAC/C,gBAAgB,CAAC,UAAU,OAAO;AAAA,YAClC,qBAAqB,CAAC,UAAU,gBAAgB;AAAA,YAChD,wBAAoB;AAAA,cAClB,WAAW,IAAI,OAAK,EAAE,EAAE;AAAA,YAC1B;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IACA,8CAAC,aAAU,QAAQ,YAAY;AAAA,OApBf,UAAU,KAAK,IAqBjC;AAEJ;;;AC5EA,IAAAC,iBAUO;;;AC0BA,IAAM,sBAGT,CAAC,OAAO,WAAW;AACrB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,WAAW,KAAK;AAAA,IACrC,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,WAAW,MAAM;AAAA,IACtC,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,cAAc;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO,EAAE,GAAG,OAAO,cAAc,MAAM;AAAA,IACzC,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,cAAc;AAAA,QACd,OAAO,OAAO;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,OAAO;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,YAAY,OAAO;AAAA,MACrB;AAAA,IACF;AACE,aAAO;AAAA,EACX;AACF;;;ADvDA,2BAA6D;;;AEhB7D,yBAAqB;AAEd,IAAM,kBAAkB,CAAC,UAAoC;AAClE,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACxB;AAEO,IAAM,cAAc,CACzB,UACsC;AACtC,QAAM,cAAc;AAEpB,SAAO,YAAY,iBAAiB;AACtC;AAEO,IAAM,mBAAmB,CAC9B,UACY;AACZ,MAAI,CAAC,YAAY,KAAK,GAAG;AACvB,WAAO,MAAM,OAAO,UAAU,QAAQ,MAAM,OAAO,UAAU;AAAA,EAC/D;AAEA,SACE,MAAM,aAAa,MAAM,SAAS,OAAO,KACzC,MAAM,aAAa,MAAM,SAAS,wBAAwB;AAE9D;AAEO,IAAM,iBAAiB,CAC5B,MACA,WACY;AACZ,SAAO,WAAW,aAAY,mBAAAC,SAAS,MAAM,MAAM,IAAI;AACzD;AAQO,IAAM,8BAA8B,CAAC,aAC1C,yBAAyB,QAAQ;AAE5B,IAAM,iCAAiC,MAAM;;;AFApD,IAAM,iBAAiB,CACrB,OACA,UACA,iBACkB;AAClB,QAAM,SAAwB,CAAC;AAE/B,MAAI,YAAY,YAAY,KAAK,MAAM,SAAS,UAAU;AACxD,WAAO,KAAK,4BAA4B,QAAQ,CAAC;AAAA,EACnD;AAEA,MAAI,cAAc;AAChB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAC7B,UACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,cAAU,uBAAqB,IAAI;AACzC,QAAM,eAAW,uBAAyB,IAAI;AAC9C,QAAM,gBAAY,uBAA0B,IAAI;AAChD,QAAM,eAAe,CAAC,CAAC;AAEvB,QAAM,+BAA2B;AAAA,IAC/B,OACG,sCAAgB,CAAC,GAAG,IAAsB,QAAM;AAAA,MAC/C,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,IACX,EAAE;AAAA,IACJ,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,CAAC,OAAO,QAAQ,QAAI,2BAAW,qBAAqB;AAAA,IACxD,OAAO;AAAA,IACP,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,EAAE,OAAO,WAAW,IAAI;AAE9B,gCAAU,MAAM;AACd,QAAI,cAAc;AAChB,YAAM,QAAQ,MAAM,IAAsB,UAAQ;AAChD,cAAMC,YAAW,eAAe,MAAM,MAAM;AAE5C,eAAO;AAAA,UACL;AAAA,UACA,QAAQA,YAAW,CAAC,IAAI,CAAC,+BAA+B,CAAC;AAAA,QAC3D;AAAA,MACF,CAAC;AAED,eAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,OAAO,cAAc,QAAQ,QAAQ,CAAC;AAE1C,gCAAU,MAAM;AACd,aAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,eAAe,YAAY,UAAU,YAAY;AAAA,IAC5D,CAAC;AAAA,EACH,GAAG,CAAC,UAAU,YAAY,UAAU,YAAY,CAAC;AAEjD,QAAM,kBAAc;AAAA,IAClB,MAAM,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAChC,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,iBAAa,4BAAY,MAAM,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3E,QAAM,sBAAkB;AAAA,IACtB,OAAO,QAAuC;AAC5C,sBAAgB,GAAG;AAEnB,UAAI,iBAAiB,GAAG,GAAG;AACzB,cAAM,QAAQ,UAAM,qBAAAC,WAAkB,GAAG;AACzC,cAAM,YAAY,MAAM;AAExB,YAAI,cAAc;AAAG;AAErB,iBAAS,EAAE,MAAM,YAAY,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,CAAC,UAAU,QAAQ,QAAQ;AAAA,EAC7B;AAEA,QAAM,qBAAiB,4BAAY,CAAC,QAAuC;AACzE,oBAAgB,GAAG;AAEnB,UAAM,WAAW,iBAAiB,GAAG;AACrC,QAAI,YAAY,IAAI,cAAc;AAChC,UAAI;AACF,YAAI,aAAa,aAAa;AAAA,MAChC,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,sBAAkB;AAAA,IACtB,CAAC,QAAuC;AACtC,sBAAgB,GAAG;AAEnB,UAAI,IAAI,cAAc,SAAS,IAAI,aAA4B;AAAG;AAElE,eAAS,EAAE,MAAM,YAAY,CAAC;AAAA,IAChC;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,eAAW;AAAA,IACf,OACE,QACG;AACH,UAAI,eAAe;AACnB,UAAI,iBAAiB,GAAG,GAAG;AACzB,cAAM,oBAAoB,WAAW,IAAI,OAAK,EAAE,KAAK,IAAI;AAGzD,cAAM,iBAAkB,UAAM,qBAAAA,WAAkB,GAAG;AAEnD,cAAM,WAAW,eACd,OAAO,OAAK,CAAC,kBAAkB,SAAS,EAAE,IAAI,CAAC,EAC/C,IAAsB,UAAQ;AAC7B,gBAAMD,YAAW,eAAe,MAAM,MAAM;AAE5C,iBAAO;AAAA,YACL;AAAA,YACA,QAAQA,YAAW,CAAC,IAAI,CAAC,+BAA+B,CAAC;AAAA,UAC3D;AAAA,QACF,CAAC,EACA,OAAO,UAAU;AAEpB,iBAAS,SAAS,IAAI,OAAK,EAAE,IAAI,CAAC;AAElC,YAAI,CAAC,cAAc;AACjB,mBAAS;AAAA,YACP,MAAM;AAAA,YACN,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAiB,4BAAY,MAAM;AACvC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ;AACzB,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAa;AAAA,IACjB,CAAC,SAA2B;AAC1B,YAAM,WAAW,CAAC,GAAG,UAAU;AAC/B,eAAS,OAAO,WAAW,QAAQ,IAAI,GAAG,CAAC;AAE3C,eAAS,SAAS,IAAI,OAAK,EAAE,IAAI,CAAC;AAElC,UAAI,CAAC,cAAc;AACjB,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,YAAY,cAAc,UAAU,cAAc,UAAU,QAAQ;AAAA,EACvE;AAEA,QAAM,mBAAe;AAAA,IACnB,OAEM;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA;AAAA,MAET,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA;AAAA,MAEb,QAAQ;AAAA,MACR,KAAK;AAAA,IACP;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAiB;AAAA,IACrB,OAEM;AAAA,MACJ,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AAAA,IACA,CAAC,gBAAgB,SAAS;AAAA,EAC5B;AAEA,QAAM,oBAAgB;AAAA,IACpB,OAEM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,EAAE,SAAS,OAAO;AAAA,MACzB,UAAU;AAAA,MACV,KAAK;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,UAAU,CAAC,YAAY,WAAW;AAAA,MAClC,GAAI,SAAS,EAAE,QAAQ,OAAO,KAAK,GAAG,EAAE,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,CAAC,UAAU,UAAU,UAAU,MAAM;AAAA,EACvC;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AJpLI,IAAAE,uBAAA;AArGJ,IAAMC,gBAAuC;AAE7C,IAAMC,WAAU,2BAAAC,QAAO;AAAA,WACZ,CAAC,EAAE,MAAM,MAAO,QAAQ,QAAQF,aAAa;AAAA;AAQxD,IAAM,OAAO,2BAAAE,QAAO;AAAA;AAAA,kBAEF,CAAC,EAAE,gBAAgB,cAAc,MAC/C,gBAAgB,QAAQ,KAAK;AAAA;AAAA,kBAEf,CAAC,EAAE,eAAe,eAAe,MAC/C,gBACI,WAAW,WAAW,cACtB,iBACE,WAAW,mBACX,WAAW,WAAW;AAAA,aACnB,CAAC,EAAE,eAAe,MAC3B,iBACI,QAAQ,WAAW,mBAAmB,gBAAgB,WAAW,mBAAmB,WAAW,WAAW,aAAa,KACvH,GAAG,WAAW,mBAAmB,IAAI,WAAW,mBAAmB,IAAI,WAAW,aAAa,EAAE;AAAA;AAAA;AAAA,SAGhG,WAAW,GAAG;AAAA,sBACD,CAAC,EAAE,cAAc,MACnC,gBACI,WAAW,WAAW,kBACtB,WAAW,eAAe;AAAA;AAGlC,IAAM,oBAAoB,2BAAAA,QAAO;AAEjC,IAAM,kBAAkB,2BAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAqBxB,IAAM,eAAe,CAAC,UAA6B;AACxD,QAAM;AAAA,IACJ;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,kBAAc,sBAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,YAAY,cAAc,WAAW;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgC;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,WAAWA,WAAU;AAC3B,QAAM,SAAS,QAAQ;AACvB,QAAM,gBAAgB,WAAW,SAAS;AAC1C,QAAM,qBAAqB;AAE3B,QAAM,YAAQ,0CAAsB,UAAU,KAAK;AAEnD,QAAM,mBAAmB,WAAW,IAAI,CAAC,WAAW,UAClD;AAAA,IAAC;AAAA;AAAA,MAEC,UAAU;AAAA,MACV;AAAA,MACA,MAAM;AAAA,MACN,SAAS,UAAU,OAAO,WAAW;AAAA,MACrC,YAAY,MAAM,WAAW,SAAS;AAAA;AAAA,IALjC,UAAU,KAAK;AAAA,EAMtB,CACD;AAED,QAAM,iBAAiB,WAAW,IAAI,CAAC,GAAG,WAAW;AAAA,IACnD,QAAI,0CAAsB,UAAU,SAAS,KAAK,EAAE;AAAA,IACpD,SAAS;AAAA,EACX,EAAE;AAEF,SACE,+CAACF,UAAA,EAAQ,OACN;AAAA,gBACC,8CAAC,iCAAM,qBAAqB,oBAAoB,SAAS,UACtD,UAAAE,QACH;AAAA,IAED,UAAU,8CAAC,gBAAa,IAAI,OAAO,SAAS,KAAK,aAAY,OAAM;AAAA,IACpE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,aAAa;AAAA,QACjB,eAAe;AAAA,QACf,gBAAgB;AAAA,QAEhB;AAAA,wDAAC,qBAAmB,GAAG,cAAc,GAAG;AAAA,UAAE;AAAA,UACb;AAAA,UAC7B,8CAAC,kBAAe,IAAG,QAAO,iDAA6B;AAAA,UACvD;AAAA,YAAC;AAAA;AAAA,cACE,GAAG,eAAe;AAAA,cACnB,IAAI;AAAA,cACJ,MAAK;AAAA,cACL,MAAK;AAAA,cACL,YAAW;AAAA,cACX,SAAQ;AAAA,cACR,MAAM;AAAA,cACN,WAAW;AAAA,gBACT,gBAAgB,gBAAgB,OAAO;AAAA,gBACvC,wBAAoB,kDAA8B;AAAA,kBAChD,SAAS,QAAQ;AAAA,kBACjB,GAAG,eAAe,IAAI,OAAK,EAAE,EAAE;AAAA,gBACjC,CAAC;AAAA,cACH;AAAA,cACD;AAAA;AAAA,UAED;AAAA;AAAA;AAAA,IACF;AAAA,IACA,8CAAC,aAAU,QAAQ,gBAAgB;AAAA,IAEnC,8CAAC,mBAAiB,4BAAiB;AAAA,KACrC;AAEJ;AAEA,aAAa,cAAc;;;AOhL3B,IAAAC,6BAA8B;AAE9B,IAAAC,6BAAmB;AACnB,IAAAC,0BAA2B;AA+BrB,IAAAC,uBAAA;AA7BN,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAE5B,IAAM,qBAAqB,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA,gBAIlBD,UAAQ,wBAAwB;AAAA;AAAA;AAAA,sBAG1BD,SAAO,qBAAqB;AAAA,aACrCC,UAAQ,wBAAwB;AAAA;AAG7C,IAAM,yBAAyB,2BAAAC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,SAK7BD,UAAQ,uBAAuB;AAAA;AAQjC,SAAS,aAAa,EAAE,OAAAE,QAAO,SAAAC,UAAS,GAAG,KAAK,GAAsB;AAC3E,SACE,8CAAC,sBAAoB,GAAG,MACtB,yDAAC,0BACE;AAAA,IAAAD,UACC,8CAAC,sCAAW,gBAAe,iBAAiB,UAAAA,QAAM;AAAA,IAEpD,8CAAC,sCAAW,gBAAe,cAAc,UAAAC,UAAQ;AAAA,KACnD,GACF;AAEJ;AAEA,aAAa,cAAc;;;AC5C3B,IAAAC,iBAA2B;AAC3B,IAAAC,6BAAmB;AACnB,IAAAC,qBAA4B;AAC5B,IAAAC,0BAA2B;;;ACH3B,IAAAC,6BAA8B;AAE9B,IAAM,EAAE,QAAAC,UAAQ,SAAAC,UAAQ,IAAI;AAE5B,IAAMC,SAAO;AAAA,EACX,OAAOF,SAAO;AAChB;AAEA,IAAM,MAAM;AAAA,EACV,KAAKC,UAAQ;AACf;AAEO,IAAM,iBAAiB;AAAA,EAC5B,MAAAC;AAAA,EACA;AACF;;;ADQI,IAAAC,uBAAA;AAjBJ,IAAMC,WAAM,2BAAAC,SAAO,KAAK;AAAA;AAAA;AAAA,SAGf,eAAe,IAAI,GAAG;AAAA;AAG/B,IAAMC,kBAAa,2BAAAD,SAAO,uBAAI;AAAA,WACnB,eAAe,KAAK,KAAK;AAAA;AAQ7B,IAAM,eAAW,2BAAuC,CAAC,OAAO,QAAQ;AAC7E,SACE,+CAACD,MAAA,EAAI,KACH;AAAA,kDAACE,aAAA,EAAW,MAAM,yBAAM,eAAe,UAAS,SAAQ;AAAA,IACxD,8CAAC,sCAAW,gBAAe,KAAI,MAAM,MAAM,MACxC,gBAAM,OACT;AAAA,KACF;AAEJ,CAAC;AAED,SAAS,cAAc;;;AEhCvB,IAAAC,iBAAoC;AAEpC,IAAAC,0BAA0B;;;ACF1B,IAAAC,6BAA4B;AAC5B,IAAAC,6BAA8B;AAC9B,IAAAC,qBAAmC;AACnC,IAAAC,0BAAsB;AA2ChB,IAAAC,uBAAA;AAnCN,IAAM,kBAAkB,2BAAAC,QAAO;AAAA;AAAA,SAItB,yCAAc,QAAQ,sBAAsB;AAAA,IACjD,CAAC,EAAE,QAAQ,MAAM;AAAA,sBACC,YAAY,eAAe,QAAQ,QAAQ;AAAA,mBAC9C,YAAY,eAAe,WAAW,OAAO;AAAA,GAC7D;AAAA;AAGH,IAAM,mBAAe,2BAAAA,SAAO,MAAM;AAAA;AAAA,WAEvB,yCAAc,OAAO,qBAAqB;AAAA;AAY9C,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,SACE,+CAAC,mBAAgB,SAAS,QACxB;AAAA,kDAAC,iCAAO,uBAAY;AAAA,IACnB,UACC,8CAAC,WAAQ,SAAQ,iCAAgC,IAEjD,+CAAC,UAAO,KAAI,aACV;AAAA,oDAAC,WAAQ,MAAM,gBACb;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,EAAE,cAAc,eAAe;AAAA,UAC1C,MAAM;AAAA,UACN,YAAW;AAAA,UACX,SAAS,MAAM,mBAAmB,UAAU;AAAA,UAC5C,MAAK;AAAA;AAAA,MACP,GACF;AAAA,MACA,8CAAC,WAAQ,MAAM,kBACb,wDAAC,SACC;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,EAAE,cAAc,iBAAiB;AAAA,UAC5C,MAAM;AAAA,UACN,YAAW;AAAA,UACX,SAAS,MAAM,mBAAmB,UAAU;AAAA,UAC5C,MAAK;AAAA;AAAA,MACP,GACF,GACF;AAAA,OACF;AAAA,KAEJ;AAEJ;;;AC3EA,IAAAC,6BAAmB;AACnB,IAAAC,6BAA8B;AAC9B,IAAAC,qBAIO;AACP,IAAAC,0BAA0B;AAqClB,IAAAC,uBAAA;AA9BR,IAAM,gBAAgB,2BAAAC,QAAO;AAAA;AAAA;AAAA,SAGpB,yCAAc,QAAQ,uBAAuB;AAAA;AAc/C,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,SACE,+CAAC,UAAO,KAAI,aACV;AAAA,mDAAC,iBACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,WAAW,aAAa,mCAAgB;AAAA,UAC9C,OAAO,yCAAc,OAAO;AAAA;AAAA,MAC9B;AAAA,MACA,+CAAC,qCAAW;AAAA;AAAA,QAAqB;AAAA,SAAC;AAAA,OACpC;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MACT,yBAAyB,EAAE,OAAO,KAAK;AAAA,QAEzC,OACE,WAAW,aAAa,wBAAwB;AAAA,QAElD,KAAI;AAAA;AAAA,IACN;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KACF;AAEJ;;;AFVM,IAAAC,uBAAA;AAvDC,IAAM,WAAW,CAAC;AAAA,EACvB,SAAS;AAAA,EACT,cAAc;AAAA,EACd,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,2BAA2B;AAAA,EAC3B,UAAU;AAAA,EACV,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAwB,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,QAAI,yBAAiB;AACzD,QAAM,CAAC,qBAAqB,sBAAsB,QAChD,yBAAkB,KAAK;AAEzB,gCAAU,MAAM;AACd,mBAAe,UAAa,UAAU,UAAU;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,gCAAU,MAAM;AACd,yBAAqB,UAAa,gBAAgB,gBAAgB;AAAA,EACpE,GAAG,CAAC,gBAAgB,CAAC;AAErB,gCAAU,MAAM;AACd,wBAAoB,UAAa,uBAAuB,eAAe;AAAA,EACzE,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,qBAAqB,CAAC,cAAsB;AAChD,gBAAY,SAAS,SAAS;AAC9B,gBAAY,4BAA4B,SAAS,WAAW,EAAE;AAE9D,mBAAe,UAAa,UAAU,SAAS;AAAA,EACjD;AAEA,QAAM,2BAA2B,CAAC,oBAA4B;AAC5D,4BAAwB,qBAAqB,eAAe;AAC5D,yBAAqB,UAAa,gBAAgB,eAAe;AAAA,EACnE;AAEA,QAAM,eAAe,MAAM;AAEzB,gBAAY,SAAS,QAAS,sCAAgB,EAAE;AAChD,wBAAoB,UAAa,uBAAuB,IAAI;AAAA,EAC9D;AAEA,MAAI,WAAW,QAAQ,CAAC,qBAAqB;AAC3C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,MAAI,CAAC,4BAA4B,CAAC,qBAAqB;AACrD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO,8CAAC,qCAAW,0BAAe;AACpC;","names":["AppShell","CollapsibleTable","List","ListItem","RadioButtonGroup","Search","Table","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","spacing","styled","import_styled_components","import_react","import_jsx_runtime","import_jsx_runtime","styled","icon","import_styled_components","import_dds_icons","import_dds_icons","import_jsx_runtime","import_styled_components","navTokens","styled","import_react","import_dds_icons","import_dds_core","import_dds_design_tokens","import_dds_core","colors","border","spacing","fontPackages","borderRadius","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","import_jsx_runtime","styled","React","import_styled_components","import_dds_core","sizes","appearances","styled","import_jsx_runtime","sizes","appearances","label","icon","import_react","import_styled_components","import_dds_core","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","colors","spacing","import_jsx_runtime","track","thumb","styled","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","track","content","outerContainer","styled","thumb","track","scrollbarWidth","import_dds_core","import_react","import_styled_components","import_dds_design_tokens","import_dds_core","border","borderRadius","colors","spacing","fontPackages","divider","import_dds_icons","import_dds_core","import_dds_typography","import_jsx_runtime","element","link","styled","title","icon","import_dds_core","import_dds_icons","import_jsx_runtime","container","divider","styled","StyledDivider","_a","import_react","import_jsx_runtime","Children","ReactChildren","import_jsx_runtime","navTokens","floatingActionButtons","styled","Icon","import_development_utils","import_jsx_runtime","navTokens","styled","StyledDivider","import_development_utils","import_jsx_runtime","styled","AppShell","import_react","import_dds_core","import_dds_typography","import_dds_form","import_react","React","import_styled_components","import_dds_form","import_dds_design_tokens","import_dds_form","colors","spacing","borderRadius","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","Container","import_jsx_runtime","group","label","Container","import_react","import_dds_typography","import_dds_core","import_styled_components","import_dds_icons","import_dds_design_tokens","colors","spacing","import_dds_typography","import_react","import_dds_core","import_dds_icons","import_jsx_runtime","styled","message","import_jsx_runtime","import_jsx_runtime","label","RadioButtonGroup","import_react","import_dds_core","import_dds_typography","import_react","React","import_dds_form","import_jsx_runtime","label","Container","import_react","import_dds_typography","import_dds_core","import_jsx_runtime","label","import_react","import_dds_typography","import_dds_core","import_dds_form","import_styled_components","import_dds_design_tokens","colors","spacing","icon","import_react","import_styled_components","import_dds_core","import_dds_typography","import_jsx_runtime","styled","import_styled_components","import_dds_icons","import_dds_design_tokens","import_dds_form","iconSizes","input","icon","styled","import_jsx_runtime","styled","label","icon","prefix","import_react","import_dds_icons","import_dds_core","import_styled_components","import_dds_core","import_dds_design_tokens","import_dds_form","colors","spacing","borderRadius","border","typographyTypes","icon","import_dds_icons","import_dds_typography","import_dds_form","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","typographyTypes","StyledIcon","import_dds_typography","import_jsx_runtime","icon","StyledIcon","defaultWidth","placeholder","label","option","props","Container","ReactSelect","React","import_styled_components","import_react","import_dds_design_tokens","import_dds_icons","colors","spacing","typographyType","container","import_dds_icons","import_dds_typography","import_dds_core","import_jsx_runtime","container","contentContainer","icon","Container","styled","typographyType","message","import_styled_components","import_react","import_dds_design_tokens","import_dds_icons","colors","spacing","borderRadius","border","outerShadow","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","icon","import_dds_icons","import_dds_typography","import_dds_core","import_jsx_runtime","defaultWidth","container","icon","purposeVariants","Container","styled","MessageIconWrapper","TextContainer","message","import_dds_core","import_dds_form","import_dds_icons","import_dds_typography","import_react","import_styled_components","import_styled_components","import_dds_core","import_jsx_runtime","Wrapper","styled","import_react","import_dds_design_tokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","import_styled_components","import_dds_core","import_dds_core","import_dds_typography","import_react","import_dds_core","import_jsx_runtime","suggestionsContainer","suggestionsHeader","styled","typographyTypes","import_jsx_runtime","input","outerContainer","horisontalContainer","searchIcon","clearButton","Input","styled","BaseInput","typographyTypes","InputContainer","label","import_react","import_dds_core","import_jsx_runtime","data","value","Search","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","colors","border","spacing","iconSizes","borderRadius","import_jsx_runtime","cell","row","styled","import_react","import_styled_components","import_react","import_jsx_runtime","StyledTable","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_typography","import_dds_form","row","styled","import_jsx_runtime","import_react","import_styled_components","import_dds_form","import_dds_core","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","spacing","colors","import_jsx_runtime","term","desc","list","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_core","import_dds_icons","import_jsx_runtime","styled","icon","import_react","import_styled_components","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_jsx_runtime","collapseButton","styled","prefix","Table","import_react","import_dds_icons","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","CollapsibleTable","import_react","import_dds_typography","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","icon","list","import_dds_icons","import_dds_core","import_dds_typography","import_jsx_runtime","icon","list","listItem","styled","typographyType","StyledIcon","import_react","import_styled_components","import_dds_typography","import_dds_icons","import_dds_design_tokens","spacing","colors","list","outerContainer","import_dds_icons","import_dds_core","import_jsx_runtime","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","OuterContainer","option","navigation","import_react","import_styled_components","import_dds_typography","import_dds_core","import_dds_design_tokens","spacing","textDefault","list","listItem","import_jsx_runtime","list","listItem","bullet","styled","List","typographyType","import_react","import_styled_components","import_jsx_runtime","styled","ListItem","import_styled_components","import_dds_design_tokens","colors","border","textDefault","base","import_dds_core","import_dds_typography","import_dds_form","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Wrapper","styled","Children","ReactChildren","import_react","import_styled_components","import_dds_design_tokens","spacing","border","iconSizes","typographyTypes","import_dds_core","import_dds_typography","import_jsx_runtime","header","chevronWrapper","styled","typographyType","typographyTypes","import_react","import_styled_components","import_dds_core","import_dds_typography","import_react","element","import_jsx_runtime","Body","styled","typographyTypes","import_react","import_dds_typography","import_styled_components","import_dds_design_tokens","border","colors","spacing","typographyTypes","outerContainer","navigation","import_dds_core","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","Navigation","import_react","import_styled_components","import_dds_typography","import_dds_form","import_jsx_runtime","navLink","Link","styled","typographyTypes","NavigationItem","title","import_react","import_styled_components","import_jsx_runtime","styled","import_dds_core","import_dds_icons","import_jsx_runtime","navigation","Navigation","rest","NavigationItem","OuterContainer","import_react","import_dds_core","import_dds_typography","import_styled_components","import_dds_form","import_dds_design_tokens","iconSizes","spacing","border","import_jsx_runtime","StyledInput","styled","label","getWidth","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","colors","spacing","link","import_jsx_runtime","wrapper","link","Wrapper","styled","Link","import_react","import_dds_core","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","colors","spacing","wrapper","wrapper","styled","Container","import_jsx_runtime","svgArrow","ref","ReactChildren","Container","import_react","import_styled_components","import_dds_design_tokens","spacing","container","contentContainer","import_dds_typography","import_dds_core","import_dds_icons","import_dds_form","import_styled_components","import_dds_design_tokens","import_dds_core","styled","container","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_react_dom","import_styled_components","import_dds_typography","import_dds_core","import_dds_icons","import_dds_design_tokens","spacing","container","contentContainer","import_dds_form","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_jsx_runtime","Children","ReactChildren","import_dds_design_tokens","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","spacing","wrapper","content","import_dds_icons","import_dds_core","import_dds_form","import_jsx_runtime","wrapper","content","closeButton","title","Wrapper","styled","ContentContainer","StyledButton","import_react","import_dds_core","import_jsx_runtime","Children","ReactChildren","import_react","import_styled_components","import_dds_icons","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","colors","spacing","button","selectionControl","typographyType","group","container","import_jsx_runtime","toggleButton","Content","styled","typographyType","Container","label","icon","import_react","import_styled_components","import_dds_core","import_dds_typography","import_jsx_runtime","styled","Container","label","import_styled_components","import_react","import_dds_core","import_react","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_core","import_dds_icons","import_dds_typography","import_dds_form","import_dds_design_tokens","border","spacing","colors","import_jsx_runtime","tab","Button","styled","icon","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","tabList","styled","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","panel","styled","import_react","import_dds_core","import_jsx_runtime","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","colors","borderRadius","spacing","typographyType","wrapper","import_jsx_runtime","wrapper","Wrapper","styled","typographyType","import_react","import_styled_components","import_dds_core","import_dds_icons","import_dds_typography","import_dds_design_tokens","colors","spacing","borderRadius","typographyType","container","group","import_jsx_runtime","container","Container","styled","typographyType","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Group","styled","import_react","import_styled_components","import_dds_core","import_dds_typography","import_react","import_dds_design_tokens","import_dds_core","colors","spacing","border","borderRadius","fontPackages","typographyTypes","outerContainer","content","import_jsx_runtime","OuterContainer","styled","Bar","label","import_react","import_dds_core","import_dds_icons","import_styled_components","import_dds_typography","import_dds_form","content","label","Content","styled","typographyTypes","Label","import_dds_form","import_jsx_runtime","group","icon","label","Label","Content","import_styled_components","import_dds_core","import_dds_design_tokens","import_dds_core","spacing","import_react","import_dds_core","import_dds_core","import_jsx_runtime","tokens","styled","import_styled_components","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_core","import_react","import_dds_design_tokens","colors","spacing","typographyTypes","import_react","import_styled_components","import_dds_icons","import_dds_typography","import_dds_form","import_jsx_runtime","itemNumber","itemText","itemContentWrapper","styled","typographyTypes","icon","import_jsx_runtime","styled","import_react","import_react","import_dds_core","import_jsx_runtime","import_dds_core","import_react","import_dds_icons","import_dds_core","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","import_dds_form","inlineEdit","iconWrapper","defaultWidth","styled","IconWrapper","import_jsx_runtime","import_dds_core","import_dds_form","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_dds_core","import_react","import_dds_icons","import_dds_core","import_dds_core","import_dds_form","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","spacing","import_jsx_runtime","defaultWidth","textarea","styled","label","import_react","import_styled_components","import_dds_icons","import_dds_design_tokens","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_icons","import_dds_core","import_dds_typography","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","MessageContainer","styled","message","import_styled_components","import_dds_icons","import_dds_core","import_jsx_runtime","styled","import_react","accepted","accepted","getFilesFromEvent","import_jsx_runtime","defaultWidth","Wrapper","styled","label","import_dds_design_tokens","import_styled_components","import_dds_typography","import_jsx_runtime","colors","spacing","styled","title","message","import_react","import_styled_components","import_dds_icons","import_dds_typography","import_dds_design_tokens","colors","spacing","icon","import_jsx_runtime","Nav","styled","StyledIcon","import_react","import_dds_typography","import_styled_components","import_dds_design_tokens","import_dds_icons","import_dds_typography","import_jsx_runtime","styled","import_styled_components","import_dds_design_tokens","import_dds_icons","import_dds_typography","import_jsx_runtime","styled","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/AppShell/AppShell.tsx","../src/components/AppShell/AppShell.tokens.ts","../src/components/AppShell/Navigation/Navigation.tsx","../src/components/Divider/Divider.tsx","../src/components/Divider/Divider.tokens.tsx","../src/components/AppShell/Navigation/NavigationItem.tsx","../src/components/AppShell/AppShellContext.tsx","../src/components/AppShell/Navigation/TopBar.tsx","../src/components/AppShell/Navigation/EmbeteIcon.tsx","../src/components/AppShell/Navigation/NavigationLogo.tsx","../src/components/Button/Button.tsx","../src/components/Button/Button.tokens.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.styles.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/ScrollableContainer/Scrollbar.tsx","../src/components/ScrollableContainer/ScrollableContainer.tokens.tsx","../src/components/ScrollableContainer/ScrollableContainer.tsx","../src/components/ScrollableContainer/scrollbarStyling.tsx","../src/components/OverflowMenu/OverflowMenuItem.tsx","../src/components/OverflowMenu/OverflowMenu.tokens.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/AppShell/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.tokens.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/InputMessage/InputMessage.tsx","../src/components/InputMessage/InputMessage.tokens.tsx","../src/utils/renderInputMessage.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.tokens.tsx","../src/utils/icon.ts","../src/components/TextInput/CharCounter.tsx","../src/components/TextInput/TextInput.styles.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.styles.ts","../src/components/Select/Select.tokens.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.tokens.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.tokens.tsx","../src/components/Search/Search.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.tokens.tsx","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/Table/Table.tsx","../src/components/Table/Table.tokens.tsx","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/Head.tsx","../src/components/Table/Body.tsx","../src/components/Table/Foot.tsx","../src/components/Table/Row.tsx","../src/components/Table/Table.styles.tsx","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionList.tokens.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/Table/Cell.tsx","../src/components/Table/SortCell.tsx","../src/components/Table/TableWrapper.tsx","../src/components/Table/index.ts","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumb.tokens.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/paginationGenerator.tsx","../src/components/Pagination/Pagination.tokens.tsx","../src/components/List/List.tsx","../src/components/List/List.tokens.tsx","../src/components/List/ListItem.tsx","../src/components/Card/Card.tsx","../src/components/Card/Card.tokens.tsx","../src/components/Card/CardAccordion/CardAccordion.tsx","../src/components/Card/CardAccordion/CardAccordionHeader.tsx","../src/components/Card/CardAccordion/CardAccordion.tokens.tsx","../src/components/Card/CardAccordion/CardAccordionBody.tsx","../src/components/Card/CardAccordion/useElementHeight.ts","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.styles.tsx","../src/components/InternalHeader/InternalHeader.tokens.tsx","../src/components/InternalHeader/NavigationItem.tsx","../src/components/InternalHeader/InternalHeaderListItem.tsx","../src/components/Datepicker/Datepicker.tsx","../src/components/Datepicker/Datepicker.tokens.tsx","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SkipToContent/SkipToContent.tokens.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styles.tsx","../src/components/Tooltip/Tooltip.tokens.tsx","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.tokens.tsx","../src/components/Modal/Backdrop/Backdrop.tsx","../src/components/Modal/Backdrop/Backdrop.utils.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.tokens.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.tokens.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.tokens.tsx","../src/components/ToggleButton/ToggleButtonGroup.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tokens.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.tokens.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.tokens.tsx","../src/components/Chip/ChipGroup.tsx","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.tokens.tsx","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleBar/ToggleRadio.styles.tsx","../src/components/Grid/Grid.tsx","../src/components/Grid/Grid.tokens.tsx","../src/components/Grid/Grid.context.tsx","../src/components/Grid/GridChild.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.tokens.tsx","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.styles.tsx","../src/components/InlineEdit/InlineEdit.tokens.ts","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.tokens.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.tokens.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.tokens.tsx","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/utils.ts","../src/components/EmptyContent/EmptyContent.tsx","../src/components/BackLink/BackLink.tsx","../src/components/BackLink/BackLink.tokens.tsx","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/RatingComponent.tsx","../src/components/Feedback/CommentComponent.tsx"],"sourcesContent":["export * from '@norges-domstoler/dds-core';\nexport * from '@norges-domstoler/dds-form';\nexport * from '@norges-domstoler/dds-icons';\nexport * from '@norges-domstoler/dds-typography';\n\nexport * from './components/AppShell';\nexport * from './components/SelectionControl/RadioButton';\nexport * from './components/SelectionControl/Checkbox';\nexport * from './components/Button';\nexport * from './components/TextInput';\nexport * from './components/Select';\nexport * from './components/GlobalMessage';\nexport * from './components/LocalMessage';\nexport * from './components/Search';\nexport * from './components/Table';\nexport * from './components/Breadcrumbs';\nexport * from './components/Pagination';\nexport * from './components/Divider';\nexport * from './components/List';\nexport * from './components/DescriptionList';\nexport * from './components/Spinner';\nexport * from './components/Card';\nexport * from './components/InternalHeader';\nexport * from './components/Datepicker';\nexport * from './components/SkipToContent';\nexport * from './components/Tooltip';\nexport * from './components/Modal';\nexport * from './components/Drawer';\nexport * from './components/OverflowMenu';\nexport * from './components/Popover';\nexport * from './components/InputMessage';\nexport * from './components/ToggleButton';\nexport * from './components/Tabs';\nexport * from './components/Tag';\nexport * from './components/Chip';\nexport * from './components/VisuallyHidden';\nexport * from './components/ScrollableContainer';\nexport * from './components/ToggleBar';\nexport * from './components/Grid';\nexport * from './components/ProgressTracker';\nexport * from './components/InlineEdit';\nexport * from './components/TextArea';\nexport * from './components/SplitButton';\nexport * from './components/Stack';\nexport * from './components/FileUploader';\nexport * from './components/EmptyContent';\nexport * from './components/BackLink';\nexport * from './components/Feedback';\n","import { PropsWithChildren, ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from './AppShell.tokens';\nimport { Navigation } from './Navigation/Navigation';\nimport { User } from './Navigation/TopBar';\nimport { OverflowMenuProps } from '../OverflowMenu';\nimport {\n Environment,\n EnvironmentBanner,\n ENVIRONMENT_BANNER_HEIGHT,\n} from '@norges-domstoler/development-utils';\nimport { AppShellContextProvider } from './AppShellContext';\n\nexport type AppShellProps = PropsWithChildren<{\n /**\n * Versjon på appen på formatet 0.0.0\n */\n version?: string;\n navigation: AppShellNavigationProps;\n /**\n * Den innloggede brukeren.\n */\n user: User;\n /**\n * Menyvalg som skal vises i OverflowMenu knyttet til \"bruker\"-knappen.\n */\n userMenuItems?: OverflowMenuProps['items'];\n /**\n * `environment` brukes for å vise en banner øverst i appen som viser hvilket miljø du er i.\n * Når environment er undefined eller `\"PROD\"` så vises ikke banneret.\n */\n environment?: Environment;\n}>;\n\nexport interface AppShellNavigationProps {\n /**\n * Interne lenker i navigasjonen.\n */\n internal?: ReactElement[];\n /**\n * Eksterne lenker i navigasjonen.\n */\n external?: ReactElement[];\n}\n\nconst AppShellContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n flex-direction: row;\n }\n`;\n\nconst MainContent = styled.main.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n min-height: calc(100vh - ${appShellTokens.navigation.topBar.height});\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${appShellTokens.navigation.topBar.height})`\n : appShellTokens.navigation.topBar.height};\n @media (min-width: ${appShellTokens.navigation.mobile.breakpoint}) {\n min-height: unset;\n margin-top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n margin-left: ${appShellTokens.navigation.width};\n min-width: calc(100vw - ${appShellTokens.navigation.width});\n max-width: calc(100vw - ${appShellTokens.navigation.width});\n }\n`;\n\nexport const AppShell = ({\n children,\n version = '',\n navigation: { internal = [], external = [] },\n user,\n userMenuItems,\n environment = 'PROD',\n}: AppShellProps) => {\n const environmentBannerActive = environment !== 'PROD';\n return (\n <AppShellContextProvider>\n <AppShellContainer>\n <EnvironmentBanner environment={environment} />\n <Navigation\n user={user}\n userMenuItems={userMenuItems}\n version={version}\n internal={internal}\n external={external}\n environmentBannerActive={environmentBannerActive}\n />\n <MainContent environmentBannerActive={environmentBannerActive}>\n {children}\n </MainContent>\n </AppShellContainer>\n </AppShellContextProvider>\n );\n};\n\nAppShell.displayName = 'AppShell';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { colors, spacing, fontPackages, borderRadius, breakpoints } =\n ddsBaseTokens;\n\nconst navigationItems = {\n gap: spacing.SizesDdsSpacingLocalX05,\n item: {\n ...fontPackages.body_sans_02.base,\n color: colors.DdsColorNeutralsGray1,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\n external: {\n ...fontPackages.body_sans_01.base,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDark,\n },\n active: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorPrimaryDarker,\n },\n },\n};\n\nconst logoAndVersion = {\n padding: '36px 24px',\n color: colors.DdsColorNeutralsWhite,\n logo: {\n ...fontPackages.heading_sans_05.base,\n fontWeight: 700,\n small: {\n ...fontPackages.heading_sans_03.base,\n fontWeight: 600,\n },\n },\n version: {\n ...fontPackages.supportingStyle_tiny_01.base,\n },\n};\n\nconst topBar = {\n padding: spacing.SizesDdsSpacingLocalX025,\n height: `calc(${spacing.SizesDdsSpacingLayoutX3} + 2 * ${spacing.SizesDdsSpacingLocalX025})`,\n buttonTextColor: colors.DdsColorNeutralsGray3,\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst navigation = {\n navigationItems,\n logoAndVersion,\n topBar,\n\n color: colors.DdsColorNeutralsGray1,\n backgroundColor: colors.DdsColorPrimaryBase,\n gap: spacing.SizesDdsSpacingLocalX05,\n dividerColor: colors.DdsColorPrimaryLight,\n padding: spacing.SizesDdsSpacingLocalX1,\n width: '264px',\n\n mobile: {\n breakpoint: breakpoints.DdsBreakpointSm,\n iconColors: colors.DdsColorNeutralsGray3,\n },\n};\n\nconst floatingActionButtons = {\n gap: spacing.SizesDdsSpacingLocalX1,\n textColor: colors.DdsColorNeutralsGray7,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius3Radius,\n};\n\nexport const appShellTokens = { navigation, floatingActionButtons };\n","import { Children, ReactElement, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { Divider } from '../../Divider';\nimport { NavigationItem } from './NavigationItem';\nimport { TopBar, User } from './TopBar';\nimport { NavigationLogo } from './NavigationLogo';\nimport { OverflowMenuProps } from '../../OverflowMenu';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst Sidebar = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'isOpen' && prop !== 'environmentBannerActive',\n})<{\n isOpen: boolean;\n environmentBannerActive: boolean;\n}>`\n display: flex;\n flex-direction: column;\n height: calc(100vh - ${navTokens.topBar.height});\n width: 100vw;\n padding: ${navTokens.padding};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(${ENVIRONMENT_BANNER_HEIGHT} + ${navTokens.topBar.height})`\n : navTokens.topBar.height};\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n\n transition:\n transform 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n transform: translateX(${({ isOpen }) => (isOpen ? '0' : '-100%')});\n opacity: ${({ isOpen }) => (isOpen ? '1' : '0')};\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n height: ${({ environmentBannerActive }) =>\n environmentBannerActive\n ? `calc(100vh - ${ENVIRONMENT_BANNER_HEIGHT})`\n : '100vh'};\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : 0};\n width: ${navTokens.width};\n position: fixed;\n\n transform: translateX(0);\n opacity: 1;\n }\n`;\n\nconst LogoAndVersionContainer = styled.div`\n display: none;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n display: flex;\n flex-direction: column;\n color: ${navTokens.logoAndVersion.color};\n padding: ${navTokens.logoAndVersion.padding};\n }\n`;\n\nconst Version = styled.span`\n font-size: ${navTokens.logoAndVersion.version.fontSize};\n font-style: ${navTokens.logoAndVersion.version.fontStyle};\n font-family: ${navTokens.logoAndVersion.version.fontFamily};\n font-weight: ${navTokens.logoAndVersion.version.fontWeight};\n line-height: ${navTokens.logoAndVersion.version.lineHeight};\n letter-spacing: ${navTokens.logoAndVersion.version.letterSpacing};\n`;\n\nexport const NavigationItems = styled.nav`\n display: flex;\n flex-direction: column;\n gap: ${navTokens.navigationItems.gap};\n`;\n\nconst DividerWrapper = styled.div`\n padding-left: ${navTokens.navigationItems.item.padding};\n padding-right: ${navTokens.navigationItems.item.padding};\n`;\nconst StyledDivider = styled(Divider)`\n border-color: ${navTokens.dividerColor};\n`;\n\nexport interface NavigationProps {\n version: string;\n internal: ReactElement[];\n external: ReactElement[];\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n environmentBannerActive: boolean;\n}\n\nexport const Navigation = ({\n version,\n user,\n userMenuItems,\n internal,\n external,\n environmentBannerActive,\n}: NavigationProps) => {\n const { isOpen, setOpen } = useAppShellContext();\n\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n if (event.key === 'o') {\n setOpen(prev => !prev);\n }\n };\n\n window.addEventListener('keypress', listener);\n return () => window.removeEventListener('keypress', listener);\n });\n\n return (\n <div>\n <TopBar\n user={user}\n userMenuItems={userMenuItems}\n isNavigationOpen={isOpen}\n onNavigationOpenChange={newOpen => setOpen(newOpen)}\n environmentBannerActive={environmentBannerActive}\n />\n <Sidebar\n isOpen={isOpen}\n environmentBannerActive={environmentBannerActive}\n >\n <LogoAndVersionContainer>\n <NavigationLogo>Lovisa</NavigationLogo>\n {version !== '' && <Version>v {version}</Version>}\n </LogoAndVersionContainer>\n <NavigationItems>\n {Children.map(internal, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n `Du bruker en React-komponent som ikke er tillat i AppShell-internal. Du kan kun bruke AppShell.NavItem i AppShell-internal.`,\n );\n return null;\n }\n return item;\n })}\n\n {external.length > 0 && (\n <DividerWrapper>\n <StyledDivider />\n </DividerWrapper>\n )}\n\n {Children.map(external, item => {\n if (item.type !== NavigationItem) {\n console.warn(\n 'Du bruker en React-komponent som ikke er tillat i AppShell-external. Du kan kun bruke AppShell.NavItem i AppShell-external.',\n );\n return null;\n }\n return item;\n })}\n </NavigationItems>\n </Sidebar>\n </div>\n );\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { dividerTokens as tokens } from './Divider.tokens';\n\nexport type DividerColor = 'primary' | 'primaryLighter';\n\nconst StyledDivider = styled.hr<DividerProps>`\n border: 0;\n background-color: transparent;\n border-top: ${tokens.borderTop};\n margin-top: ${tokens.marginTop};\n margin-bottom: ${tokens.marginBottom};\n ${({ color }) =>\n color &&\n css`\n border-color: ${tokens.color[color].borderColor};\n `}\n`;\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje. */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>((props, ref) => {\n const { color = 'primary', id, className, htmlProps, ...rest } = props;\n\n const lineProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n color,\n };\n\n return <StyledDivider ref={ref} {...lineProps} />;\n});\n\nDivider.displayName = 'Divider';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing } = ddsBaseTokens;\n\nconst divider = {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n marginTop: spacing.SizesDdsSpacingLocalX1,\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n color: {\n primary: {\n borderColor: border.BordersDdsBorderStyleDarkStroke,\n },\n primaryLighter: {\n borderColor: border.BordersDdsBorderStyleLightStroke,\n },\n },\n};\n\nexport const dividerTokens = {\n ...divider,\n};\n","import styled from 'styled-components';\nimport { type PropsOf, type As } from '@norges-domstoler/dds-core';\nimport {\n Icon,\n SvgIcon,\n ChevronRightIcon,\n OpenExternalIcon,\n} from '@norges-domstoler/dds-icons';\nimport { type MouseEventHandler } from 'react';\n\nimport { appShellTokens } from '../AppShell.tokens';\nimport { useAppShellContext } from '../AppShellContext';\n\nconst { navigation: navTokens } = appShellTokens;\n\nconst navItemTokens = navTokens.navigationItems.item;\n\nconst IconContainer = styled.div`\n grid-area: icon;\n display: flex;\n align-items: center;\n`;\n\nconst TextContainer = styled.span`\n grid-area: text;\n`;\n\nconst ChevronContainer = styled.div`\n display: flex;\n align-items: center;\n opacity: 0;\n grid-area: chevron;\n`;\n\nconst BaseLink = styled.a`\n padding: ${navItemTokens.padding};\n gap: ${navItemTokens.gap};\n border-radius: ${navItemTokens.borderRadius};\n\n text-decoration: none;\n color: ${navItemTokens.color};\n font-size: ${navItemTokens.fontSize};\n font-style: ${navItemTokens.fontStyle};\n font-family: ${navItemTokens.fontFamily};\n font-weight: ${navItemTokens.fontWeight};\n line-height: ${navItemTokens.lineHeight};\n letter-spacing: ${navItemTokens.letterSpacing};\n\n :hover:not(.active) {\n background-color: ${navItemTokens.hover.backgroundColor};\n }\n\n &.active {\n color: ${navItemTokens.active.color};\n background-color: ${navItemTokens.active.backgroundColor};\n }\n`;\n\nconst InternalNavItem = styled(BaseLink)`\n display: grid;\n align-items: center;\n grid-template-areas: 'icon text chevron';\n grid-template-columns: min-content 1fr min-content;\n\n &.active ${ChevronContainer} {\n opacity: 1;\n }\n`;\n\nconst ExternalNavItem = styled(BaseLink)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n font-size: ${navItemTokens.external.fontSize};\n font-style: ${navItemTokens.external.fontStyle};\n font-family: ${navItemTokens.external.fontFamily};\n font-weight: ${navItemTokens.external.fontWeight};\n line-height: ${navItemTokens.external.lineHeight};\n letter-spacing: ${navItemTokens.external.letterSpacing};\n`;\n\ntype BaseNavigationItemProps = (\n | {\n icon: SvgIcon;\n active?: boolean;\n external?: undefined | false;\n }\n | { external: true; active?: undefined | false; icon?: undefined }\n) & { onClick?: MouseEventHandler };\n\ntype NavigationItemProps<T extends As = 'a'> = PropsOf<T> &\n BaseNavigationItemProps;\n\nexport const NavigationItem = <T extends As = 'a'>({\n as: _as,\n active,\n icon,\n external,\n children,\n onClick: propOnClick,\n ...rest\n}: NavigationItemProps<T>) => {\n const { setOpen } = useAppShellContext();\n const Comp = _as ?? 'a';\n\n const onClick: MouseEventHandler = e => {\n propOnClick?.(e);\n setOpen(false);\n };\n if (external) {\n return (\n <ExternalNavItem as={Comp} {...rest} onClick={onClick}>\n {children}\n <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />\n </ExternalNavItem>\n );\n }\n\n return (\n <InternalNavItem\n as={Comp}\n {...rest}\n onClick={onClick}\n className={[active ? 'active' : '', rest.className].join(' ')}\n >\n <IconContainer>{icon && <Icon icon={icon} />}</IconContainer>\n <TextContainer>{children}</TextContainer>\n <ChevronContainer>\n <Icon icon={ChevronRightIcon} />\n </ChevronContainer>\n </InternalNavItem>\n );\n};\n\nNavigationItem.displayName = 'AppShell.NavItem';\n","import {\n type ReactNode,\n type SetStateAction,\n type Dispatch,\n createContext,\n useState,\n useContext,\n} from 'react';\n\ninterface AppShellContextValues {\n isOpen: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n}\n\nconst AppShellContext = createContext<AppShellContextValues>({\n isOpen: false,\n setOpen: () => {},\n});\n\nexport const AppShellContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useState(false);\n return (\n <AppShellContext.Provider value={{ isOpen, setOpen }}>\n {children}\n </AppShellContext.Provider>\n );\n};\n\nexport const useAppShellContext = () => {\n return useContext(AppShellContext);\n};\n","import styled from 'styled-components';\nimport { MenuIcon, CloseIcon, SvgProps } from '@norges-domstoler/dds-icons';\nimport { ENVIRONMENT_BANNER_HEIGHT } from '@norges-domstoler/development-utils';\n\nimport { EmbeteIcon, EmbeteType } from './EmbeteIcon';\nimport { appShellTokens } from '../AppShell.tokens';\nimport { NavigationLogo } from './NavigationLogo';\nimport { Button } from '../../Button';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuProps,\n} from '../../OverflowMenu';\n\nconst { navigation: navTokens, floatingActionButtons } = appShellTokens;\n\nconst LogoBurgerGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst ActionButtonGroup = styled.div`\n display: flex;\n align-items: center;\n gap: ${navTokens.topBar.gap};\n`;\n\nconst IconButton = styled(Button).attrs({\n appearance: 'borderless',\n purpose: 'secondary',\n})`\n color: ${navTokens.topBar.buttonTextColor};\n > :first-child {\n font-size: 1.65rem;\n }\n @media (max-width: ${navTokens.mobile.breakpoint}) {\n border: 0;\n box-shadow: none;\n padding: 12px;\n &:hover,\n &:active {\n color: ${navTokens.topBar.buttonTextColor};\n text-decoration-color: ${navTokens.topBar.buttonTextColor};\n box-shadow: none;\n }\n gap: 0;\n }\n`;\n\nconst IconButtonText = styled.span`\n display: none; // Ikke vis tekst på mobil\n width: 0;\n`;\n\nconst Bar = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'environmentBannerActive',\n})<{ environmentBannerActive: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${navTokens.topBar.gap};\n width: 100vw;\n height: ${navTokens.topBar.height};\n color: ${navTokens.color};\n background-color: ${navTokens.backgroundColor};\n box-sizing: border-box;\n z-index: 101;\n\n position: fixed;\n top: ${({ environmentBannerActive }) =>\n environmentBannerActive ? ENVIRONMENT_BANNER_HEIGHT : '0'};\n left: 0;\n right: 0;\n\n @media (min-width: ${navTokens.mobile.breakpoint}) {\n justify-content: flex-end;\n background-color: transparent;\n margin-left: ${navTokens.width};\n width: calc(100vw - ${navTokens.width});\n\n pointer-events: none;\n & > * {\n pointer-events: initial;\n }\n\n ${LogoBurgerGroup} {\n display: none;\n }\n\n ${ActionButtonGroup} {\n padding-right: calc(2 * ${navTokens.topBar.gap});\n gap: ${floatingActionButtons.gap};\n }\n\n ${IconButton} {\n background-color: ${floatingActionButtons.backgroundColor};\n color: ${floatingActionButtons.textColor};\n box-shadow: 8px 16px 32px 0px rgba(0, 0, 0, 0.1);\n border-radius: ${floatingActionButtons.borderRadius};\n\n ${IconButtonText} {\n display: unset;\n }\n }\n }\n`;\n\ninterface TopBarProps {\n user: User;\n userMenuItems?: OverflowMenuProps['items'];\n isNavigationOpen: boolean;\n onNavigationOpenChange: (isOpen: boolean) => void;\n environmentBannerActive: boolean;\n}\n\nexport interface User {\n /**Brukerens fulle navn (for- og etternavn). */\n name: string;\n /**Det aktive embetet til brukeren. */\n embete: Embete;\n}\n\nexport interface Embete {\n /**Navnet på embetet. */\n name: string;\n /**Hvilken instans embetet er. */\n type: EmbeteType;\n}\n\nexport const TopBar = ({\n user,\n userMenuItems,\n isNavigationOpen,\n onNavigationOpenChange,\n environmentBannerActive,\n}: TopBarProps) => {\n const Icon = (props: SvgProps) => (\n <EmbeteIcon {...props} type={user.embete.type} />\n );\n\n return (\n <Bar environmentBannerActive={environmentBannerActive}>\n <LogoBurgerGroup>\n <IconButton\n icon={isNavigationOpen ? CloseIcon : MenuIcon}\n onClick={() => onNavigationOpenChange(!isNavigationOpen)}\n />\n <NavigationLogo small>Lovisa</NavigationLogo>\n </LogoBurgerGroup>\n <ActionButtonGroup>\n <OverflowMenuGroup>\n <IconButton\n icon={Icon}\n label={<IconButtonText>{user.name}</IconButtonText>}\n />\n <OverflowMenu items={userMenuItems} />\n </OverflowMenuGroup>\n </ActionButtonGroup>\n </Bar>\n );\n};\n","import {\n JordskifterettIcon,\n LagmannsrettIcon,\n PersonIcon,\n SvgProps,\n TingrettIcon,\n} from '@norges-domstoler/dds-icons';\n\nexport type EmbeteType =\n | 'jordskifterett'\n | 'tingrett'\n | 'lagmannsrett'\n | 'høyesterett';\n\ntype EmbeteIconProps = {\n type?: EmbeteType;\n} & SvgProps;\n\nexport const EmbeteIcon = ({ type, ...rest }: EmbeteIconProps) => {\n switch (type) {\n case 'jordskifterett':\n return <JordskifterettIcon {...rest} />;\n case 'tingrett':\n return <TingrettIcon {...rest} />;\n case 'lagmannsrett':\n return <LagmannsrettIcon {...rest} />;\n case 'høyesterett':\n case undefined:\n return <PersonIcon {...rest} />;\n }\n};\n","import styled from 'styled-components';\n\nimport { appShellTokens } from '../AppShell.tokens';\nconst { navigation: navTokens } = appShellTokens;\n\nconst fontPackage = (small?: boolean) => {\n if (small) {\n return navTokens.logoAndVersion.logo.small;\n }\n\n return navTokens.logoAndVersion.logo;\n};\n\nexport const NavigationLogo = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'small',\n})<{ small?: boolean }>`\n font-size: ${({ small }) => fontPackage(small).fontSize};\n font-style: ${({ small }) => fontPackage(small).fontStyle};\n font-family: ${({ small }) => fontPackage(small).fontFamily};\n font-weight: ${({ small }) => fontPackage(small).fontWeight};\n line-height: ${({ small }) => fontPackage(small).lineHeight};\n letter-spacing: ${({ small }) => fontPackage(small).letterSpacing};\n text-align: middle;\n`;\n","import { ElementType, forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\n\nimport { buttonTokens as tokens } from './Button.tokens';\nimport { Spinner } from '../Spinner';\nimport { ButtonProps } from './Button.types';\nimport { ButtonWrapper, StyledIconWrapperSpan, Label } from './Button.styles';\n\nconst {\n button: { sizes, appearances },\n} = tokens;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n label,\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\n appearance = 'filled',\n href,\n target,\n loading = false,\n loadingTooltip = 'Lagring pågår',\n fullWidth = false,\n icon,\n onClick,\n onFocus,\n onBlur,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = href ? 'a' : 'button';\n\n const hasLabel = !!children || !!label;\n const hasIcon = !!icon;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n href,\n as,\n rel: href ? 'noreferrer noopener' : undefined,\n target: href && target ? target : undefined,\n ref,\n appearance,\n purpose,\n iconPosition,\n fullWidth,\n hasLabel: hasLabel,\n hasIcon: hasIcon,\n isLoading: loading,\n size,\n onClick: (\n event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,\n ) => {\n if (!loading && onClick) {\n onClick(event);\n }\n },\n onFocus,\n onBlur,\n };\n\n const isIconButton = !hasLabel && hasIcon;\n\n const iconElement = icon && (\n <StyledIconWrapperSpan\n size={size}\n isHidden={hasIcon && loading}\n justIcon={isIconButton}\n >\n <Icon icon={icon} iconSize=\"inherit\" />\n </StyledIconWrapperSpan>\n );\n\n return (\n <ButtonWrapper {...wrapperProps} aria-disabled={loading}>\n {!isIconButton && (\n <>\n {iconPosition === 'left' && iconElement}\n <Label isHidden={loading} aria-hidden={loading}>\n {children ?? label}\n </Label>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <StyledIconWrapperSpan\n size={size}\n absolutePosition={hasIcon || hasLabel}\n >\n <Spinner\n color={appearances[appearance].purpose[purpose].base.color}\n size={sizes[size].justIcon.icon.fontSize}\n tooltip={loadingTooltip}\n />\n </StyledIconWrapperSpan>\n )}\n </ButtonWrapper>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nimport { ButtonSize } from '.';\n\nconst { colors, border, spacing, fontPackages, borderRadius, outerShadow } =\n ddsBaseTokens;\n\nexport const typographyTypes: {\n [k in ButtonSize]: StaticTypographyType;\n} = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTinyPx = calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeSmallPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst iconSizeMediumPx = calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n);\nconst iconSizeLargePx = calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n);\n\nconst svgOffset = spacing.SizesDdsSpacingLocalX0125NumberPx;\n\nconst filledButtonColors = {\n primary: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray8,\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray2,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorNeutralsGray3,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n },\n },\n danger: {\n base: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n },\n },\n active: {\n base: {\n backgroundColor: colors.DdsColorDangerDarker,\n borderColor: colors.DdsColorDangerDarker,\n },\n },\n },\n};\n\nconst sizes = {\n large: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeLargePx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX1,\n },\n wrapper: {\n height: `${iconSizeLargePx}px`,\n width: `${iconSizeLargePx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX1 },\n },\n medium: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeMediumPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX075,\n },\n wrapper: {\n height: `${iconSizeMediumPx}px`,\n width: `${iconSizeMediumPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${\n spacing.SizesDdsSpacingLocalX15NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX075 },\n },\n small: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeSmallPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n wrapper: {\n height: `${iconSizeSmallPx}px`,\n width: `${iconSizeSmallPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${\n spacing.SizesDdsSpacingLocalX1NumberPx - 2\n }px`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n tiny: {\n justIcon: {\n icon: {\n fontSize: `${iconSizeTinyPx + svgOffset}px`,\n padding: spacing.SizesDdsSpacingLocalX025,\n },\n wrapper: {\n height: `${iconSizeTinyPx}px`,\n width: `${iconSizeTinyPx}px`,\n },\n },\n text: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n textAndIcon: { gap: spacing.SizesDdsSpacingLocalX05 },\n },\n};\n\nconst appearances = {\n filled: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: outerShadow.DdsShadow1Onlight,\n },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n ghost: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n borderColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n secondary: {\n base: {\n color: colors.DdsColorNeutralsGray7,\n borderColor: colors.DdsColorNeutralsGray7,\n },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n danger: {\n base: {\n color: colors.DdsColorDangerBase,\n borderColor: colors.DdsColorDangerBase,\n },\n hover: {\n color: colors.DdsColorDangerDark,\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n borderColor: colors.DdsColorDangerDarkest,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarkest}`,\n },\n },\n },\n },\n borderless: {\n base: {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n textDecoration: 'underline',\n textDecorationColor: 'transparent',\n },\n purpose: {\n primary: {\n base: {\n color: colors.DdsColorInteractiveBase,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n textDecorationColor: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDarker,\n textDecorationColor: colors.DdsColorInteractiveDarker,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n },\n active: {\n borderColor: colors.DdsColorInteractiveDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n },\n },\n secondary: {\n base: { color: colors.DdsColorNeutralsGray7 },\n hover: {\n color: colors.DdsColorNeutralsGray8,\n textDecorationColor: colors.DdsColorNeutralsGray8,\n },\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorNeutralsGray8,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray8}`,\n },\n active: {\n borderColor: colors.DdsColorNeutralsGray9,\n boxShadow: `0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n },\n },\n danger: {\n base: { color: colors.DdsColorDangerBase },\n hover: {\n color: colors.DdsColorDangerDarker,\n textDecorationColor: colors.DdsColorDangerDarker,\n },\n active: {\n color: colors.DdsColorDangerDarkest,\n textDecorationColor: colors.DdsColorDangerDarkest,\n },\n icon: {\n hover: {\n borderColor: colors.DdsColorDangerDark,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDark}`,\n },\n active: {\n borderColor: colors.DdsColorDangerDarker,\n boxShadow: `0 0 0 1px ${colors.DdsColorDangerDarker}`,\n },\n },\n },\n },\n },\n rounded: {\n base: { borderRadius: '100px', boxShadow: outerShadow.DdsShadow1Onlight },\n purpose: {\n primary: {\n base: filledButtonColors.primary.base,\n hover: filledButtonColors.primary.hover.base,\n active: filledButtonColors.primary.active.base,\n },\n secondary: {\n base: filledButtonColors.secondary.base,\n hover: filledButtonColors.secondary.hover.base,\n active: filledButtonColors.secondary.active.base,\n },\n danger: {\n base: filledButtonColors.danger.base,\n hover: filledButtonColors.danger.hover.base,\n active: filledButtonColors.danger.active.base,\n },\n },\n },\n};\n\nconst button = {\n base: {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n },\n sizes,\n appearances,\n};\n\nexport const buttonTokens = {\n button,\n};\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport { getTextColor, TextColor } from '@norges-domstoler/dds-core';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst StyledSpinner = styled.svg<{\n $size: SpinnerProps['size'];\n $outerAnimationDelay: number;\n}>`\n display: block;\n width: ${({ $size }) => $size};\n height: ${({ $size }) => $size};\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n animation-delay: ${({ $outerAnimationDelay }) => $outerAnimationDelay}ms;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\nconst Circle = styled.circle<{\n $color: SpinnerProps['color'];\n $innerAnimationDelay: number;\n}>`\n stroke: ${({ $color }) => $color && getTextColor($color)};\n stroke-linecap: round;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n animation-delay: ${({ $innerAnimationDelay }) => $innerAnimationDelay}ms;\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -124;\n }\n }\n }\n`;\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren. */\n color?: TextColor | (string & NonNullable<unknown>);\n /**Størrelse; Setter høyde og bredde på spinneren. */\n size?: Property.Width<string>;\n /**Tekst som vises ved hover. */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = ddsBaseTokens.iconSizes.DdsIconsizeMedium,\n color = 'interactive',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = React.useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n const spinnerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $outerAnimationDelay: outerAnimationDelay,\n $size: size,\n };\n\n return (\n <StyledSpinner\n viewBox=\"0 0 50 50\"\n role=\"img\"\n aria-labelledby={uniqueId}\n {...spinnerProps}\n >\n {tooltip && <title id={uniqueId}>{tooltip}</title>}\n <Circle\n $innerAnimationDelay={innerAnimationDelay}\n $color={color}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n />\n </StyledSpinner>\n );\n}\n\nSpinner.displayName = 'Spinner';\n","import styled, { css } from 'styled-components';\nimport { normalizeButton, selection } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { buttonTokens as tokens, typographyTypes } from './Button.tokens';\nimport {\n ButtonAppearance,\n ButtonPurpose,\n ButtonSize,\n IconPosition,\n} from './Button.types';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst {\n button: { base, sizes, appearances },\n} = tokens;\n\nconst getAppearanceAndPurposeStyling = (\n appearance: ButtonAppearance,\n purpose: ButtonPurpose,\n) => {\n switch (appearance) {\n case 'filled':\n case 'rounded':\n return css`\n background-color: ${appearances[appearance].purpose[purpose].base\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].base\n .borderColor};\n &:hover {\n background-color: ${appearances[appearance].purpose[purpose].hover\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].hover\n .borderColor};\n }\n &:active {\n background-color: ${appearances[appearance].purpose[purpose].active\n .backgroundColor};\n border-color: ${appearances[appearance].purpose[purpose].active\n .borderColor};\n }\n `;\n case 'ghost':\n return css`\n background-color: ${appearances.ghost.base.backgroundColor};\n border-color: ${appearances.ghost.purpose[purpose].base.borderColor};\n &:hover {\n color: ${appearances.ghost.purpose[purpose].hover.color};\n border-color: ${appearances.ghost.purpose[purpose].hover.borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].hover.boxShadow};\n }\n &:active {\n color: ${appearances.ghost.purpose[purpose].active.color};\n border-color: ${appearances.ghost.purpose[purpose].active\n .borderColor};\n box-shadow: ${appearances.ghost.purpose[purpose].active.boxShadow};\n }\n `;\n case 'borderless':\n return css`\n background-color: ${appearances.borderless.base.backgroundColor};\n border-color: ${appearances.borderless.base.borderColor};\n text-decoration: ${appearances.borderless.base.textDecoration};\n text-decoration-color: ${appearances.borderless.base\n .textDecorationColor};\n &:hover {\n color: ${appearances.borderless.purpose[purpose].hover.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose].hover\n .textDecorationColor};\n }\n &:active {\n color: ${appearances.borderless.purpose[purpose].active.color};\n text-decoration-color: ${appearances.borderless.purpose[purpose]\n .active.textDecorationColor};\n }\n `;\n }\n};\n\ninterface ButtonWrapperProps {\n appearance: ButtonAppearance;\n purpose: ButtonPurpose;\n size: ButtonSize;\n fullWidth: boolean;\n hasIcon: boolean;\n hasLabel: boolean;\n isLoading: boolean;\n iconPosition?: IconPosition;\n}\n\nexport const ButtonWrapper = styled.button.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ButtonWrapperProps)[] = [\n 'appearance',\n 'purpose',\n 'size',\n 'fullWidth',\n 'hasIcon',\n 'hasLabel',\n 'isLoading',\n 'iconPosition',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ButtonWrapperProps>`\n ${normalizeButton}\n border: ${base.border};\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'fit-content')};\n cursor: ${({ isLoading }) => (isLoading ? 'not-allowed' : 'pointer')};\n box-shadow: none;\n text-decoration: none;\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n text-decoration-color 0.2s,\n box-shadow 0.2s,\n border-color 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ appearance, purpose }) => css`\n border-radius: ${appearances[appearance].base.borderRadius};\n box-shadow: ${appearances[appearance].base.boxShadow};\n color: ${appearances[appearance].purpose[purpose].base.color};\n ${getAppearanceAndPurposeStyling(appearance, purpose)}\n `}\n\n ${({ hasIcon, hasLabel, appearance, purpose }) =>\n hasIcon &&\n !hasLabel &&\n appearance === 'borderless' &&\n css`\n &:hover {\n border-color: ${appearances[appearance].purpose[purpose].icon.hover.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.hover.boxShadow};\n }\n &:active {\n border-color:: ${appearances[appearance].purpose[purpose].icon.active.borderColor};\n box-shadow: ${appearances[appearance].purpose[purpose].icon.active.boxShadow};\n }\n `}\n ${({ hasIcon, hasLabel, size }) =>\n hasIcon &&\n hasLabel &&\n css`\n gap: ${sizes[size].textAndIcon.gap};\n `}\n\n ${({ size, hasLabel }) =>\n hasLabel\n ? css`\n ${getFontStyling(typographyTypes[size])}\n padding: ${sizes[size].text.padding};\n `\n : css`\n font-size: ${sizes[size].justIcon.icon.fontSize};\n padding: ${sizes[size].justIcon.icon.padding};\n `}\n\n ${({ fullWidth, hasIcon, hasLabel, isLoading, iconPosition }) =>\n fullWidth &&\n (!hasIcon || !hasLabel || isLoading\n ? css`\n justify-content: center;\n `\n : hasIcon && hasLabel && iconPosition === 'left'\n ? css`\n justify-content: left;\n `\n : css`\n justify-content: space-between;\n `)}\n\n &:focus-visible, &.focus-visible {\n ${focusVisible}\n }\n\n *::selection {\n ${selection}\n }\n`;\n\ninterface StyledIconWrapperSpanProps {\n iconPosition?: IconPosition;\n size: ButtonSize;\n absolutePosition?: boolean;\n isHidden?: boolean;\n justIcon?: boolean;\n}\n\nexport const StyledIconWrapperSpan = styled.span.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledIconWrapperSpanProps)[] = [\n 'iconPosition',\n 'size',\n 'absolutePosition',\n 'isHidden',\n 'justIcon',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledIconWrapperSpanProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n ${({ absolutePosition }) =>\n absolutePosition &&\n css`\n position: absolute;\n `}\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n ${({ justIcon, size }) =>\n justIcon &&\n css`\n height: ${sizes[size].justIcon.wrapper.height};\n width: ${sizes[size].justIcon.wrapper.width};\n `}\n`;\n\ninterface LabelProps {\n isHidden?: boolean;\n}\n\nexport const Label = styled.span.withConfig({\n shouldForwardProp: prop => prop !== 'isHidden',\n})<LabelProps>`\n ${({ isHidden }) =>\n isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n","import { forwardRef, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { selection, visibilityTransition } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useFloatPosition,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport { OverflowMenuItem } from './OverflowMenuItem';\nimport { overflowMenuTokens as tokens } from './OverflowMenu.tokens';\nimport { Divider } from '../Divider';\nimport {\n OverflowMenuContextItem,\n OverflowMenuNavItem,\n OverflowMenuProps,\n} from '.';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { PersonIcon } from '@norges-domstoler/dds-icons';\n\nconst { container, divider } = tokens;\n\ninterface ContainerProps {\n $isOpen: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n box-sizing: border-box;\n z-index: 100;\n overflow-y: auto;\n min-width: 180px;\n max-width: 300px;\n ${({ $isOpen }) => visibilityTransition($isOpen)}\n border: ${container.border};\n background-color: ${container.backgroundColor};\n border-radius: ${container.borderRadius};\n\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n\n *::selection {\n ${selection}\n }\n`;\n\nexport const OverflowMenuList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nconst StyledDivider = styled(Divider)`\n margin-left: ${divider.marginLeft};\n margin-right: ${divider.marginRight};\n`;\n\nexport const OverflowMenu = forwardRef<HTMLDivElement, OverflowMenuProps>(\n (props, ref) => {\n const {\n anchorRef,\n onClose,\n onToggle,\n isOpen = false,\n placement = 'bottom-end',\n items,\n navItems,\n userProps,\n id,\n offset = tokens.offset,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n\n const combinedRef = useCombinedRef(ref, refs.setFloating);\n\n useEffect(() => {\n anchorRef\n ? refs.setReference(anchorRef.current)\n : refs.setReference(null);\n }, [anchorRef]);\n\n useOnClickOutside(\n [refs?.floating?.current, refs?.reference?.current as HTMLElement | null],\n () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n },\n );\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n anchorRef && anchorRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n if (isOpen) {\n onClose && onClose();\n onToggle && onToggle();\n }\n });\n\n const interactiveItems: (OverflowMenuContextItem | OverflowMenuNavItem)[] =\n [];\n\n const hasContextItems = !!items && items.length > 0;\n const hasNavItems = !!navItems && navItems.length > 0;\n const { name: username, ...userPropsRest } = userProps ?? {};\n const hasStaticUser =\n username && userProps && !userProps.href && !userProps.onClick;\n const hasInteractiveUser =\n username && userProps && (!!userProps.href || !!userProps.onClick);\n\n hasInteractiveUser &&\n interactiveItems.push({ title: username, ...userPropsRest });\n hasNavItems && interactiveItems.push(...navItems);\n hasContextItems && interactiveItems.push(...items);\n\n const hasInteractiveItems = interactiveItems.length > 0;\n\n const [focus, setFocus] = useRoveFocus(interactiveItems?.length, !isOpen);\n\n const interactiveItemsList = hasInteractiveItems\n ? interactiveItems.map((item, index) => (\n <li key={index}>\n <OverflowMenuItem\n index={index}\n focus={focus === index && isOpen}\n setFocus={setFocus}\n icon={hasInteractiveUser && index === 0 ? PersonIcon : undefined}\n {...item}\n onClick={(\n e: React.MouseEvent<HTMLAnchorElement, MouseEvent> &\n React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n item.onClick && item.onClick(e);\n onToggle && onToggle();\n onClose && onClose();\n }}\n />\n </li>\n ))\n : null;\n\n const interactiveContent = () => {\n if (hasInteractiveItems) {\n const userPropsPos = hasInteractiveUser ? 0 : -1;\n const navItemsFirstPos = hasNavItems ? userPropsPos + 1 : -1;\n const navItemsLastPos = hasNavItems\n ? userPropsPos + navItems.length\n : -1;\n const contextItemsFirstPos = !hasContextItems\n ? -1\n : hasNavItems\n ? navItemsLastPos + 1\n : userPropsPos + 1;\n return (\n <>\n {hasInteractiveUser && (\n <OverflowMenuList>{interactiveItemsList?.[0]}</OverflowMenuList>\n )}\n {hasNavItems && (\n <nav>\n <OverflowMenuList>\n {interactiveItemsList?.slice(\n navItemsFirstPos,\n navItemsLastPos + 1,\n )}\n </OverflowMenuList>\n </nav>\n )}\n {hasNavItems && hasContextItems && (\n <StyledDivider color=\"primaryLighter\" />\n )}\n {hasContextItems && (\n <OverflowMenuList aria-label=\"kontekstmeny\">\n {interactiveItemsList?.slice(\n contextItemsFirstPos,\n interactiveItemsList.length,\n )}\n </OverflowMenuList>\n )}\n </>\n );\n }\n };\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const generatedId = useId();\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, restHTMLProps, rest),\n ref: combinedRef,\n id: id ?? `${generatedId}-overflowMenu`,\n $isOpen: isOpen,\n style: { ...style, ...styles.floating },\n 'aria-hidden': !isOpen,\n role: 'menu',\n };\n\n return (\n <Container {...containerProps} aria-label=\"bruk piltaster for å navigere\">\n {hasStaticUser && (\n <OverflowMenuItem title={username} icon={PersonIcon} />\n )}\n\n {interactiveContent()}\n </Container>\n );\n },\n);\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n RefObject,\n useEffect,\n useRef,\n useState,\n useCallback,\n MouseEvent,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\n\nconst { track, thumb, minThumbHeightPx } = tokens;\n\nconst ScrollbarOuterWrapper = styled.div``;\n\nconst ScrollbarElements = styled.div`\n display: block;\n height: 100%;\n position: relative;\n display: grid;\n justify-items: center;\n`;\n\nconst Track = styled.div`\n bottom: 0;\n top: 0;\n position: absolute;\n background-color: ${track.backgroundColor};\n border-radius: ${track.borderRadius};\n width: ${track.width};\n`;\n\nconst Thumb = styled.div`\n position: absolute;\n background-color: ${thumb.base.backgroundColor};\n border-radius: ${thumb.base.borderRadius};\n width: ${thumb.base.width};\n transition: background-color 0.2s;\n &:hover {\n background-color: ${thumb.hover.backgroundColor};\n }\n`;\n\nexport type ScrollbarProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Ref til container med innholdet som skal scrolles. */\n contentRef?: RefObject<HTMLDivElement>;\n }\n>;\n\nexport const Scrollbar = (props: ScrollbarProps) => {\n const { id, className, htmlProps, contentRef, ...rest } = props;\n const trackRef = useRef<HTMLDivElement>(null);\n const thumbRef = useRef<HTMLDivElement>(null);\n const [thumbHeight, setThumbHeight] = useState(minThumbHeightPx);\n const [isScrollable, setIsScrollable] = useState(true);\n const [thumbTop, setThumbTop] = useState<number>(0);\n const observer = useRef<ResizeObserver | null>(null);\n const [scrollStartPosition, setScrollStartPosition] = useState<number>(0);\n const [initialScrollTop, setInitialScrollTop] = useState<number>(0);\n const [isDragging, setIsDragging] = useState(false);\n\n function handleResize(ref: HTMLDivElement, trackSize: number) {\n const { clientHeight, scrollHeight } = ref;\n setIsScrollable(clientHeight !== scrollHeight);\n setThumbHeight(\n Math.max((clientHeight / scrollHeight) * trackSize, minThumbHeightPx),\n );\n }\n\n const handleTrackClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (contentRef?.current) {\n const { current: trackCurrent } = trackRef;\n const { current: contentCurrent } = contentRef;\n if (trackCurrent && contentCurrent) {\n const { clientY } = e;\n const target = e.target as HTMLDivElement;\n const rect = target.getBoundingClientRect();\n const trackTop = rect.top;\n const thumbOffset = -(thumbHeight / 2);\n const clickRatio =\n (clientY - trackTop + thumbOffset) / trackCurrent.clientHeight;\n const scrollAmount = Math.floor(\n clickRatio * contentCurrent.scrollHeight,\n );\n contentCurrent.scrollTo({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n },\n [thumbHeight],\n );\n\n const handleThumbPositioning = useCallback(() => {\n if (!contentRef?.current || !trackRef.current || !thumbRef.current) {\n return;\n }\n const { scrollTop: contentTop, scrollHeight: contentHeight } =\n contentRef.current;\n const { clientHeight } = trackRef.current;\n let newTop = (+contentTop / +contentHeight) * clientHeight;\n newTop = Math.min(newTop, clientHeight - thumbHeight);\n setThumbTop(newTop);\n }, []);\n\n useEffect(() => {\n if (contentRef?.current && trackRef.current) {\n const ref = contentRef.current;\n const { clientHeight } = trackRef.current;\n observer.current = new ResizeObserver(() => {\n handleResize(ref, clientHeight);\n });\n observer.current.observe(ref);\n ref.addEventListener('scroll', handleThumbPositioning);\n return () => {\n observer.current?.unobserve(ref);\n ref.removeEventListener('scroll', handleThumbPositioning);\n };\n }\n }, []);\n\n const handleThumbMousedown = useCallback((e: MouseEvent<HTMLDivElement>) => {\n setScrollStartPosition(e.clientY);\n if (contentRef?.current) setInitialScrollTop(contentRef.current.scrollTop);\n setIsDragging(true);\n }, []);\n\n const handleThumbMouseup = useCallback(() => {\n if (isDragging) {\n setIsDragging(false);\n }\n }, [isDragging]);\n\n const handleThumbMousemove = useCallback(\n (e: globalThis.MouseEvent) => {\n if (contentRef?.current) {\n if (isDragging) {\n const {\n scrollHeight: contentScrollHeight,\n offsetHeight: contentOffsetHeight,\n } = contentRef.current;\n\n const deltaY =\n (e.clientY - scrollStartPosition) *\n (contentOffsetHeight / thumbHeight);\n const newScrollTop = Math.min(\n initialScrollTop + deltaY,\n contentScrollHeight - contentOffsetHeight,\n );\n\n contentRef.current.scrollTop = newScrollTop;\n }\n }\n },\n [isDragging, scrollStartPosition, thumbHeight],\n );\n\n useEffect(() => {\n document.addEventListener('mousemove', handleThumbMousemove);\n document.addEventListener('mouseup', handleThumbMouseup);\n document.addEventListener('mouseleave', handleThumbMouseup);\n return () => {\n document.removeEventListener('mousemove', handleThumbMousemove);\n document.removeEventListener('mouseup', handleThumbMouseup);\n document.removeEventListener('mouseleave', handleThumbMouseup);\n };\n }, [handleThumbMousemove, handleThumbMouseup]);\n\n return isScrollable ? (\n <ScrollbarOuterWrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ScrollbarElements>\n <Track ref={trackRef} onClick={handleTrackClick} />\n <Thumb\n style={{\n height: thumbHeight,\n top: thumbTop,\n }}\n ref={thumbRef}\n onMouseDown={handleThumbMousedown}\n />\n </ScrollbarElements>\n </ScrollbarOuterWrapper>\n ) : null;\n};\n\nScrollbar.displayName = 'Scrollbar';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nexport const scrollbarWidthNumberPx = 10;\nconst scrollbarWidth = `${scrollbarWidthNumberPx}px`;\nconst { colors, spacing } = ddsBaseTokens;\n\nconst track = {\n backgroundColor: 'transparent',\n borderRadius: '100px',\n width: scrollbarWidth,\n};\n\nconst thumb = {\n base: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.35)',\n borderRadius: '100px',\n width: scrollbarWidth,\n },\n hover: {\n backgroundColor: colors.DdsColorPrimaryDarkest.slice(0, -2) + '0.5)',\n },\n};\n\nconst content = {\n paddingRight: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const scrollbarTokens = {\n minThumbHeightPx: 15,\n track,\n thumb,\n content,\n outerContainer,\n};\n","import { useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Scrollbar } from './Scrollbar';\nimport { Property } from 'csstype';\nimport { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nconst { track, content, outerContainer } = tokens;\n\nconst StyledScrollableContainer = styled.div`\n grid-template: auto / 1fr ${track.width};\n overflow: hidden;\n position: relative;\n display: grid;\n padding: ${outerContainer.padding};\n`;\n\nconst Content = styled.div<{\n $height: Property.Height;\n}>`\n height: ${({ $height }) => $height};\n overflow: auto;\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n padding-right: ${content.paddingRight};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n :focus-visible,\n .focus-visible {\n outline: ${focusVisible.outline};\n outline-offset: ${focusVisible.outlineOffset};\n }\n`;\n\nexport type ScrollableContainerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Høyde på innholdscontainer. */\n contentHeight?: Property.Height;\n }\n>;\n\nexport const ScrollableContainer = (props: ScrollableContainerProps) => {\n const {\n children,\n id,\n className,\n contentHeight = '90vh',\n htmlProps,\n ...rest\n } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n return (\n <StyledScrollableContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Content $height={contentHeight} ref={ref} tabIndex={0}>\n {children}\n </Content>\n <Scrollbar contentRef={ref} />\n </StyledScrollableContainer>\n );\n};\n\nScrollableContainer.displayName = 'ScrollableContainer';\n","import { scrollbarTokens as tokens } from './ScrollableContainer.tokens';\nimport { Property } from 'csstype';\n\nconst { thumb, track } = tokens;\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\n/**\n * CSS-in-JS scrollbar styling til bruk der det ikke passer å bruke dedikerte komponenter. Inkluderer styling for webkit pseudo-elementer og for Firefox.\n */\nexport const scrollbarStyling = {\n webkit: {\n /* width */\n '&::-webkit-scrollbar': {\n width: track.width,\n height: track.width,\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: track.backgroundColor,\n borderRadius: track.borderRadius,\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: thumb.base.backgroundColor,\n borderRadius: thumb.base.borderRadius,\n },\n },\n /* Handle on hover */\n '&::-webkit-scrollbar-thumb:hover': {\n background: thumb.hover.backgroundColor,\n },\n firefox: {\n scrollbarColor: thumb.base.backgroundColor + ' ' + track.backgroundColor,\n scrollbarWidth: scrollbarWidth,\n },\n};\n","import {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n Dispatch,\n SetStateAction,\n MouseEvent,\n KeyboardEvent,\n ForwardedRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n overflowMenuTokens as tokens,\n typographyType,\n} from './OverflowMenu.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { normalizeButton } from '@norges-domstoler/dds-core';\nimport {\n focusVisibleLink,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nconst { element, link } = tokens;\n\nconst elementBaseCSS = css`\n display: flex;\n box-sizing: border-box;\n color: ${element.base.color};\n text-decoration: ${element.base.textDecoration};\n background-color: ${element.base.backgroundColor};\n padding: ${element.base.padding};\n gap: ${element.base.gap};\n ${getFontStyling(typographyType)}\n`;\n\nexport const Span = styled.span`\n ${elementBaseCSS}\n`;\n\nexport const Link = styled.a`\n ${normalizeButton}\n text-align: left;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n ${elementBaseCSS}\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n &:hover {\n background-color: ${link.hover.backgroundColor};\n }\n &:active {\n background-color: ${link.active.backgroundColor};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisibleLink}\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n height: ${link.iconWrapper.height};\n`;\n\ninterface BaseOverflowMenuItemProps {\n title: string;\n icon?: SvgIcon;\n focus?: boolean;\n setFocus?: Dispatch<SetStateAction<number>>;\n index?: number;\n isMenuClosed?: boolean;\n}\n\ntype AnchorOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLAnchorElement,\n {\n href?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n >;\n\ntype ButtonOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<\n HTMLButtonElement,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>,\n ButtonHTMLAttributes<HTMLButtonElement>\n >;\n\ntype OtherOverflowMenuItemProps = BaseOverflowMenuItemProps &\n BaseComponentProps<HTMLSpanElement>;\n\nexport type OverflowMenuItemProps =\n | AnchorOverflowMenuItemProps\n | ButtonOverflowMenuItemProps\n | OtherOverflowMenuItemProps;\n\nconst isAnchorProps = (\n props: OverflowMenuItemProps,\n): props is AnchorOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href !== undefined;\n\nconst isButtonProps = (\n props: OverflowMenuItemProps,\n): props is ButtonOverflowMenuItemProps =>\n (props as AnchorOverflowMenuItemProps).href === undefined &&\n (props as ButtonOverflowMenuItemProps).onClick !== undefined;\n\nexport const OverflowMenuItem = forwardRef<\n HTMLAnchorElement,\n OverflowMenuItemProps\n>((props, ref) => {\n const {\n title,\n icon,\n focus,\n setFocus,\n index,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { onKeyDown } = htmlProps;\n\n let href: AnchorOverflowMenuItemProps['href'];\n let onClick: ButtonOverflowMenuItemProps['onClick'];\n if (isAnchorProps(props)) {\n href = props.href;\n } else if (isButtonProps(props)) {\n onClick = props.onClick;\n }\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (\n e: MouseEvent<HTMLAnchorElement> & MouseEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n const linkProps = {\n href,\n onClick: handleOnClick,\n onKeyDown: handleOnKeyDown,\n role: 'menuitem',\n tabIndex: focus ? 0 : -1,\n };\n const iconElement = icon && <Icon iconSize=\"inherit\" icon={icon} />;\n\n if (!href && !onClick) {\n return (\n <Span {...{ ...getBaseHTMLProps(id, className, htmlProps, rest), ref }}>\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Span>\n );\n }\n\n if (!href) {\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"button\"\n ref={combinedRef as ForwardedRef<HTMLButtonElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n }\n\n return (\n <Link\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n {...linkProps}\n as=\"a\"\n ref={combinedRef as ForwardedRef<HTMLAnchorElement>}\n >\n <IconWrapper>{iconElement}</IconWrapper>\n {title}\n </Link>\n );\n});\n\nOverflowMenuItem.displayName = 'OverflowMenuItem';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { border, borderRadius, colors, spacing, fontPackages } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst element = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n textDecoration: 'none',\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n};\n\nconst iconHeight = calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n);\n\nconst link = {\n iconWrapper: {\n height: `${iconHeight}px`,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nconst container = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst divider = {\n marginRight: spacing.SizesDdsSpacingLocalX15,\n marginLeft: spacing.SizesDdsSpacingLocalX15,\n};\n\nexport const overflowMenuTokens = {\n container,\n element,\n link,\n divider,\n offset: spacing.SizesDdsSpacingLocalX0125NumberPx,\n};\n","import {\n useRef,\n useState,\n Children as ReactChildren,\n ReactNode,\n isValidElement,\n cloneElement,\n ReactElement,\n useId,\n} from 'react';\n\nexport interface OverflowMenuGroupProps {\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes og lukkes. */\n onToggle?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<OverflowMenu />` lukkes. */\n onClose?: () => void;\n /**Barn, anchor-elementet som første og `<OverflowMenu />` som andre. */\n children: ReactNode;\n /**Custom id for `<OverflowMenu />`. */\n overflowMenuId?: string;\n}\n\nexport const OverflowMenuGroup = ({\n children,\n onClose,\n onToggle,\n onOpen,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const handleClose = () => {\n onClose && onClose();\n close();\n };\n\n const handleToggle = () => {\n onOpen && !isOpen && onOpen();\n onClose && isOpen && onClose();\n onToggle && onToggle();\n toggle();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: isOpen,\n id: uniqueOverflowMenuId,\n onClose: handleClose,\n onToggle: handleToggle,\n anchorRef: buttonRef,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n","import { AppShell as BaseAppShell, AppShellProps } from './AppShell';\nimport { NavigationItem } from './Navigation/NavigationItem';\n\ntype CompoundAppShell = typeof BaseAppShell & {\n NavItem: typeof NavigationItem;\n};\n\nconst AppShell = BaseAppShell as CompoundAppShell;\nAppShell.NavItem = NavigationItem;\n\nexport { AppShell, type AppShellProps };\n","import { ChangeEvent, forwardRef, useId } from 'react';\nimport { getBaseHTMLProps, cn, Nullable } from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\n\nimport { RadioButtonProps } from './RadioButton.types';\nimport {\n RadioButtonGroup,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { Container, CustomSelectionControl } from '../SelectionControl.styles';\n\nconst isValueEqualToGroupValueOrFalsy = (\n value: unknown,\n group: Nullable<RadioButtonGroup>,\n): boolean => {\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n return !!value;\n};\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n disabled = false,\n readOnly = false,\n error = false,\n checked,\n value,\n children,\n required = false,\n onChange,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const inputProps = {\n ...getBaseHTMLProps(uniqueId, restHtmlProps, rest),\n type: 'radio',\n name: name ?? radioButtonGroup?.name,\n disabled:\n disabled ||\n readOnly ||\n !!radioButtonGroup?.disabled ||\n !!radioButtonGroup?.readOnly,\n required: required || !!radioButtonGroup?.required,\n checked:\n typeof checked !== 'undefined'\n ? checked\n : isValueEqualToGroupValueOrFalsy(value, radioButtonGroup),\n onChange: handleChange,\n value: value,\n 'aria-describedby':\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': error || radioButtonGroup?.error ? true : undefined,\n };\n\n return (\n <Container\n $error={error || radioButtonGroup?.error}\n disabled={disabled || radioButtonGroup?.disabled}\n $readOnly={readOnly || radioButtonGroup?.readOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n $hasLabel={hasLabel}\n htmlFor={uniqueId}\n $controlType=\"radio\"\n >\n <HiddenInput {...inputProps} ref={ref} />\n <CustomSelectionControl $controlType=\"radio\" />\n <Typography as=\"span\">{children ?? label}</Typography>\n </Container>\n );\n },\n);\n\nRadioButton.displayName = 'RadioButton';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport React, { ChangeEvent, useContext } from 'react';\n\nexport interface RadioButtonGroup {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: string | number | null;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioButtonGroupContext =\n React.createContext<Nullable<RadioButtonGroup>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import styled, { css } from 'styled-components';\nimport { Direction } from '@norges-domstoler/dds-core';\nimport {\n focusVisible,\n focusVisibleTransitionValue,\n} from '@norges-domstoler/dds-form';\n\nimport { selectionControlTokens } from './SelectionControl.tokens';\n\nconst {\n selectionControl,\n container,\n checkmark,\n groupContainer,\n outerGroupContainer,\n} = selectionControlTokens;\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\nexport const CustomSelectionControl = styled.span<{\n $controlType?: SelectionControlType;\n}>`\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: ${selectionControl.base.border};\n border-color: ${selectionControl.base.borderColor};\n background-color: ${selectionControl.base.backgroundColor};\n border-radius: ${selectionControl.base.borderRadius};\n height: ${selectionControl.base.height};\n width: ${selectionControl.base.width};\n ${({ $controlType }) =>\n $controlType === 'radio' &&\n css`\n border-radius: 50%;\n `}\n &:after {\n content: '';\n position: absolute;\n display: none;\n }\n`;\n\nexport const Container = styled.label<{\n $hasLabel?: boolean;\n disabled?: boolean;\n $readOnly?: boolean;\n $error?: boolean;\n $controlType: SelectionControlType;\n}>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n width: fit-content;\n color: ${container.color};\n ${({ $hasLabel }) =>\n $hasLabel\n ? css`\n padding-left: ${container.withLabel.paddingLeft};\n `\n : css`\n padding: ${container.noLabel.padding};\n `}\n\n input ~ ${CustomSelectionControl} {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s;\n }\n }\n\n &:focus-within {\n ${focusVisible}\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n }\n\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.base.backgroundColor};\n box-shadow: ${selectionControl.hover.base.boxShadow};\n border-color: ${selectionControl.hover.base.borderColor};\n }\n\n input:checked:enabled\n ~ ${CustomSelectionControl},\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n border-color: ${selectionControl.checked.base.borderColor};\n background-color: ${selectionControl.checked.base.backgroundColor};\n }\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:enabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.hover.backgroundColor};\n box-shadow: ${selectionControl.checked.hover.boxShadow};\n border-color: ${selectionControl.checked.hover.borderColor};\n }\n\n ${({ $error }) =>\n $error &&\n css`\n &:hover input:enabled ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.hover.danger.backgroundColor};\n box-shadow: ${selectionControl.hover.danger.boxShadow};\n border-color: ${selectionControl.hover.danger.borderColor};\n }\n input\n ~ ${CustomSelectionControl},\n input:checked:enabled\n ~ ${CustomSelectionControl},\n &:hover\n input:checked:enabled\n ~ ${CustomSelectionControl} {\n box-shadow: ${selectionControl.danger.boxShadow};\n border-color: ${selectionControl.danger.borderColor};\n }\n `}\n input:disabled ~ ${CustomSelectionControl} {\n ${selectionControl.disabled}\n }\n input:checked:disabled\n ~ ${CustomSelectionControl},\n input:disabled[data-indeterminate='true']\n ~ ${CustomSelectionControl} {\n background-color: ${selectionControl.checked.disabled.backgroundColor};\n border-color: ${selectionControl.checked.disabled.borderColor};\n }\n input:checked\n ~ ${CustomSelectionControl}:after,\n input[data-indeterminate='true']\n ~ ${CustomSelectionControl}:after {\n display: block;\n }\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: not-allowed;\n color: ${container.disabled.color};\n `}\n ${({ $controlType }) =>\n $controlType === 'checkbox'\n ? css`\n ${CustomSelectionControl}:after {\n border: solid ${checkmark.checkbox.borderColor};\n\n border-width: 0 1px 1px 0;\n left: 35%;\n top: 10%;\n width: 30%;\n height: 65%;\n transform: rotate(45deg);\n }\n input[data-indeterminate='true'] ~ ${CustomSelectionControl}:after {\n border-width: 1px 0 0 0;\n left: 25%;\n top: 50%;\n width: 50%;\n height: 1px;\n transform: none;\n }\n `\n : css`\n ${CustomSelectionControl}:after {\n border-radius: 50%;\n background-color: ${checkmark.radio.backgroundColor};\n width: ${checkmark.radio.width};\n height: ${checkmark.radio.height};\n left: ${checkmark.radio.left};\n top: ${checkmark.radio.top};\n }\n `}\n`;\n\nexport const OuterGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerGroupContainer.gap};\n`;\n\nexport const GroupContainer = styled.div<{ $direction: Direction }>`\n display: flex;\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${groupContainer[$direction].gap};\n `}\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { hoverInputfield, dangerInputfield } from '@norges-domstoler/dds-form';\n\nimport {\n selectionControlSize,\n selectionControlSizeNumberPx,\n} from './SelectionControl.utils';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nconst checkmark = {\n checkbox: {\n borderColor: colors.DdsColorNeutralsWhite,\n },\n radio: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n height: spacing.SizesDdsSpacingLocalX05,\n width: spacing.SizesDdsSpacingLocalX05,\n left: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n top: `calc(50% - ${spacing.SizesDdsSpacingLocalX05NumberPx / 2}px)`,\n },\n};\n\nconst selectionControl = {\n base: {\n border: '1px solid',\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n height: selectionControlSize,\n width: selectionControlSize,\n },\n hover: {\n base: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${hoverInputfield.borderColor}`,\n borderColor: hoverInputfield.borderColor,\n },\n danger: {\n backgroundColor: colors.DdsColorDangerLightest,\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n },\n danger: {\n boxShadow: `inset 0 0 0 1px ${dangerInputfield.borderColor}`,\n borderColor: dangerInputfield.borderColor,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: { backgroundColor: 'transparent' },\n checked: {\n base: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveDark,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDark}`,\n borderColor: colors.DdsColorInteractiveDark,\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n readOnly: {\n borderColor: colors.DdsColorNeutralsGray6,\n backgroundColor: colors.DdsColorNeutralsGray6,\n },\n },\n checkbox: {\n indeterminate: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n },\n};\n\nconst container = {\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n },\n withLabel: {\n paddingLeft: `${\n selectionControlSizeNumberPx + spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n noLabel: {\n padding: `${selectionControlSizeNumberPx / 2}px`,\n },\n};\n\nconst groupContainer = {\n row: {\n gap: spacing.SizesDdsSpacingLocalX075,\n },\n column: { gap: spacing.SizesDdsSpacingLocalX05 },\n};\n\nconst outerGroupContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const selectionControlTokens = {\n selectionControl,\n checkmark,\n container,\n groupContainer,\n outerGroupContainer,\n};\n","export const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n","import {\n ChangeEvent,\n forwardRef,\n HTMLAttributes,\n ReactElement,\n Ref,\n useId,\n useState,\n} from 'react';\nimport { RadioButtonGroupContext } from './RadioButtonGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n combineHandlers,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n GroupContainer,\n OuterGroupContainer,\n} from '../SelectionControl.styles';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Ledetekst for hele gruppen. */\n label?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /**Legger en markør (*) bak label som indikerer at input er påkrevd. Gjør alle barna påkrevd ved å gi dem `required` prop. */\n required?: boolean;\n /**Meldingen som vises ved valideringsfeil. Gir alle barna error prop. */\n errorMessage?: string;\n /**Hjelpetekst for gruppen. */\n tip?: string;\n /**Gir alle barna `disabled` prop. */\n disabled?: boolean;\n /**Gir alle barna `readOnly` prop */\n readOnly?: boolean;\n /**Retningen radioknappene skal gjengis i. */\n direction?: Direction;\n /**Default verdi - en `<RadioButton />` blir forhåndsvalgt. **OBS!** brukes kun når brukeren ikke skal fylle ut selv. */\n value?: T | undefined;\n /**custom id for for gruppen, knytter `label` til gruppen via `aria-label`. */\n groupId?: string;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nconst RadioButtonGroupInner = <T extends string | number = string>(\n props: RadioButtonGroupProps<T>,\n ref: Ref<HTMLDivElement>,\n) => {\n const {\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [groupValue, setGroupValue] = useState<\n string | number | null | undefined\n >(value);\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps = {\n name,\n disabled,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n ref={ref}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"radiogroup\"\n $direction={direction}\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n >\n {children}\n </GroupContainer>\n </RadioButtonGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nexport const RadioButtonGroup = forwardRef(RadioButtonGroupInner) as <\n T extends string | number = string,\n>(\n props: RadioButtonGroupProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n// @ts-expect-error TODO fix RadioButtonGroup type\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","import styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { inputMessageTokens as tokens } from './InputMessage.tokens';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { forwardRef } from 'react';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { ErrorIcon } from '@norges-domstoler/dds-icons';\n\ninterface WrapperProps {\n messageType: InputMessageType;\n}\n\nconst InputMessageWrapper = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'messageType',\n})<WrapperProps>`\n display: flex;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n ${({ messageType }) =>\n messageType === 'error'\n ? css`\n color: ${tokens.message.error.color};\n background-color: ${tokens.message.error.backgroundColor};\n padding: ${tokens.message.error.padding};\n gap: ${tokens.message.error.gap};\n `\n : ''}\n svg {\n margin-top: ${tokens.icon.marginTop};\n }\n`;\n\nexport type InputMessageType = 'error' | 'tip';\n\nexport type InputMessageProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Meldingen som vises til brukeren. */\n message: string;\n /** Formålet med meldingen. Påvirker styling. */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = forwardRef<HTMLDivElement, InputMessageProps>(\n (props, ref) => {\n const { message, messageType, id, className, htmlProps, ...rest } = props;\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n messageType,\n };\n\n const isError = messageType === 'error';\n\n return (\n <InputMessageWrapper {...wrapperProps}>\n {isError && <Icon icon={ErrorIcon} iconSize=\"inherit\" />}\n <Typography\n typographyType={\n isError ? 'supportingStyleLabel01' : 'supportingStyleHelperText01'\n }\n as=\"span\"\n bold={isError ? true : undefined}\n color={isError ? tokens.message.error.color : undefined}\n >\n {message}\n </Typography>\n </InputMessageWrapper>\n );\n },\n);\n\nInputMessage.displayName = 'InputMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst message = {\n tip: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n error: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n color: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n};\n\nconst icon = {\n marginTop: spacing.SizesDdsSpacingLocalX0125,\n};\n\nexport const inputMessageTokens = {\n message,\n icon,\n};\n","import { InputMessage } from '../components/InputMessage';\n\nexport const renderInputMessage = (\n tip?: string,\n tipId?: string,\n errorMessage?: string,\n errorMessageId?: string,\n) => (\n <>\n {errorMessage && errorMessageId && (\n <InputMessage\n message={errorMessage}\n messageType=\"error\"\n id={errorMessageId}\n />\n )}\n {tip && tipId && !errorMessage && (\n <InputMessage message={tip} messageType=\"tip\" id={tipId} />\n )}\n </>\n);\n","import { forwardRef, useId } from 'react';\nimport {\n getBaseHTMLProps,\n cn,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\n\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { CustomSelectionControl, Container } from '../SelectionControl.styles';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n\n const {\n style,\n className: htmlPropsClassName,\n ...restHtmlProps\n } = htmlProps;\n\n type AriaChecked = 'mixed' | boolean | undefined;\n\n return (\n <Container\n $error={error || checkboxGroup?.error}\n disabled={disabled}\n htmlFor={uniqueId}\n $hasLabel={hasLabel}\n $controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n ref={ref}\n name={name}\n disabled={disabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={error || checkboxGroup?.error ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? ('mixed' as AriaChecked) : undefined}\n aria-readonly={readOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n />\n <CustomSelectionControl $controlType=\"checkbox\" />\n {hasLabel && (\n <Typography color=\"inherit\" as=\"span\" typographyType=\"bodySans02\">\n {label}\n </Typography>\n )}\n </Container>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport React, { useContext } from 'react';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n}\n\nexport const CheckboxGroupContext =\n React.createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n","import { useId } from 'react';\nimport {\n CheckboxGroupContext,\n CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n RequiredMarker,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { renderInputMessage } from '../../../utils/renderInputMessage';\nimport {\n OuterGroupContainer,\n GroupContainer,\n} from '../SelectionControl.styles';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna gjengis i. */\n direction?: Direction;\n /**Custom id for for gruppen, knytter ledetekst til gruppen via `aria-label`. */\n groupId?: string;\n /**Meldingen som vises ved valideringsfeil. Sender error-tilstand til barna når det finnes og setter `aria-describedby` for barna. */\n errorMessage?: string;\n tip?: string;\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Innebærer visuell endring. **OBS!** `required` må i tillegg gis til `<Checkbox />` manuelt. */\n required?: boolean;\n }\n>;\n\nexport const CheckboxGroup = (props: CheckboxGroupProps) => {\n const {\n label,\n direction = 'row',\n errorMessage,\n tip,\n required = false,\n groupId,\n children,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { 'aria-required': ariaRequired } = htmlProps;\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-checkboxGroup`;\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueGroupId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueGroupId, 'tip');\n\n const contextProps: CheckboxGroupContextProps = {\n error: hasErrorMessage,\n errorMessageId: errorMessage ? errorMessageId : undefined,\n uniqueGroupId,\n tipId: tip ? tipId : undefined,\n };\n\n return (\n <OuterGroupContainer\n {...getBaseHTMLProps(\n id,\n className,\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueGroupId}\n >\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext.Provider value={{ ...contextProps }}>\n <GroupContainer\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n $direction={direction}\n >\n {children}\n </GroupContainer>\n </CheckboxGroupContext.Provider>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterGroupContainer>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","import React, {\n useState,\n forwardRef,\n useId,\n useRef,\n useLayoutEffect,\n ComponentProps,\n} from 'react';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n InputSize,\n getDefaultText,\n InputContainer,\n InputAffixContainer,\n StatefulInput,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\n\nimport { textInputTokens } from './TextInput.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport CharCounter from './CharCounter';\nimport { TextAffixProps, TextInputProps } from './TextInput.types';\nimport { MessageContainer, StyledIcon, StyledInput } from './TextInput.styles';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst defaultTinyWidth: Property.Width<string> = '210px';\n\nconst getWidth = (\n size: InputSize,\n width?: Property.Width<string>,\n): Property.Width<string> => {\n if (width) return width;\n if (size === 'tiny') {\n return defaultTinyWidth;\n }\n return defaultWidth;\n};\n\nconst Affix = styled.span<TextAffixProps>`\n position: absolute;\n height: 100%;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n`;\n\nconst Prefix = styled(Affix)`\n left: 0;\n margin-left: 8px;\n padding-right: 8px;\n border-right: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-left: 0;\n padding-right: 0.5ch;\n border-right: none;\n `};\n`;\n\nconst Suffix = styled(Affix)`\n right: 0;\n margin-right: 8px;\n padding-left: 8px;\n border-left: 1px solid ${textInputTokens.affix.border.color};\n\n ${({ readOnly }) =>\n readOnly &&\n css`\n margin-right: 0;\n padding-left: 0.5ch;\n border-left: none;\n `};\n`;\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n disabled,\n readOnly,\n errorMessage,\n tip,\n required,\n maxLength,\n onChange,\n id,\n width,\n componentSize = 'medium',\n type = 'text',\n withCharacterCounter = true,\n className,\n style,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n icon,\n prefix,\n suffix,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n const prefixRef = useRef<HTMLSpanElement>(null);\n const suffixRef = useRef<HTMLSpanElement>(null);\n const [prefixLength, setPrefixLength] = useState(0);\n const [suffixLength, setSuffixLength] = useState(0);\n\n useLayoutEffect(() => {\n if (prefixRef.current) {\n setPrefixLength(prefixRef.current.offsetWidth);\n }\n if (suffixRef.current) {\n setSuffixLength(suffixRef.current.offsetWidth);\n }\n }, [prefix, suffix, readOnly]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLInputElement> = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textInput`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip || !!maxLength;\n const hasIcon = !!icon;\n const hasAffix = !!(prefix ?? suffix);\n\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const generalInputProps = {\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n maxLength,\n value,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n const outerInputContainerProps = {\n className,\n style,\n width: getWidth(componentSize, width),\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <InputContainer>\n {\n <StyledIcon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n $size={componentSize}\n />\n }\n <StyledInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n $hasIcon={hasIcon}\n {...generalInputProps}\n />\n </InputContainer>\n );\n } else if (hasAffix) {\n extendedInput = (\n <InputAffixContainer>\n {prefix && (\n <Prefix readOnly={readOnly} ref={prefixRef} aria-hidden>\n {prefix}\n </Prefix>\n )}\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n prefixLength={prefixLength}\n suffixLength={suffixLength}\n {...generalInputProps}\n />\n {suffix && (\n <Suffix readOnly={readOnly} ref={suffixRef} aria-hidden>\n {suffix}\n </Suffix>\n )}\n </InputAffixContainer>\n );\n }\n\n return (\n <OuterInputContainer {...outerInputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <StatefulInput\n ref={ref}\n onChange={onChangeHandler}\n type={type}\n componentSize={componentSize}\n {...generalInputProps}\n />\n )}\n {hasMessage && (\n <MessageContainer>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {maxLength &&\n Number.isInteger(maxLength) &&\n maxLength > 0 &&\n withCharacterCounter && (\n <CharCounter\n id={characterCounterId}\n current={text.length}\n max={maxLength}\n />\n )}\n </MessageContainer>\n )}\n </OuterInputContainer>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, iconSizes } = ddsBaseTokens;\n\nconst input = {\n withIcon: {\n medium: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n small: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n }px`,\n },\n tiny: {\n paddingLeft: `${\n spacing.SizesDdsSpacingLocalX05NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX025NumberPx\n }px`,\n },\n },\n};\n\nconst affix = {\n border: {\n color: colors.DdsColorNeutralsGray5,\n },\n};\n\nconst icon = {\n color: colors.DdsColorNeutralsGray9,\n sizes: {\n medium: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n top: spacing.SizesDdsSpacingLocalX075,\n left: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n },\n },\n};\n\nexport const textInputTokens = {\n input,\n icon,\n affix,\n};\n","import { InputSize } from '@norges-domstoler/dds-form';\nimport { IconSize } from '@norges-domstoler/dds-icons';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'tiny':\n return 'small';\n }\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nconst Wrapper = styled(Typography)`\n margin-left: auto;\n`;\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nfunction CharCounter(props: Props) {\n const { current, max, id, className, htmlProps, ...rest } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-characterCounter`;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n forwardedAs=\"div\"\n typographyType=\"supportingStyleHelperText01\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Wrapper>\n );\n}\n\nexport default CharCounter;\n","import styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n InputProps,\n InputSize,\n StatefulInput,\n} from '@norges-domstoler/dds-form';\n\nimport { textInputTokens as tokens } from './TextInput.tokens';\n\nconst { iconSizes } = ddsBaseTokens;\nconst { input, icon } = tokens;\n\nexport const MessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\ninterface StyledIconProps {\n $size: InputSize;\n}\n\nexport const StyledIcon = styled(Icon)<StyledIconProps>`\n position: absolute;\n color: ${icon.color};\n ${({ $size, iconSize }) => css`\n left: ${icon.sizes[$size].left};\n ${iconSize === 'small'\n ? css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`};\n `\n : css`\n top: ${`calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`};\n `}\n `}\n z-index: 1;\n`;\n\ntype StyledInputProps = {\n $hasIcon?: boolean;\n} & Pick<InputProps, 'componentSize'>;\n\nexport const StyledInput = styled(StatefulInput)<StyledInputProps>`\n ${({ componentSize, $hasIcon }) =>\n $hasIcon &&\n componentSize &&\n css`\n padding-left: ${input.withIcon[componentSize].paddingLeft};\n `}\n`;\n","import { 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';\nimport { T } from 'vitest/dist/reporters-5f784f42';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: TValue[]\n): SelectOption<TValue>[] => args.map(v => ({ label: v, value: v }));\n\nconst DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nconst CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nconst CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <InnerSingleValue id={id}>\n {Element ? <Element {...props} /> : props.children}\n </InnerSingleValue>\n </SingleValue>\n);\n\nconst DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nconst DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getFormInputIconSize(size)} />\n </ClearIndicator>\n);\n\nconst DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nconst DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <DropdownIndicator {...props}>\n <Icon icon={ChevronDownIcon} iconSize={getFormInputIconSize(size)} />\n </DropdownIndicator>\n);\n\nconst DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nconst DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n icon?: SvgIcon,\n) => (\n <Control {...props}>\n {icon && (\n <StyledIcon icon={icon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Control>\n);\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst getPlaceholder = (\n placeholder?: ReactNode,\n isMulti?: boolean,\n): ReactNode =>\n placeholder\n ? placeholder\n : isMulti\n ? '-- Velg en eller flere --'\n : '-- Velg fra listen --';\n\ntype WrappedReactSelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n Group extends GroupBase<TOption>,\n TValue = unknown,\n> = WithRequiredIf<\n TOption extends SelectOption ? false : true,\n ReactSelectProps<TOption, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean,\n TValue = unknown,\n> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten. */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir disabled og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n customOptionElement?: (\n props: OptionProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n customSingleValueElement?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n WrappedReactSelectProps<TOption, IsMulti, GroupBase<TOption>>;\n\ntype ForwardRefType<TOption, IsMulti extends boolean> = React.ForwardedRef<\n SelectInstance<TOption, IsMulti, GroupBase<TOption>>\n>;\n\nconst SelectInner = <\n TOption extends SelectOption<TValue>,\n IsMulti extends boolean = false,\n TValue = unknown,\n>(\n props: SelectProps<TOption, IsMulti>,\n ref: ForwardRefType<TOption, IsMulti>,\n) => {\n const {\n id,\n label,\n componentSize = 'medium',\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n readOnly,\n options,\n isMulti,\n value,\n icon,\n defaultValue,\n width = defaultWidth,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n customOptionElement,\n customSingleValueElement,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const containerProps = {\n $width: width,\n $componentSize: componentSize,\n $errorMessage: errorMessage,\n $isDisabled: isDisabled,\n $readOnly: readOnly,\n $isMulti: isMulti,\n className,\n style,\n };\n\n const reactSelectProps: ReactSelectProps<\n TOption,\n IsMulti,\n GroupBase<TOption>\n > = {\n options,\n value,\n defaultValue,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n isDisabled: isDisabled || readOnly,\n isClearable,\n placeholder: getPlaceholder(placeholder, isMulti),\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n classNamePrefix: prefix,\n styles: getCustomStyles<TOption>(componentSize),\n filterOption: (option, inputValue) => {\n const { label } = option;\n return searchFilter(label, inputValue) || inputValue === '';\n },\n components: {\n Option: customOptionElement\n ? props => CustomOption(props, customOptionElement)\n : props => DDSOption(props, componentSize),\n NoOptionsMessage: DDSNoOptionsMessage,\n Input: props =>\n DDSInput(\n { ...props, 'aria-required': ariaRequired },\n hasErrorMessage,\n spaceSeparatedIdListGenerator([\n singleValueId,\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ]),\n ),\n SingleValue: props =>\n CustomSingleValue(props, singleValueId, customSingleValueElement),\n ClearIndicator: props => DDSClearIndicator(props, componentSize),\n DropdownIndicator: props => DDSDropdownIndicator(props, componentSize),\n MultiValueRemove: DDSMultiValueRemove,\n Control: props => DDSControl(props, componentSize, icon),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n ...rest,\n };\n\n return (\n <Container {...containerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={showRequiredStyling}>\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Container>\n );\n};\n\nexport const Select = React.forwardRef(SelectInner) as typeof SelectInner;\n\n// @ts-expect-error TODO fix Select type\nSelect.displayName = 'Select';\n","import { GroupBase, StylesConfig } from 'react-select';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { selectTokens as tokens, typographyTypes } from './Select.tokens';\nimport { Property } from 'csstype';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n InputSize,\n dangerInputfield,\n hoverDangerInputfield,\n focusInputfield,\n hoverInputfield,\n} from '@norges-domstoler/dds-form';\n\nconst {\n control,\n menu,\n groupHeading,\n option,\n dropdownIndicator,\n loadingIndicator,\n clearIndicator,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n placeholder,\n icon,\n valueContainer,\n} = tokens;\n\nexport const prefix = 'dds-select';\n\nfunction getContainerControlPadding(\n componentSize: InputSize,\n isMulti: boolean | undefined,\n) {\n return isMulti\n ? control.isMulti.sizes[componentSize].padding\n : control.sizes[componentSize].padding;\n}\n\nexport const Container = styled.div<{\n $errorMessage?: string;\n $isDisabled?: boolean;\n $readOnly?: boolean;\n $width?: Property.Width;\n $componentSize: InputSize;\n $isMulti?: boolean;\n}>`\n margin: 0;\n width: ${({ $width }) => $width};\n position: relative;\n\n *::selection {\n ${selection}\n }\n\n ${({ $componentSize, $isMulti }) => css`\n .${prefix}__control {\n padding: ${getContainerControlPadding($componentSize, $isMulti)};\n ${getFontStyling(typographyTypes.control[$componentSize], true)}\n }\n .${prefix}__option {\n ${getFontStyling(typographyTypes.option[$componentSize], true)}\n }\n .${prefix}__placeholder {\n ${getFontStyling(typographyTypes.placeholder[$componentSize])}\n }\n .${prefix}__menu-notice--no-options {\n ${getFontStyling(typographyTypes.noOptionsMessage[$componentSize])}\n }\n `}\n\n ${({ $errorMessage }) =>\n $errorMessage &&\n css`\n .${prefix}__control {\n ${dangerInputfield}\n }\n .${prefix}__control:hover {\n ${hoverDangerInputfield}\n }\n .${prefix}__control:focus-within {\n ${focusInputfield}\n }\n `}\n\n &:hover\n .${prefix}__dropdown-indicator,\n &:focus-within\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.hover.color};\n }\n\n ${({ $isDisabled, $readOnly }) =>\n $readOnly\n ? css`\n .${prefix}__control {\n border-color: ${control.readOnly.borderColor};\n background-color: ${control.readOnly.backgroundColor};\n }\n .${prefix}__dropdown-indicator,\n &:hover\n .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.readOnly.color};\n }\n `\n : $isDisabled\n ? css`\n cursor: not-allowed;\n .${prefix}__control {\n border-color: ${control.disabled.borderColor};\n background-color: ${control.disabled.backgroundColor};\n }\n &:hover .${prefix}__dropdown-indicator {\n color: ${dropdownIndicator.base.color};\n }\n `\n : ''}\n`;\n\nexport const InnerSingleValue = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n`;\n\nexport const StyledIcon = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: () => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n borderRadius: control.borderRadius,\n border: control.border,\n borderColor: control.borderColor,\n backgroundColor: control.backgroundColor,\n transition: 'box-shadow 0.2s, border-color 0.2s',\n\n '&:hover': {\n ...hoverInputfield,\n },\n '&:focus-within': {\n ...focusInputfield,\n },\n }),\n placeholder: provided => ({\n ...provided,\n color: placeholder.color,\n margin: 0,\n }),\n input: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n indicatorSeparator: () => ({}),\n dropdownIndicator: (provided, state) => ({\n display: 'inline-flex',\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : '',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, transform 0.2s',\n },\n padding: 0,\n color: dropdownIndicator.base.color,\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: valueContainer.isMulti.gap,\n }),\n padding: 0,\n }),\n\n singleValue: () => ({\n gridArea: '1/1/2/3',\n overflow: 'hidden',\n boxSizing: 'border-box',\n }),\n multiValue: () => ({\n boxSizing: 'border-box',\n minWidth: 0,\n display: 'flex',\n borderRadius: multiValue.borderRadius,\n backgroundColor: tokens.multiValue.backgroundColor,\n }),\n multiValueLabel: provided => ({\n ...provided,\n padding: multiValueLabel.padding,\n ...getFontStyling(typographyTypes.multiValueLabel[size]),\n color: multiValueLabel.color,\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled\n ? {\n display: 'none',\n }\n : {\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s, box-shadow 0.2s',\n },\n color: multiValueRemove.base.color,\n padding: multiValueRemove.base.padding,\n borderTopRightRadius: multiValueRemove.base.borderTopRightRadius,\n borderBottomRightRadius:\n multiValueRemove.base.borderBottomRightRadius,\n '&:hover': {\n boxShadow: multiValueRemove.hover.boxShadow,\n },\n },\n menu: provided => ({\n ...provided,\n zIndex: 100,\n transition: '0.2s',\n width: 'calc(100% + 2px)',\n transform: 'translate(-1px)',\n boxShadow: ` 0 0 0 1px ${menu.borderColor}`,\n border: menu.border,\n borderColor: menu.borderColor,\n backgroundColor: menu.backgroundColor,\n borderRadius: menu.borderRadius,\n marginTop: menu.marginTop,\n marginBottom: menu.marginBottom,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...getFontStyling(typographyTypes.groupHeading),\n color: groupHeading.color,\n padding: groupHeading.padding,\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling.webkit,\n ...scrollbarStyling.firefox,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: option.base.gap,\n padding: option.base.padding,\n backgroundColor: option.base.backgroundColor,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: option.hover.color,\n backgroundColor: option.hover.backgroundColor,\n },\n ...(state.isSelected && {\n backgroundColor: option.selected.backgroundColor,\n }),\n ...(state.isFocused && {\n color: option.focus.color,\n backgroundColor: option.focus.backgroundColor,\n }),\n }),\n noOptionsMessage: () => ({\n padding: noOptionsMessage.padding,\n color: noOptionsMessage.color,\n }),\n clearIndicator: () => ({\n display: 'inline-flex',\n color: clearIndicator.base.color,\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s',\n },\n '&:hover': {\n color: clearIndicator.hover.color,\n },\n }),\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: loadingIndicator.color,\n }),\n});\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport {\n InputSize,\n InputTypographyTypes,\n inputTypographyTypes,\n} from '@norges-domstoler/dds-form';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing, borderRadius, border } = ddsBaseTokens;\n\nconst { textDefault } = ddsReferenceTokens;\n\nconst placeholderTypographyTypes: { [k in InputSize]: StaticTypographyType } = {\n medium: 'supportingStylePlaceholderText01',\n small: 'supportingStylePlaceholderText02',\n tiny: 'supportingStylePlaceholderText03',\n};\n\nconst multiValueLabelTypographyTypes: {\n [k in InputSize]: StaticTypographyType;\n} = {\n medium: 'bodySans01',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nexport const typographyTypes: {\n control: InputTypographyTypes;\n option: InputTypographyTypes;\n placeholder: { [k in InputSize]: StaticTypographyType };\n noOptionsMessage: { [k in InputSize]: StaticTypographyType };\n groupHeading: StaticTypographyType;\n multiValueLabel: { [k in InputSize]: StaticTypographyType };\n} = {\n control: inputTypographyTypes,\n option: inputTypographyTypes,\n placeholder: placeholderTypographyTypes,\n noOptionsMessage: placeholderTypographyTypes,\n groupHeading: 'supportingStyleHelperText01',\n multiValueLabel: multiValueLabelTypographyTypes,\n};\n\nconst control = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n borderColor: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray9,\n disabled: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray5,\n },\n readOnly: {\n borderColor: 'transparent',\n backgroundColor: 'transparent',\n },\n isMulti: {\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n },\n sizes: {\n medium: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n small: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n tiny: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n};\n\nconst placeholder = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst dropdownIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: {\n color: colors.DdsColorInteractiveBase,\n },\n readOnly: {\n color: 'transparent',\n },\n};\n\nconst clearIndicator = {\n base: {\n color: colors.DdsColorNeutralsGray6,\n },\n hover: { color: colors.DdsColorInteractiveBase },\n};\n\nconst loadingIndicator = {\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst menu = {\n border: '1px solid',\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n marginTop: spacing.SizesDdsSpacingLocalX025,\n marginBottom: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst groupHeading = {\n color: colors.DdsColorNeutralsGray7,\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst option = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX05,\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n color: textDefault.textColor,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n selected: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst noOptionsMessage = {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n color: colors.DdsColorNeutralsGray6,\n};\n\nconst multiValue = {\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n backgroundColor: colors.DdsColorNeutralsGray2,\n};\n\nconst multiValueLabel = {\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n color: colors.DdsColorNeutralsGray9,\n};\n\nconst multiValueRemove = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n padding: `0 ${spacing.SizesDdsSpacingLocalX025}`,\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorNeutralsGray9}`,\n },\n};\n\nconst valueContainer = {\n isMulti: {\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n};\n\nconst icon = {\n marginRight: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const selectTokens = {\n control,\n dropdownIndicator,\n placeholder,\n menu,\n groupHeading,\n option,\n valueContainer,\n multiValue,\n multiValueLabel,\n multiValueRemove,\n noOptionsMessage,\n clearIndicator,\n loadingIndicator,\n icon,\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport {\n globalMessageTokens as tokens,\n purposeVariants,\n typographyType,\n} from './GlobalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nconst { container, contentContainer, icon } = tokens;\n\nconst Container = styled.div<{\n $purpose: GlobalMessagePurpose;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: ${container.padding};\n border-bottom: ${container.borderBottom};\n ${getFontStyling(typographyType, true)}\n ${({ $purpose }) => css`\n border-color: ${container[$purpose].borderColor};\n background-color: ${container[$purpose].backgroundColor};\n `}\n`;\n\nconst MessageIconWrapper = styled(Icon)`\n margin-right: ${icon.marginRight};\n`;\n\nconst ControlsContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ContentContainer = styled.div<{\n $closable: GlobalMessageProps['closable'];\n}>`\n display: flex;\n align-items: center;\n padding-top: ${contentContainer.paddingTop};\n padding-bottom: ${contentContainer.paddingBottom};\n padding-right: ${({ $closable }) =>\n $closable\n ? contentContainer.withClosable.paddingRight\n : contentContainer.paddingRight};\n`;\n\nexport type GlobalMessagePurpose = 'info' | 'warning' | 'danger';\n\nexport type GlobalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er en `string`. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: GlobalMessagePurpose;\n /**Indikerer om meldingen skal være lukkbar. */\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const GlobalMessage = forwardRef<HTMLDivElement, GlobalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <Container\n ref={ref}\n $purpose={purpose}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ContentContainer $closable={closable}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </ContentContainer>\n <ControlsContainer>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </ControlsContainer>\n </Container>\n ) : null;\n },\n);\n\nGlobalMessage.displayName = 'GlobalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ErrorIcon, InfoIcon, WarningIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { GlobalMessagePurpose } from './GlobalMessage';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n borderBottom: '2px solid',\n padding: `0 ${spacing.SizesDdsSpacingLocalX1}`,\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX15,\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX075,\n withClosable: {\n paddingRight: spacing.SizesDdsSpacingLocalX075,\n },\n};\n\nexport const purposeVariants: {\n [k in GlobalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n};\n\nexport const globalMessageTokens = {\n container,\n contentContainer,\n icon: {\n marginRight: `${spacing.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n },\n};\n","import styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { forwardRef, useState } from 'react';\nimport { localMessageTokens as tokens } from './LocalMessage.tokens';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { Property } from 'csstype';\nimport {\n Typography,\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nconst defaultWidth: Property.Width<string> = '400px';\nconst { container, icon, purposeVariants } = tokens;\n\ntype ContainerProps = Pick<\n LocalMessageProps,\n 'purpose' | 'width' | 'layout' | 'closable'\n>;\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'layout',\n 'closable',\n 'purpose',\n 'width',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n box-sizing: border-box;\n display: grid;\n grid-template-areas: ${({ layout, closable }) =>\n getGridTemplateAreas(layout, closable)};\n grid-template-columns: ${({ layout, closable }) =>\n getGridTemplateColumns(layout, closable)};\n box-shadow: ${container.base.boxShadow};\n border: ${container.base.border};\n border-radius: ${container.base.borderRadius};\n padding: ${container.base.padding};\n gap: ${container.base.gap};\n align-items: center;\n ${getFontStyling(defaultTypographyType, true)}\n\n *::selection {\n ${selection}\n }\n ${({ purpose }) =>\n purpose &&\n css`\n border-color: ${container.purpose[purpose].borderColor};\n background-color: ${container.purpose[purpose].backgroundColor};\n `}\n width: ${({ width }) => width};\n`;\n\nfunction getGridTemplateAreas(\n layout: LocalMessageProps['layout'],\n closeable: LocalMessageProps['closable'],\n) {\n if (closeable) {\n if (layout === 'horisontal') {\n return '\"icon text closeButton\"';\n }\n return '\"icon closeButton\" \"text text\"';\n } else {\n if (layout === 'horisontal') {\n return '\"icon text\"';\n }\n return '\"icon icon\" \"text text\"';\n }\n}\n\nfunction getGridTemplateColumns(\n layout: LocalMessageProps['layout'],\n closable: LocalMessageProps['closable'],\n) {\n if (closable) {\n return layout === 'horisontal'\n ? 'min-content 1fr min-content'\n : '1fr min-content';\n }\n return layout === 'horisontal' ? 'min-content 1fr' : '1fr';\n}\n\nconst MessageIconWrapper = styled(Icon)`\n grid-area: icon;\n`;\n\nconst TextContainer = styled.div`\n grid-area: text;\n`;\n\nconst CloseButton = styled(Button)<Pick<LocalMessageProps, 'layout'>>`\n grid-area: closeButton;\n margin: -${container.base.padding} 0;\n`;\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\n | 'confidential'\n | 'success'\n | 'tips';\n\nexport type LocalMessageLayout = 'horisontal' | 'vertical';\n\nexport type LocalMessageProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Meldingen som vises til brukeren. Brukes kun når meldingen er string. */\n message?: string;\n /**Formålet med meldingen. Påvirker styling. */\n purpose?: LocalMessagePurpose;\n /** Indikerer om meldingen skal være lukkbar.*/\n closable?: boolean;\n /**Ekstra logikk å kjøre når meldingen lukkes. */\n onClose?: () => void;\n /**Layoutet i komponenten. Ved kompleks innhold anbefales `layout='vertical'`. */\n layout?: LocalMessageLayout;\n /**Custom bredde ved behov. */\n width?: Property.Width<string>;\n }\n>;\n\nexport const LocalMessage = forwardRef<HTMLDivElement, LocalMessageProps>(\n (props, ref) => {\n const {\n message,\n purpose = 'info',\n closable,\n onClose,\n width = defaultWidth,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [isClosed, setClosed] = useState(false);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n purpose,\n width,\n layout,\n closable,\n ref,\n };\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Container {...containerProps}>\n <MessageIconWrapper\n icon={purposeVariants[purpose].icon}\n color={icon[purpose].color}\n />\n <TextContainer>\n {children ?? <Typography as=\"span\">{message}</Typography>}\n </TextContainer>\n {closable && (\n <CloseButton\n icon={CloseIcon}\n purpose={purposeVariants[purpose].closeButtonPurpose}\n appearance=\"borderless\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </Container>\n );\n },\n);\n\nLocalMessage.displayName = 'LocalMessage';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ErrorIcon,\n TipIcon,\n InfoIcon,\n WarningIcon,\n CheckCircledIcon,\n} from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { ButtonPurpose } from '../Button';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { LocalMessagePurpose } from './LocalMessage';\n\nconst { colors, spacing, borderRadius, border, outerShadow } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst container = {\n base: {\n boxShadow: outerShadow.DdsShadow1Onlight,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n padding: spacing.SizesDdsSpacingLocalX075,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n purpose: {\n info: {\n borderColor: colors.DdsColorInfoLighter,\n backgroundColor: colors.DdsColorInfoLightest,\n },\n warning: {\n borderColor: colors.DdsColorWarningLighter,\n backgroundColor: colors.DdsColorWarningLightest,\n },\n danger: {\n borderColor: colors.DdsColorDangerLighter,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n success: {\n borderColor: colors.DdsColorSuccessLighter,\n backgroundColor: colors.DdsColorSuccessLightest,\n },\n tips: {\n borderColor: colors.DdsColorPrimaryLighter,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n confidential: {\n borderColor: colors.DdsColorDangerBase,\n backgroundColor: colors.DdsColorDangerLightest,\n },\n },\n};\n\nconst purposeVariants: {\n [k in LocalMessagePurpose]: {\n icon: SvgIcon;\n closeButtonPurpose: ButtonPurpose;\n };\n} = {\n info: {\n icon: InfoIcon,\n closeButtonPurpose: 'secondary',\n },\n danger: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n warning: {\n icon: WarningIcon,\n closeButtonPurpose: 'secondary',\n },\n success: {\n icon: CheckCircledIcon,\n closeButtonPurpose: 'secondary',\n },\n tips: {\n icon: TipIcon,\n closeButtonPurpose: 'secondary',\n },\n confidential: {\n icon: ErrorIcon,\n closeButtonPurpose: 'danger',\n },\n};\n\nconst icon = {\n marginRight: `${spacing.SizesDdsSpacingLocalX075}`,\n info: {\n color: colors.DdsColorInfoDarkest,\n },\n danger: {\n color: colors.DdsColorDangerDarkest,\n },\n warning: {\n color: colors.DdsColorWarningDarkest,\n },\n success: {\n color: colors.DdsColorSuccessDarkest,\n },\n tips: {\n color: colors.DdsColorPrimaryDarkest,\n },\n confidential: {\n color: colors.DdsColorDangerDarkest,\n },\n};\n\nexport const localMessageTokens = {\n container,\n purposeVariants,\n icon,\n};\n","import {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n useCombinedRef,\n} from '@norges-domstoler/dds-core';\nimport {\n Input as BaseInput,\n InputProps as BaseInputProps,\n} from '@norges-domstoler/dds-form';\nimport {\n CloseSmallIcon,\n Icon,\n IconSize,\n SearchIcon,\n} from '@norges-domstoler/dds-icons';\nimport { getFontStyling, Label } from '@norges-domstoler/dds-typography';\nimport {\n ButtonHTMLAttributes,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n MouseEvent,\n useId,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { Button } from '../Button';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { createEmptyChangeEvent } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\n\nconst { input, outerContainer, horisontalContainer, searchIcon, clearButton } =\n tokens;\n\nconst getIconSize = (size: SearchSize): IconSize => {\n switch (size) {\n case 'large':\n return 'medium';\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n }\n};\n\nconst Input = styled(BaseInput)<{\n $componentSize: SearchSize;\n}>`\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n padding-right: ${input.base.paddingRight};\n\n ${({ $componentSize }) => css`\n padding-top: ${input.sizes[$componentSize].paddingTop};\n padding-bottom: ${input.sizes[$componentSize].paddingBottom};\n padding-left: ${input.sizes[$componentSize].paddingLeft};\n ${getFontStyling(typographyTypes[$componentSize])}\n `}\n`;\n\nconst StyledSearchIcon = styled(Icon)<{\n $size: SearchSize;\n}>`\n position: absolute;\n left: ${searchIcon.base.left};\n color: ${searchIcon.base.color};\n ${({ $size }) => css`\n top: ${tokens.searchIcon[$size].top};\n `}\n z-index: 1;\n`;\n\nconst StyledClearButton = styled(Button)`\n position: absolute;\n right: ${clearButton.right};\n color: ${clearButton.color};\n top: ${clearButton.top};\n`;\n\nconst OuterContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${outerContainer.gap};\n`;\n\nconst HorisontalContainer = styled.div<{\n $hasSearchButton: boolean;\n}>`\n ${props =>\n props.$hasSearchButton &&\n css`\n display: grid;\n grid-template-columns: 1fr auto;\n gap: ${horisontalContainer.gap};\n `}\n`;\n\nconst InputContainer = styled.div`\n position: relative;\n display: flex;\n`;\n\nexport type SearchSize = 'small' | 'medium' | 'large';\ntype ButtonProps = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n label?: string;\n loading?: boolean;\n purpose?: 'primary' | 'secondary';\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: ButtonProps;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nexport const Search = forwardRef<HTMLInputElement, SearchProps>(\n (\n {\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const suggestionsId = derivativeIdGenerator(uniqueId, 'suggestions');\n const suggestionsDescriptionId = derivativeIdGenerator(\n uniqueId,\n 'suggestions-description',\n );\n\n const [hasValue, setHasValue] = useState(!!value);\n\n const context = useAutocompleteSearch();\n\n const combinedRef = context.inputRef\n ? useCombinedRef(context.inputRef, ref)\n : ref;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(e.target.value !== '');\n\n context.onValueChange && context.onValueChange(e);\n onChange && onChange(e);\n };\n\n const clearInput = () => {\n const emptyChangeEvent = createEmptyChangeEvent(uniqueId);\n handleChange(emptyChangeEvent);\n };\n\n const {\n label: buttonLabel,\n onClick,\n ...otherButtonProps\n } = buttonProps ?? {};\n\n const hasSuggestions = !!context.suggestions;\n const showSearchButton = !!buttonProps && !!onClick;\n\n return (\n <OuterContainer>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <HorisontalContainer\n $hasSearchButton={showSearchButton}\n className={className}\n style={style}\n >\n <InputContainer>\n <StyledSearchIcon\n icon={SearchIcon}\n $size={componentSize}\n iconSize={getIconSize(componentSize)}\n />\n <Input\n {...rest}\n ref={combinedRef}\n $componentSize={componentSize}\n name={name}\n type=\"search\"\n id={uniqueId}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n context.suggestions ? suggestionsDescriptionId : undefined,\n ariaDescribedby,\n ])}\n value={context.inputValue ?? value}\n onChange={handleChange}\n autoComplete=\"off\"\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n aria-controls={hasSuggestions ? suggestionsId : undefined}\n aria-expanded={context.showSuggestions}\n role={hasSuggestions ? 'combobox' : undefined}\n />\n {hasSuggestions && (\n <>\n <SearchSuggestions\n id={suggestionsId}\n ref={context.suggestionsRef}\n searchId={uniqueId}\n onSuggestionClick={context.onSugggestionClick}\n suggestions={context.suggestions}\n showSuggestions={context.showSuggestions}\n componentSize={componentSize}\n />\n <VisuallyHidden id={suggestionsDescriptionId} as=\"span\">\n Bla i søkeforslag med piltaster når listen er utvidet.\n </VisuallyHidden>\n </>\n )}\n {hasValue && (\n <StyledClearButton\n icon={CloseSmallIcon}\n size=\"tiny\"\n purpose=\"secondary\"\n appearance=\"borderless\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n />\n )}\n </InputContainer>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </HorisontalContainer>\n {renderInputMessage(tip, tipId)}\n </div>\n </OuterContainer>\n );\n },\n);\n\nSearch.displayName = 'Search';\n","import styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst Wrapper = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: 0px;\n padding: 0px;\n top: 0px;\n inset-inline-start: 0px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n border: 0px;\n`;\n\ntype VisuallyHiddenDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n { as: 'div' }\n>;\n\ntype VisuallyHiddenSpanProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**Spesifiserer hvilken HTML tag skal returneres. */\n as: 'span';\n }\n>;\n\nexport type VisuallyHiddenProps =\n | VisuallyHiddenSpanProps\n | VisuallyHiddenDivProps;\n\nexport const VisuallyHidden = (props: VisuallyHiddenProps) => {\n const { children, id, className, htmlProps, as, ...rest } = props;\n\n if (as === 'div') {\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)} as={as}>\n {children}\n </Wrapper>\n );\n }\n return (\n <Wrapper {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n {children}\n </Wrapper>\n );\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n ChangeEvent,\n createContext,\n MouseEvent,\n RefObject,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: string[];\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement> | null;\n suggestionsRef?: RefObject<HTMLDivElement> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { SearchSize } from './Search';\n\nconst { spacing, iconSizes, colors } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nexport const typographyTypes: { [k in SearchSize]: StaticTypographyType } = {\n small: 'bodySans01',\n medium: 'bodySans02',\n large: 'bodySans04',\n};\n\nconst paddingLeftSmall = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeSmallNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\nconst paddingLeftMedium = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst paddingLeftLarge = `${\n spacing.SizesDdsSpacingLocalX075NumberPx +\n iconSizes.DdsIconsizeMediumNumberPx +\n spacing.SizesDdsSpacingLocalX05NumberPx\n}px`;\n\nconst input = {\n base: {\n paddingRight: spacing.SizesDdsSpacingLocalX25,\n paddingLeft: spacing.SizesDdsSpacingLocalX3,\n },\n sizes: {\n small: {\n paddingTop: spacing.SizesDdsSpacingLocalX05,\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n paddingLeft: paddingLeftSmall,\n },\n medium: {\n paddingTop: spacing.SizesDdsSpacingLocalX075,\n paddingBottom: spacing.SizesDdsSpacingLocalX075,\n paddingLeft: paddingLeftMedium,\n },\n large: {\n paddingTop: spacing.SizesDdsSpacingLocalX1,\n paddingBottom: spacing.SizesDdsSpacingLocalX1,\n paddingLeft: paddingLeftLarge,\n },\n },\n};\n\nconst horisontalContainer = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst searchIcon = {\n base: {\n left: spacing.SizesDdsSpacingLocalX075,\n color: textDefault.textColor,\n },\n small: {\n top: `calc(50% - ${iconSizes.DdsIconsizeSmallNumberPx / 2}px)`,\n },\n medium: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n large: {\n top: `calc(50% - ${iconSizes.DdsIconsizeMediumNumberPx / 2}px)`,\n },\n};\n\nconst clearButton = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: `calc(50% - 14px)`, // Knappen er 28px høy. Trekker fra 14px for å få den midtstilt.\n color: textDefault.textColor,\n};\n\nconst suggestionsContainer = {\n marginTop: spacing.SizesDdsSpacingLocalX025,\n border: `1px solid ${colors.DdsColorInteractiveBase}`,\n boxShadow: `0 0 0 1px ${colors.DdsColorInteractiveBase}`,\n};\n\nconst suggestionsHeader = {\n paddingLeft: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const searchTokens = {\n input,\n searchIcon,\n clearButton,\n horisontalContainer,\n outerContainer,\n suggestionsContainer,\n suggestionsHeader,\n};\n","import { ChangeEvent } from 'react';\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => {},\n stopPropagation: () => {},\n nativeEvent: new Event('input'),\n persist: () => {},\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport {\n OverflowMenuItem,\n OverflowMenuItemProps,\n} from '../OverflowMenu/OverflowMenuItem';\nimport { searchTokens as tokens, typographyTypes } from './Search.tokens';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { SearchProps, SearchSize } from './Search';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { forwardRef, MouseEvent } from 'react';\nimport { useRoveFocus } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport { derivativeIdGenerator } from '@norges-domstoler/dds-core';\n\nconst { suggestionsContainer, suggestionsHeader } = tokens;\n\nconst SuggestionsContainer = styled(Paper)<{\n $isHidden?: boolean;\n}>`\n ${({ $isHidden }) => visibilityTransition(!$isHidden)};\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n margin-top: ${suggestionsContainer.marginTop};\n border: ${suggestionsContainer.border};\n box-shadow: ${suggestionsContainer.boxShadow};\n z-index: 80;\n overflow-y: scroll;\n ${scrollbarStyling.firefox}\n ${scrollbarStyling.webkit}\n`;\n\nconst MenuItem = styled(OverflowMenuItem)<\n OverflowMenuItemProps & {\n $size?: SearchSize;\n }\n>`\n ${({ $size }) => $size && getFontStyling(typographyTypes[$size])}\n`;\n\nconst SuggestionsList = styled.ul`\n ${removeListStyling}\n`;\n\nconst SuggestionsHeader = styled(Typography)`\n padding-left: ${suggestionsHeader.paddingLeft};\n`;\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: string[];\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = forwardRef<\n HTMLDivElement,\n SearchSuggestionsProps\n>((props, ref) => {\n const {\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize,\n onSuggestionClick,\n maxSuggestions,\n ...rest\n } = props;\n\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus, setFocus] = useRoveFocus(suggestions?.length, !showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n const renderedSuggestions = (\n <SuggestionsList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <MenuItem\n index={index}\n focus={focus === index && showSuggestions}\n setFocus={setFocus}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n title={suggestion}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n $size={componentSize}\n ></MenuItem>\n </li>\n );\n })}\n </SuggestionsList>\n );\n\n const isHidden = !showSuggestions;\n\n return (\n <SuggestionsContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $isHidden={isHidden}\n aria-hidden={isHidden}\n >\n <SuggestionsHeader\n typographyType=\"supportingStyleTiny01\"\n forwardedAs=\"span\"\n id={suggestionsHeaderId}\n >\n Søkeforslag\n </SuggestionsHeader>\n {renderedSuggestions}\n </SuggestionsContainer>\n );\n});\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n ChangeEvent,\n MouseEvent,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\nimport { searchFilter } from '@norges-domstoler/dds-core';\nimport {\n AutocompleteSearchContext,\n AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: WeightedValue[];\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: string[];\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises. */\n queryLength?: number;\n /** Barnet til komponenten (`<Search />`). */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<string[]>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: string[] = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: WeightedValue[] = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: string[] = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext.Provider value={contextProps}>\n {children}\n </AutocompleteSearchContext.Provider>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, SearchProps, SearchSize } from './Search';\nimport {\n SearchAutocompleteWrapper,\n SearchAutocompleteWrapperProps,\n SearchData,\n WeightedSearchData,\n} from './SearchAutocompleteWrapper';\n\nimport { SearchSuggestions, SearchSuggestionsProps } from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchSize,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { tableTokens } from './Table.tokens';\nimport { TableDensity, TableProps } from './Table.types';\n\nconst { cell, row } = tableTokens;\n\nconst StyledTable = styled.table<{\n $density: TableDensity;\n $stickyHeader?: boolean;\n $withDividers?: boolean;\n}>`\n border-spacing: 0;\n border-collapse: collapse;\n *::selection {\n ${selection}\n }\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n ${({ $density }) => css`\n td,\n th {\n padding: ${cell.density[$density].padding};\n }\n `}\n ${({ $density }) =>\n $density === 'extraCompact' &&\n css`\n th {\n background-color: ${row.head.extraCompact.backgroundColor};\n font-size: ${row.head.extraCompact.fontSize};\n }\n tr[type='body'] {\n &:nth-of-type(even) {\n background-color: ${row.body.odd.backgroundColor};\n }\n &:nth-of-type(odd) {\n background-color: ${row.body.even.backgroundColor};\n }\n }\n `}\n ${({ $stickyHeader }) =>\n $stickyHeader &&\n css`\n tr[type='head'] {\n th[type='head'] {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n }\n `}\n ${({ $withDividers }) =>\n $withDividers &&\n css`\n tr[type='body'] {\n border-bottom: ${row.body.withDividers.borderBottom};\n }\n `}\n`;\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n { density = 'normal', stickyHeader, withDividers, children, ...rest },\n ref,\n ) => {\n return (\n <StyledTable\n {...rest}\n ref={ref}\n $density={density}\n $stickyHeader={stickyHeader}\n $withDividers={withDividers}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { font, colors, border, spacing, iconSizes, borderRadius } =\n ddsBaseTokens;\n\nconst row = {\n body: {\n odd: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n even: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n },\n hover: { backgroundColor: colors.DdsColorInteractiveLightest },\n selected: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n mode: {\n sum: {\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray4}`,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n },\n withDividers: {\n borderBottom: `1px solid ${colors.DdsColorNeutralsGray4}`,\n },\n },\n head: {\n extraCompact: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n fontSize: font.DdsFontBodySans01FontSize,\n },\n },\n};\n\nconst cell = {\n density: {\n normal: {\n padding: `${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX075}`,\n },\n compact: {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n },\n extraCompact: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX05}`,\n },\n },\n head: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n sort: {\n gap: spacing.SizesDdsSpacingLocalX05,\n icon: {\n marginInlineStart: spacing.SizesDdsSpacingLocalX05,\n },\n },\n layout: {\n textAndIcon: {\n gap: spacing.SizesDdsSpacingLocalX075,\n marginRight: spacing.SizesDdsSpacingLocalX075,\n },\n },\n};\n\nconst collapseButton = {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nexport const tableTokens = {\n row,\n cell,\n collapseButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Table } from '../Table';\nimport { CollapsibleTableContext } from './Table.context';\nimport { CollapsibleTableProps } from '../Table.types';\n\nconst StyledTable = styled(Table)`\n width: 100%;\n ${({ withDividers }) =>\n withDividers &&\n css`\n tr[data-isopencollapsibleheader='true'] {\n border-bottom: none;\n }\n `}\n`;\n\nexport const CollapsibleTable = forwardRef<\n HTMLTableElement,\n CollapsibleTableProps\n>((props, ref) => {\n const {\n density = 'normal',\n children,\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n } = props;\n\n return (\n <CollapsibleTableContext.Provider\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <StyledTable ref={ref} density={density} {...rest}>\n {children}\n </StyledTable>\n </CollapsibleTableContext.Provider>\n );\n});\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { useContext, createContext } from 'react';\nimport { HeaderValues } from '../Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: number[];\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledHead = styled.thead``;\n\nexport type TableHeadProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Head = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledHead ref={ref} {...rest}>\n {children}\n </StyledHead>\n );\n },\n);\n\nHead.displayName = 'Table.Head';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledBody = styled.tbody``;\n\nexport type TableBodyProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Body = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ children, ...rest }, ref) => {\n const bodyProps = {\n ...rest,\n };\n\n return (\n <StyledBody ref={ref} {...bodyProps}>\n {children}\n </StyledBody>\n );\n },\n);\n\nBody.displayName = 'Table.Body';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst StyledFoot = styled.tfoot``;\n\nexport type TableFootProps = HTMLAttributes<HTMLTableSectionElement>;\n\nexport const Foot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledFoot ref={ref} {...rest}>\n {children}\n </StyledFoot>\n );\n },\n);\n\nFoot.displayName = 'Table.Foot';\n","import { forwardRef } from 'react';\nimport { TableRowProps } from './Table.types';\nimport { StyledRow } from './Table.styles';\n\nexport const Row = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', hoverable, selected, children, ...rest },\n ref,\n ) => {\n return (\n <StyledRow\n type={type}\n $mode={mode}\n $hoverable={hoverable}\n $selected={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </StyledRow>\n );\n },\n);\n\nRow.displayName = 'Table.Row';\n","import styled, { css } from 'styled-components';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { focusVisibleInset } from '@norges-domstoler/dds-form';\n\nimport { RowMode, TableRowType } from './Table.types';\nimport { tableTokens } from './Table.tokens';\n\nconst { row } = tableTokens;\n\nexport const bodyRowStyles = (mode?: RowMode, selected?: boolean) => {\n return css`\n ${mode === 'sum' &&\n css`\n font-weight: 600;\n border-top: ${row.body.mode.sum.borderTop};\n border-bottom: ${row.body.mode.sum.borderBottom};\n background-color: ${row.body.mode.sum.backgroundColor};\n `}\n ${selected &&\n css`\n background-color: ${row.body.selected.backgroundColor};\n `}\n `;\n};\n\nexport const StyledRow = styled.tr<{\n type: TableRowType;\n $mode?: RowMode;\n $selected?: boolean;\n $hoverable?: boolean;\n}>`\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n }\n\n ${getFontStyling(defaultTypographyType, true)}\n\n ${({ type }) =>\n type === 'head' &&\n css`\n font-weight: 600;\n text-align: left;\n `}\n ${({ type, $mode: mode, $selected: selected, $hoverable: hoverable }) =>\n type === 'body' &&\n css`\n &:nth-of-type(even) {\n background-color: ${row.body.even.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n &:nth-of-type(odd) {\n background-color: ${row.body.odd.backgroundColor};\n ${bodyRowStyles(mode, selected)}\n }\n\n ${hoverable &&\n css`\n &:hover {\n background-color: ${row.body.hover.backgroundColor};\n }\n `}\n &:focus-visible, &.focus-visible {\n ${focusVisibleInset}\n }\n `}\n`;\n","import {\n forwardRef,\n Children,\n useState,\n isValidElement,\n cloneElement,\n ReactElement,\n Fragment,\n useEffect,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\nimport {\n removeButtonStyling,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n AnimatedChevronUpDown,\n} from '@norges-domstoler/dds-core';\n\nimport { Table } from '..';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Cell } from '../Cell';\nimport { useCollapsibleTableContext } from './Table.context';\nimport { TableRowProps } from '../Table.types';\nimport { StyledRow } from '../Table.styles';\nimport { tableTokens } from '../Table.tokens';\n\nconst { collapseButton } = tableTokens;\n\nconst CollapseButton = styled.button`\n ${removeButtonStyling}\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: ${focusVisibleTransitionValue};\n border-radius: ${collapseButton.borderRadius};\n height: ${collapseButton.height};\n width: ${collapseButton.width};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nconst DescriptionListCell = styled(Cell)`\n & > div {\n display: block;\n }\n`;\n\nexport const CollapsibleRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { type = 'body', mode = 'normal', selected, hoverable, children, ...rest },\n ref,\n ) => {\n const rowProps = {\n $type: type,\n $mode: mode,\n $selected: selected,\n $hoverable: hoverable,\n ...rest,\n };\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: string[] = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement(child) &&\n cloneElement(child as ReactElement, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <StyledRow type={type}>\n <DescriptionListCell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </DescriptionListCell>\n </StyledRow>\n ) : null;\n\n const definingColumnCells = childrenArray\n .slice()\n .filter((column, index) => definingColumnIndex.indexOf(index) > -1)\n .sort((a, b) => {\n return (\n definingColumnIndex.indexOf(childrenArray.indexOf(a)) -\n definingColumnIndex.indexOf(childrenArray.indexOf(b))\n );\n });\n\n const headerRow = () => {\n if (type !== 'head' || !isCollapsed) return null;\n\n return (\n <StyledRow ref={ref} type={type} {...rowProps}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </StyledRow>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <StyledRow\n ref={ref}\n type={type}\n {...rowProps}\n data-isopencollapsibleheader={!childrenCollapsed && true}\n >\n {definingColumnCells}\n <Table.Cell>\n <CollapseButton\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"7.5px\"\n width=\"12px\"\n />\n </CollapseButton>\n </Table.Cell>\n </StyledRow>\n );\n };\n\n return isCollapsed &&\n collapsedRenderedChildren &&\n collapsedRenderedChildren.length > 0 ? (\n <>\n {headerRow()}\n {type === 'body' && (\n <>\n {rowWithChevron()}\n {childrenCollapsed ? null : collapsedRows}\n </>\n )}\n </>\n ) : (\n <StyledRow ref={ref} type={type} {...rowProps}>\n {children}\n </StyledRow>\n );\n },\n);\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n selection,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\n\nconst { term, desc, list } = tokens;\n\ntype DListProps = Pick<DescriptionListProps, 'appearance' | 'direction'>;\n\nconst DList = styled.dl.withConfig({\n shouldForwardProp: prop => prop !== 'appearance' && prop !== 'direction',\n})<DListProps>`\n margin: 0;\n *::selection {\n ${selection}\n }\n ${({ appearance }) =>\n appearance &&\n css`\n dt {\n color: ${term.appearance[appearance].color};\n ${appearance === 'bold' &&\n css`\n font-weight: 600;\n `}\n }\n `}\n display: flex;\n flex-direction: column;\n &:not(:has(> dt):has(> dd)) {\n flex-direction: ${({ direction = 'column' }) => direction};\n }\n flex-wrap: wrap;\n column-gap: ${list.rowDirection.columnGap};\n row-gap: 0;\n & > dt:first-of-type {\n margin-top: ${term.firstOfType.marginTop};\n }\n & > dd:last-child {\n margin-bottom: ${desc.lastChild.marginBottom};\n }\n dd + dt {\n margin-top: ${list.beforeNextTerm.marginTop};\n }\n`;\n\nexport type DescriptionListAppearance = 'small' | 'bold';\n\nexport type DescriptionListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**Påvirker tekst styling. */\n appearance?: DescriptionListAppearance;\n /**Setter flex-direction. NB! Fungerer kun ved bruk av `DescriptionListGroup` som barn av `DescriptionList`.\n * @default \"column\"\n */\n direction?: 'row' | 'column';\n }\n>;\n\nexport const DescriptionList = forwardRef<\n HTMLDListElement,\n DescriptionListProps\n>((props, ref) => {\n const {\n appearance = 'bold',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n appearance,\n direction,\n ref,\n };\n\n return <DList {...dListProps}>{children}</DList>;\n});\n\nDescriptionList.displayName = 'DescriptionList';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst term = {\n appearance: {\n small: {\n color: colors.DdsColorNeutralsGray7,\n },\n bold: {\n color: colors.DdsColorNeutralsGray9,\n },\n },\n firstOfType: {\n marginTop: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst desc = {\n base: {\n gap: spacing.SizesDdsSpacingLocalX025,\n color: colors.DdsColorNeutralsGray9,\n },\n lastChild: {\n marginBottom: spacing.SizesDdsSpacingLocalX1,\n },\n};\n\nconst list = {\n beforeNextTerm: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n rowDirection: {\n columnGap: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nconst group = {\n base: {\n margin: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const descriptionListTokens = {\n term,\n desc,\n list,\n group,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst DListTerm = styled.dt``;\n\nexport type DescriptionListTermProps = HTMLAttributes<HTMLElement>;\n\nexport const DescriptionListTerm = forwardRef<\n HTMLElement,\n DescriptionListTermProps\n>(({ children, ...rest }, ref) => {\n const dListTermProps = {\n ref,\n ...rest,\n };\n\n return <DListTerm {...dListTermProps}>{children}</DListTerm>;\n});\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\n\nconst DListDesc = styled.dd`\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n color: ${tokens.desc.base.color};\n gap: ${tokens.desc.base.gap};\n`;\n\nexport type DescriptionListDescProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**Ikon som vises ved siden av teksten. */\n icon?: SvgIcon;\n }\n>;\n\nexport const DescriptionListDesc = forwardRef<\n HTMLElement,\n DescriptionListDescProps\n>((props, ref) => {\n const { children, icon, id, className, htmlProps, ...rest } = props;\n\n const dListDescProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n };\n\n return (\n <DListDesc {...dListDescProps}>\n {icon && <Icon icon={icon} />} {children}\n </DListDesc>\n );\n});\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nimport { descriptionListTokens as tokens } from './DescriptionList.tokens';\n\ntype StyledGroupProps = Pick<\n DescriptionListGroupProps,\n 'margin' | 'minWidth' | 'maxWidth'\n>;\n\nconst DListGroup = styled.div<StyledGroupProps>`\n margin: ${({ margin }) => (margin ? margin : tokens.group.base.margin)};\n ${({ minWidth }) => minWidth && `min-width: ${minWidth}`}\n ${({ maxWidth }) => maxWidth && `max-width: ${maxWidth}`}\n`;\n\nexport type DescriptionListGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Custom margin. */\n margin?: Property.Margin<string>;\n /**Custom min-width. */\n minWidth?: Property.MinWidth<string>;\n /**Custom max-width. */\n maxWidth?: Property.MaxWidth<string>;\n }\n>;\n\nexport const DescriptionListGroup = forwardRef<\n HTMLDivElement,\n DescriptionListGroupProps\n>((props, ref) => {\n const {\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const dListGroupProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n children,\n ref,\n margin,\n minWidth,\n maxWidth,\n };\n\n return <DListGroup {...dListGroupProps}>{children}</DListGroup>;\n});\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n","import {\n ElementType,\n forwardRef,\n ThHTMLAttributes,\n TdHTMLAttributes,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport { DescriptionListDesc } from '../DescriptionList';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst getLayoutStyle = (layout: TableCellLayout) => {\n switch (layout) {\n case 'center':\n return css`\n justify-content: center;\n `;\n case 'right':\n return css`\n justify-content: flex-end;\n `;\n case 'text and icon':\n return css`\n gap: ${cell.layout.textAndIcon.gap};\n `;\n default:\n case 'left':\n return;\n }\n};\n\nconst StyledCell = styled.td<{\n $type: TableCellType;\n}>`\n ${({ $type: type }) =>\n type === 'head' &&\n css`\n background-color: ${cell.head.backgroundColor};\n `}\n`;\n\nconst InnerCell = styled.div<{ $layout: TableCellLayout }>`\n display: flex;\n align-items: center;\n ${({ $layout: layout }) => getLayoutStyle(layout)}\n`;\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**Type celle. Returnerer enten `<td>` eller `<th>`. */\n type?: TableCellType;\n /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (\n | TdHTMLAttributes<HTMLTableCellElement>\n | ThHTMLAttributes<HTMLTableCellElement>\n);\n\nconst getTableCellType = (type: TableCellType) => {\n switch (type) {\n case 'head':\n return 'th';\n default:\n case 'data':\n return 'td';\n }\n};\n\nexport const Cell = forwardRef<HTMLTableCellElement, TableCellProps>(\n (\n { children, type = 'data', layout = 'left', collapsibleProps, ...rest },\n ref,\n ) => {\n const as: ElementType = getTableCellType(type);\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : (\n <StyledCell as={as} ref={ref} $type={type} {...rest}>\n <InnerCell $layout={layout}>{children}</InnerCell>\n </StyledCell>\n );\n },\n);\n\nCell.displayName = 'Table.Cell';\n","import { forwardRef, MouseEvent } from 'react';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n UnfoldMoreIcon,\n ChevronUpIcon,\n ChevronDownIcon,\n} from '@norges-domstoler/dds-icons';\nimport styled from 'styled-components';\nimport {\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport { Cell, TableCellProps } from './Cell';\nimport { tableTokens } from './Table.tokens';\n\nconst { cell } = tableTokens;\n\nconst StyledButton = styled.button`\n ${normalizeButton}\n user-select: text;\n ${removeButtonStyling}\n display: flex;\n align-items: center;\n gap: ${cell.sort.gap};\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type SortOrder = 'ascending' | 'descending';\n\nexport type TableSortCellProps = {\n /**Spesifiserer om kolonnen er sortert. */\n isSorted?: boolean;\n /**Sorteringsrekkefølge i kolonnen. Avgjør hvilket ikon skal vises i cellen. */\n sortOrder?: SortOrder;\n /**onClick-funksjon for sortering og annen logikk. */\n onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n} & Omit<TableCellProps, 'type'>;\n\nconst makeSortIcon = (isSorted?: boolean, sortOrder?: SortOrder) => {\n if (!isSorted || !sortOrder) {\n return <Icon icon={UnfoldMoreIcon} iconSize=\"inherit\" />;\n }\n\n return sortOrder === 'ascending' ? (\n <Icon icon={ChevronDownIcon} iconSize=\"inherit\" />\n ) : (\n <Icon icon={ChevronUpIcon} iconSize=\"inherit\" />\n );\n};\n\nexport const SortCell = forwardRef<HTMLTableCellElement, TableSortCellProps>(\n ({ isSorted, sortOrder, onClick, children, ...rest }, ref) => (\n <Cell\n ref={ref}\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <StyledButton\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </StyledButton>\n </Cell>\n ),\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import { HTMLAttributes, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst Wrapper = styled.div<{ $overflowX: boolean }>`\n ${({ $overflowX }) =>\n $overflowX &&\n css`\n overflow-x: auto;\n `}\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ children, ...rest }: TableWrapperProps) => {\n const [overflowX, setOverflowX] = useState(false);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n function isOverflowingX(event: HTMLDivElement): boolean {\n return event.offsetWidth < event.scrollWidth;\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (wrapperRef?.current && isOverflowingX(wrapperRef.current)) {\n setOverflowX(true);\n return;\n }\n setOverflowX(false);\n }, [windowWidth]);\n\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <Wrapper $overflowX={overflowX} ref={wrapperRef} {...rest}>\n {children}\n </Wrapper>\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Table as BaseTable } from './Table';\nimport { CollapsibleTable as BaseCollapsibleTable } from './collapsible/CollapsibleTable';\nimport {\n TableProps,\n TableDensity,\n CollapsibleTableProps,\n TableRowProps,\n TableRowType,\n} from './Table.types';\nimport { Head, TableHeadProps } from './Head';\nimport { Body, TableBodyProps } from './Body';\nimport { Foot, TableFootProps } from './Foot';\nimport { Row } from './Row';\nimport { CollapsibleRow } from './collapsible/CollapsibleRow';\nimport { Cell, TableCellProps, TableCellLayout, TableCellType } from './Cell';\nimport { SortCell, TableSortCellProps, SortOrder } from './SortCell';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { Table };\nexport { CollapsibleTable };\n\nexport type {\n TableCellProps,\n TableDensity,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n CollapsibleTableProps,\n};\n","import { AnchorHTMLAttributes, forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nexport type BreadcrumbProps =\n | HTMLAttributes<HTMLSpanElement>\n | AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is AnchorHTMLAttributes<HTMLAnchorElement> => {\n return (props as AnchorHTMLAttributes<HTMLAnchorElement>).href != undefined;\n};\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n\n if (isAnchorTypographyProps(props)) {\n return (\n <Typography htmlProps={rest} ref={ref} typographyType=\"a\">\n {children}\n </Typography>\n );\n }\n\n return (\n <Typography htmlProps={rest} ref={ref} as=\"span\" color=\"interactive\">\n {children}\n </Typography>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { forwardRef, Children } from 'react';\nimport styled from 'styled-components';\nimport { breadcrumbTokens, typographyType } from './Breadcrumb.tokens';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport {\n removeListStyling,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nconst { icon, list, listItem } = breadcrumbTokens;\n\nconst List = styled.ol`\n ${removeListStyling}\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ${list.gap};\n`;\nList.displayName = 'List';\n\nconst ListItem = styled.li`\n align-items: center;\n display: flex;\n gap: ${listItem.gap};\n ${getFontStyling(typographyType)}\n`;\nListItem.displayName = 'ListItem';\n\nconst StyledIcon = styled(Icon)`\n color: ${icon.color};\n`;\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<HTMLElement>;\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) => {\n const { children, id, className, htmlProps, ...rest } = props;\n\n const childrenArray = Children.toArray(children);\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <ListItem key={`breadcrumb-${index}`}>\n {index !== 0 && <StyledIcon icon={icons.ChevronRightIcon} />}\n {item}\n </ListItem>\n );\n });\n\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n aria-label=\"brødsmulesti\"\n >\n <List>{breadcrumbChildren}</List>\n </nav>\n );\n },\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans02';\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst listItem = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const breadcrumbTokens = {\n list,\n listItem,\n icon,\n};\n","import { forwardRef, HTMLAttributes, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { paginationTokens as tokens } from './Pagination.tokens';\nimport {\n MoreHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronFirstIcon,\n ChevronLastIcon,\n} from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst { outerContainer, indicatorsContainer, truncationIcon, list } = tokens;\n\nconst Nav = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nconst List = styled.ol`\n display: grid;\n grid-auto-flow: column;\n gap: ${list.gap};\n margin: 0;\n padding: 0;\n`;\n\ninterface ListItemProps {\n $isHidden?: boolean;\n}\n\nconst ListItem = styled.li<ListItemProps>`\n display: inline-grid;\n align-content: center;\n ${({ $isHidden }) =>\n $isHidden &&\n css`\n visibility: hidden;\n `}\n`;\n\nconst OuterContainer = styled.div<{ $smallScreen?: boolean }>`\n display: flex;\n gap: ${outerContainer.gap};\n ${({ $smallScreen }) =>\n $smallScreen\n ? css`\n flex-direction: column;\n align-items: center;\n `\n : css`\n justify-content: space-between;\n flex-wrap: wrap;\n `}\n`;\n\nconst IndicatorsContainer = styled.div`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: ${indicatorsContainer.gap};\n`;\n\nexport interface PaginationOption {\n label: string;\n value: number;\n}\n\nexport type PaginationProps = BaseComponentProps<\n HTMLElement,\n {\n /**Totalt antall elementer å paginere. */\n itemsAmount: number;\n /**Antall elementer per side ved innlastning av komponenten. */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten. */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises. */\n withPagination?: boolean;\n /**Spesifiserer om teksten `'Vis x-y av z'` skal vises. */\n withCounter?: boolean;\n /**Spesifiserer om `<Select />` til å velge antall resultater per side skal vises. */\n withSelect?: boolean;\n /**Custom options for `<Select />`. **OBS!** hvis det settes custom `selectOptions` bør \"alle\"-alternativet inkluderes der det er relevant, da brukere ofte liker å ha muligheten. */\n selectOptions?: PaginationOption[];\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer om versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreen?: boolean;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const {\n itemsAmount,\n defaultItemsPerPage = 10,\n defaultActivePage = 1,\n withPagination = true,\n withCounter,\n withSelect,\n selectOptions = [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ],\n smallScreen,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [activePage, setActivePage] = useState(defaultActivePage);\n const [itemsPerPage, setItemsPerPage] = useState(defaultItemsPerPage);\n\n const pagesLength = Math.ceil(itemsAmount / itemsPerPage);\n\n const items = PaginationGenerator(pagesLength, activePage);\n\n const onPageChange = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => {\n page && setActivePage(page);\n if (event && onChange) {\n onChange(event, page);\n }\n };\n\n const handleSelectChange = (option: PaginationOption | null) => {\n if (option !== null) {\n setItemsPerPage(option.value);\n }\n\n if (onSelectOptionChange) {\n onSelectOptionChange(option);\n }\n };\n\n const listItems =\n items.length > 0\n ? items.map((item, i) => {\n const isActive = item === activePage;\n return (\n <ListItem key={`pagination-item-${i}`}>\n {item !== 'truncator' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n appearance={isActive ? 'filled' : 'ghost'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item as number);\n }}\n aria-label={\n isActive\n ? `Nåværende side (side ${item})`\n : `Gå til side ${item}`\n }\n >\n {item}\n </Button>\n ) : (\n <Icon\n icon={MoreHorizontalIcon}\n color={truncationIcon.color}\n />\n )}\n </ListItem>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLeftIcon}\n onClick={event => {\n onPageChange(event, activePage - 1);\n }}\n aria-label=\"Gå til forrige siden\"\n />\n );\n\n const nextPageButton = (\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronRightIcon}\n onClick={event => {\n onPageChange(event, activePage + 1);\n }}\n aria-label=\"Gå til neste siden\"\n />\n );\n\n const navProps = !withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n $smallScreen: smallScreen,\n };\n\n const isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n {listItems}\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const smallScreenNavigation = withPagination ? (\n <Nav ref={ref} aria-label=\"paginering\" {...navProps}>\n <List>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </ListItem>\n <ListItem $isHidden={isOnFirstPage} aria-hidden={isOnFirstPage}>\n {previousPageButton}\n </ListItem>\n <ListItem>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n {nextPageButton}\n </ListItem>\n <ListItem $isHidden={isOnLastPage} aria-hidden={isOnLastPage}>\n <Button\n purpose=\"secondary\"\n appearance=\"ghost\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </ListItem>\n </List>\n </Nav>\n ) : null;\n\n const activePageFirstItem =\n activePage === 1 ? 1 : activePage * itemsPerPage - itemsPerPage + 1;\n\n const activePageLastItem =\n activePage === pagesLength ? itemsAmount : activePage * itemsPerPage;\n\n const navigationToBeRendered = smallScreen\n ? smallScreenNavigation\n : navigation;\n\n return !withCounter && !withSelect ? (\n navigationToBeRendered\n ) : (\n <OuterContainer {...containerProps}>\n <IndicatorsContainer>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"88px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Typography typographyType=\"supportingStyleLabel01\" as=\"p\">\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Typography>\n )}\n </IndicatorsContainer>\n {navigationToBeRendered}\n </OuterContainer>\n );\n },\n);\n\nPagination.displayName = 'Pagination';\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): (string | number)[] {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: (string | number)[];\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing, colors } = ddsBaseTokens;\n\nconst list = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst truncationIcon = {\n color: colors.DdsColorNeutralsGray7,\n};\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\nconst indicatorsContainer = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const paginationTokens = {\n outerContainer,\n indicatorsContainer,\n truncationIcon,\n list,\n};\n","import { ElementType, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport bulletLvl1 from './bullets/jordskifterett_bullet1.svg';\nimport bulletLvl2 from './bullets/lagmannsrett_bullet2.svg';\nimport bulletLvl3 from './bullets/tingrett_bullet3.svg';\nimport {\n TypographyBodyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\n\nimport { listTokens as tokens } from './List.tokens';\n\nconst { list, listItem, bullet } = tokens;\n\ninterface StyledListProps {\n $listType: ListType;\n $typographyType: ListTypographyType;\n}\n\nconst StyledList = styled.ul<StyledListProps>`\n margin: ${list.base.margin};\n color: ${list.base.color};\n ul,\n ol {\n margin: 0;\n }\n *::selection {\n ${selection}\n }\n\n ${({ $typographyType }) =>\n $typographyType === 'inherit'\n ? css`\n font: inherit;\n `\n : css`\n ${getFontStyling($typographyType)}\n `}\n\n ${({ $listType }) =>\n $listType === 'unordered'\n ? css`\n padding-left: ${list.ul.paddingLeft};\n list-style: none;\n li {\n position: relative;\n padding-left: ${listItem.ul.paddingLeft};\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: ${bullet.top};\n left: 0;\n background-size: contain;\n background-repeat: no-repeat;\n background-image: ${`url('${bulletLvl1}')`};\n }\n ul > li:before {\n background-image: ${`url('${bulletLvl2}')`};\n }\n ul > li > ul > li:before {\n background-image: ${`url('${bulletLvl3}')`};\n }\n }\n `\n : css`\n padding-left: ${list.ol.paddingLeft};\n & > li > ol {\n list-style-type: lower-alpha;\n }\n & > li > ol > li > ol {\n list-style-type: lower-roman;\n }\n `}\n`;\n\nexport type ListType = 'ordered' | 'unordered';\nexport type ListTypographyType = TypographyBodyType | 'inherit';\n\nexport type ListProps = BaseComponentPropsWithChildren<\n HTMLUListElement | HTMLOListElement,\n {\n /**Spesifiserer om komponenten skal returnere `<ul />` (punktliste) eller `<ol />` (nummerert liste). */\n listType?: ListType;\n /**Spesifiserer typografi for listen. Komponenten arver i utgangspunktet fra forelder, men hvis forelder stiller ikke med relevant styling må det velges `TypographyBodyType` som brukes i `<body>` ellers på siden. */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(\n (props, ref) => {\n const {\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const as: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <StyledList\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as={as}\n ref={ref}\n $listType={listType}\n $typographyType={typographyType}\n >\n {children}\n </StyledList>\n );\n },\n);\n\nList.displayName = 'List';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst ulLiPaddingLeft = `1em + ${spacing.SizesDdsSpacingLocalX025}`;\nconst ulPaddingLeft = `${spacing.SizesDdsSpacingLocalX2} - (${ulLiPaddingLeft})`;\n\nconst list = {\n base: {\n margin: `${spacing.SizesDdsSpacingLocalX1} 0`,\n color: textDefault.textColor,\n },\n ol: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n ul: {\n paddingLeft: `calc(${ulPaddingLeft})`,\n },\n};\n\nconst listItem = {\n lineHeight: '2.5em',\n ul: {\n paddingLeft: `calc(${ulLiPaddingLeft})`,\n },\n};\n\nconst bullet = {\n top: `calc((${listItem.lineHeight} / 2) - 0.5em )`,\n};\n\nexport const listTokens = {\n list,\n listItem,\n bullet,\n spaceLeft: spacing.SizesDdsSpacingLocalX2,\n};\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { listTokens as tokens } from './List.tokens';\n\nconst StyledListItem = styled.li`\n line-height: ${tokens.listItem.lineHeight};\n`;\n\nexport type ListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n ({ children, ...rest }, ref) => {\n return (\n <StyledListItem ref={ref} {...rest}>\n {children}\n </StyledListItem>\n );\n },\n);\n\nListItem.displayName = 'ListItem';\n","import { AnchorHTMLAttributes, RefObject } from 'react';\nimport styled, { css } from 'styled-components';\nimport { cardTokens as tokens } from './Card.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n selection,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n hoverWithBorder,\n focusVisibleWithBorder,\n} from '@norges-domstoler/dds-form';\n\ninterface ContainerProps {\n color: CardColor;\n cardType: CardType;\n}\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'color' && prop !== 'cardType',\n})<ContainerProps>`\n border: ${tokens.base.border};\n ${getFontStyling(defaultTypographyType)};\n &::selection,\n *::selection {\n ${selection}\n }\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n ${({ color }) =>\n color &&\n css`\n color: ${tokens.colors[color].color};\n background-color: ${tokens.colors[color].backgroundColor};\n border-color: ${tokens.colors[color].borderColor};\n `}\n ${({ cardType }) =>\n cardType === 'navigation'\n ? css`\n text-decoration: none;\n &:hover {\n ${hoverWithBorder}\n }\n &:focus {\n ${focusVisibleWithBorder}\n }\n `\n : cardType === 'expandable'\n ? css`\n width: 100%;\n box-sizing: border-box;\n &:not(:first-of-type) {\n border-top: none;\n }\n `\n : ''}\n`;\nexport type CardColor =\n | 'filledDark'\n | 'filledLight'\n | 'strokeDark'\n | 'strokeLight';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Fargepalett i komponenten. */\n color?: CardColor;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. Ved `'expandable'` må alle `<Card />` grupperte sammen ligge egen `<div>` container. */\n cardType: 'info';\n};\n\nexport type NavigationCardProps = BaseCardProps<HTMLAnchorElement> & {\n cardType: 'navigation';\n} & Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target'>;\n\nexport type ExpandableCardProps = BaseCardProps<HTMLDivElement> & {\n cardType: 'expandable';\n};\n\nexport type CardProps =\n | InfoCardProps\n | NavigationCardProps\n | ExpandableCardProps;\n\nexport const Card = (props: CardProps) => {\n const {\n color = 'filledLight',\n cardType,\n cardRef,\n children,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"a\"\n ref={cardRef}\n href={href}\n target={target}\n >\n {children}\n </Container>\n );\n }\n\n return (\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n cardType={cardType}\n color={color}\n as=\"div\"\n ref={cardRef}\n >\n {children}\n </Container>\n );\n};\n\nCard.displayName = 'Card';\n","import {\n ddsBaseTokens,\n ddsReferenceTokens,\n} from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, border } = ddsBaseTokens;\nconst { textDefault } = ddsReferenceTokens;\n\nconst base = {\n border: `${border.BordersDdsBorderStyleLightStrokeWeight} solid`,\n};\n\nconst cardColors = {\n filledLight: {\n backgroundColor: colors.DdsColorPrimaryLightest,\n borderColor: colors.DdsColorPrimaryLightest,\n color: textDefault.textColor,\n },\n filledDark: {\n backgroundColor: colors.DdsColorPrimaryBase,\n borderColor: colors.DdsColorPrimaryBase,\n color: colors.DdsColorNeutralsWhite,\n },\n strokeDark: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n strokeLight: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n borderColor: border.BordersDdsBorderStyleLightStroke,\n color: textDefault.textColor,\n },\n};\n\nexport const cardTokens = {\n base: base,\n colors: cardColors,\n};\n","import {\n forwardRef,\n useState,\n useEffect,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useId,\n useCallback,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\n\nconst Wrapper = styled.div``;\n\nexport type CardAccordionProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om body skal være utvidet ved innlastning. */\n isExpanded?: boolean;\n /**For å lytte til endringer i expanded-state. */\n onChange?: (expanded: boolean) => void;\n }\n>;\n\nexport const CardAccordion = forwardRef<HTMLDivElement, CardAccordionProps>(\n (props, ref) => {\n const {\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [expanded, setExpanded] = useState(isExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-cardAccordion`;\n\n useEffect(() => {\n setExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n const newExpanded = !expanded;\n\n setExpanded(newExpanded);\n\n if (onChange) {\n onChange(newExpanded);\n }\n }, [expanded, onChange]);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n const headerId = `${accordionId}-header`;\n const bodyId = `${accordionId}-body`;\n\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n isExpanded: expanded,\n toggleExpanded,\n id: headerId,\n bodyId,\n })\n : cloneElement(child as ReactElement, {\n isExpanded: expanded,\n id: bodyId,\n headerId,\n }))\n );\n });\n\n const wrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n return <Wrapper {...wrapperProps}>{Children}</Wrapper>;\n },\n);\n\nCardAccordion.displayName = 'CardAccordion';\n","import { forwardRef, ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport {\n normalizeButton,\n removeButtonStyling,\n AnimatedChevronUpDown,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n StaticTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\n\nconst { header, chevronWrapper } = tokens;\n\nconst ContentWrapper = styled.div`\n text-align: left;\n`;\n\nfunction getTypographyType(props: HeaderProps): StaticTypographyType {\n const { typographyType } = props;\n\n return typographyType ?? typographyTypes.header;\n}\n\ninterface HeaderProps {\n padding?: Property.Padding<string>;\n typographyType?: StaticTypographyType;\n bold?: boolean;\n}\n\nconst HeaderContainer = styled.div.withConfig({\n shouldForwardProp: prop =>\n prop !== 'padding' && prop !== 'typographyType' && prop !== 'bold',\n})<HeaderProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n padding: ${({ padding }) => padding ?? header.padding};\n ${props => getFontStyling(getTypographyType(props))}\n ${props =>\n props.bold &&\n css`\n font-weight: 600;\n `}\n`;\n\nconst HeaderWrapperButton = styled.button`\n ${normalizeButton}\n user-select: text;\n position: relative;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n ${removeButtonStyling}\n display: block;\n width: 100%;\n &:hover {\n box-shadow: ${header.hover.boxShadow};\n }\n\n &:focus-visible,\n &.focus-visible {\n outline: none;\n box-shadow: ${header.focus.boxShadow};\n }\n`;\n\nconst ChevronWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${chevronWrapper.width};\n height: ${chevronWrapper.height};\n margin-left: ${chevronWrapper.marginLeft};\n`;\n\nexport type CardAccordionHeaderProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller body er utvidet. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Callback for å styre utvidelse og sammentrukking. */\n toggleExpanded?: () => void;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionBody />`. */\n bodyId?: string;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n>;\n\nexport const CardAccordionHeader = forwardRef<\n HTMLButtonElement,\n CardAccordionHeaderProps\n>((props, ref) => {\n const {\n children,\n isExpanded = false,\n toggleExpanded,\n bodyId,\n id,\n className,\n htmlProps,\n padding,\n typographyType,\n bold,\n ...rest\n } = props;\n\n const handleClick = () => {\n if (toggleExpanded) {\n toggleExpanded();\n }\n };\n\n const headerWrapperProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n 'aria-expanded': isExpanded,\n 'aria-controls': bodyId,\n ref,\n onClick: handleClick,\n };\n\n const chevronProps = {\n isUp: isExpanded,\n width: tokens.chevron.width,\n height: tokens.chevron.height,\n };\n\n return (\n <HeaderWrapperButton {...headerWrapperProps} type=\"button\">\n <HeaderContainer\n typographyType={typographyType}\n padding={padding}\n bold={bold}\n >\n <ContentWrapper>{children}</ContentWrapper>\n <ChevronWrapper>\n <AnimatedChevronUpDown {...chevronProps} />\n </ChevronWrapper>\n </HeaderContainer>\n </HeaderWrapperButton>\n );\n});\n\nCardAccordionHeader.displayName = 'CardAccordionHeader';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { spacing, border, iconSizes } = ddsBaseTokens;\n\nexport const typographyTypes: {\n body: StaticTypographyType;\n header: StaticTypographyType;\n} = {\n body: 'bodySans03',\n header: 'headingSans03',\n};\n\nconst header = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n hover: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusInputfieldStrokeWeight} ${border.BordersDdsBorderFocusInputfieldStroke}`,\n },\n focus: {\n boxShadow: `0 0 0 ${border.BordersDdsBorderFocusCardStrokeWeight} ${border.BordersDdsBorderFocusCardStroke}`,\n },\n};\n\nconst chevronWrapper = {\n width: iconSizes.DdsIconsizeMedium,\n height: iconSizes.DdsIconsizeMedium,\n marginLeft: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst body = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${\n spacing.SizesDdsSpacingLocalX2NumberPx +\n spacing.SizesDdsSpacingLocalX075NumberPx\n }px ${spacing.SizesDdsSpacingLocalX2} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nexport const cardAccordionTokens = {\n header,\n body,\n chevronWrapper,\n chevron: {\n width: iconSizes.DdsIconsizeMedium,\n height: spacing.SizesDdsSpacingLocalX05,\n },\n};\n","import { Property } from 'csstype';\nimport {\n forwardRef,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useIsMounted,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n Nullable,\n} from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\n\nimport {\n cardAccordionTokens as tokens,\n typographyTypes,\n} from './CardAccordion.tokens';\nimport { useElementHeight } from './useElementHeight';\n\nconst expandingAnimation = css`\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n`;\n\nfunction getPadding(props: BodyContainerProps): string {\n const { padding } = props;\n\n return padding ?? tokens.body.padding;\n}\n\ninterface BodyProps {\n isExpanded?: boolean;\n animate: boolean;\n height: number;\n}\n\nconst Body = styled.div.withConfig({\n shouldForwardProp: prop => {\n return prop !== 'animate' && prop !== 'height' && prop !== 'isExpanded';\n },\n})<BodyProps>`\n @media (prefers-reduced-motion: no-preference) {\n ${({ animate }) => animate && expandingAnimation}\n }\n ${getFontStyling(typographyTypes.body)}\n height: ${({ height, isExpanded }) => (isExpanded ? height : 0)}px;\n overflow: hidden;\n`;\n\ninterface BodyContainerProps {\n isExpanded?: boolean;\n maxHeight?: number;\n animate: boolean;\n paddingTop?: Property.PaddingTop<string>;\n padding?: Property.Padding<string>;\n}\n\nconst BodyContainer = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof BodyContainerProps)[] = [\n 'isExpanded',\n 'maxHeight',\n 'animate',\n 'paddingTop',\n 'padding',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<BodyContainerProps>`\n padding: ${getPadding};\n\n ${({ paddingTop }) =>\n paddingTop &&\n css`\n padding-top: ${paddingTop};\n `}\n`;\n\nexport type CardAccordionBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller komponenten om den skal utvides. */\n isExpanded?: boolean;\n /** **OBS!** denne propen blir satt automatisk av forelder. Forteller `id` til `<CardAccordionHeader />`. */\n headerId?: string;\n /**Overskriver default padding på toppen. Brukes når barn har spacing på toppen, f.eks. en overskrift. */\n paddingTop?: Property.PaddingTop<string>;\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n>;\n\nexport const CardAccordionBody = forwardRef<\n HTMLDivElement,\n CardAccordionBodyProps\n>((props, ref) => {\n const {\n children,\n isExpanded,\n headerId,\n id,\n className,\n htmlProps,\n padding,\n paddingTop,\n ...rest\n } = props;\n\n const bodyRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyRef.current);\n\n const [initialExpandedHeight, setIntialExpandedHeight] =\n useState<Nullable<number>>(null);\n\n useLayoutEffect(() => {\n // For å unngå initiell animasjon dersom Accordion er satt til å være åpen som default.\n if (bodyRef.current && isExpanded) {\n setIntialExpandedHeight(bodyRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n const bodyProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n isExpanded,\n role: 'region',\n height: height ?? initialExpandedHeight ?? 0,\n };\n const bodyContainerProps = {\n ref: bodyRef,\n isExpanded,\n padding,\n paddingTop,\n };\n\n return (\n <Body\n {...bodyProps}\n animate={animate}\n aria-labelledby={headerId}\n aria-hidden={!isExpanded}\n >\n <BodyContainer {...bodyContainerProps} animate={animate}>\n {children}\n </BodyContainer>\n </Body>\n );\n});\n\nCardAccordionBody.displayName = 'CardAccordionBody';\n","import { Nullable } from '@norges-domstoler/dds-core';\nimport { useEffect, useState } from 'react';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { useRef, useState } from 'react';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport {\n OuterContainer,\n Navigation,\n NavigationList,\n BannerWrapper,\n BannerLeftWrapper,\n LovisaWrapper,\n ApplicationNameWrapper,\n ContextMenuGroup,\n StyledOverflowMenu,\n} from './InternalHeader.styles';\nimport { NavigationItem } from './NavigationItem';\nimport { InternalHeaderListItem } from './InternalHeaderListItem';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { MenuIcon, MoreVerticalIcon } from '@norges-domstoler/dds-icons';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n smallScreen,\n navigationElements,\n contextMenuElements,\n currentPageHref,\n userProps,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [contextMenuIsClosed, setContextMenuIsClosed] = useState(true);\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange && onCurrentPageChange();\n };\n\n const handleContextMenuClick = () => {\n setContextMenuIsClosed(!contextMenuIsClosed);\n };\n\n const onOveflowMenuClose = () => setContextMenuIsClosed(true);\n\n const hasNavigationElements =\n !!navigationElements && navigationElements.length > 0;\n const hasContextMenuElements =\n !!contextMenuElements && contextMenuElements.length > 0;\n const hasNavInContextMenu = smallScreen && hasNavigationElements;\n\n const navigation =\n hasNavigationElements && !smallScreen ? (\n <Navigation aria-label=\"sidenavigasjon\">\n <NavigationList>\n {navigationElements.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <InternalHeaderListItem key={index}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </InternalHeaderListItem>\n );\n })}\n </NavigationList>\n </Navigation>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!userProps || hasNavInContextMenu;\n return (\n <OuterContainer {...getBaseHTMLProps(id, className, htmlProps, rest)}>\n <BannerWrapper $hasContextMenu={hasContextMenu}>\n <BannerLeftWrapper>\n <LovisaWrapper>\n <Typography typographyType=\"bodySans02\" bold as=\"span\">\n {applicationName}\n </Typography>\n </LovisaWrapper>\n <ApplicationNameWrapper>\n <Typography typographyType=\"bodySans02\" as=\"span\">\n {applicationDesc}\n </Typography>\n </ApplicationNameWrapper>\n </BannerLeftWrapper>\n </BannerWrapper>\n {navigation}\n {hasContextMenu && (\n <ContextMenuGroup>\n <Button\n ref={buttonRef}\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={handleContextMenuClick}\n aria-haspopup=\"menu\"\n aria-expanded={!contextMenuIsClosed ? true : undefined}\n aria-label=\"åpne meny\"\n />\n <StyledOverflowMenu\n isOpen={!contextMenuIsClosed}\n onClose={onOveflowMenuClose}\n anchorRef={buttonRef}\n navItems={hasNavInContextMenu ? navigationElements : undefined}\n items={hasContextMenuElements ? contextMenuElements : undefined}\n userProps={userProps}\n />\n </ContextMenuGroup>\n )}\n </OuterContainer>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n","import styled, { css } from 'styled-components';\nimport { internalHeaderTokens as tokens } from './InternalHeader.tokens';\nimport { InternalHeaderProps } from './InternalHeader.types';\nimport { OverflowMenu } from '../OverflowMenu';\nimport { selection } from '@norges-domstoler/dds-core';\n\nconst {\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n} = tokens;\n\nexport const OuterContainer = styled.div`\n position: relative;\n *::selection {\n ${selection}\n }\n background-color: ${outerContainer.backgroundColor};\n`;\n\ninterface BannerProps {\n $hasContextMenu?: boolean;\n}\n\nexport const BannerWrapper = styled.div<BannerProps>`\n position: relative;\n display: flex;\n align-items: center;\n border-bottom: ${banner.borderBottom};\n padding-right: ${banner.paddingRight};\n ${({ $hasContextMenu }) =>\n $hasContextMenu &&\n css`\n padding-right: ${banner.hasContextMenu.paddingRight};\n `}\n`;\n\nexport const BannerLeftWrapper = styled.div`\n display: flex;\n`;\n\nexport const ApplicationNameWrapper = styled.div`\n display: flex;\n align-items: center;\n padding: ${applicationNameWrapper.padding};\n`;\n\nexport const LovisaWrapper = styled.div`\n padding: ${lovisaWrapper.padding};\n border-right: ${lovisaWrapper.borderRight};\n`;\n\nexport const Navigation = styled.nav`\n border-bottom: ${navigation.borderBottom};\n`;\n\ntype NavListProps = Pick<InternalHeaderProps, 'smallScreen'>;\n\nexport const NavigationList = styled.ul<NavListProps>`\n box-sizing: border-box;\n display: flex;\n ${({ smallScreen }) =>\n smallScreen &&\n css`\n flex-direction: column;\n `}\n list-style-type: none;\n padding: 0;\n margin: 0;\n`;\n\nexport const ContextMenuGroup = styled.div`\n position: absolute;\n top: ${contextGroup.top};\n right: ${contextGroup.right};\n`;\n\nexport const StyledOverflowMenu = styled(OverflowMenu)`\n max-height: calc(100vh - 110px);\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { border, colors, spacing } = ddsBaseTokens;\n\nconst borderStyle = `${border.BordersDdsBorderStyleLightStrokeWeight} ${border.BordersDdsBorderStyleLightStroke} solid `;\n\nexport const typographyTypes: Record<string, StaticTypographyType> = {\n navLink: 'bodySans01',\n};\n\nconst navLink = {\n base: {\n color: colors.DdsColorNeutralsGray9,\n backgroundColor: colors.DdsColorNeutralsWhite,\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n },\n active: {\n color: colors.DdsColorInteractiveDark,\n },\n current: {\n color: colors.DdsColorInteractiveDarkest,\n backgroundColor: colors.DdsColorPrimaryLightest,\n },\n};\n\nconst outerContainer = {\n backgroundColor: colors.DdsColorNeutralsWhite,\n};\n\nconst applicationNameWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst lovisaWrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15}`,\n borderRight: borderStyle,\n};\n\nconst banner = {\n borderBottom: borderStyle,\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n hasContextMenu: {\n paddingRight: spacing.SizesDdsSpacingLayoutX4,\n },\n};\n\nconst navigation = {\n borderBottom: borderStyle,\n};\n\nconst contextGroup = {\n right: spacing.SizesDdsSpacingLocalX075,\n top: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const internalHeaderTokens = {\n navLink,\n outerContainer,\n applicationNameWrapper,\n lovisaWrapper,\n banner,\n navigation,\n contextGroup,\n};\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n internalHeaderTokens as tokens,\n typographyTypes,\n} from './InternalHeader.tokens';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { navLink } = tokens;\n\ninterface LinkProps {\n isCurrent?: boolean;\n}\n\nexport const Link = styled.a.withConfig({\n shouldForwardProp: prop => prop !== 'isCurrent',\n})<LinkProps>`\n display: flex;\n align-items: center;\n height: 100%;\n box-sizing: border-box;\n text-decoration: none;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n color: ${navLink.base.color};\n background-color: ${navLink.base.backgroundColor};\n padding: ${navLink.base.padding};\n ${getFontStyling(typographyTypes.navLink)}\n &:hover {\n color: ${navLink.hover.color};\n }\n &:active {\n color: ${navLink.active.color};\n }\n &:focus-visible,\n &.focus-visible {\n ${focusVisible};\n }\n ${({ isCurrent }) =>\n isCurrent &&\n css`\n color: ${navLink.current.color};\n background-color: ${navLink.current.backgroundColor};\n &:hover {\n color: ${navLink.current.color};\n }\n `}\n`;\n\nexport type NavigationItemProps = {\n title: string;\n isCurrent?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const NavigationItem = forwardRef<\n HTMLAnchorElement,\n NavigationItemProps\n>(({ title, isCurrent, ...rest }, ref) => {\n const linkProps = {\n ref,\n isCurrent,\n\n ...rest,\n };\n\n return (\n <Link {...linkProps} aria-current={isCurrent ? 'page' : undefined}>\n {title}\n </Link>\n );\n});\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Li = styled.li`\n box-sizing: border-box;\n`;\n\nexport type InternalHeaderListItemProps = HTMLAttributes<HTMLLIElement>;\n\nexport const InternalHeaderListItem = forwardRef<\n HTMLLIElement,\n InternalHeaderListItemProps\n>(({ children, ...rest }, ref) => {\n const props = {\n ref,\n ...rest,\n };\n\n return <Li {...props}>{children}</Li>;\n});\n","import { forwardRef, useId } from 'react';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n selection,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport styled, { css } from 'styled-components';\nimport CalendarIcon from './calendar_today.svg';\nimport {\n StatefulInput,\n OuterInputContainer,\n InputSize,\n InputProps,\n} from '@norges-domstoler/dds-form';\n\nimport { datepickerTokens as tokens } from './Datepicker.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\n\nconst StyledInput = styled(StatefulInput)<Pick<InputProps, 'componentSize'>>`\n &::-webkit-calendar-picker-indicator {\n background-image: ${`url('${CalendarIcon}')`};\n position: absolute;\n ${({ componentSize }) =>\n componentSize &&\n css`\n right: ${tokens.calendarIndicator.base.sizes[componentSize].right};\n height: ${tokens.calendarIndicator.base.sizes[componentSize].height};\n width: ${tokens.calendarIndicator.base.sizes[componentSize].width};\n `}\n margin-left: 0px;\n padding: 0;\n top: 50%;\n transform: translate(0, -50%);\n box-sizing: border-box;\n }\n\n &::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n &::-webkit-calendar-picker-indicator:focus-visible {\n outline: ${tokens.calendarIndicator.focus.outline};\n outline-offset: ${tokens.calendarIndicator.focus.outlineOffset};\n }\n\n &::-webkit-inner-spin-button {\n display: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field {\n transition: 0.2s;\n }\n }\n\n &::-webkit-datetime-edit-day-field:focus,\n &::-webkit-datetime-edit-month-field:focus,\n &::-webkit-datetime-edit-year-field:focus,\n &::-webkit-datetime-edit-hour-field:focus,\n &::-webkit-datetime-edit-minute-field:focus {\n ${selection}\n }\n`;\n\ntype DatepickerType = 'date' | 'datetime-local';\n\nexport type DatepickerProps = Omit<InputProps, 'type'> & {\n /** Angi dato-input med eller uten klokkeslett. */\n type?: DatepickerType;\n};\n\nexport const Datepicker = forwardRef<HTMLInputElement, DatepickerProps>(\n (\n {\n id,\n type = 'date',\n required = false,\n readOnly = false,\n disabled = false,\n label,\n width,\n errorMessage,\n tip,\n style,\n className,\n componentSize = 'medium',\n max,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n ...rest\n },\n ref,\n ) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-datepickerInput`;\n\n const componentWidth = width ? width : getWidth(type, componentSize);\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const showRequiredStyling = required || ariaRequired;\n\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const inputProps = {\n id: uniqueId,\n hasErrorMessage,\n ref,\n readOnly,\n tabIndex: readOnly ? -1 : 0,\n required,\n disabled,\n componentSize,\n type,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-required': ariaRequired,\n 'aria-invalid': hasErrorMessage ? true : undefined,\n max: getMax(type, max),\n ...rest,\n };\n\n const outerinputContainerProps = {\n width: componentWidth,\n style,\n className,\n };\n\n return (\n <OuterInputContainer {...outerinputContainerProps}>\n {hasLabel && (\n <Label htmlFor={uniqueId} showRequiredStyling={!!showRequiredStyling}>\n {label}\n </Label>\n )}\n <StyledInput {...inputProps} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\nDatepicker.displayName = 'Datepicker';\n\nconst defaultWidths: {\n [k in DatepickerType]: { [k in InputSize]: Property.Width<string> };\n} = {\n date: {\n medium: '160px',\n small: '140px',\n tiny: '125px',\n },\n ['datetime-local']: {\n medium: '200px',\n small: '180px',\n tiny: '150px',\n },\n};\n\nconst getWidth = (\n type: DatepickerType,\n size: InputSize,\n): Property.Width<string> => defaultWidths[type][size];\n\nconst getMax = (\n type: DatepickerType,\n max?: string | number,\n): string | number | undefined => {\n if (max !== undefined) {\n return max;\n }\n\n // Limit the year-part to only four digits by default\n\n if (type === 'datetime-local') {\n return '9999-12-31T23:59';\n }\n\n if (type === 'date') {\n return '9999-12-31';\n }\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { iconSizes, spacing, border } = ddsBaseTokens;\n\nconst calendarIndicator = {\n base: {\n sizes: {\n medium: {\n height: iconSizes.DdsIconsizeMedium,\n width: iconSizes.DdsIconsizeMedium,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n small: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n tiny: {\n height: iconSizes.DdsIconsizeSmall,\n width: iconSizes.DdsIconsizeSmall,\n right: spacing.SizesDdsSpacingLocalX075,\n },\n },\n },\n focus: {\n outline: `${border.BordersDdsBorderFocusInputfieldStroke} solid ${border.BordersDdsBorderFocusInputfieldStrokeWeight}`,\n outlineOffset: spacing.SizesDdsSpacingLocalX0125,\n },\n};\n\nexport const datepickerTokens = {\n calendarIndicator,\n};\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Property } from 'csstype';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n cn,\n} from '@norges-domstoler/dds-core';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n focusVisibleOnDark,\n} from '@norges-domstoler/dds-form';\n\nimport { skipToContentTokens as tokens } from './SkipToContent.tokens';\n\nconst { wrapper, link } = tokens;\n\nconst Wrapper = styled.div<{\n $top: Property.Top;\n}>`\n box-sizing: border-box;\n position: absolute;\n top: ${({ $top: top }) => top};\n text-align: center;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n width: 1px;\n white-space: nowrap;\n background-color: ${wrapper.backgroundColor};\n padding: ${wrapper.padding};\n opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n\n &:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: 250;\n opacity: 1;\n }\n`;\n\nconst Link = styled.a`\n text-decoration: none;\n color: ${link.base.color};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n &:focus {\n ${focusVisibleOnDark}\n }\n &:hover {\n color: ${link.base.color};\n }\n`;\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka. */\n text?: string;\n /**Spesifiserer hvor det skal hoppes til via `id`-attributtet til innholdet. */\n href: string;\n /**Avstand fra top i nærmeste posisjonert container. */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = forwardRef<HTMLAnchorElement, SkipToContentProps>(\n (props, ref) => {\n const {\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const {\n className: htmlPropsClassName,\n style,\n ...restHtmlProps\n } = htmlProps;\n\n return (\n <Wrapper\n $top={top}\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)} ref={ref}>\n {text}\n </Link>\n </Wrapper>\n );\n },\n);\n\nSkipToContent.displayName = 'SkipToContent';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst link = {\n base: {\n color: colors.DdsColorNeutralsWhite,\n },\n hover: {\n color: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst wrapper = {\n backgroundColor: colors.DdsColorPrimaryBase,\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const skipToContentTokens = {\n link,\n wrapper,\n};\n","import React, {\n Children as ReactChildren,\n cloneElement,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n Placement,\n useCombinedRef,\n useOnKeyDown,\n useFloatPosition,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport {\n ArrowWrapper,\n Container,\n SvgArrow,\n TooltipWrapper,\n} from './Tooltip.styles';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\n\nconst { svgArrow } = tokens;\n\ntype AnchorElement = React.ReactElement & React.RefAttributes<HTMLElement>;\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'style' | 'onMouseLeave' | 'onMouseOver'\n>;\n\nexport type TooltipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /**Innhold i tooltip. */\n text: string;\n /**Plassering i forhold til anchor-elementet. */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder. */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (props, ref) => {\n const {\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueTooltipId = tooltipId ?? `${generatedId}-tooltip`;\n const [open, setOpen] = useState(false);\n const [inView, setInView] = useState(false);\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null);\n const { refs, styles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => {});\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorProps = children.props as HTMLAttributes<HTMLElement>;\n\n const anchorElement = ReactChildren.only(\n isValidElement(children) &&\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, anchorProps.onFocus),\n onBlur: combineHandlers(closeTooltip, anchorProps.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n style,\n onMouseLeave: combineHandlers(closeTooltip, onMouseLeave),\n onMouseOver: combineHandlers(openTooltip, onMouseOver),\n };\n\n const wrapperProps = {\n id: uniqueTooltipId,\n ref: combinedRef,\n role: 'tooltip',\n 'aria-hidden': !open,\n open: open && inView,\n style: { ...styles.floating },\n };\n\n const arrowWrapperProps = {\n ref: setArrowElement,\n style: styles.arrow,\n };\n\n return (\n <Container {...containerProps}>\n {anchorElement}\n <TooltipWrapper {...wrapperProps} elevation={1} border=\"light\">\n {text}\n <ArrowWrapper {...arrowWrapperProps}>\n <SvgArrow>\n <path\n d=\"M16.586 6.586L10 0h16.154a.373.373 0 00-.263.11l-6.477 6.476a2 2 0 01-2.828 0z\"\n fill={svgArrow.background.fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.5.5l-6.732 6.94a2.5 2.5 0 01-3.536 0L9.5.5H11l5.94 6.232a1.5 1.5 0 002.12 0L25 .5h1.5z\"\n fill={svgArrow.border.fill}\n />\n </SvgArrow>\n </ArrowWrapper>\n </TooltipWrapper>\n </Container>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n","import styled from 'styled-components';\nimport { Paper, PaperProps } from '@norges-domstoler/dds-core';\nimport { visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n defaultTypographyType,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\nimport { tooltipTokens as tokens } from './Tooltip.tokens';\n\nconst { wrapper } = tokens;\n\nexport const SvgArrow = styled.svg`\n width: 36px;\n height: 9px;\n`;\n\nexport const ArrowWrapper = styled.div``;\n\nexport const Container = styled.div`\n width: fit-content;\n`;\n\ntype WrapperProps = PaperProps & {\n open: boolean;\n};\n\nexport const TooltipWrapper = styled(Paper)<WrapperProps>`\n ${({ open }) => visibilityTransition(open)}\n width: fit-content;\n position: absolute;\n z-index: 80;\n text-align: center;\n padding: ${wrapper.padding};\n ${getFontStyling(defaultTypographyType)};\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075}`,\n};\n\nconst svgArrow = {\n border: {\n fill: colors.DdsColorPrimaryLighter,\n },\n background: {\n fill: colors.DdsColorNeutralsWhite,\n },\n};\n\nexport const tooltipTokens = {\n wrapper,\n svgArrow,\n};\n","import { forwardRef, ReactNode, RefObject, useEffect, useId } from 'react';\nimport styled from 'styled-components';\nimport { Button } from '../Button';\nimport { modalTokens as tokens } from './Modal.tokens';\nimport { createPortal } from 'react-dom';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n Paper,\n selection,\n useMountTransition,\n useFocusTrap,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nimport {\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n Backdrop,\n} from './Backdrop';\n\nconst { container, contentContainer } = tokens;\n\nconst Container = styled(Paper)`\n display: flex;\n flex-direction: column-reverse;\n min-width: 200px;\n padding: ${container.padding};\n &::selection,\n *::selection {\n ${selection}\n }\n :focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\nconst ContentContainer = styled.div`\n display: grid;\n padding-right: ${contentContainer.paddingRight};\n gap: ${contentContainer.gap};\n`;\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om modal skal vises. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; Settes hvis modal skal være lukkbar. Legger en lukkeknapp i hjørnet og kjøres ved Esc-trykk, lukkeknappklikk og museklikk utenfor. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Modal />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Tittel/header i modal. Setter `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement>;\n }\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 return isOpen || hasTransitionedIn\n ? createPortal(\n <Backdrop isOpen={hasTransitionedIn && isOpen}>\n <Container\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n role=\"dialog\"\n aria-modal\n aria-hidden={!isOpen}\n tabIndex={-1}\n aria-labelledby={headerId}\n id={modalId}\n elevation={4}\n >\n <ContentContainer>\n {header && (\n <HeaderContainer id={headerId}>\n {typeof header === 'string' ? (\n <Typography typographyType=\"headingSans03\">\n {header}\n </Typography>\n ) : (\n header\n )}\n </HeaderContainer>\n )}\n {children}\n </ContentContainer>\n {onClose && (\n <StyledButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n />\n )}\n </Container>\n </Backdrop>,\n parentElement,\n )\n : null;\n});\n\nModal.displayName = 'Modal';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst container = {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX15}`,\n};\n\nconst contentContainer = {\n paddingRight: spacing.SizesDdsSpacingLocalX1,\n gap: spacing.SizesDdsSpacingLocalX1,\n};\nconst actionsContainer = {\n gap: spacing.SizesDdsSpacingLocalX1,\n};\n\nexport const modalTokens = {\n container,\n contentContainer,\n actionsContainer,\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { changeRGBAAlpha } from '@norges-domstoler/dds-core';\n\ninterface BackdropProps {\n isOpen: boolean;\n}\n\nexport const Backdrop = styled.div.withConfig({\n shouldForwardProp: prop => prop !== 'isOpen',\n})<BackdropProps>`\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${changeRGBAAlpha(\n ddsBaseTokens.colors.DdsColorNeutralsGray9,\n 0.5,\n )};\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 200;\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n`;\n","const isVerticalScrollbarDisplayed = (container: HTMLElement) =>\n container.clientHeight > window.innerHeight;\n\nexport function handleElementWithBackdropMount(container: HTMLElement) {\n if (isVerticalScrollbarDisplayed(container)) {\n const scrollY = Math.round(window.scrollY);\n\n container.style.overflowY = 'scroll';\n container.style.position = 'fixed';\n container.style.top = `-${scrollY}px`;\n }\n}\n\nexport function handleElementWithBackdropUnmount(container: HTMLElement) {\n const scrollY = parseInt(document.body.style.top);\n\n container.style.removeProperty('overflow-y');\n container.style.removeProperty('position');\n container.style.removeProperty('top');\n\n if (isNaN(scrollY)) {\n return;\n }\n\n window.scrollTo(0, scrollY * -1);\n}\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { Property } from 'csstype';\n\nconst Container = styled.div``;\n\nexport type ModalBodyProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Gjør at innholdet kan scrolles. Det må eventuelt settes (max)bredde og (max)høyde styling på både denne subkomponenten og `<Modal />`. */\n scrollable?: boolean;\n /**Høyde på container. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = forwardRef<HTMLDivElement, ModalBodyProps>(\n (props, ref) => {\n const { children, scrollable, id, className, htmlProps, height, ...rest } =\n props;\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n return scrollable ? (\n <Container {...containerProps}>\n <ScrollableContainer contentHeight={height}>\n {children}\n </ScrollableContainer>\n </Container>\n ) : (\n <Container {...containerProps}>{children}</Container>\n );\n },\n);\n\nModalBody.displayName = 'ModalBody';\n","import { forwardRef, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { modalTokens as tokens } from './Modal.tokens';\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${tokens.actionsContainer.gap};\n`;\n\nexport type ModalActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ModalActions = forwardRef<HTMLDivElement, ModalActionsProps>(\n ({ children, ...rest }, ref) => {\n const containerProps = {\n ref,\n ...rest,\n };\n\n return <Container {...containerProps}>{children}</Container>;\n },\n);\n\nModalActions.displayName = 'ModalActions';\n","import { forwardRef, ReactNode, RefObject, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport {\n useCombinedRef,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n useFocusTrap,\n Paper,\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Property } from 'csstype';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\n\nimport { drawerTokens as tokens } from './Drawer.tokens';\nimport { ScrollableContainer } from '../ScrollableContainer';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { container, contentContainer } = tokens;\n\nconst getMaxWidth = (size: DrawerSize): Property.MaxWidth => {\n if (size === 'large') return '800px';\n else if (size === 'medium') return '600px';\n else return '400px';\n};\n\ninterface ContainerProps {\n placement: DrawerPlacement;\n isOpen: boolean;\n widthProps?: WidthProps;\n size: DrawerSize;\n}\n\nconst Container = styled(Paper).withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof ContainerProps)[] = [\n 'placement',\n 'isOpen',\n 'widthProps',\n 'size',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<ContainerProps>`\n position: fixed;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n min-width: 300px;\n z-index: 100;\n padding: ${container.padding};\n\n ${({ size }) => css`\n max-width: ${getMaxWidth(size)};\n `}\n\n ${({ widthProps }) =>\n widthProps &&\n css`\n min-width: ${widthProps.minWidth};\n max-width: ${widthProps.maxWidth};\n width: ${widthProps.width};\n `}\n\n ${({ placement, isOpen }) =>\n placement === 'left'\n ? css`\n left: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(-100%)'};\n `\n : placement === 'right'\n ? css`\n right: 0;\n transform: ${isOpen ? 'translate(0px)' : 'translateX(100%)'};\n `\n : ''}\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 0.5s;\n }\n\n &:focus-visible,\n &.focus-visible {\n ${focusVisible}\n }\n`;\n\nconst ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${contentContainer.gap};\n padding: ${contentContainer.padding};\n`;\n\nconst HeaderContainer = styled.div``;\n\nconst StyledButton = styled(Button)`\n align-self: flex-end;\n`;\n\nexport type DrawerSize = 'small' | 'medium' | 'large';\nexport type DrawerPlacement = 'left' | 'right';\nexport interface WidthProps {\n minWidth?: Property.MinWidth<string>;\n maxWidth?: Property.MaxWidth<string>;\n width?: Property.Width<string>;\n}\n\nexport type DrawerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer />`. */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer />`. */\n placement?: DrawerPlacement;\n /**Header for `<Drawer />`. Har default styling hvis verdien er en string. */\n header?: string | ReactNode;\n /**Spesifiserer om `<Drawer />` skal legges vises. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n onClose?: () => void;\n /**Spesifiserer hvilken DOM node `<Drawer />` skal ha som forelder via React portal. Brukes med f.eks `document.getElementById(\"id\")` (skaper ikke ny DOM node). */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. */\n widthProps?: WidthProps;\n /**Ref til elementet som åpner `<Drawer />`. **OBS!** nødvendig kun hvis `<DrawerGroup />` ikke er i bruk. */\n triggerRef?: RefObject<HTMLElement>;\n }\n>;\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n children,\n onClose,\n header,\n isOpen = false,\n placement = 'right',\n parentElement = document.body,\n size = 'small',\n triggerRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-drawer`;\n const hasHeader = !!header;\n const headerId = hasHeader ? `${uniqueId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef && triggerRef.current?.focus();\n onClose && onClose();\n }\n });\n\n const elements: (HTMLElement | null)[] = [drawerRef.current as HTMLElement];\n if (triggerRef) elements.push(triggerRef.current);\n\n useOnClickOutside(elements, () => 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 interface DrawerGroupProps {\n /**Barna til komponenten. */\n children: ReactNode;\n /**`id` til `<Drawer />`. */\n drawerId?: string;\n /**Ekstra logikk som kjøres når `<Drawer />` åpnes. */\n onOpen?: () => void;\n /**Ekstra logikk som kjøres når `<Drawer />` lukkes. */\n onClose?: () => void;\n}\n\nexport const DrawerGroup = ({\n children,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const buttonRef = useRef<HTMLElement>(null);\n\n const [closed, setClosed] = useState(true);\n const open = () => setClosed(false);\n const close = () => setClosed(true);\n\n const handleOpen = () => {\n open();\n onOpen && onOpen();\n };\n\n const handleClose = () => {\n close();\n onClose && onClose();\n };\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': !closed,\n ref: buttonRef,\n onClick: handleOpen,\n })\n : cloneElement(child as ReactElement, {\n id: uniqueDrawerId,\n triggerRef: buttonRef,\n isOpen: !closed,\n onClose: handleClose,\n }))\n );\n });\n return <> {Children} </>;\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Property } from 'csstype';\nimport { forwardRef, ReactNode, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { PaperProps, visibilityTransition } from '@norges-domstoler/dds-core';\nimport {\n Placement,\n useCombinedRef,\n useFloatPosition,\n useReturnFocusOnBlur,\n useMountTransition,\n useOnClickOutside,\n} from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Button } from '../Button';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { popoverTokens as tokens } from './Popover.tokens';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport { Paper } from '@norges-domstoler/dds-core';\nimport { focusVisible } from '@norges-domstoler/dds-form';\n\nconst { spacing: Spacing } = ddsBaseTokens;\nconst { wrapper, content, closeButton, title } = tokens;\n\ninterface WrapperProps extends PaperProps {\n $sizeProps?: PopoverSizeProps;\n $hasTransitionedIn?: boolean;\n $isOpen: boolean;\n}\n\nconst Wrapper = styled(Paper)<WrapperProps>`\n opacity: 0;\n ${({ $hasTransitionedIn, $isOpen }) =>\n $hasTransitionedIn && visibilityTransition($hasTransitionedIn && $isOpen)}\n position: absolute;\n width: fit-content;\n z-index: 100;\n padding: ${wrapper.padding};\n\n &:focus-visible {\n ${focusVisible}\n }\n ${({ $sizeProps }) =>\n $sizeProps &&\n css`\n width: ${$sizeProps.width};\n height: ${$sizeProps.height};\n min-width: ${$sizeProps.minWidth};\n min-height: ${$sizeProps.minHeight};\n max-width: ${$sizeProps.maxWidth};\n max-height: ${$sizeProps.maxHeight};\n `}\n`;\n\nconst TitleContainer = styled.div`\n margin-right: ${title.marginRight};\n`;\n\ninterface ContentContainerProps {\n $hasTitle: boolean;\n $withCloseButton: boolean;\n}\n\nconst ContentContainer = styled.div<ContentContainerProps>`\n ${({ $withCloseButton, $hasTitle }) =>\n $withCloseButton &&\n !$hasTitle &&\n css`\n margin-top: ${content.noTitle.marginTop};\n `}\n`;\n\nconst StyledButton = styled(Button)`\n position: absolute;\n top: ${closeButton.top};\n right: ${closeButton.right};\n`;\n\nexport interface PopoverSizeProps {\n width?: Property.Width<string>;\n height?: Property.Height<string>;\n minWidth?: Property.MinWidth<string>;\n minHeight?: Property.MinHeight<string>;\n maxWidth?: Property.MaxWidth<string>;\n maxHeight?: Property.MaxHeight<string>;\n}\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Tittel. */\n title?: string | ReactNode;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Spesifiserer om `<Popover />` skal vises. */\n isOpen?: boolean;\n /**Om lukkeknapp skal vises. */\n withCloseButton?: boolean;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Anchor-elementet. */\n anchorElement?: HTMLElement;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet. */\n placement?: Placement;\n /**Avstand fra anchor-elementet i px. */\n offset?: number;\n /** Ekstra logikk kjørt når lukkeknappen trykkes. */\n onCloseButtonClick?: () => void;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** **OBS!** Propen settes automatisk av `<PopoverGroup />`. Funksjon kjørt ved lukking. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, ref) => {\n const {\n title,\n isOpen = false,\n withCloseButton = true,\n onBlur,\n onCloseButtonClick,\n onClose,\n anchorElement,\n children,\n placement = 'bottom',\n offset = Spacing.SizesDdsSpacingLocalX05NumberPx,\n id,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const { refs, styles } = useFloatPosition(null, {\n placement,\n offset,\n });\n // Use position from anchor element for the popover\n refs.setReference(anchorElement || null);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn,\n () => {\n onClose && onClose();\n onBlur && onBlur();\n },\n anchorElement && anchorElement,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, refs.setFloating);\n\n const elements: (HTMLElement | null)[] = [popoverRef.current!];\n if (anchorElement) elements.push(anchorElement);\n\n useOnClickOutside(elements, () => {\n if (isOpen) onClose && onClose();\n });\n\n return isOpen || hasTransitionedIn ? (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={multiRef}\n $isOpen={isOpen}\n $hasTransitionedIn={hasTransitionedIn}\n tabIndex={-1}\n style={{ ...htmlProps.style, ...styles.floating }}\n role=\"dialog\"\n elevation={3}\n border=\"light\"\n >\n {title && (\n <TitleContainer>\n {typeof title === 'string' ? (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n ) : (\n title\n )}\n </TitleContainer>\n )}\n <ContentContainer\n $hasTitle={!!title}\n $withCloseButton={withCloseButton}\n >\n {children}\n </ContentContainer>\n {withCloseButton && (\n <StyledButton\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n size=\"small\"\n onClick={onCloseButtonClick}\n aria-label=\"Lukk\"\n />\n )}\n </Wrapper>\n ) : null;\n },\n);\n\nPopover.displayName = 'Popover';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst wrapper = {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX15} ${spacing.SizesDdsSpacingLocalX1}`,\n};\nconst closeButton = {\n top: spacing.SizesDdsSpacingLocalX025,\n right: spacing.SizesDdsSpacingLocalX025,\n};\n\nconst title = {\n marginRight: spacing.SizesDdsSpacingLocalX2,\n};\n\nconst content = {\n noTitle: {\n marginTop: spacing.SizesDdsSpacingLocalX2,\n },\n};\n\nexport const popoverTokens = {\n content,\n wrapper,\n closeButton,\n title,\n};\n","import {\n useState,\n ReactElement,\n Children as ReactChildren,\n cloneElement,\n isValidElement,\n useRef,\n ReactNode,\n useId,\n} from 'react';\nimport { useOnKeyDown } from '@norges-domstoler/dds-core';\n\nexport interface PopoverGroupProps {\n /**Callback når det trykkes på lukkeknappen. */\n onCloseButtonClick?: () => void;\n /** Callback når det trykkes på anchor-elementet (trigger-elementet). */\n onTriggerClick?: () => void;\n /**Forteller `<Popover />` om den skal være åpen. */\n isOpen?: boolean;\n /** `id` til `<Popover />.` */\n popoverId?: string;\n /** Barna til wrapperen: anchor-element som det første og `<Popover />` so det adnre. */\n children: ReactNode;\n}\n\nexport const PopoverGroup = ({\n isOpen = false,\n onCloseButtonClick,\n onTriggerClick,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [open, setOpen] = useState(isOpen);\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n\n const handleOnCloseButtonClick = () => {\n setOpen(false);\n onCloseButtonClick && onCloseButtonClick();\n };\n\n const handleOnTriggerClick = () => {\n setOpen(!open);\n onTriggerClick && onTriggerClick();\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n setOpen(false);\n buttonRef.current?.focus();\n }\n });\n\n const handleClose = () => setOpen(false);\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement(child) &&\n (childIndex === 0\n ? cloneElement(child as ReactElement, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleOnTriggerClick,\n ref: buttonRef,\n })\n : cloneElement(child as ReactElement, {\n isOpen: open,\n 'aria-hidden': !open,\n id: uniquePopoverId,\n onCloseButtonClick: handleOnCloseButtonClick,\n anchorElement: buttonRef.current,\n ref: popoverRef,\n onClose: handleClose,\n }))\n );\n });\n\n return <>{Children}</>;\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import { forwardRef, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { selection, getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport {\n toggleButtonTokens as tokens,\n typographyType,\n} from './ToggleButton.tokens';\nimport { ToggleButtonProps } from './ToggleButton.types';\n\nconst { toggleButton } = tokens;\n\ninterface ContentProps {\n $hasIcon?: boolean;\n}\n\nconst Content = styled.span<ContentProps>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: fit-content;\n border: ${toggleButton.border};\n background-color: ${toggleButton.backgroundColor};\n color: ${toggleButton.color};\n border-radius: ${toggleButton.borderRadius};\n padding: ${toggleButton.padding};\n ${getFontStyling(typographyType)}\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $hasIcon }) =>\n $hasIcon &&\n css`\n gap: ${toggleButton.gap};\n `}\n\n &::selection,\n *::selection {\n ${selection}\n }\n &:hover {\n background-color: ${toggleButton.hover.backgroundColor};\n box-shadow: ${toggleButton.hover.boxShadow};\n border-color: ${toggleButton.hover.borderColor};\n }\n`;\n\nconst Container = styled.label`\n width: fit-content;\n ${HiddenInput}:checked + ${Content} {\n background-color: ${toggleButton.checked.backgroundColor};\n border-color: ${toggleButton.checked.borderColor};\n color: ${toggleButton.checked.color};\n }\n ${HiddenInput}:checked + ${Content}:hover {\n background-color: ${toggleButton.checked.hover.backgroundColor};\n border-color: ${toggleButton.checked.hover.borderColor};\n box-shadow: ${toggleButton.checked.hover.boxShadow};\n }\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n }\n`;\n\nexport const ToggleButton = forwardRef<HTMLInputElement, ToggleButtonProps>(\n ({ id, label, icon, className, htmlProps, ...rest }, ref) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n\n return (\n <Container htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n ref={ref}\n type=\"checkbox\"\n />\n <Content $hasIcon={!!icon}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </Content>\n </Container>\n );\n },\n);\n\nToggleButton.displayName = 'ToggleButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nimport { buttonTokens, typographyTypes } from '../Button/Button.tokens';\nimport { selectionControlTokens } from '../SelectionControl/SelectionControl.tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\nconst { button } = buttonTokens;\nconst { selectionControl } = selectionControlTokens;\n\nexport const typographyType = typographyTypes.small;\n\nconst toggleButton = {\n border: button.base.border,\n backgroundColor: colors.DdsColorNeutralsWhite,\n color: colors.DdsColorNeutralsGray7,\n gap: spacing.SizesDdsSpacingLocalX05,\n borderRadius: button.appearances.rounded.base.borderRadius,\n padding: button.sizes.small.text.padding,\n hover: selectionControl.hover.base,\n checked: {\n ...selectionControl.checked.base,\n color: colors.DdsColorNeutralsWhite,\n hover: selectionControl.checked.hover,\n },\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const toggleButtonTokens = {\n toggleButton,\n group,\n container,\n};\n","import { useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { toggleButtonTokens as tokens } from './ToggleButton.tokens';\n\ninterface GroupProps {\n direction?: Direction;\n}\n\nconst Group = styled.div<GroupProps>`\n gap: ${tokens.group.gap};\n display: flex;\n flex-wrap: wrap;\n ${({ direction }) => css`\n flex-direction: ${direction};\n `}\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${tokens.container.gap};\n`;\n\ntype Direction = 'row' | 'column';\n\nexport type ToggleButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Ledetekst for gruppen. */\n label?: string;\n /**Retningen barna legger seg i. */\n direction?: Direction;\n /** Custom `id` for ledetekst. Blir generert som default for å knytte ledetekst til gruppen. */\n labelId?: string;\n }\n>;\n\nexport const ToggleButtonGroup = (props: ToggleButtonGroupProps) => {\n const {\n children,\n direction = 'row',\n label,\n labelId,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueLabelId = labelId ?? `${generatedId}-ToggleButtonGroupLabel`;\n const groupProps = {\n direction,\n };\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n role: 'group',\n 'aria-labelledby': label ? uniqueLabelId : undefined,\n };\n\n return (\n <Container {...containerProps}>\n {!!label && (\n <Typography\n as=\"span\"\n typographyType=\"supportingStyleLabel01\"\n id={uniqueLabelId}\n >\n {label}\n </Typography>\n )}\n <Group {...groupProps}>{children}</Group>\n </Container>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import styled, { css } from 'styled-components';\nimport {\n forwardRef,\n HTMLAttributes,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport {\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { TabsContext } from './Tabs.context';\nimport { Property } from 'csstype';\n\ninterface ContainerProps {\n $width?: Property.Width;\n}\n\nconst Container = styled.div<ContainerProps>`\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `};\n`;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til den aktive fanen. **OBS!** Ved å sette denne vil brukere aldri kunne endre tab uten at du også registrerer en `onChange`-lytter for å ta vare på aktiv tab utenfor komponenten. */\n activeTab?: number;\n /** Ekstra logikk ved endring av aktiv fane. */\n onChange?: (index: number) => void;\n /** Retningen ikon og tekst vises i `<Tab />`-elementer. */\n tabContentDirection?: Direction;\n /**Bredde for hele komponenten. */\n width?: Property.Width;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n width,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-tabs`;\n\n const [thisActiveTab, setActiveTab] = useState(activeTab ?? 0);\n const [hasTabFocus, setHasTabFocus] = useState(false);\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabPanelsRef = useRef<HTMLDivElement>(null);\n\n const handleTabChange = (index: number) => {\n setActiveTab(index);\n onChange && onChange(index);\n };\n\n useEffect(() => {\n if (activeTab !== undefined && activeTab !== thisActiveTab) {\n setActiveTab(activeTab);\n }\n }, [activeTab, thisActiveTab]);\n\n const containerProps = {\n ...getBaseHTMLProps(uniqueId, className, htmlProps, rest),\n ref,\n };\n\n return (\n <TabsContext.Provider\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n }}\n >\n <Container {...containerProps} $width={width}>\n {children}\n </Container>\n </TabsContext.Provider>\n );\n});\n\nTabs.displayName = 'Tabs';\n","import { createContext, RefObject, useContext } from 'react';\nimport { Direction } from '@norges-domstoler/dds-core';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement> | null;\n tabPanelsRef: RefObject<HTMLDivElement> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n});\nexport const useTabsContext = () => useContext(TabsContext);\n","import {\n ButtonHTMLAttributes,\n Dispatch,\n forwardRef,\n SetStateAction,\n useCallback,\n useEffect,\n MouseEvent,\n useRef,\n KeyboardEvent,\n} from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useCombinedRef,\n useOnKeyDown,\n BaseComponentPropsWithChildren,\n Direction,\n getBaseHTMLProps,\n normalizeButton,\n removeButtonStyling,\n} from '@norges-domstoler/dds-core';\nimport { Icon, SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n getFontStyling,\n defaultTypographyType,\n} from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\n\nconst { tab } = tokens;\n\ninterface ButtonProps {\n $active: boolean;\n $direction: Direction;\n}\n\nconst Button = styled.button<ButtonProps>`\n ${normalizeButton}\n ${removeButtonStyling}\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: ${tab.base.borderBottom};\n color: ${tab.base.color};\n padding: ${tab.base.padding};\n ${getFontStyling(defaultTypographyType)}\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-bottom 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n\n ${({ $direction }) => css`\n flex-direction: ${$direction};\n gap: ${tab[$direction].gap};\n `};\n\n ${({ $active }) =>\n $active &&\n css`\n background-color: ${tab.active.backgroundColor};\n border-color: ${tab.active.borderColor};\n color: ${tab.active.color};\n box-shadow: ${tab.active.boxShadow};\n `}\n\n &:focus-visible {\n ${focusVisible}\n outline-offset: -1px;\n }\n\n &:hover {\n border-color: ${tab.hover.borderColor};\n color: ${tab.hover.color};\n box-shadow: ${tab.hover.boxShadow};\n }\n`;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv. */\n active?: boolean;\n /** Ikon. */\n icon?: SvgIcon;\n /** Spesifiserer om `<Tab />` skal ha fokus. **OBS!** settes automatisk av forelder.*/\n focus?: boolean;\n /** Callback som setter fokus. **OBS!** settes automatisk av forelder.*/\n setFocus?: Dispatch<SetStateAction<number>>;\n /** Indeksen til `<Tab />`. **OBS!** settes automatisk av forelder.*/\n index?: number;\n } & Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'>\n>;\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>((props, ref) => {\n const {\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabPanelsRef, setHasTabFocus, tabContentDirection } =\n useTabsContext();\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n setHasTabFocus(true);\n }\n }, [focus]);\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n const handleSelect = useCallback(() => {\n if (setFocus && index) {\n setFocus(index);\n }\n }, [index, setFocus]);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick && onClick(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown && onKeyDown(e);\n };\n\n return (\n <Button\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\n $active={active}\n $direction={tabContentDirection}\n onClick={handleOnClick}\n onKeyDown={handleOnKeyDown}\n tabIndex={focus ? 0 : -1}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n <span>{children}</span>\n </Button>\n );\n});\n\nTab.displayName = 'Tab';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { border, spacing, colors } = ddsBaseTokens;\n\nconst tabList = {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${border.BordersDdsBorderStyleLightStroke}`,\n};\nconst tab = {\n base: {\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid transparent`,\n color: colors.DdsColorNeutralsGray7,\n padding: spacing.SizesDdsSpacingLocalX05,\n },\n row: {\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n column: {\n gap: spacing.SizesDdsSpacingLocalX025,\n },\n active: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n hover: {\n color: colors.DdsColorInteractiveDarkest,\n boxShadow: `inset 0 -2px 0 0 ${colors.DdsColorInteractiveDarker}`,\n borderColor: colors.DdsColorInteractiveDarker,\n },\n};\n\nconst panel = {\n padding: spacing.SizesDdsSpacingLocalX025,\n};\n\nexport const tabsTokens = {\n tabList,\n tab,\n panel,\n};\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n isValidElement,\n cloneElement,\n FocusEvent,\n ReactElement,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n useOnClickOutside,\n useOnKeyDown,\n useRoveFocus,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\nimport { useTabsContext } from './Tabs.context';\nimport { scrollbarStyling } from '../ScrollableContainer';\n\nconst { tabList } = tokens;\n\nconst TabRow = styled.div`\n border-bottom: ${tabList.borderBottom};\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n overflow-x: auto;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n scroll-snap-type: x mandatory;\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: ${focusVisibleTransitionValue};\n }\n &:focus-visible {\n ${focusVisible}\n }\n &:focus-visible button {\n outline: none;\n }\n`;\n\nexport type TabListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n ({ children, id, onFocus, ...rest }, ref) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n tabPanelsRef,\n setHasTabFocus,\n } = useTabsContext();\n\n const uniqueId = id ?? `${tabsId}-tablist`;\n const childrenArray = Children.toArray(children).length;\n const [focus, setFocus] = useRoveFocus(childrenArray, !hasTabFocus, 'row');\n const combinedRef = useCombinedRef(ref, tabListRef);\n\n const tabListChildren = Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-tab-${index}`,\n 'aria-controls': `${tabsId}-panel-${index}`,\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: () => handleTabChange(index),\n })\n );\n });\n\n useOnKeyDown('Tab', () => {\n setHasTabFocus(false);\n tabPanelsRef?.current?.focus();\n });\n\n useOnClickOutside((tabListRef?.current as HTMLElement) || null, () => {\n setHasTabFocus(false);\n });\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const tabListProps = {\n ...rest,\n ref: combinedRef,\n role: 'tablist',\n 'aria-label': 'Bruk venste og høyre piltast for å bla',\n id: uniqueId,\n tabIndex: 0,\n onFocus: handleOnFocus,\n };\n\n return <TabRow {...tabListProps}>{tabListChildren}</TabRow>;\n },\n);\n\nTabList.displayName = 'TabList';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { tabsTokens as tokens } from './Tabs.tokens';\n\nconst { panel } = tokens;\n\ninterface PanelProps {\n $active: boolean;\n}\n\nconst Panel = styled.div<PanelProps>`\n padding: ${panel.padding};\n @media (prefers-reduced-motion: no-preference) {\n transition: ${focusVisibleTransitionValue};\n }\n\n ${({ $active }) =>\n !$active &&\n css`\n display: none;\n `}\n &:focus-visible {\n ${focusVisible}\n }\n`;\n\nexport type TabPanelProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Spesifiserer om panelet skal vises basert på aktiv fane. */\n active?: boolean;\n }\n>;\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ active = false, children, id, className, htmlProps, ...rest }, ref) => {\n return (\n <Panel\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n tabIndex={0}\n role=\"tabpanel\"\n $active={active}\n >\n {children}\n </Panel>\n );\n },\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n forwardRef,\n HTMLAttributes,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { useTabsContext } from './Tabs.context';\n\nexport type TabPanelsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TabPanels = forwardRef<HTMLDivElement, TabPanelsProps>(\n ({ children, ...rest }, ref) => {\n const { activeTab, tabsId, tabPanelsRef } = useTabsContext();\n const combinedRef = useCombinedRef(ref, tabPanelsRef);\n\n const panelChildren = Children.map(children, (child, index) => {\n const active = index === activeTab;\n return (\n isValidElement(child) &&\n cloneElement(child as ReactElement, {\n id: `${tabsId}-panel-${index}`,\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n active,\n 'aria-expanded': active,\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n },\n);\n\nTabPanels.displayName = 'TabPanels';\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { tagTokens as tokens, typographyType } from './Tag.tokens';\n\nconst { wrapper } = tokens;\n\ninterface WrapperProps {\n $purpose: TagPurpose;\n}\n\nconst Wrapper = styled(TextOverflowEllipsisWrapper)<WrapperProps>`\n display: inline-flex;\n align-items: center;\n border: ${wrapper.border};\n border-radius: ${wrapper.borderRadius};\n padding: ${wrapper.padding};\n ${getFontStyling(typographyType)}\n ${({ $purpose }) => css`\n background-color: ${wrapper.purpose[$purpose].backgroundColor};\n border-color: ${wrapper.purpose[$purpose].borderColor};\n `}\n`;\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\n\nexport type TagProps = BaseComponentProps<\n HTMLSpanElement,\n {\n /**Tekst som vises i `<Tag />.` */\n text?: string;\n /**Formål med status eller kategorisering. Påvirker styling. */\n purpose?: TagPurpose;\n }\n>;\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>((props, ref) => {\n const {\n text,\n purpose = 'default',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n return (\n <Wrapper\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n ref={ref}\n $purpose={purpose}\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n </Wrapper>\n );\n});\n\nTag.displayName = 'Tag';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { localMessageTokens } from '../LocalMessage/LocalMessage.tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, borderRadius, spacing } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst wrapper = {\n border: '1px solid',\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n purpose: {\n default: {\n backgroundColor: colors.DdsColorNeutralsGray1,\n borderColor: colors.DdsColorNeutralsGray3,\n },\n success: localMessageTokens.container.purpose.success,\n danger: localMessageTokens.container.purpose.danger,\n warning: localMessageTokens.container.purpose.warning,\n info: localMessageTokens.container.purpose.info,\n },\n};\n\nexport const tagTokens = {\n wrapper,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n getFontStyling,\n} from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { chipTokens as tokens, typographyType } from './Chip.tokens';\n\nconst { container } = tokens;\n\nconst Container = styled(TextOverflowEllipsisWrapper)`\n display: flex;\n align-items: center;\n max-width: 100%;\n gap: ${container.gap};\n padding: ${container.padding};\n border: ${container.border};\n border-radius: ${container.borderRadius};\n background-color: ${container.backgroundColor};\n ${getFontStyling(typographyType, true)};\n`;\n\nexport type ChipProps = BaseComponentProps<\n HTMLDivElement,\n {\n /** Teksten som vises i komponenten. */\n text?: string;\n /** Ekstra logikk når `<Chip />` lukkes. */\n onClose?: () => void;\n }\n>;\n\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>((props, ref) => {\n const { text, onClose, id, className, htmlProps = {}, ...rest } = props;\n\n const { 'aria-label': ariaLabel, ...restHTMLprops } = htmlProps;\n\n const [isOpen, setIsOpen] = useState(true);\n\n const onClick = () => {\n setIsOpen(false);\n onClose && onClose();\n };\n\n return isOpen ? (\n <Container\n {...getBaseHTMLProps(id, className, restHTMLprops, rest)}\n ref={ref}\n as=\"div\"\n >\n <TextOverflowEllipsisInner>{text}</TextOverflowEllipsisInner>\n <Button\n size=\"tiny\"\n icon={CloseIcon}\n appearance=\"borderless\"\n purpose=\"secondary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </Container>\n ) : null;\n});\n\nChip.displayName = 'Chip';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing, borderRadius } = ddsBaseTokens;\n\nexport const typographyType: StaticTypographyType = 'bodySans01';\n\nconst container = {\n gap: spacing.SizesDdsSpacingLocalX025,\n padding: `${spacing.SizesDdsSpacingLocalX0125} ${spacing.SizesDdsSpacingLocalX025}`,\n backgroundColor: colors.DdsColorNeutralsGray1,\n border: `1px solid ${colors.DdsColorNeutralsGray3}`,\n borderRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n};\n\nconst group = {\n gap: spacing.SizesDdsSpacingLocalX075,\n};\n\nexport const chipTokens = {\n container,\n group,\n};\n","import { forwardRef, HTMLAttributes, Children } from 'react';\nimport styled from 'styled-components';\nimport { removeListStyling } from '@norges-domstoler/dds-core';\nimport { chipTokens as tokens } from './Chip.tokens';\n\nconst Group = styled.ul`\n ${removeListStyling}\n display: flex;\n gap: ${tokens.group.gap};\n`;\n\nexport type ChipGroupProps = HTMLAttributes<HTMLUListElement>;\n\nexport const ChipGroup = forwardRef<HTMLUListElement, ChipGroupProps>(\n ({ children, ...rest }, ref) => {\n const childrenArray = Children.toArray(children);\n\n const groupChildren = childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ));\n return (\n <Group {...rest} ref={ref}>\n {groupChildren}\n </Group>\n );\n },\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { ChangeEvent, useState, useId } from 'react';\nimport styled, { css } from 'styled-components';\nimport { selection } from '@norges-domstoler/dds-core';\nimport { getBaseHTMLProps } from '@norges-domstoler/dds-core';\nimport { combineHandlers } from '@norges-domstoler/dds-core';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { ToggleBarContext } from './ToggleBar.context';\nimport { toggleBarTokens as tokens } from './ToggleBar.tokens';\nimport { Property } from 'csstype';\nimport { ToggleBarProps, ToggleBarValue } from './ToggleBar.types';\n\ninterface OuterContainerProps {\n $width?: Property.Width;\n}\n\nconst OuterContainer = styled.div<OuterContainerProps>`\n display: flex;\n flex-direction: column;\n gap: ${tokens.outerContainer.gap};\n &::selection,\n *::selection {\n ${selection}\n }\n ${({ $width }) =>\n $width &&\n css`\n width: ${$width};\n `}\n`;\n\nconst Bar = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n`;\n\nexport const ToggleBar = <T extends string | number = string>(\n props: ToggleBarProps<T>,\n) => {\n const {\n children,\n size = 'medium',\n label,\n onChange,\n value,\n name,\n width,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleBar`;\n\n const [groupValue, setGroupValue] = useState<ToggleBarValue>(value);\n\n const handleChange = combineHandlers(\n (e: ChangeEvent<HTMLInputElement>) => setGroupValue(e.target.value),\n e => onChange && onChange(e, e.target.value as T),\n );\n\n const labelId = label && `${uniqueId}-label`;\n\n return (\n <ToggleBarContext.Provider\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <OuterContainer\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n $width={width}\n >\n {label && (\n <Typography typographyType=\"supportingStyleLabel01\" id={labelId}>\n {label}\n </Typography>\n )}\n <Bar>{children}</Bar>\n </OuterContainer>\n </ToggleBarContext.Provider>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { ChangeEvent, createContext, useContext } from 'react';\nimport { ToggleBarSize, ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { calculateHeightWithLineHeight } from '@norges-domstoler/dds-core';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\nimport { ToggleBarSize } from './ToggleBar.types';\n\nconst { colors, spacing, border, borderRadius, fontPackages } = ddsBaseTokens;\n\nexport const typographyTypes: { [k in ToggleBarSize]: StaticTypographyType } = {\n large: 'bodySans04',\n medium: 'bodySans02',\n small: 'bodySans01',\n tiny: 'supportingStyleTiny01',\n};\n\nconst iconSizeTiny = `${calculateHeightWithLineHeight(\n fontPackages.supportingStyle_tiny_01.numbers.lineHeightNumber,\n fontPackages.supportingStyle_tiny_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeSmall = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_01.numbers.lineHeightNumber,\n fontPackages.body_sans_01.numbers.fontSizeNumber,\n)}px`;\n\nconst iconSizeMedium = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_02.numbers.lineHeightNumber,\n fontPackages.body_sans_02.numbers.fontSizeNumber,\n)}px`;\nconst iconSizeLarge = `${calculateHeightWithLineHeight(\n fontPackages.body_sans_04.numbers.lineHeightNumber,\n fontPackages.body_sans_04.numbers.fontSizeNumber,\n)}px`;\n\nconst outerContainer = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst label = {\n base: {\n borderColor: colors.DdsColorNeutralsGray5,\n borderRight: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTop: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderBottom: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n },\n hover: {\n color: colors.DdsColorInteractiveDark,\n borderColor: colors.DdsColorInteractiveDark,\n },\n firstChild: {\n borderLeft: `${border.BordersDdsBorderStyleLightStrokeWeight} solid ${colors.DdsColorNeutralsGray5}`,\n borderTopLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomLeftRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n lastChild: {\n borderTopRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n borderBottomRightRadius: borderRadius.RadiiDdsBorderRadius1Radius,\n },\n};\n\nconst content = {\n base: { backgroundColor: colors.DdsColorNeutralsGray1 },\n active: {\n color: colors.DdsColorInteractiveDarkest,\n borderColor: colors.DdsColorInteractiveDarker,\n backgroundColor: colors.DdsColorInteractiveLightest,\n boxShadow: `inset 0 0 0 1px ${colors.DdsColorInteractiveDarker}`,\n },\n size: {\n tiny: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX025,\n\n fontSize: iconSizeTiny,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX025} ${spacing.SizesDdsSpacingLocalX075}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n small: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX05,\n fontSize: iconSizeSmall,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX05} ${spacing.SizesDdsSpacingLocalX1}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n medium: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX075,\n fontSize: iconSizeMedium,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX075} ${spacing.SizesDdsSpacingLocalX15}`,\n gap: spacing.SizesDdsSpacingLocalX05,\n },\n },\n large: {\n justIcon: {\n padding: spacing.SizesDdsSpacingLocalX1,\n fontSize: iconSizeLarge,\n },\n withText: {\n padding: `${spacing.SizesDdsSpacingLocalX1} ${spacing.SizesDdsSpacingLocalX2}`,\n gap: spacing.SizesDdsSpacingLocalX1,\n },\n },\n },\n};\n\nexport const toggleBarTokens = {\n outerContainer,\n content,\n label,\n};\n","import { forwardRef, InputHTMLAttributes, ChangeEvent, useId } from 'react';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport {\n BaseComponentProps,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { ToggleBarContextType, useToggleBarContext } from './ToggleBar.context';\nimport { Label, Content } from './ToggleRadio.styles';\nimport { HiddenInput } from '@norges-domstoler/dds-form';\n\ntype PickedInputHTMLAttributes = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n 'name' | 'checked' | 'value' | 'onChange' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ToggleRadioProps = BaseComponentProps<\n HTMLInputElement,\n {\n /**Ledetekst som vises i komponenten. */\n label?: string;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n } & PickedInputHTMLAttributes,\n Omit<InputHTMLAttributes<HTMLInputElement>, keyof PickedInputHTMLAttributes>\n>;\n\n/**Beregner om en ToggleRadio skal være checked eller ikke.\n *\n * Returnerer checked hvis den er definert.\n *\n * Returnerer true hvis både verdien fra context og verdien i ToggleRadio er truthy og like.\n * Returnerer true hvis verdien i ToggleRadio er truthy, men context ikke finnes.\n *\n * Returnerer false hvis verdiene er ulike eller hvis verdien i ToggleRadio er falsy.\n */\nconst calculateChecked = (\n value: unknown,\n group: ToggleBarContextType,\n checked?: boolean,\n): boolean => {\n if (typeof checked !== 'undefined') return checked;\n\n if (typeof value !== 'undefined' && value !== null && group) {\n if (typeof value === 'number') {\n return value === Number(group?.value);\n }\n return value === group?.value;\n }\n\n return !!value;\n};\n\nexport const ToggleRadio = forwardRef<HTMLInputElement, ToggleRadioProps>(\n (props, ref) => {\n const {\n value,\n name,\n onChange,\n checked,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-ToggleRadio`;\n const group = useToggleBarContext();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n group?.onChange && group.onChange(event);\n };\n\n return (\n <Label size={group.size} htmlFor={uniqueId}>\n <HiddenInput\n {...getBaseHTMLProps(uniqueId, className, htmlProps, rest)}\n type=\"radio\"\n ref={ref}\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n />\n <Content $size={group.size} $justIcon={!!icon && !label}>\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Content>\n </Label>\n );\n },\n);\n\nToggleRadio.displayName = 'ToggleRadio';\n","import styled, { css } from 'styled-components';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n focusVisibleTransitionValue,\n HiddenInput,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\nimport { ToggleBarSize } from './ToggleBar.types';\nimport { toggleBarTokens as tokens, typographyTypes } from './ToggleBar.tokens';\n\nconst { content, label } = tokens;\n\ninterface ContentProps {\n $size: ToggleBarSize;\n $justIcon: boolean;\n}\n\nexport const Content = styled.span<ContentProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n word-break: break-word;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n box-shadow 0.2s,\n color 0.2s,\n ${focusVisibleTransitionValue};\n }\n background-color: ${content.base.backgroundColor};\n\n ${({ $size, $justIcon }) => css`\n ${$justIcon\n ? css`\n font-size: ${content.size[$size].justIcon.fontSize};\n padding: ${content.size[$size].justIcon.padding};\n `\n : css`\n gap: ${content.size[$size].withText.gap};\n padding: ${content.size[$size].withText.padding};\n ${getFontStyling(typographyTypes[$size])}\n `}\n `}\n`;\n\ninterface LabelProps {\n size: ToggleBarSize;\n}\n\nexport const Label = styled.label<LabelProps>`\n ${Content} {\n border-right: ${label.base.borderRight};\n border-top: ${label.base.borderTop};\n border-bottom: ${label.base.borderBottom};\n }\n &:first-child ${Content} {\n border-left: ${label.firstChild.borderLeft};\n border-top-left-radius: ${label.firstChild.borderTopLeftRadius};\n border-bottom-left-radius: ${label.firstChild.borderBottomLeftRadius};\n }\n &:last-child ${Content} {\n border-top-right-radius: ${label.lastChild.borderTopRightRadius};\n border-bottom-right-radius: ${label.lastChild.borderBottomRightRadius};\n }\n\n ${HiddenInput}:checked + ${Content} {\n color: ${content.active.color};\n border-color: ${content.active.borderColor};\n background-color: ${content.active.backgroundColor};\n box-shadow: ${content.active.boxShadow};\n position: relative;\n z-index: 0;\n }\n\n ${HiddenInput}:focus-visible + ${Content} {\n ${focusVisible}\n position: relative;\n z-index: 0;\n }\n\n &:hover {\n color: ${label.hover.color};\n border-color: ${label.hover.borderColor};\n }\n`;\n","import styled, { css } from 'styled-components';\nimport { ScreenSize, useScreenSize } from '@norges-domstoler/dds-core';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { gridTokens } from './Grid.tokens';\nimport { GridContext } from './Grid.context';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridProps {\n screenSize: ScreenSize;\n maxWidth?: MaxWidthGrid;\n rowGap?: RowGapGrid;\n}\n\nconst getHooksGridStyling = (\n screenSize: ScreenSize,\n maxWidth?: MaxWidthGrid,\n rowGap?: RowGapGrid,\n) => {\n const tokens = gridTokens[screenSize].grid;\n return {\n gridTemplateColumns: `repeat(${tokens.columns}, minmax(0, 1fr))`,\n columnGap: tokens.columnGap,\n marginLeft: tokens.marginLeft,\n marginRight: tokens.marginRight,\n rowGap:\n rowGap && rowGap[getLiteralScreenSize(screenSize)]\n ? rowGap[getLiteralScreenSize(screenSize)]\n : tokens.columnGap,\n maxWidth:\n maxWidth &&\n maxWidth[getLiteralScreenSize(screenSize)] &&\n maxWidth[getLiteralScreenSize(screenSize)],\n };\n};\n\nconst StyledGrid = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridProps)[] = [\n 'maxWidth',\n 'rowGap',\n 'screenSize',\n ];\n\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridProps>`\n display: grid;\n ${({ maxWidth }) => css`\n max-width: ${maxWidth};\n `}\n ${({ screenSize, maxWidth, rowGap }) =>\n getHooksGridStyling(screenSize, maxWidth, rowGap)}\n`;\n\ntype RowGapGrid = BreakpointBasedProps<'rowGap'>;\ntype MaxWidthGrid = BreakpointBasedProps<'maxWidth'>;\n\ntype BaseGridProps = {\n /**Maksimal bredde. Gjøres per brekkepunkt. */\n maxWidth?: MaxWidthGrid;\n /** CSS `row-gap`. Gjøres per brekkepunkt. */\n rowGap?: RowGapGrid;\n} & Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\ntype GridDivProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**HTML tag som returneres. */\n as: 'div';\n } & BaseGridProps\n>;\ntype GridFormProps = BaseComponentPropsWithChildren<\n HTMLFormElement,\n { as: 'form' } & BaseGridProps\n>;\n\nexport type GridProps = GridDivProps | GridFormProps;\n\nexport const Grid = (props: GridProps) => {\n const { id, className, children, htmlProps, as, ...rest } = props;\n const screenSize = useScreenSize();\n return (\n <GridContext.Provider value={{ screenSize: screenSize }}>\n {as === 'div' ? (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGrid>\n ) : (\n <StyledGrid\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n as={as}\n >\n {children}\n </StyledGrid>\n )}\n </GridContext.Provider>\n );\n};\n\nGrid.displayName = 'Grid';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\n\nconst { grid, spacing } = ddsBaseTokens;\n\nconst allColumns = '1 / -1';\nconst halfWayColumn: Record<ScreenSize, number> = {\n [ScreenSize.XSmall]: grid.DdsGridXs0599Count / 2 + 1,\n [ScreenSize.Small]: grid.DdsGridSm600959Count / 2 + 1,\n [ScreenSize.Medium]: grid.DdsGridMd9601279Count / 2 + 1,\n [ScreenSize.Large]: grid.DdsGridLg12801919Count / 2 + 1,\n [ScreenSize.XLarge]: grid.DdsGridXl1920Count / 2 + 1,\n};\n\nexport const gridTokens = {\n [ScreenSize.XSmall]: {\n grid: {\n columns: grid.DdsGridXs0599Count,\n columnGap: grid.DdsGridXs0599GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX1,\n marginRight: spacing.SizesDdsSpacingLayoutX1,\n },\n\n columns: {\n firstHalf: {\n gridColumn: allColumns,\n },\n secondHalf: {\n gridColumn: allColumns,\n },\n },\n },\n [ScreenSize.Small]: {\n grid: {\n columns: grid.DdsGridSm600959Count,\n columnGap: grid.DdsGridSm600959GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX2,\n marginRight: spacing.SizesDdsSpacingLayoutX2,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Small]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Small]} / -1`,\n },\n },\n },\n [ScreenSize.Medium]: {\n grid: {\n columns: grid.DdsGridMd9601279Count,\n columnGap: grid.DdsGridMd9601279GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX4,\n marginRight: spacing.SizesDdsSpacingLayoutX4,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Medium]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Medium]} / -1`,\n },\n },\n },\n [ScreenSize.Large]: {\n grid: {\n columns: grid.DdsGridLg12801919Count,\n columnGap: grid.DdsGridLg12801919GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX6,\n marginRight: spacing.SizesDdsSpacingLayoutX6,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.Large]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.Large]} / -1`,\n },\n },\n },\n [ScreenSize.XLarge]: {\n grid: {\n columns: grid.DdsGridXl1920Count,\n columnGap: grid.DdsGridXl1920GutterSize,\n marginLeft: spacing.SizesDdsSpacingLayoutX10,\n marginRight: spacing.SizesDdsSpacingLayoutX10,\n },\n columns: {\n firstHalf: {\n gridColumn: `1 / ${halfWayColumn[ScreenSize.XLarge]}`,\n },\n secondHalf: {\n gridColumn: `${halfWayColumn[ScreenSize.XLarge]} / -1`,\n },\n },\n },\n};\n","import { useContext, createContext } from 'react';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\n\nexport interface GridContextProps {\n screenSize: ScreenSize;\n}\n\nexport const GridContext = createContext<GridContextProps>({\n screenSize: ScreenSize.Large,\n});\n\nexport const useGridContext = () => {\n return useContext(GridContext);\n};\n","import styled from 'styled-components';\nimport { ScreenSize } from '@norges-domstoler/dds-core';\nimport { gridTokens as tokens } from './Grid.tokens';\nimport { Property } from 'csstype';\nimport { useGridContext } from './Grid.context';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { HTMLAttributes } from 'react';\nimport {\n BreakpointBasedProps,\n getLiteralScreenSize,\n} from '@norges-domstoler/dds-core';\n\ninterface StyledGridChildProps {\n screenSize: ScreenSize;\n columnsOccupied?: ColumnsOccupied;\n justifySelf?: Property.JustifySelf;\n gridRow?: Property.GridRow;\n}\n\nexport const isRelativeGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport const isGridColumn = (\n type: ColumnsOccupied | undefined,\n): type is GridColumnPerScreenSize => {\n return (\n (type as GridColumnPerScreenSize).xs !== undefined ||\n (type as GridColumnPerScreenSize).sm !== undefined ||\n (type as GridColumnPerScreenSize).md !== undefined ||\n (type as GridColumnPerScreenSize).lg !== undefined ||\n (type as GridColumnPerScreenSize).xl !== undefined\n );\n};\n\nconst StyledGridChild = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StyledGridChildProps)[] = [\n 'columnsOccupied',\n 'justifySelf',\n 'gridRow',\n 'screenSize',\n ];\n return !styleOnlyProps.some(styleProp => styleProp === prop);\n },\n})<StyledGridChildProps>`\n grid-column: ${({ screenSize, columnsOccupied }) =>\n columnsOccupied === 'all'\n ? '1 / -1'\n : isGridColumn(columnsOccupied)\n ? columnsOccupied[getLiteralScreenSize(screenSize)]\n : isRelativeGridColumn(columnsOccupied)\n ? tokens[screenSize].columns[columnsOccupied].gridColumn\n : ''};\n\n justify-self: ${({ justifySelf }) => justifySelf && justifySelf};\n grid-row: ${({ gridRow }) => gridRow && gridRow};\n`;\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\ntype GridColumnPerScreenSize = BreakpointBasedProps<'gridColumn'>;\n\nexport type ColumnsOccupied = RelativeColumnsOccupied | GridColumnPerScreenSize;\nexport type GridChildProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**hvilke kolonner innholdet skal okkupere. Tar inn enten en string med relativ definisjon eller et objekt med egentilpassede `grid-column` CSS verdi definert for hver brekkepunkt. */\n columnsOccupied?: ColumnsOccupied;\n /**Plassering av innholdet på x-aksen. */\n justifySelf?: Property.JustifySelf;\n /**Hvilke rader innholdet skal okkupere. */\n gridRow?: Property.GridRow;\n }\n> &\n Pick<HTMLAttributes<HTMLElement>, 'style'>;\n\nexport const GridChild = (props: GridChildProps) => {\n const { id, className, htmlProps, children, ...rest } = props;\n const { screenSize } = useGridContext();\n\n return (\n <StyledGridChild\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n screenSize={screenSize}\n >\n {children}\n </StyledGridChild>\n );\n};\n\nGridChild.displayName = 'GridChild';\n","import {\n Children,\n cloneElement,\n forwardRef,\n ForwardRefExoticComponent,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useEffect,\n useState,\n useMemo,\n} from 'react';\nimport styled from 'styled-components';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport { progressTrackerTokens } from './ProgressTracker.tokens';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\n\nconst ItemsWrapper = styled.ol`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${progressTrackerTokens.itemsWrapper.gap};\n margin: 0;\n padding: 0;\n`;\n\nconst ProgressTrackerConnector = styled.div`\n margin-left: calc(\n (${progressTrackerTokens.itemNumber.size} / 2) -\n (${progressTrackerTokens.connector.width} / 2)\n );\n height: ${progressTrackerTokens.connector.height};\n border-right: ${progressTrackerTokens.connector.width} solid\n ${progressTrackerTokens.connector.color};\n`;\n\ntype ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget. */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = forwardRef<HTMLDivElement, ProgressTrackerProps>((props, ref) => {\n const {\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [thisActiveStep, setActiveStep] = useState(activeStep);\n\n const handleChange = (step: number) => {\n setActiveStep(step);\n onStepChange && onStepChange(step);\n };\n\n useEffect(() => {\n if (activeStep !== undefined && activeStep != thisActiveStep) {\n setActiveStep(activeStep);\n }\n }, [activeStep, thisActiveStep]);\n\n const containerProps = {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n ref,\n };\n\n const steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n const itemsWithConnectorsBetween =\n intersperseItemsWithConnector(itemsWithIndex);\n return itemsWithConnectorsBetween;\n }, [children]);\n\n return (\n <ProgressTrackerContext.Provider\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div role=\"group\" aria-label=\"progress\" {...containerProps}>\n <ItemsWrapper>{steps}</ItemsWrapper>\n </div>\n </ProgressTrackerContext.Provider>\n );\n });\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: ReactElement<TProps>[],\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (children: ReactElement[]) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <ProgressTrackerConnector aria-hidden />\n {child}\n </Fragment>\n );\n });\n","import { createContext, useContext } from 'react';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { IconSize } from '@norges-domstoler/dds-icons';\nimport { StaticTypographyType } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const typographyTypes: {\n number: StaticTypographyType;\n label: StaticTypographyType;\n} = {\n number: 'bodySans01',\n label: 'bodySans03',\n};\n\nconst itemsWrapper = {\n gap: spacing.SizesDdsSpacingLocalX0125,\n};\n\nconst itemContentWrapper = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nconst connector = {\n color: colors.DdsColorNeutralsGray5,\n height: '18px',\n width: '1px',\n};\n\nconst itemNumber = {\n size: '28px',\n borderWidth: '2px',\n iconSize: 'small' as IconSize,\n active: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n },\n completed: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveBase,\n hover: {\n borderColor: colors.DdsColorInteractiveDark,\n color: colors.DdsColorNeutralsWhite,\n backgroundColor: colors.DdsColorInteractiveDark,\n },\n },\n inactive: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorNeutralsWhite,\n hover: {\n borderColor: colors.DdsColorInteractiveBase,\n color: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n },\n disabled: {\n borderColor: colors.DdsColorNeutralsGray5,\n color: colors.DdsColorNeutralsGray5,\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst itemText = {\n textDecoration: 'underline',\n\n active: {\n color: colors.DdsColorNeutralsGray9,\n textDecorationColor: colors.DdsColorNeutralsGray9,\n },\n inactive: {\n color: colors.DdsColorNeutralsGray7,\n textDecorationColor: 'transparent',\n hover: {\n textDecorationColor: colors.DdsColorNeutralsGray7,\n },\n },\n disabled: {\n color: colors.DdsColorNeutralsGray6,\n textDecoration: 'none',\n },\n};\n\nexport const progressTrackerTokens = {\n itemsWrapper,\n itemContentWrapper,\n connector,\n itemNumber,\n itemText,\n};\n","import { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckIcon } from '@norges-domstoler/dds-icons';\nimport { SvgIcon } from '@norges-domstoler/dds-icons';\nimport { BaseComponentPropsWithChildren } from '@norges-domstoler/dds-core';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport {\n progressTrackerTokens,\n typographyTypes,\n} from './ProgressTracker.tokens';\nimport {\n focusVisibleTransitionValue,\n focusVisible,\n} from '@norges-domstoler/dds-form';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\nconst { itemNumber, itemText, itemContentWrapper } = progressTrackerTokens;\n\ninterface ItemStyleProps {\n $state: ItemState;\n}\n\ninterface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n\n /** Om steget er ferdig eller ikke. Settes av konsument. */\n completed?: boolean;\n\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n\n /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */\n index?: number;\n}\n\ntype ProgressTrackerItemProps =\n | ({\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick: (index: number) => void;\n } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>)\n | ({\n onClick?: undefined;\n } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);\n\nconst ItemWrapper = styled.li`\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n`;\n\nconst ItemNumber = styled.div<ItemStyleProps>`\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n border-radius: 50%;\n border: ${itemNumber.borderWidth} solid;\n width: ${itemNumber.size};\n height: ${itemNumber.size};\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n ${getFontStyling(typographyTypes.number)}\n font-weight: 600;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeIncomplete':\n return css`\n border-color: ${itemNumber.active.borderColor};\n color: ${itemNumber.active.color};\n background-color: ${itemNumber.active.backgroundColor};\n `;\n case 'activeCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveCompleted':\n return css`\n border-color: ${itemNumber.completed.borderColor};\n color: ${itemNumber.completed.color};\n background-color: ${itemNumber.completed.backgroundColor};\n `;\n case 'inactiveIncomplete':\n return css`\n border-color: ${itemNumber.inactive.borderColor};\n color: ${itemNumber.inactive.color};\n background-color: ${itemNumber.inactive.backgroundColor};\n `;\n case 'disabled':\n return css`\n border-color: ${itemNumber.disabled.borderColor};\n color: ${itemNumber.disabled.color};\n background-color: ${itemNumber.disabled.backgroundColor};\n `;\n }\n }}\n`;\n\nconst ItemText = styled.div<ItemStyleProps>`\n ${getFontStyling(typographyTypes.label)}\n text-align: start;\n text-decoration: ${itemText.textDecoration};\n transition: text-decoration-color 0.2s;\n\n ${({ $state: state }) => {\n switch (state) {\n case 'activeCompleted':\n case 'activeIncomplete':\n return css`\n color: ${itemText.active.color};\n text-decoration-color: ${itemText.active.textDecorationColor};\n `;\n case 'inactiveCompleted':\n case 'inactiveIncomplete':\n return css`\n color: ${itemText.inactive.color};\n text-decoration-color: ${itemText.inactive.textDecorationColor};\n `;\n case 'disabled':\n return css`\n color: ${itemText.disabled.color};\n text-decoration: ${itemText.disabled.textDecoration};\n `;\n }\n }};\n`;\n\nconst ItemContentWrapper = styled.button<ItemStyleProps>`\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: ${itemNumber.size} 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: ${itemContentWrapper.gap};\n transition: ${focusVisibleTransitionValue};\n\n :focus-visible {\n ${focusVisible}\n }\n\n ${({ $state: state }) =>\n state !== 'disabled' &&\n css`\n cursor: pointer;\n `}\n`;\n\nconst getVisuallyHiddenText = (\n active: boolean,\n completed: boolean,\n index: number,\n) =>\n `${index + 1}, ${active ? '' : 'Trinn, '}${\n completed ? 'Ferdig, ' : 'Ikke ferdig, '\n }`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n index = 0,\n completed = false,\n disabled = false,\n icon,\n children,\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n\n const styleProps: ItemStyleProps = {\n $state: toItemState(active, completed, disabled),\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize={itemNumber.iconSize} />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize={itemNumber.iconSize} />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n return (\n <ItemWrapper aria-current={active ? 'step' : undefined}>\n <ItemContentWrapper\n {...styleProps}\n as={handleStepChange ? 'button' : 'div'}\n onClick={\n !disabled && handleStepChange\n ? () => handleStepChange(index)\n : undefined\n }\n disabled={disabled}\n >\n <ItemNumber {...styleProps} aria-hidden>\n {stepNumberContent}\n </ItemNumber>\n <ItemText {...styleProps}>\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </ItemText>\n </ItemContentWrapper>\n </ItemWrapper>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\n\nexport const InlineEditTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineEditTextAreaProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={textareaRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineTextArea ref={combinedRef} {...rest} />\n </InlineEdit>\n );\n});\n","import {\n ChangeEvent,\n useState,\n FocusEventHandler,\n FocusEvent,\n Children,\n cloneElement,\n isValidElement,\n ReactElement,\n} from 'react';\nimport { InlineEditProps } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '@norges-domstoler/dds-core';\n\ntype EditElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport const InlineEdit = (props: InlineEditProps) => {\n const {\n emptiable,\n value,\n onSetValue,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n children,\n } = props;\n const [editingValue, setEditingValue] = useState<typeof value>(value ?? '');\n const [isEditing, setIsEditing] = useState(false);\n\n const onChangeHandler = (e: ChangeEvent<EditElement>) => {\n setEditingValue(e.target.value);\n onChange && onChange();\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = () => {\n setIsEditing(true);\n onFocus && onFocus();\n };\n\n const onBlurHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n if (!emptiable && e.target.value.trim() === '') {\n setEditingValue(value);\n } else {\n onSetValue && onSetValue(e.target.value);\n }\n setIsEditing(false);\n onBlur && onBlur();\n };\n\n const onExitHandler = () => {\n if (\n inputRef.current === document.activeElement &&\n document.activeElement instanceof HTMLElement\n ) {\n setIsEditing(false);\n document.activeElement.blur();\n }\n };\n\n useOnKeyDown(['Enter'], () => onExitHandler());\n useOnKeyDown(['Escape'], () => onExitHandler());\n useOnClickOutside(inputRef.current, () => onExitHandler());\n\n const inputChild = Children.only(\n isValidElement(children) &&\n cloneElement(children as ReactElement, {\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }),\n );\n\n return <>{inputChild}</>;\n};\n\nInlineEdit.displayName = 'InlineEdit';\n","import { forwardRef, TextareaHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineTextArea,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineTextAreaProps = BaseInlineInputProps &\n TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const InlineTextArea = forwardRef<\n HTMLTextAreaElement,\n InlineTextAreaProps\n>((props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineTextArea\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={!!error || hasErrorMessage}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n});\n\nInlineTextArea.displayName = 'InlineTextArea';\n","import styled, { css } from 'styled-components';\nimport { inlineEditTokens } from './InlineEdit.tokens';\nimport { Property } from 'csstype';\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { StatefulInput, StyledInputProps } from '@norges-domstoler/dds-form';\n\nconst { inlineEdit, iconWrapper } = inlineEditTokens;\n\nexport const defaultWidth: Property.Width = '140px';\n\ntype StyledInlineInputProps = {\n isEditing?: boolean;\n hideIcon?: boolean;\n} & StyledInputProps;\n\nexport const StyledInlineInput = styled(StatefulInput).withConfig({\n shouldForwardProp: prop => prop !== 'isEditing' && prop !== 'hideIcon',\n})<StyledInlineInputProps>`\n border-color: transparent;\n background-color: ${inlineEdit.backgroundColor};\n padding: ${inlineEdit.padding};\n ${inlineEdit.font};\n ${({ isEditing, hideIcon }) =>\n !isEditing &&\n !hideIcon &&\n css`\n padding-left: ${inlineEdit.withIcon.paddingLeft};\n `}\n\n &:hover:enabled:read-write:not(:focus) {\n background-color: ${inlineEdit.hover.backgroundColor};\n border-color: transparent;\n box-shadow: none;\n }\n &:focus {\n background-color: ${inlineEdit.focus.backgroundColor};\n }\n`;\n\nexport const StyledInlineTextArea = styled(StyledInlineInput).attrs({\n as: 'textarea',\n})<StyledInlineInputProps>`\n resize: vertical;\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n`;\n\nexport const IconWrapper = styled.span`\n position: absolute;\n left: ${iconWrapper.left};\n top: ${iconWrapper.top};\n z-index: 1;\n &:hover {\n cursor: text;\n }\n`;\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing, fontPackages } = ddsBaseTokens;\n\nconst inlineEdit = {\n padding: spacing.SizesDdsSpacingLocalX025,\n font: fontPackages.body_sans_02.base,\n backgroundColor: 'transparent',\n withIcon: {\n paddingLeft: spacing.SizesDdsSpacingLocalX2,\n },\n hover: {\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n focus: {\n backgroundColor: colors.DdsColorNeutralsWhite,\n },\n};\n\nconst iconWrapper = {\n top: spacing.SizesDdsSpacingLocalX05,\n left: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const inlineEditTokens = {\n inlineEdit,\n iconWrapper,\n};\n","import { VisuallyHidden } from '../VisuallyHidden';\n\nexport const inlineEditVisuallyHidden = (id: string, emptiable?: boolean) => (\n <VisuallyHidden id={id} as=\"span\">\n Escape, Enter eller Tab for å lagre.{' '}\n {!emptiable && 'Inputfeltet er ikke tømmbar.'}\n </VisuallyHidden>\n);\n","import { forwardRef, useRef } from 'react';\nimport { InlineEdit } from './InlineEdit';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\n\nexport const InlineEditInput = forwardRef<\n HTMLInputElement,\n InlineEditInputProps\n>((props, ref) => {\n const { onSetValue, emptiable, value, onFocus, onChange, onBlur, ...rest } =\n props;\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEdit\n onSetValue={onSetValue}\n emptiable={emptiable}\n inputRef={inputRef}\n value={value}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n >\n <InlineInput {...rest} ref={combinedRef} />\n </InlineEdit>\n );\n});\n","import { forwardRef, InputHTMLAttributes, useId, useRef } from 'react';\nimport { EditIcon } from '@norges-domstoler/dds-icons';\nimport { Icon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport {\n IconWrapper,\n defaultWidth,\n StyledInlineInput,\n} from './InlineEdit.styles';\nimport { BaseInlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '@norges-domstoler/dds-core';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport {\n OuterInputContainer,\n InputContainer,\n} from '@norges-domstoler/dds-form';\n\nexport type InlineInputProps = BaseInlineInputProps &\n InputHTMLAttributes<HTMLInputElement>;\n\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n (props, ref) => {\n const {\n id,\n error,\n errorMessage,\n isEditing,\n width = defaultWidth,\n 'aria-describedby': ariaDescribedby,\n emptiable,\n hideIcon,\n ...rest\n } = props;\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineInput`;\n const hasErrorMessage = !!errorMessage;\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <OuterInputContainer width={width}>\n <InputContainer>\n {!isEditing && !hideIcon && (\n <IconWrapper\n onClick={() => {\n inputRef.current?.focus();\n }}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </IconWrapper>\n )}\n <StyledInlineInput\n {...rest}\n id={uniqueId}\n ref={combinedRef}\n hasErrorMessage={hasErrorState}\n isEditing={isEditing}\n hideIcon={hideIcon}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n />\n </InputContainer>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nInlineInput.displayName = 'InlineInput';\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport {\n useCombinedRef,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Property } from 'csstype';\nimport { getFontStyling } from '@norges-domstoler/dds-typography';\nimport {\n StatefulInput,\n StyledInputProps,\n inputTypographyTypes,\n getDefaultText,\n OuterInputContainer,\n} from '@norges-domstoler/dds-form';\n\nimport { scrollbarStyling } from '../ScrollableContainer';\nimport { textAreaTokens } from './TextArea.tokens';\nimport { renderInputMessage } from '../../utils/renderInputMessage';\nimport { TextAreaProps } from './TextArea.types';\n\nconst defaultWidth: Property.Width<string> = '320px';\nconst { textarea } = textAreaTokens;\n\nexport const StyledTextArea = styled(StatefulInput)<StyledInputProps>`\n ${scrollbarStyling.webkit}\n ${scrollbarStyling.firefox}\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: ${textarea.paddingBottom};\n ${getFontStyling(inputTypographyTypes.medium)}\n`;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (props, ref) => {\n const {\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n disabled,\n tip,\n label,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n className,\n style,\n width = defaultWidth,\n ...rest\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-textArea`;\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const multiRef = useCombinedRef(ref, textAreaRef);\n const [text, setText] = useState<string>(\n getDefaultText(value, defaultValue),\n );\n\n useEffect(() => {\n if (textAreaRef?.current) {\n textAreaRef.current.style.height = `${\n textAreaRef.current.scrollHeight + 2\n }px`;\n }\n }, [text]);\n\n const onChangeHandler: React.ChangeEventHandler<HTMLTextAreaElement> = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setText(event.target.value);\n\n if (onChange) {\n onChange(event);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = required || !!ariaRequired;\n\n const containerProps = {\n width,\n className,\n style,\n };\n\n const textAreaProps = {\n ref: multiRef,\n onChange: onChangeHandler,\n value,\n defaultValue,\n id: uniqueId,\n disabled,\n hasErrorMessage,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ]),\n 'aria-invalid': hasErrorMessage ? true : undefined,\n ...rest,\n };\n\n return (\n <OuterInputContainer {...containerProps}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredStyling} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n <StyledTextArea {...textAreaProps} as=\"textarea\" />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </OuterInputContainer>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { spacing } = ddsBaseTokens;\n\nconst textarea = {\n paddingBottom: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const textAreaTokens = {\n textarea,\n};\n","import { forwardRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { ChevronDownIcon, ChevronUpIcon } from '@norges-domstoler/dds-icons';\nimport { ExtractStrict } from '@norges-domstoler/dds-core';\nimport { Button, ButtonProps, ButtonPurpose, ButtonSize } from '../Button';\nimport {\n OverflowMenu,\n OverflowMenuButtonItem,\n OverflowMenuGroup,\n} from '../OverflowMenu';\nimport { tokens } from './SplitButton.tokens';\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst MainButton = styled(Button)`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n &:focus {\n position: relative;\n z-index: 0;\n }\n`;\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nconst OptionButton = styled(Button)<{\n purpose: SplitButtonPurpose;\n}>`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `\n border-left: ${tokens.mainButton.primary.borderLeft};\n &:hover {\n border-left: ${tokens.mainButton.primary.borderLeft};\n }\n `}\n\n &:focus {\n position: relative;\n z-index: 0;\n\n ${props =>\n props.purpose === 'primary' &&\n `border-left: ${tokens.mainButton.primary.borderLeft}`};\n }\n`;\n\nexport interface SplitButtonProps {\n /**Størrelse på komponenten. */\n size?: ButtonSize;\n /**Props for primær handling. Samme props som for `<Button />` unntatt `size`, `purpose`, og `appearance`. */\n primaryAction: Omit<ButtonProps, 'size' | 'apperance' | 'purpose'>;\n /**Props for sekunære handlinger. */\n secondaryActions: OverflowMenuButtonItem[];\n /**Formål med knappen */\n purpose?: SplitButtonPurpose;\n}\nexport const SplitButton = forwardRef<HTMLDivElement, SplitButtonProps>(\n (props, ref) => {\n const {\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n } = props;\n\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n appearance: 'filled',\n purpose: purpose,\n size,\n };\n\n return (\n <Container ref={ref}>\n <MainButton\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n />\n <OverflowMenuGroup onToggle={() => setIsOpen(!isOpen)}>\n <OptionButton\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n />\n <OverflowMenu items={secondaryActions} placement=\"bottom-end\" />\n </OverflowMenuGroup>\n </Container>\n );\n },\n);\n\nSplitButton.displayName = 'SplitButton';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst mainButton = {\n primary: {\n borderLeft: `1px solid ${ddsBaseTokens.colors.DdsColorNeutralsWhite}`,\n },\n};\n\nexport const tokens = {\n mainButton,\n};\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { stackTokens } from './Stack.tokens';\nimport {\n BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '@norges-domstoler/dds-core';\nimport { StandardProperties } from 'csstype';\n\nexport interface StackStyleProps {\n /**\n * Hvilken retning elementene skal plasseres i.\n */\n direction: 'horizontal' | 'vertical';\n /**\n * CSS `align-items`.\n * @default 'center'\n */\n align?: StandardProperties['alignItems'];\n /**\n * CSS `justify-content`.\n * @default 'flex-start'\n */\n justify?: StandardProperties['justifyContent'];\n /**\n * Hvilken spacing token som skal brukes som CSS `gap`.\n */\n gap?: keyof typeof stackTokens.spacing | 0;\n /**\n * Hvilken spacing token som skal brukes som CSS `padding`.\n */\n padding?: keyof typeof stackTokens.spacing | 0;\n}\n\nconst Stack = styled.div.withConfig({\n shouldForwardProp: prop => {\n const styleOnlyProps: (keyof StackStyleProps)[] = [\n 'align',\n 'direction',\n 'gap',\n 'justify',\n 'padding',\n ];\n\n return !styleOnlyProps.some(p => p === prop);\n },\n})<StackStyleProps>`\n display: flex;\n flex-direction: ${({ direction }) =>\n direction === 'horizontal' ? 'row' : 'column'};\n align-items: ${props => props.align};\n justify-content: ${props => props.justify};\n\n ${({ gap }) =>\n gap !== undefined &&\n css`\n gap: ${gap === 0 ? '0' : stackTokens.spacing[gap]};\n `}\n\n ${({ padding }) =>\n padding !== undefined &&\n css`\n padding: ${padding === 0 ? '0' : stackTokens.spacing[padding]};\n `}\n`;\nStack.defaultProps = {\n align: 'center',\n justify: 'flex-start',\n};\n\nexport type StackProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n Omit<StackStyleProps, 'direction'>\n>;\n\nexport const HStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"horizontal\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nHStack.displayName = 'HStack';\n\nexport const VStack = forwardRef<HTMLDivElement, StackProps>(\n ({ id, className, htmlProps, ...rest }, ref) => (\n <Stack\n direction=\"vertical\"\n ref={ref}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n ),\n);\n\nVStack.displayName = 'VStack';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nconst { spacing } = ddsBaseTokens;\n\nconst spacingTokens = {\n 'local-x0.125': spacing.SizesDdsSpacingLocalX0125,\n 'local-x0.25': spacing.SizesDdsSpacingLocalX025,\n 'local-x0.5': spacing.SizesDdsSpacingLocalX05,\n 'local-x0.75': spacing.SizesDdsSpacingLocalX075,\n 'local-x1': spacing.SizesDdsSpacingLocalX1,\n 'local-x1.5': spacing.SizesDdsSpacingLocalX15,\n 'local-x2': spacing.SizesDdsSpacingLocalX2,\n 'local-x2.5': spacing.SizesDdsSpacingLocalX25,\n 'local-x3': spacing.SizesDdsSpacingLocalX3,\n 'layout-x1': spacing.SizesDdsSpacingLayoutX1,\n 'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,\n 'layout-x2': spacing.SizesDdsSpacingLayoutX2,\n 'layout-x3': spacing.SizesDdsSpacingLayoutX3,\n 'layout-x4': spacing.SizesDdsSpacingLayoutX4,\n 'layout-x6': spacing.SizesDdsSpacingLayoutX6,\n 'layout-x10': spacing.SizesDdsSpacingLayoutX10,\n};\n\nexport const stackTokens = {\n spacing: spacingTokens,\n};\n","import { useId } from 'react';\nimport styled from 'styled-components';\nimport { UploadIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\nimport { Label } from '@norges-domstoler/dds-typography';\nimport { Button } from '../Button';\nimport { InputMessage } from '../InputMessage';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport { rootTokens } from './FileUploader.tokens';\nimport { FileList } from './types';\nimport { FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport { Property } from 'csstype';\n\nconst defaultWidth: Property.Width<string> = '320px';\n\nconst Wrapper = styled.div<{ width?: Property.Width<string> }>`\n width: ${({ width }) => (width ? width : defaultWidth)};\n`;\n\ninterface RootProps {\n $isDragActive: boolean;\n $hasRootErrors: boolean;\n}\n\nconst Root = styled.div<RootProps>`\n box-sizing: border-box;\n border-width: ${({ $hasRootErrors: hasRootErrors }) =>\n hasRootErrors ? '2px' : '1px'};\n border-style: dashed;\n border-color: ${({ $isDragActive, $hasRootErrors }) =>\n $isDragActive\n ? rootTokens.dragActive.borderColor\n : $hasRootErrors\n ? rootTokens.borderColorError\n : rootTokens.borderColor};\n padding: ${({ $hasRootErrors }) =>\n $hasRootErrors\n ? `calc(${rootTokens.paddingLeftRightTop} - 1px) calc(${rootTokens.paddingLeftRightTop} - 1px) ${rootTokens.paddingBottom}`\n : `${rootTokens.paddingLeftRightTop} ${rootTokens.paddingLeftRightTop} ${rootTokens.paddingBottom}`};\n display: flex;\n flex-direction: column;\n gap: ${rootTokens.gap};\n background-color: ${({ $isDragActive }) =>\n $isDragActive\n ? rootTokens.dragActive.backgroundColor\n : rootTokens.backgroundColor};\n`;\n\nconst FileUploaderInput = styled.input``;\n\nconst FileListElement = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\ntype FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst en fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Bredde for filopplasteren. */\n width?: Property.Width<string>;\n} & Partial<FileUploaderHookProps>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n tip,\n required = false,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width,\n errorMessage,\n } = props;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-fileUploader`;\n\n const {\n state: { files: stateFiles, isDragActive, rootErrors },\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n } = useFileUploader<HTMLDivElement>({\n id,\n initialFiles,\n value,\n onChange,\n accept,\n disabled,\n maxFiles,\n errorMessage,\n });\n const hasLabel = label !== undefined;\n const hasTip = tip !== undefined;\n const hasRootErrors = rootErrors.length > 0;\n const showRequiredMarker = required;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n\n const fileListElements = stateFiles.map((stateFile, index) => (\n <File\n key={stateFile.file.name}\n parentId={uniqueId}\n index={index}\n file={stateFile}\n isValid={stateFile.errors.length === 0}\n removeFile={() => removeFile(stateFile)}\n />\n ));\n\n const rootErrorsList = rootErrors.map((e, index) => ({\n id: derivativeIdGenerator(uniqueId, `error-${index}`),\n message: e,\n }));\n\n return (\n <Wrapper width={width}>\n {hasLabel && (\n <Label showRequiredStyling={showRequiredMarker} htmlFor={uniqueId}>\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n <Root\n {...getRootProps()}\n $isDragActive={isDragActive}\n $hasRootErrors={hasRootErrors}\n >\n <FileUploaderInput {...getInputProps()} />\n Dra og slipp filer her eller{' '}\n <VisuallyHidden as=\"span\">velg fil med påfølgende knapp</VisuallyHidden>\n <Button\n {...getButtonProps()}\n id={uniqueId}\n size=\"medium\"\n type=\"button\"\n appearance=\"filled\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n Velg fil\n </Button>\n </Root>\n <ErrorList errors={rootErrorsList} />\n\n <FileListElement>{fileListElements}</FileListElement>\n </Wrapper>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import styled from 'styled-components';\nimport { InputMessage } from '../InputMessage';\nimport { errorsTokens } from './FileUploader.tokens';\n\ninterface ErrorListProps {\n errors: {\n id: string | undefined;\n message: string;\n }[];\n}\n\nexport const MessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${errorsTokens.gap};\n`;\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n return (\n <MessageContainer>\n {errors.map(({ id, message }) => {\n return (\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n );\n })}\n </MessageContainer>\n );\n};\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nexport const rootTokens = {\n borderColor: colors.DdsColorNeutralsGray5,\n borderColorError: colors.DdsColorDangerBase,\n paddingLeftRightTop: spacing.SizesDdsSpacingLocalX15,\n paddingBottom: spacing.SizesDdsSpacingLocalX2,\n gap: spacing.SizesDdsSpacingLocalX1,\n backgroundColor: colors.DdsColorNeutralsWhite,\n dragActive: {\n borderColor: colors.DdsColorInteractiveBase,\n backgroundColor: colors.DdsColorInteractiveLightest,\n },\n};\n\nexport const fileTokens = {\n marginTop: spacing.SizesDdsSpacingLocalX05,\n paddingLeftRight: spacing.SizesDdsSpacingLocalX05,\n paddingTopBottom: spacing.SizesDdsSpacingLayoutX1,\n backgroundColor: colors.DdsColorNeutralsGray1,\n textToIconsGap: spacing.SizesDdsSpacingLocalX075,\n invalid: {\n borderColor: colors.DdsColorDangerBase,\n },\n};\n\nexport const errorsTokens = {\n gap: spacing.SizesDdsSpacingLocalX025,\n};\n","import styled from 'styled-components';\nimport { CloseIcon } from '@norges-domstoler/dds-icons';\nimport {\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '@norges-domstoler/dds-core';\n\nimport { Button } from '../Button';\nimport { ErrorList } from './ErrorList';\nimport { fileTokens } from './FileUploader.tokens';\nimport { FileUploaderFile } from './fileUploaderReducer';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\n}\n\nconst FileWrapper = styled.li``;\n\nconst FileNameWrapper = styled.span`\n word-break: break-all;\n`;\n\nconst FileElement = styled.div<FileProps>`\n border-width: 2px;\n border-style: solid;\n border-color: ${({ isValid }) =>\n isValid ? fileTokens.backgroundColor : fileTokens.invalid.borderColor};\n margin-top: ${fileTokens.marginTop};\n padding: ${fileTokens.paddingLeftRight} ${fileTokens.paddingTopBottom};\n background-color: ${fileTokens.backgroundColor};\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ${fileTokens.textToIconsGap};\n`;\n\nconst RemoveFileButton = styled(Button)`\n padding: 0;\n`;\n\nexport const File = (props: FileProps) => {\n const { parentId, index, file: stateFile, removeFile, isValid } = props;\n\n const errorsList = stateFile.errors.map((e, errorIndex) => ({\n id: derivativeIdGenerator(parentId, `file-${index}-error-${errorIndex}`),\n message: e,\n }));\n\n return (\n <FileWrapper key={stateFile.file.name}>\n <FileElement {...props}>\n <FileNameWrapper>{stateFile.file.name}</FileNameWrapper>\n <RemoveFileButton\n size=\"small\"\n appearance=\"borderless\"\n purpose=\"secondary\"\n type=\"button\"\n onClick={removeFile}\n icon={CloseIcon}\n htmlProps={{\n 'aria-label': `Fjern fil, ${stateFile.file.name}`,\n 'aria-invalid': !isValid ? true : undefined,\n 'aria-errormessage': !isValid ? 'Ugyldig fil' : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator(\n errorsList.map(e => e.id),\n ),\n }}\n />\n </FileElement>\n <ErrorList errors={errorsList} />\n </FileWrapper>\n );\n};\n","import React, {\n ButtonHTMLAttributes,\n HTMLAttributes,\n InputHTMLAttributes,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {\n FileUploaderFile,\n fileUploaderReducer,\n RootErrorList,\n} from './fileUploaderReducer';\nimport { FileWithPath, fromEvent as getFilesFromEvent } from 'file-selector';\nimport { Accept, FileList } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Accept[] | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: FileUploaderFile[],\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(evt)) as FileWithPath[];\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { FileWithPath } from 'file-selector';\nimport { Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: string[];\n}\n\nexport type RootErrorList = string[];\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: FileUploaderFile[];\n }\n | {\n type: 'onRemoveFile';\n payload: FileUploaderFile[];\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: FileUploaderFile[];\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: string[];\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","import accepted from 'attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: string[] | undefined,\n): boolean => {\n return accept !== undefined ? accepted(file, accept) : true;\n};\n\n// export const isFileSizeAccepted = (\n// file: File,\n// minSize: number | undefined,\n// maxSize: number | undefined\n// ): boolean => {};\n\nexport const getTooManyFilesErrorMessage = (maxFiles: number) =>\n `For mange filer, maks ${maxFiles}stk`;\n\nexport const getInvalidFileTypeErrorMessage = () => 'Ugyldig filtype';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { Typography } from '@norges-domstoler/dds-typography';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst StyledEmptyContent = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: ${spacing.SizesDdsSpacingLayoutX10};\n height: 100%;\n width: 100%;\n background-color: ${colors.DdsColorNeutralsGray1};\n padding: ${spacing.SizesDdsSpacingLayoutX15};\n`;\n\nconst StyledEmptyContentText = styled.div`\n max-width: 70ch;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: ${spacing.SizesDdsSpacingLayoutX1};\n`;\n\nexport type EmptyContentProps = {\n title?: string;\n message: string;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({ title, message, ...rest }: EmptyContentProps) {\n return (\n <StyledEmptyContent {...rest}>\n <StyledEmptyContentText>\n {title && (\n <Typography typographyType=\"headingSans02\">{title}</Typography>\n )}\n <Typography typographyType=\"bodySans02\">{message}</Typography>\n </StyledEmptyContentText>\n </StyledEmptyContent>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { forwardRef } from 'react';\nimport styled from 'styled-components';\nimport { Icon, icons } from '@norges-domstoler/dds-icons';\nimport { Typography } from '@norges-domstoler/dds-typography';\nimport { backLinkTokens } from './BackLink.tokens';\n\nconst Nav = styled('nav')`\n align-items: center;\n display: flex;\n gap: ${backLinkTokens.nav.gap};\n`;\n\nconst StyledIcon = styled(Icon)`\n color: ${backLinkTokens.icon.color};\n`;\n\nexport interface BackLinkProps {\n label: string;\n href: string;\n}\n\nexport const BackLink = forwardRef<HTMLElement, BackLinkProps>((props, ref) => {\n return (\n <Nav ref={ref}>\n <StyledIcon icon={icons.ArrowLeftIcon} iconSize=\"small\" />\n <Typography typographyType=\"a\" href={props.href}>\n {props.label}\n </Typography>\n </Nav>\n );\n});\n\nBackLink.displayName = 'BackLink';\n","import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\n\nconst { colors, spacing } = ddsBaseTokens;\n\nconst icon = {\n color: colors.DdsColorInteractiveBase,\n};\n\nconst nav = {\n gap: spacing.SizesDdsSpacingLocalX05,\n};\n\nexport const backLinkTokens = {\n icon,\n nav,\n};\n","import { useEffect, useState } from 'react';\nimport { FeedbackProps, Rating } from './Feedback.types';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\nimport { RatingComponent } from './RatingComponent';\nimport { CommentComponent } from './CommentComponent';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n ratingValue: ratingProp,\n feedbackTextValue: feedbackTextProp,\n thumbUpTooltip = 'Bra',\n thumbDownTooltip = 'Dårlig',\n feedbackTextAreaExcluded = false,\n loading = false,\n isSubmitted: isSubmittedProp,\n onRating,\n onFeedbackTextChange,\n onSubmit,\n}: FeedbackProps) => {\n const [rating, setRating] = useState<Rating | null>(null);\n const [feedbackText, setFeedbackText] = useState<string>();\n const [isFeedbackSubmitted, setIsFeedbackSubmitted] =\n useState<boolean>(false);\n\n useEffect(() => {\n ratingProp !== undefined && setRating(ratingProp);\n }, [ratingProp]);\n\n useEffect(() => {\n feedbackTextProp !== undefined && setFeedbackText(feedbackTextProp);\n }, [feedbackTextProp]);\n\n useEffect(() => {\n isSubmittedProp !== undefined && setIsFeedbackSubmitted(isSubmittedProp);\n }, [isSubmittedProp]);\n\n const handleRatingChange = (newRating: Rating) => {\n onRating && onRating(newRating);\n onSubmit && feedbackTextAreaExcluded && onSubmit(newRating, '');\n\n ratingProp === undefined && setRating(newRating);\n };\n\n const handleFeedbackTextChange = (newFeedbackText: string) => {\n onFeedbackTextChange && onFeedbackTextChange(newFeedbackText);\n feedbackTextProp === undefined && setFeedbackText(newFeedbackText);\n };\n\n const handleSubmit = () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- Ved submit er rating alltid satt\n onSubmit && onSubmit(rating!, feedbackText ?? '');\n isSubmittedProp === undefined && setIsFeedbackSubmitted(true);\n };\n\n if (rating === null && !isFeedbackSubmitted) {\n return (\n <RatingComponent\n layout={layout}\n ratingLabel={ratingLabel}\n loading={loading}\n thumbUpTooltip={thumbUpTooltip}\n thumbDownTooltip={thumbDownTooltip}\n handleRatingChange={handleRatingChange}\n />\n );\n }\n\n if (!feedbackTextAreaExcluded && !isFeedbackSubmitted) {\n return (\n <CommentComponent\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n","import styled, { css } from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport { Thumbup, Thumbdown } from '@norges-domstoler/dds-icons';\nimport { Label } from '@norges-domstoler/dds-typography';\n\nimport { Layout, Rating } from './Feedback.types';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport { Button } from '../Button';\nimport { HStack } from '../Stack';\n\nconst RatingContainer = styled.div<{\n $layout: Layout;\n}>`\n display: flex;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX1};\n ${({ $layout }) => css`\n flex-direction: ${$layout === 'horizontal' ? 'row' : 'column'};\n align-items: ${$layout === 'horizontal' ? 'center' : 'start'};\n `}\n`;\n\nconst RatingButton = styled(Button)`\n padding: 0px;\n color: ${ddsBaseTokens.colors.DdsColorNeutralsGray7};\n`;\n\ninterface RatingComponentType {\n layout: Layout;\n ratingLabel: string;\n loading: boolean;\n thumbUpTooltip: string;\n thumbDownTooltip: string;\n handleRatingChange: (rating: Rating) => void;\n}\n\nexport const RatingComponent = ({\n layout,\n ratingLabel,\n loading,\n thumbUpTooltip,\n thumbDownTooltip,\n handleRatingChange,\n}: RatingComponentType) => {\n return (\n <RatingContainer $layout={layout}>\n <Label>{ratingLabel}</Label>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"layout-x1\">\n <Tooltip text={thumbUpTooltip}>\n <RatingButton\n htmlProps={{ 'aria-label': thumbUpTooltip }}\n icon={Thumbup}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('positive')}\n size=\"large\"\n />\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>\n <RatingButton\n htmlProps={{ 'aria-label': thumbDownTooltip }}\n icon={Thumbdown}\n appearance=\"borderless\"\n onClick={() => handleRatingChange('negative')}\n size=\"large\"\n />\n </div>\n </Tooltip>\n </HStack>\n )}\n </RatingContainer>\n );\n};\n","import styled from 'styled-components';\nimport { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n ThumbupFilled,\n ThumbdownFilled,\n Icon,\n} from '@norges-domstoler/dds-icons';\nimport { Paragraph } from '@norges-domstoler/dds-typography';\n\nimport { Button } from '../Button';\nimport { Rating } from './Feedback.types';\nimport { TextArea } from '../TextArea';\nimport { VStack } from '../Stack';\n\nconst IconLabelSpan = styled.span`\n display: inline-flex;\n align-items: center;\n gap: ${ddsBaseTokens.spacing.SizesDdsSpacingLocalX05};\n`;\n\ninterface CommentComponentType {\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"layout-x1\">\n <IconLabelSpan>\n <Icon\n icon={rating === 'positive' ? ThumbupFilled : ThumbdownFilled}\n color={ddsBaseTokens.colors.DdsColorInteractiveBase}\n />\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </IconLabelSpan>\n <TextArea\n value={feedbackText}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n handleFeedbackTextChange(e.target.value)\n }\n label={\n rating === 'positive' ? positiveFeedbackLabel : negativeFeedbackLabel\n }\n tip=\"Ikke send inn personopplysninger eller annen sensitiv informasjon\"\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n"],"mappings":"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","names":["AppShell","CollapsibleTable","List","ListItem","RadioButtonGroup","Search","Table","import_styled_components","import_react","import_styled_components","import_dds_design_tokens","spacing","styled","import_styled_components","import_react","import_jsx_runtime","import_jsx_runtime","styled","icon","import_styled_components","import_dds_icons","import_dds_icons","import_jsx_runtime","import_styled_components","navTokens","styled","import_react","import_dds_icons","import_dds_core","import_dds_design_tokens","import_dds_core","colors","border","spacing","fontPackages","borderRadius","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","import_jsx_runtime","styled","React","import_styled_components","import_dds_core","sizes","appearances","styled","import_jsx_runtime","sizes","appearances","label","icon","import_react","import_styled_components","import_dds_core","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","colors","spacing","import_jsx_runtime","track","thumb","styled","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","track","content","outerContainer","styled","thumb","track","scrollbarWidth","import_dds_core","import_react","import_styled_components","import_dds_design_tokens","import_dds_core","border","borderRadius","colors","spacing","fontPackages","divider","import_dds_icons","import_dds_core","import_dds_typography","import_jsx_runtime","element","link","styled","title","icon","import_dds_core","import_dds_icons","import_jsx_runtime","container","divider","styled","StyledDivider","_a","import_react","import_jsx_runtime","Children","ReactChildren","import_jsx_runtime","navTokens","floatingActionButtons","styled","Icon","import_development_utils","import_jsx_runtime","navTokens","styled","StyledDivider","import_development_utils","import_jsx_runtime","styled","AppShell","import_react","import_dds_core","import_dds_typography","import_dds_form","import_react","React","import_styled_components","import_dds_form","import_dds_design_tokens","import_dds_form","colors","spacing","borderRadius","container","selectionControl","container","checkmark","groupContainer","outerGroupContainer","styled","Container","import_jsx_runtime","group","label","Container","import_react","import_dds_typography","import_dds_core","import_styled_components","import_dds_icons","import_dds_design_tokens","colors","spacing","import_dds_typography","import_react","import_dds_core","import_dds_icons","import_jsx_runtime","styled","message","import_jsx_runtime","import_jsx_runtime","label","RadioButtonGroup","import_react","import_dds_core","import_dds_typography","import_react","React","import_dds_form","import_jsx_runtime","label","Container","import_react","import_dds_typography","import_dds_core","import_jsx_runtime","label","import_react","import_dds_typography","import_dds_core","import_dds_form","import_styled_components","import_dds_design_tokens","colors","spacing","icon","import_react","import_styled_components","import_dds_core","import_dds_typography","import_jsx_runtime","styled","import_styled_components","import_dds_icons","import_dds_design_tokens","import_dds_form","iconSizes","input","icon","styled","import_jsx_runtime","styled","label","icon","prefix","import_react","import_dds_icons","import_dds_core","import_styled_components","import_dds_core","import_dds_design_tokens","import_dds_form","colors","spacing","borderRadius","border","typographyTypes","icon","import_dds_icons","import_dds_typography","import_dds_form","control","menu","groupHeading","option","dropdownIndicator","loadingIndicator","clearIndicator","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","placeholder","icon","valueContainer","Container","styled","typographyTypes","StyledIcon","import_dds_typography","import_jsx_runtime","icon","StyledIcon","defaultWidth","placeholder","label","option","props","Container","ReactSelect","React","import_styled_components","import_react","import_dds_design_tokens","import_dds_icons","colors","spacing","typographyType","container","import_dds_icons","import_dds_typography","import_dds_core","import_jsx_runtime","container","contentContainer","icon","Container","styled","typographyType","message","import_styled_components","import_react","import_dds_design_tokens","import_dds_icons","colors","spacing","borderRadius","border","outerShadow","container","outerShadow","borderRadius","border","spacing","colors","purposeVariants","icon","import_dds_icons","import_dds_typography","import_dds_core","import_jsx_runtime","defaultWidth","container","icon","purposeVariants","Container","styled","MessageIconWrapper","TextContainer","message","import_dds_core","import_dds_form","import_dds_icons","import_dds_typography","import_react","import_styled_components","import_styled_components","import_dds_core","import_jsx_runtime","Wrapper","styled","import_react","import_dds_design_tokens","spacing","iconSizes","colors","textDefault","typographyTypes","input","outerContainer","import_styled_components","import_dds_core","import_dds_core","import_dds_typography","import_react","import_dds_core","import_jsx_runtime","suggestionsContainer","suggestionsHeader","styled","typographyTypes","import_jsx_runtime","input","outerContainer","horisontalContainer","searchIcon","clearButton","Input","styled","BaseInput","typographyTypes","InputContainer","label","import_react","import_dds_core","import_jsx_runtime","data","value","Search","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","colors","border","spacing","iconSizes","borderRadius","import_jsx_runtime","cell","row","styled","import_react","import_styled_components","import_react","import_jsx_runtime","StyledTable","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_typography","import_dds_form","row","styled","import_jsx_runtime","import_react","import_styled_components","import_dds_form","import_dds_core","import_react","import_styled_components","import_dds_core","import_dds_design_tokens","spacing","colors","import_jsx_runtime","term","desc","list","styled","import_react","import_styled_components","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_core","import_dds_icons","import_jsx_runtime","styled","icon","import_react","import_styled_components","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_jsx_runtime","cell","styled","import_jsx_runtime","collapseButton","styled","prefix","Table","import_react","import_dds_icons","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","cell","styled","import_react","import_styled_components","import_jsx_runtime","Wrapper","styled","Table","CollapsibleTable","import_react","import_dds_typography","import_jsx_runtime","import_react","import_styled_components","import_dds_design_tokens","colors","spacing","typographyType","icon","list","import_dds_icons","import_dds_core","import_dds_typography","import_jsx_runtime","icon","list","listItem","styled","typographyType","StyledIcon","import_react","import_styled_components","import_dds_typography","import_dds_icons","import_dds_design_tokens","spacing","colors","list","outerContainer","import_dds_icons","import_dds_core","import_jsx_runtime","outerContainer","indicatorsContainer","truncationIcon","list","styled","List","ListItem","OuterContainer","option","navigation","import_react","import_styled_components","import_dds_typography","import_dds_core","import_dds_design_tokens","spacing","textDefault","list","listItem","import_jsx_runtime","list","listItem","bullet","styled","List","typographyType","import_react","import_styled_components","import_jsx_runtime","styled","ListItem","import_styled_components","import_dds_design_tokens","colors","border","textDefault","base","import_dds_core","import_dds_typography","import_dds_form","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Wrapper","styled","Children","ReactChildren","import_react","import_styled_components","import_dds_design_tokens","spacing","border","iconSizes","typographyTypes","import_dds_core","import_dds_typography","import_jsx_runtime","header","chevronWrapper","styled","typographyType","typographyTypes","import_react","import_styled_components","import_dds_core","import_dds_typography","import_react","element","import_jsx_runtime","Body","styled","typographyTypes","import_react","import_dds_typography","import_styled_components","import_dds_design_tokens","border","colors","spacing","typographyTypes","outerContainer","navigation","import_dds_core","outerContainer","applicationNameWrapper","lovisaWrapper","banner","navigation","contextGroup","OuterContainer","styled","Navigation","import_react","import_styled_components","import_dds_typography","import_dds_form","import_jsx_runtime","navLink","Link","styled","typographyTypes","NavigationItem","title","import_react","import_styled_components","import_jsx_runtime","styled","import_dds_core","import_dds_icons","import_jsx_runtime","navigation","Navigation","rest","NavigationItem","OuterContainer","import_react","import_dds_core","import_dds_typography","import_styled_components","import_dds_form","import_dds_design_tokens","iconSizes","spacing","border","import_jsx_runtime","StyledInput","styled","label","getWidth","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","colors","spacing","link","import_jsx_runtime","wrapper","link","Wrapper","styled","Link","import_react","import_dds_core","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","colors","spacing","wrapper","wrapper","styled","Container","import_jsx_runtime","svgArrow","ref","ReactChildren","Container","import_react","import_styled_components","import_dds_design_tokens","spacing","container","contentContainer","import_dds_typography","import_dds_core","import_dds_icons","import_dds_form","import_styled_components","import_dds_design_tokens","import_dds_core","styled","container","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_jsx_runtime","Container","styled","import_react","import_react_dom","import_styled_components","import_dds_typography","import_dds_core","import_dds_icons","import_dds_design_tokens","spacing","container","contentContainer","import_dds_form","import_jsx_runtime","container","contentContainer","Container","styled","ContentContainer","HeaderContainer","StyledButton","header","import_react","import_jsx_runtime","Children","ReactChildren","import_dds_design_tokens","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","spacing","wrapper","content","import_dds_icons","import_dds_core","import_dds_form","import_jsx_runtime","wrapper","content","closeButton","title","Wrapper","styled","ContentContainer","StyledButton","import_react","import_dds_core","import_jsx_runtime","Children","ReactChildren","import_react","import_styled_components","import_dds_icons","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","colors","spacing","button","selectionControl","typographyType","group","container","import_jsx_runtime","toggleButton","Content","styled","typographyType","Container","label","icon","import_react","import_styled_components","import_dds_core","import_dds_typography","import_jsx_runtime","styled","Container","label","import_styled_components","import_react","import_dds_core","import_react","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_core","import_dds_icons","import_dds_typography","import_dds_form","import_dds_design_tokens","border","spacing","colors","import_jsx_runtime","tab","Button","styled","icon","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","tabList","styled","import_react","import_styled_components","import_dds_core","import_dds_form","import_jsx_runtime","panel","styled","import_react","import_dds_core","import_jsx_runtime","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_design_tokens","colors","borderRadius","spacing","typographyType","wrapper","import_jsx_runtime","wrapper","Wrapper","styled","typographyType","import_react","import_styled_components","import_dds_core","import_dds_icons","import_dds_typography","import_dds_design_tokens","colors","spacing","borderRadius","typographyType","container","group","import_jsx_runtime","container","Container","styled","typographyType","import_react","import_styled_components","import_dds_core","import_jsx_runtime","Group","styled","import_react","import_styled_components","import_dds_core","import_dds_typography","import_react","import_dds_design_tokens","import_dds_core","colors","spacing","border","borderRadius","fontPackages","typographyTypes","outerContainer","content","import_jsx_runtime","OuterContainer","styled","Bar","label","import_react","import_dds_core","import_dds_icons","import_styled_components","import_dds_typography","import_dds_form","content","label","Content","styled","typographyTypes","Label","import_dds_form","import_jsx_runtime","group","icon","label","Label","Content","import_styled_components","import_dds_core","import_dds_design_tokens","import_dds_core","spacing","import_react","import_dds_core","import_dds_core","import_jsx_runtime","tokens","styled","import_styled_components","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_core","import_react","import_dds_design_tokens","colors","spacing","typographyTypes","import_react","import_styled_components","import_dds_icons","import_dds_typography","import_dds_form","import_jsx_runtime","itemNumber","itemText","itemContentWrapper","styled","typographyTypes","icon","import_jsx_runtime","styled","import_react","import_react","import_dds_core","import_jsx_runtime","import_dds_core","import_react","import_dds_icons","import_dds_core","import_styled_components","import_dds_design_tokens","colors","spacing","fontPackages","import_dds_form","inlineEdit","iconWrapper","defaultWidth","styled","IconWrapper","import_jsx_runtime","import_dds_core","import_dds_form","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_dds_core","import_react","import_dds_icons","import_dds_core","import_dds_core","import_dds_form","import_jsx_runtime","defaultWidth","IconWrapper","import_jsx_runtime","import_react","import_styled_components","import_dds_core","import_dds_typography","import_dds_form","import_dds_design_tokens","spacing","import_jsx_runtime","defaultWidth","textarea","styled","label","import_react","import_styled_components","import_dds_icons","import_dds_design_tokens","import_jsx_runtime","Container","styled","import_react","import_styled_components","import_dds_design_tokens","spacing","import_dds_core","import_jsx_runtime","styled","import_react","import_styled_components","import_dds_icons","import_dds_core","import_dds_typography","import_styled_components","import_dds_design_tokens","colors","spacing","import_jsx_runtime","MessageContainer","styled","message","import_styled_components","import_dds_icons","import_dds_core","import_jsx_runtime","styled","import_react","accepted","accepted","getFilesFromEvent","import_jsx_runtime","defaultWidth","Wrapper","styled","label","import_dds_design_tokens","import_styled_components","import_dds_typography","import_jsx_runtime","colors","spacing","styled","title","message","import_react","import_styled_components","import_dds_icons","import_dds_typography","import_dds_design_tokens","colors","spacing","icon","import_jsx_runtime","Nav","styled","StyledIcon","import_react","import_dds_typography","import_styled_components","import_dds_design_tokens","import_dds_icons","import_dds_typography","import_jsx_runtime","styled","import_styled_components","import_dds_design_tokens","import_dds_icons","import_dds_typography","import_jsx_runtime","styled","import_jsx_runtime"]}